密码学原语如何应用?解析密码学特有的数据编解码|第10论

2023-11-08

隐私保护方案的工程实现,如何关联到学术论文中天书一般的公式符号?密码学工程中,有哪些特有的数据编解码方式、存在哪些认知误区和注意事项、需要克服哪些限制和挑战?

作为支撑隐私保护方案的核心技术,如何运用数据编解码,将密码学论文中抽象的数学符号和公式具象成业务中具体的隐私数据,是学术成果向产业转化需要跨过的第一道门槛。

学术论文中所使用的数学语言与工程中所使用的代码编程语言,差异非常大。不少在数学上容易定义的属性和过程,若要在工程上提供有效实现,颇具挑战。实现不当的话,甚至可能破坏学术方案中的安全假设,最终导致方案失效、隐私数据泄露。

常用的密码学算法拥有多种标准化编解码方式,其应用到隐私保护方案,可以分别解决相应问题。以下将逐一展开。

业务应用难题:类型不匹配

工程实现之道:数据映射

在实际业务中,隐私数据可以表现为五花八门的数据类型,这些类型通常不满足密码学协议中特定的类型要求,无法被直接使用,这就是我们需要解决的第一个问题:数据类型不匹配。

例如,业务系统中,交易的金额是一个长整型整数,而常见的密码学算法可能要求输入为有限循环群中的一个元素,如果直接使用长整型整数的值,可能该值并不在对应的有限循环群中;在椭圆曲线系统中,单个数值还需要转化成曲线上的点坐标,需要将一个数值转化成两个数值的坐标形式。

针对以上问题,密码学工程实现中,一般通过数据映射进行类型转换处理。具体而言,是将用户的隐私数据,通过一定的方法,变换到具体密码协议要求的数据类型。

下面以密码学中的椭圆曲线(Elliptic Curve)加解密为例,介绍一种常见的数据映射方式。

椭圆曲线可以简单理解为定义了一个特定点的集合,例如下面这种公式定义了比较常见的一类椭圆曲线:

其中满足公式成立的点(x, y)都在椭圆曲线上。椭圆曲线密码通过在限定的点集上定义相关的点运算,实现加解密功能。

在椭圆曲线加解密过程中,首先面临的问题是『如何将待加密的数据嵌入到椭圆曲线上,通过点运算来完成加密操作』。这需要将明文数据m映射到椭圆曲线上的一个特定点M(x, y)。

数据编码方式是将明文数据m通过进制转换到椭圆曲线上某点的x坐标值,然后计算m^3 + am + b的完全平方数,得到y,这样就将m转换到了点M(x, y)。

数据解码方式比较直白,解密还原出明文数据点M之后,读取M的x坐标值,再通过进制转换还原为明文信息m。

然而,密码椭圆曲线是定义在有限域上的,即曲线上是一个离散的点集合。这样会导致计算完全平方数不一定存在,即x没有对应的y在椭圆曲线上,那么,部分明文数据无法转换到椭圆曲线上的点,从而导致部分数据无法被直接加密。

 

在实际工程化的方案中,为了保证椭圆曲线加解密的可用性,会加入其它更复杂的扩充编码机制,以应对明文数据转换失败的情况。

一般而言,密码学协议中所定义的类型要求越多,数据映射的工程实现也会越复杂,如果缺乏高效的数据编解码算法和配套的硬件优化支持,即便密码学协议的理论计算复杂度再低,最终也是难以实用化。

具体的数据映射涉及到很多流程细节和算法参数,一旦存在微小的差异,由不匹配的编码算法所产生的数据,都会极大概率无法解码,导致隐私数据丢失、业务中断。

 

所以,在具体工程实现时,数据映射需要严格按照已有工程标准的实现要求,以国密SM2为例,可以参考GM/T0009-2012《SM2密码算法使用规范》、GM/T0010-2012《SM2密码算法加密签名消息语法规范》等一系列相关技术标准。

业务应用难题:数据太长

工程实现之道:数据分组

除了类型不匹配,密码学协议中使用的核心算法对输入的数据长度往往也有一定要求。但在实际应用中,需要处理源自不同业务需求的隐私数据,难以限定其长度,难免会出现数据长度超出核心算法处理长度的情况。

例如,对称加密AES算法AES-128、AES-256,表明其使用的密钥位数分别是128位和256位,但加密过程中单次进行核心密码运算时处理的数据固定为128位。

