sm

众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。

其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。


其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用;比较少人了解这些算法,在这里对这些国密算法做简单的科普

1 SM1对称密码
 SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。

 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

2 SM2椭圆曲线公钥密码算法
 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。
 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。


 SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。


详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于SM9算法。


在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然),与RSA安全性对比如下图

 

3 SM3杂凑算法
 
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。

此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见SM3标准。

4 SM4对称算法
 
此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和示例见SM4标准。

5 SM7对称密码

SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。

6 SM9标识密码算法

为了降低公开密钥系统中密钥和证书管理的复杂性,以色列科学家、RSA算法发明人之一Adi Shamir在1984年提出了标识密码(Identity-Based Cryptography)的理念。标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。2008年标识密码算法正式获得国家密码管理局颁发的商密算法型号:SM9(商密九号算法),为我国标识密码技术的应用奠定了坚实的基础。

SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署的特点,从而开启了普及密码算法的大门。

7 ZUC祖冲之算法

祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。

密码算法作为国家战略资源,比历史上任何时候都显得更为关键。在大数据和云计算的时代,关键信息往往通过数据挖掘技术在海量数据中获得,所以每一个人的信息保护都非常重要。

 

 

 

 

 

之前整理过几篇关于数字证书的笔记。数字证书技术的是 PKI(Public Key Infrastructure)的重要组成部分,基于数字证书技术的身份认证方式,在在金融、通信、互联网、数据中心等领域发挥着关键作用。但发展多年的 PKI 体系也并非完美,关于数字证书生命周期的管理是其中一个关键问题,而当下受到越来越多关注的技术体系 - 基于标识的密码体系(IBC) ,正在尝试用一种新的方式解决传统 PKI 所面临的难题。趁热打铁写了一篇学习笔记,保持学习,青春永驻。

一、标识密码体系是什么

大家都清楚,在传统 PKI 体系下,一个实体具有一对密钥:一个是公开的公钥;一个是自己保管的私钥。在这样的系统中,信息发送方需要正确获取接收方的公钥,否则就可能出现恶意攻击方可通过提供虚假接收方公钥,即中间人攻击的方式获取信息

为了证明接收方公钥的可信,传统 KPI 体系就需要一个 受信任的第三方来绑定实体与其拥有的密码对。这个受信第三方即认证中心(CA:Certificate Authority),在对实体进行身份核实后,就为其生成一个公私钥对,并为该实体颁发一个证书,证书中包含实体的标识、公钥以及认证中心的数字签名。信息发送方在发送信息前需要获取接收方的证书。在验证证书的有效性后,发送方使用证书中的公钥加密。这就是基于数字证书的 PKI 系统。

基于数字证书的 PKI 系统有几个问题:

  • 发送方在发送信息前必须先获取接收方的证书
  • 发送方在收到一个证书后,都需要验证证书的有效性
  • 认证中心需要花费大量成本管理和维护证书,非常复杂,难以部署

为了解决传统 PKI 的一些问题,以色列密码学家 Shamir 于1984年提出基于标识的密码体系,即 IBC(Identity-Based Cryptograph)。其最主要观点是 不需要由 CA 中心生成公私钥对,不需要使用证书传递公钥,而是使用用户标识如姓名、IP地址、电子邮箱地址、手机号码等代表用户的标识信息作为公钥,私钥则由密钥中心(Key Generate Center, 简称KGC)根据系统主密钥和用户标识计算得出

自 Shamir 1984年提出 IBC 思想的十几年,一直停留在概念阶段,直到2000年,D.Boneh 和 M.Franklin, 以及 R.Sakai、K.Ohgishi 和 M.Kasahara 两个团队均提出基于椭圆曲线数学难题的配对构造算法,解决了安全性和实现效率最优化的问题,标识密码终于引发了标识密码的新发展。2008年,我国将 IBC 正式纳入中国国家算法标准,并获得国家商用密码管理局颁发的算法型号 SM9

二、标识密码体系的原理是什么

IBC 体系标准主要包括 IBE加解密算法组IBS签名算法组IBKA身份认证协议 三个个组成部分。理解的时候,对照传统 KPI 体系标准,其实很容易理解。

1.IBE 加解密算法机制

加解密算法由四部分组成:

  • 系统参数生成算法(Setup)
  • 密钥生成算法(Extract)
  • 加密算法(Encrypt)
  • 解密算法(Decrypt)

核心步骤描述如下:

  • Setup:基于一个安全参数k,输出 系统参数(params)主密钥(MasterKey)。其中,系统参数(params) 是公开的,而 主密钥(MasterKey) 只有密钥生成中心(KGC)才知道,并严加保管
  • Extract:利用系统参数(params)、主密钥(MasterKey)和 ID(就是上面提到的姓名、电子邮件、电话、IP地址等)返回 私钥(PrivateKey) ,而 ID 就是 公钥(PublicKey),PrivateKeyID 则作为 解密私钥
  • Encrypt:利用 系统参数(params)公钥(PublicKey) 对明文M进行加密,得出密文C,即 C=Encrypt(params, M, ID)
  • Decrypt:利用 系统参数(params)私钥(PrivateKey) 对密文C进行解密,得出明文M,即 M=Decrpyt(params, C, PrivateKeyID)
