密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录
SM1、SM2、SM3和SM4
为了保障商用密码的安全性,国家密码局制定了一系列密码标准,包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC) 等。
SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法。
SM2、SM9是非对称算法。
SM3是哈希算法。
SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
国家密码局的密码标准列表 http://www.gmbz.org.cn/main/bzlb.html,此列表中可以找到一系列国密算法标准文档。
SM1 对称密码
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
在调用SM1的功能时,需要接入支持相应算法的硬件密码设备。软件需要按照**《智能IC卡及智能密码钥匙密码应用接口规范》**的接口规范调用算法,原则上可以支持所有提供该接口的国密硬件。
SM2 椭圆曲线公钥密码算法
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。
SM2标准包括四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
总则
数字签名算法
密钥交换协议
公钥加密算法
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然)
国际的RSA算法和国产的SM2算法的主要特性对比如下:
SM3 杂凑算法
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。
此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见SM3标准。
SM4 对称算法
此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
同态加密
同态加密(Homomorphic Encryption)是指将原始数据经过同态加密后,对得到的密文进行特定的运算,然后将计算结果再进行同态解密后得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。
同态加密与一般加密方案的关注点不同,一般的加密方案关注的是数据存储安全,即我要给其他人发送信息或者存储信息,我需要对数据进行加密之后再发送和存储,这里我们只需要保证在数据传送和存储的过程中不被其他人窃听到即可,在这个过程中用户时不能对加密的结果做任何操作的,否则可能会导致解密失败
同态加密的关注点则是数据处理安全,同态加密提供了一种对加密数据进行处理的功能。也就是说其他人可以对加密后的数据进行处理,在这个过程中不会泄露任何原始的内容,在数据处理完成之后再进行解密,得到的正是对原始数据进行相同处理后的结果。
密态计算和隐私计算
随着国家对数据安全的重视,各企业告别数据明文时代,启程数据密态时代,根据专家判断,数据密态时代大致发展为三个阶段:计算密态化、大数据密态化以及数据要素密态化。考虑到目前大多数企业正在进行明文计算向密文计算转换的初始阶段,即:计算密态化。目前各行业在计算密态化阶段主要应用在较为基础和经典的场景,采用“隐私计算”的相关技术。
“隐私计算”一系列技术的提出,主要用于解决海量数据之间的安全流动,既需要保证数据发挥价值,又需要保护数据隐私安全,防止数据信息泄漏,隐私计算主要是指在数据全生命周期中,实现数据的“可用不可见”,兼顾数据流通与隐私保护两大方面,目前隐私计算想要实现的功能主要涵盖为两点:数据可用不可见,数据不动模型动。
隐私计算的技术主要分为3类:
以密码协议为底层基础的安全多方计算技术,其底层技术均为密码学相关原语技术,主要用于实现大数据分析、查询以及统计的功能函数。
以人工智能技术奠基的联邦学习技术,该类技术依托人工智能技术,主要用于机器学习的建模过程,并在其过程中,需要多次应用到安全多方计算的相关技术。
安全可信硬件技术。其核心思想主要是构建可信执行环境,在该安全环境中进行数据的计算,但是该类技术的安全性主要依赖于芯片硬件厂商。
安全多方计算技术
安全多方计算简介
安全多方计算作为隐私计算的核心技术,其主要功能简述为:在无可信第三方的前提下,多个计算节点在分布式计算环境中,各自输入数据,共同完成某个功能函数的计算,并不泄漏各个参与方的输入,并且所有参与方可以共享功能函数的输出函数值。
安全多方计算过程示意图如下上述过程中,各个参与方是将各自数据加密后再进行计算的,其中参与方在将数据分布式加密后再输入到功能函数的计算模块,充分保证明文的安全性。
安全多方计算本质上为功能函数的设计与计算结果的输出。在该过程,需要考虑到异地通讯部署计算节点的网络带宽问题,并且需要考虑待计算数据库的量级,以及功能函数计算时的性能和安全性。目前常用秘密共享、同态加密、不经意传输以及混淆电路这四类技术混合使用来完成多方计算函数的构造。其中秘密共享和同态加密技术将计算任务看作是函数;使用不经意传输构造的计算任务可以看作是查询功能;使用混淆电路构造的计算任务主要是电路的构造。上述四类技术在构造多方安全计算函数时,均有利弊,通常在构造时,混合使用上述几类技术。
秘密共享:该类技术本质为秘密分割,主要是将秘密值进行分割,分到若干个参与者手中,每个参与者只能得到其中的分片信息,只有满足门限阙值参与者的秘密才可以恢复整个秘密,常用门限秘密共享方案。
同态加密:分为有限同态加密和全同态加密,该类技术主要在密文域上进行数据运算,目前有限同态加密实现的功能有限,但是效率较优;全同态加密可以涵盖各类函数的计算实现,目前计算开销距离实际应用,仍需优化。
不经意传输:该类技术主要是指接收方和发送方之间以不经意的方式传输信息,可以做到发送者对于接受者的选择信息比特不知情,并且对于接收者而言,只能得到对应的选择信息,对于其他信息不知情。通过Beaver的去随机化技术,以及后期发展的不经意传输扩展技术,可以实现使用少量不经意传输来实现大量不经意传输的计算,安全性和效率较优。
混淆电路:混淆电路使用布尔电路以及算数电路等来实现函数的构造,将计算任务转为门电路的计算,具备很强的安全性,但效率较低。
安全多方计算技术主要基于各类底层密码学原语及协议,并且可以实现无可信第三方的可证安全性;底层技术大多为密码学技术。通用安全多方计算技术最早由图灵奖获得者华裔计算机科学家姚期智于1982年提出,经过30多年的发展变化,经历效率较优的专用安全多方计算算法时代,并且在2010年左右,各类安全多方计算的通用编译器的设计出炉,各类算法的改进以及硬件性能的稳定增长,使得安全多方计算具备更优的通用性。目前ABY3、MP-SPDZ、CrypTen、Obliv-C、TF-Encrypted MPC等安全多方计算的开源框架在科研以及产业界具备重要的意义,具备较强的借鉴意义。
ABY3 https://github.com/encryptogroup/ABY
MP-SPDZ https://github.com/data61/MP-SPDZ
CrypTen https://github.com/facebookresearch/CrypTen
Obliv-C https://github.com/samee/obliv-c
TF-Encrypted MPC https://github.com/tf-encrypted/tf-encrypted
安全多方计算作为隐私计算非常典型的技术工具,其可以达到“输入隐私性、计算正确性、去中心化”的特性,在数据融合场景以及数据资产化场景中,实现数据集的查询、统计分析、建模预测以及可信存储等功能,在6G技术兴起后,高带宽、低延时的网络特性使得安全多方计算的可信计算功能更显优势;并且安全多方计算技术可以利于实现数据的确权,保障数据所有者的权益,将数据交易的本质由数据所有权转换为数据使用权。安全多方计算技术不仅作为隐私计算的一类重要技术,该技术也被用在区块链领域,主要应用在隐私智能合约、密钥管理以及随机数生成等应用场景。
安全多方计算的开销依旧远大于明文计算,因此优化模型框架,提升算法效率以及正确率是目前研究者的重要工作任务。安全多方计算技术作为一类重要核心技术,依旧需要与可信硬件技术、联邦学习技术以及区块链技术进行合作,实现在可信环境中联合建模、统计分析,以及上链下链的一系列技术,共同保证完成数据安全,为隐私数据护航。随着目前算法的优化,可以做到支持更为复杂的运算任务,隐私计算技术将作为必备的技术,在数据的完整生命周期中,达到保护用户数据隐私保护的效果。
安全多方计算的应用场景
安全多方计算技术在一些特定的应用场景,可以实现计算逻辑,数据大小比较以及两方集合求交等场景,可以采用几种不同的密码学技术设计协议;针对通用的场景,理论上可以使用混淆电路、同态加密以及不经意传输协议实现各类计算,由于可扩展性质的限制,在产业界应用之前依旧需要优化。
安全多方计算技术主要用在需要秘密共享以及隐私保护的数据计算场景,主要包括可信交换、安全查询以及联合分析等。
数据可信交换
主要用于解决“数据孤岛”问题,适用于不同企业机构间实现数据的可信互通,通过使用安全多方计算技术,保证数据的安全性以及隐私性问题,降低数据信息交易的成本,为数据拥有方和需求方之间提供安全交互服务的网络技术。
数据安全查询
数据存储在云端服务器,出于合规要求,需要对数据分级并加密,用户在查询数据时,使用安全多方计算技术,保证数据查询方用户仅能得到自己需要的信息,密文状态下实现查询,本地用户解密,并且服务器端对于用户的查询的具体内容不知情,该类技术可以实现数据的安全查询,保障查询方用户与服务器的两方隐私。
数据联合分析
目前的企业以及各类机构的数据分析主要聚集在自己内部应用产生数据进行分析,属于传统数据分析种类,随着跨机构以及跨国公司的经营运转,需要对各类数据进行联合分析,安全多方计算技术可以用于改进传统的数据分析算法,创建多个节点,多方参与者之间可以进行数据源协同分析,保护数据以及各方参与者。
对称加密算法
DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法
非对称加密算法(公钥加密)
RSA、ElGamal、背包算法
参考文章
国密算法概述(SM1、SM2、SM3、SM4、SM7、SM9、ZUC ) https://blog.csdn.net/wang_jing_jing/article/details/121493025
国密算法概述 https://blog.csdn.net/lwzhang1101/article/details/78773700
密码学系列 - 国密算法SM1/SSF33 https://blog.csdn.net/wcc19840827/article/details/120827731
浅析数据安全之密态化计算 https://mp.weixin.qq.com/s/Ia9jojT8U5F990fws6FvBg