针对以上问题,密码学工程实现中一般通过数据分组进行处理,即化整为零,将长数据切分为多个较短且符合长度要求的数据块。

典型的例子是分组加密,例如AES、DES等。分组加密顾名思义就是,将输入的数据分组为固定长度的数据块,然后以数据块为单位作为核心密码算法的处理单元进行加解密处理。

为了在数据分组之后,依旧保持方案的安全性,数据分组技术不仅仅是简单地对数据进行划分,还需要引入额外的流程操作。

下面以AES 256位密钥加密为例,介绍其中典型的分组加密模式ECB、CBC和CTR。

  ECB模式 (Electronic Code Book)

ECB是最简单的分组加密模式,也是不安全分组模式的典范。

假定有1280位待加密的数据,ECB模式将其平均分为10个128位数据块。每个数据块使用相同的密钥单独加密生成块密文,最后块密文进行串联生成最终的密文。 

ECB模式的加密特点是在相同的明文和密钥情况下,其密文相同,因此泄露了明文数据与密文数据之间的关联性,不推荐用于任何隐私保护方案中。

  CBC模式 (Cipher Block Chaining)

CBC模式通过前后数据块的数据串连避免ECB模式的缺点。

与ECB模式类似,CBC模式中,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每个数据密文的随机性,在第一个块中需要使用一个随机的数据块作为初始化向量IV。

CBC模式解决了ECB模式的安全问题,但也带来了一定的性能问题。其主要缺点在于每个密文块都依赖于前面的所有明文块,导致加密过程是串行的,无法并行化。

  CTR模式 (CounTeR)

CTR模式的出现让分组加密更安全且并行化,通过递增一个加密计数器以产生连续的密钥流,使得分组密码变为流密码进行加密处理,安全性更高。

CTR加密和解密过程均可以进行并行处理,使得在多处理器的硬件上实现高性能的海量隐私数据的并发处理成为了可能,这是目前最为推荐的数据分组模式。

密码学协议中的数据分组与传统大数据处理中的数据分组有很大区别。理想情况下,数据分组不应该弱化隐私保护的强度,不能为攻击者获取未授权的信息提供可乘之机。这往往会涉及精心的数据分组方案设计,不能简单看作是数据分块之后的批处理。

业务应用难题:数据太短

工程实现之道:数据填充

数据太长是个问题,数据太短往往也是问题。

在以上分组处理的过程中,最后一个数据块中数据长度不足,密码学协议中的核心算法也可能无法工作。

假定一个密码协议处理的数据块长度要求为6字节,待加密的隐私数据长度为7字节。用两个十六进制数代表一个字节数据,其示例如下:

b1 b2 b3 b4 b5 b6 b7

7字节长于数据块的处理长度6字节,因此该数据将被分组,且可以分为两个数据块。分组示例如下:

第一个数据块:b1 b2 b3 b4 b5 b6

第二个数据块:b7

其中第一个数据块刚好是6个字符,第二个数据块只有1个字节,这个数据块就太短了,不满足处理要求。

针对以上问题,密码学工程实现中一般通过数据填充进行处理,即将短的数据块填充补位到要求的字节长度。示例中第二个数据块需要进行数据填充,为其补上缺少的5个字节。 

与数据分组类似,这里的数据填充也不是普通的数据填充,也应该满足一定的安全性要求。最常用的数据填充标准是PKCS#7,也是OpenSSL协议默认采用的数据填充模式。

  PKCS#7填充

需要填充的部分都记录填充的总字节数。应用于示例中第二个数据块,则补5个字节都是5的数据,其填充效果如下:

b7 05 05 05 05 05

这里还存在一个问题:如果一个隐私数据的最后一个分组,刚好就是一个符合其填充规则的数据,在事后提取原始数据时,如何分辨是原始数据还是填充之后的数据?

避开这种歧义情况的关键是,任何长度的原始数据,在最后一个数据块中,都要求进行数据填充。

 

值得注意的是,对隐私数据加密时,按特定填充模式进行处理,那么填充的数据也将被加密,成为加密前明文数据的一部分。解密时,其填充模式也需要和加密时的填充模式相同,这样才可以正确地剔除填充数据,提取出正确的隐私数据。

在隐私保护方案的编解码过程中,以上提到的数据映射、数据分组、数据填充,都是保证隐私数据安全的必要环节。此外,在特定的合规要求下,实际业务系统还需要引入更多的相关数据预处理环节,如数据脱敏、数据认证等,使得数据在进入密码学协议前,尽早降低潜在的隐私风险。