2. IBS 数字签名机制

数字签名算法也由四个部分组成:

  • 系统参数生成算法(Setup)
  • 密钥生成算法(Extract)
  • 签名算法(Significant)
  • 验证算法(Verify)

核心步骤描述如下:

  • Setup:同 IBE 加密算法 Setup
  • Extract:同 IBE 加密算法 Extract
  • Significant:输入 待签的报文M系统公开参数(params)用户私钥(PrivateKey),生成数字签名S,本质上就是 IBE 加密算法 Decrypt
  • Verify:输入 数字签名S系统公开参数(params)用户公钥(PublicKey),输出验证结果,本质上就是 IBE 加密算法 Encrypt

这个过程是不是看起来和传统 PKI 体系的数字签名是一样的思路?

3. IBKA 身份认证机制

同传统 PKI 体系,身份认证利用的是数字签名与验证原理,协议核心原理如下(以A认证B为例):

  • Step1:A生成一个 随机数R一个时间戳T, 发送给B
  • Step2:B通过算法将 随机数R时间T 生成 待签报文M ,并使用私钥(PrivateKey)生成 数字签名S 后发送给A
  • Step3:A使用 B的公钥(PublicKey),即B的身份标识,对数字签名S进行验证,如果验证通过,则证明B身份可信,完成了对B的身份认证。

这个过程是不是看起来和传统 PKI 体系的身份认证是一样的思路?

三、IBC和PKI的对比

传统 PKI 体系与 IBC 体系都是以公钥密码技术为基础,保证数据的真实性、机密性、完整性和不可抵赖性。IBC体系将代表用户唯一性的身份标识作为用户公钥,确实获得了一些天然优势,使得IBC体系比PKI庞大的证书管理和发布系统更易于应用。

特别要强调,在针对数字证书这个环节上,IBC 确实有优势,但绝不能以偏概全,认为 IBC 就是全面取代传统 PKI 的方案,密码体系可不仅仅指数字证书。

PKI体系IBC体系
公钥是随机数 公钥可以是邮箱地址
通过证书将用户的公钥与身份关联起来 公钥即用户的身份标识
信息发送方必须获得接收方的公钥证书 信息发送方只需要获知接收方的身份标识(如姓名、IP地址、电子邮箱地址、手机号码等)
证书颁发和管理系统复杂难以部署 无需颁发和管理证书
每次发送信息之前,都需要与管理中心通讯交互,验证证书的有效性 可以本地离线加解密
难于实现基于属性、策略的加密 可增加时间或固定IP等方式解密信息的安全策略控制
存放的收信方证书随发送邮件数量的增大而增多,在线通讯交互越繁忙,管理负担和管理成本会同比例放大 发送邮件数量级越大,管理负担和管理成本的增加并不明显
实现成本高、效率低下 实现成本低、效率较高
系统运行维护成本高 运营管理方便,成本低

一张被到处引用的 PKI 与 IBC 的流程对比图,比较清晰的展示了二者的不同。

PKI 体系原理图:

PKI体系

IBC 体系原理图:

IBC体系

再次强调,IBC 是对 PKI 的有益补充,但不能简单认为 IBC 是全面取代传统 PKI 的技术体系!

四、IBC的应用与未来

标识密码体系没有证书管理的负担,简化了实施应用,能够快速实现安全通信,尤其适用于安全电子邮件系统、移动通信的客户以及需要向未注册人群发送信息的用户。

国际电信联盟(ITU)已采用 IBC 技术作为下一代移动电话的认证技术手段。美国食品药品管理局(FDA)在各大医疗机构中也在推广 IBC 应用。在电子商务领域,IBC 在美国已经成为 POS 终端和清算中心间保护信用卡信息的主流技术之一。在欧洲,意法半导体的研究人员己经与智能卡厂商 Incard 合作,联合开发实现在智能卡上部署标识密码。而国内,华为、中兴、上海贝尔等公司也在 NGN 中采用了 IBC 技术。

随着囯家密码管理局对 SM9 算法的规范和推广,用户将会越来越熟悉标识密码。标识密码技术有可能会广泛地应用于安全电子邮件、加密短信、加密通话、电子证照管理、电子病历、手机电子钱包、电子图书馆、身份证与社保、医保等的多卡合一后的管理使用等诸多领域。IBC 应用前景可期。



作者:小叶与小茶
链接:https://www.jianshu.com/p/b07890333bda
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

posted @ 2020-06-09 09:54  zJanly  阅读(1421)  评论(0编辑  收藏  举报