正是:理论公式抽象赛天书,工程编码巧手点迷津!

学术论文的公式符号与隐私保护方案的可用工程实现之间,存在一条不小的技术鸿沟,而密码学特有的数据编解码,正是我们建立桥梁实现学术成果产业转化的基石。

安全高效的数据编解码技术,对于处理以5G、物联网为爆点的海量隐私数据应用意义重大,是隐私数据进出业务系统的第一道防线,其重要性不亚于其他密码学原语。

了解完数据编解码之后,接下来将进入具体应用相关的密码学原语,欲知详情,敬请关注下文分解。

---END---

《隐私保护周三见》

“科技聚焦人性,隐私回归属主”,这是微众银行区块链团队推出《隐私保护周三见》深度栏目的愿景与初衷。每周三晚8点,专家团队将透过栏目和各位一起探寻隐私保护的发展之道。

栏目内容含括以下五大模块:关键概念、法律法规、理论基础、技术剖析和案例分享,如您有好的建议或者想学习的内容,欢迎随时提出。

栏目支持单位:零壹财经、陀螺财经、巴比特、火讯财经、火星财经、价值在线、链客社区

 往期集锦

 

第1论|隐私和效用不可兼得?隐私保护开辟商业新境地

第2论|隐私合规风险知几何?数据合规商用需过九重关

第3论|密码学技术何以为信?深究背后的计算困难性理论

第4论|密码学技术如何选型?初探理论能力边界的安全模型

第5论|密码学技术如何选型?再探工程能力边界的安全模型

第6论|密码学技术如何选型?终探量子计算通信的安全模型

第7论|密码密钥傻傻分不清?认识密码学中的最高机密

第8论|密钥繁多难记难管理?认识高效密钥管理体系

第9论|密码学原语如何应用?解析单向哈希的妙用

上下滑动查看更多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码学原语如何应用?解析密码学特有的数据编解码|第10论 的相关文章

  • php模式之装饰器模式2

    原文来自 大胖博客 在上一篇文章中 介绍了如何在代码架构之初 为了以后的扩展方便做的考虑 那么在现实中大部分的情况不是如此 那么我们需要重构这块么 不一定 今天我们使用另一种方式来实现装饰器 假设现在我们处在产品的第二个阶段 有下面第一阶段

随机推荐

  • 前端微信支付步骤(笔记)

    对接了两次微信支付 第一次对接的时候没有做记录下来 这一次把要记录下来 一 获取openId 1 在微信公众平台配置相关信息 具体按照微信官方文档步骤进行配置 mp weixin qq com wiki t reso 2 微信网页授权 文档
  • Js apply方法详解

    Js apply方法详解 主要解决一下几个问题 apply和call的区别在哪里 什么情况下用apply 什么情况下用call apply的其他巧妙用法 一般在什么情况下可以使用apply 首先从网上查到关于apply和call的定义 然后
  • 双重for循环删除数据

    1 倒过来遍历list for int i list size 1 i gt 0 i int item list get i if item 3 list remove item 2 每移除一个元素以后再把i移回来 for int i 0
  • Linux下CH452数码管芯片驱动调试(GPIO模拟I2C)

    1 设备连接 主控板处理器为Cortex A5处理器 内核4 9 0 主控板和CH452引脚定义如下表1 1所示 表1 1 主控板和CH452引脚定义 序号 CH452引脚定义 主控板引脚定义 1 SDA PB29 2 SCL PB30 3
  • 用树莓派搭建远程实时画面传输

    目录 一 材料准备 二 环境搭建 1 树莓派实现局域网监控画面传输 1 树莓派安装系统 2 将摄像头与树莓派连接 3 配置树莓派开发环境 4 让摄像头开始进行画面录制 5 将监控画面服务设置为开机自启 2 内网渗透 1 服务器端frp配置
  • AI考拉技术分享-Node基础架构专题

    前言 2018 年 考拉开始对现有项目的常用的工具库进行整理 包含日期处理 数字处理 logger 等常用工具 并打包成 npm module 方便各个项目使用 后期 我们也将重点分享这部分工具库的使用 大家感兴趣的一起来交流学习 有bug
  • Python爬虫能当副业吗?到了哪个层次能接单?解析能挣钱的方式

    多朋友问我学Python可不可以挣钱 答案是 当然可以 python爬虫肯定是可以当副业的 我身边一个伙伴就靠会python爬虫这一项技能一个月差不多能有一万多收入 他截图给我看的他的收入图是这样的 人家一个月就靠接单这个副业都比很多人主业
  • 开关电源环路稳定性分析(11)——观察法找零极点

    大家好 这里是大话硬件 这篇文章主要是分享如何用观察法直接写出补偿网络中的零极点的表达式 在前面的文章中 我们分别整理了OTA和OPA型的补偿网络 当时有下面的结论 针对某个固定的补偿网络 我们可以用数学的方法推导补偿网络的零极点 比如下面
  • ${ }的用法

    的用法 假设我们定义了一个变量为 file dir1 dir2 dir3 my file txt 我们可以用 分別替换获得不同的值 file 拿掉第一条 及其左边的字串 dir1 dir2 dir3 my file txt file 拿掉最
  • SetCallAsFunctionHandler 相当于lua __call

    首先到google开发者网站上下载v8源码 并按照说明进行编译 在v8中 编译和执行的js代码需要依付于一个空间 上下文 上下文由Context New创建 static Persistent
  • 微服务:什么是微服务?一篇文章让你彻底搞明白

    文章目录 前言 一 微服务介绍 1 什么是微服务 2 微服务由来 3 为什么需要微服务 3 1 早期的单体架构带来的问题 1 复杂性逐渐变高 2 技术债务逐渐上升 3 部署速度逐渐变慢 4 阻碍技术创新 5 无法按需伸缩 3 2 微服务与单
  • Testing-《软件测试》读书笔记(四)

    静态测试是指测试非运行部分 检查和审查 白盒测试是指访问代码 能够查看和审查 静态白盒测试实在不执行的条件下有条理地仔细审查软件设计 体系结构和代码 从而找出软件缺陷的过程 有时也成为结构分析 静态白盒测试的原因 首先是尽早发现软件缺陷 另
  • 机器学习框架/库

    本文汇编了一些机器学习领域的框架 库以及软件 按编程语言排序 C 计算机视觉 CCV 基于C语言 提供缓存 核心的机器视觉库 新颖的机器视觉库 OpenCV 它提供C C Python Java 以及 MATLAB接口 并支持Windows
  • Class 07 - 功能包的安装和 tidyverse 介绍

    Class 07 功能包的安装和 tidyverse 介绍 tidyverse 简介 功能包 package 的安装 tidyverse 的安装 功能包 package 的加载 tidyverse 的加载 功能包 package 的更新 t
  • Mac系统下搭建使用eclipse搭建web开发环境ATS阻止http发布的问题

    应课程要求 今天使用Mac搭建eclipse Tomcat mysql开发环境 在进行简单的jsp页面测试时出现如下情况 原因是苹果收紧对普通http的访问限制 需要关闭App Transport Security ATS 方法是在Info
  • 通讯协议025——全网独有的OPC AE知识四之接口(九)

    本文简单介绍OPC AE规范的OPCEventSubscription对象的相关知识 更多通信资源请登录网信智汇 wangxinzhihui com OPC AE规范描述了OPC事件服务器应该实现的对象和接口 实现在多个OPC客户端间共享事
  • 数字化时代-13:入住CSDN一个月进展报告

    摘要 入住CSDN一个月进展报告 1 数据汇总 积分 0 461 等级 1级别 3级 排名 66万 20万 访问量 0 8950 2 每周文章变化 3 每周访问重量变化 4 每周粉丝总计变 5 总积分变化
  • k8s发布系统的实现

    综述 本篇文章所介绍的内容 已经有完整的实现 可以参考这里 在微服务 DevOps和云平台流行的当下 使用一个高效的持续集成工具也是一个非常重要的事情 虽然市面上目前已经存在了比较成熟的自动化构建工具 比如jekines 还有一些商业公司推
  • seaborn库学习笔记

    导入seaborn库 因此一般直接导入相关库 import numpy as np import seaborn as sns import matplotlib pyplot as plt import pandas as np 整体布局
  • 密码学原语如何应用?解析密码学特有的数据编解码|第10论

    隐私保护方案的工程实现 如何关联到学术论文中天书一般的公式符号 密码学工程中 有哪些特有的数据编解码方式 存在哪些认知误区和注意事项 需要克服哪些限制和挑战 作为支撑隐私保护方案的核心技术 如何运用数据编解码 将密码学论文中抽象的数学符号和