1、国产密码算法及应用商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。 (包括密码算法编程技术和密码算法芯片、加密卡等的实现技术) 。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如各种安全认证、网上银行、数字签名等。为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准,包括 SSF33、SM1(SCB2) 、SM2、 SM3、SM4、SM7、SM9、祖冲之密码算法等等。其中SSF
2、33、SM1、SM4、SM7、祖冲之密码是对称算法;SM2、SM9 是非对称算法;SM3 是哈希算法。目前已经公布算法文本的包括 SM2 椭圆曲线公钥密码算法、SM3 密码杂凑算法、SM4 分组密码算法等。一、 国密算法简介1. SM1 对称密码国密 SM1 算法是由国家密码管理局编制的一种商用密码分组标准对称算法,分组长度为 128 位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP 核的形式存在于芯片中。采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应
3、用领域(包括国家政务通、警务通等重要领域) 。2. SM2 椭圆曲线公钥密码算法SM2 算法就是 ECC 椭圆曲线密码机制,但在签名、密钥交换方面不同于 ECDSA、ECDH 等国际标准,而是采取了更为安全的机制。国密 SM2 算法标准包括 4 个部分,第 1 部分为总则,主要介绍了 ECC基本的算法描述,包括素数域和二元扩域两种算法描述,第 2 部分为数字签名算法,这个算法不同于 ECDSA 算法,其计算量大,也比ECDSA 复杂些,也许这样会更安全吧,第 3 部分为密钥交换协议,与 ECDH 功能相同,但复杂性高,计算量加大,第 4 部分为公钥加密算法,使用 ECC 公钥进行加密和 ECC
4、 私钥进行加密算法,其实现上是在 ECDH 上分散出流密钥,之后与明文或者是密文进行异或运算,并没有采用第 3 部分的密钥交换协议产生的密钥。对于 SM2 算法的总体感觉,应该是国家发明,其计算上比国际上公布的 ECC 算法复杂,相对来说算法速度可能慢,但可能是更安全一点。设需要发送的消息为比特串 M,len 为 M 的比特长度。为了对明文 M 进行加密,作为加密者的用户应实现以下运算步骤:步骤1:用随机数发生器产生随机数 k1,n -1;步骤2:计算椭圆曲线点 C1=kG=(X1 ,Y1 ),将C1的数据类型转换为比特串;步骤3:计算椭圆曲线点 S=hP ,若S 是无穷远点,则报错;步骤4:
5、计算椭圆曲线点 kP =(X2,Y2) ,将坐标X2,Y2的数据类型转换为比特串;步骤5:计算t=KDF( x2 ll y2 ,len) ,若t为全0比特串,则返回步骤1 ;步骤6:计算C2 = M t;步骤7:计算C3=Hash(x2 ll M ll y2);步骤 8:输出密文 C=C1 ll C2 ll C3。2010 年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2 算法) 。为保障重要经济系统密码应用安全,国家密码管理局于 2011 年发布了关于做好公钥密码算法升级工作的通知 ,要求“自 2011 年 3 月 1 日期,在建和拟建公钥密码基础设施电子认证系统和密
6、钥管理系统应使用 SM2 算法。自 2011 年 7 月1 日起,投入运行并使用公钥密码的信息系统,应使用 SM2 算法。 ”近期,人民银行组织召开多次专题会议讨论研究金融领域国产加密算法升级改造的相关工作。3. SM3 杂凑算法又叫文摘算法,也有叫杂凑算法的。功能与 MD5,SHA-1 相同。产生 256 位的编码。该算法位不可逆的算法。具体算法也是保密。SM3 密码杂凑算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在 SM2、SM9 标准中使用。此算法对输入长度
7、小于 2的 64 次方的比特消息,经过填充和迭代压缩,生成长度为 256 比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。SM3 算法包括预处理、消息扩展和计算 Hash 值三部分。预处理部分由消息填充和消息分组两部分组成。首先将接收到的消息末尾填充一个“1” , 再添加 k 个“0” ,使得填充后的数据成为满足length = 448mod512bit 的数据长度,再在末尾附上 64bit 消息长度的二进制表示数, 然后将消息分成 512bit 的子块,最后将每个 512bit的消息子块扩展成 132 个字用于 Hash 值的计算。S
8、M3 算法计算流程图如图所示。SM3 算法的 Hash 运算主要是在压缩函数部分,压缩函数共包含64 轮,每轮包括 12 步运算,64 轮循环计算结束后,再将计算结果与输入到本轮计算的初始数据进行异或运算,即上一次 Hash 运算的Hash 值输出与输入到本轮计算的初始数据异或得到本次 Hash 值输出,Hn 即为最终的 Hash 值,H0 为设计者提供的初始值 IV。图 SM3 算法流程图4. SM4 对称算法此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构。解密算法与加密算法的结构相同
9、,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。定义反序变换 R 为: R( A0, A1, A2, A3)= (A3 , A2, A1, A0) ,A iZ 322,i = 0,1,2,3。设明文输入为(X0 , X1, X2, X3)(Z 322) 4,密文输出为(Y0 , Y1, Y2, Y3)(Z 322) 4 ,轮密钥为 rk i Z 322。则本算法的加密变换为: Xi+4 = F(X i,Xi+1,Xi+2, Xi+3,rki)= XiT(X i+1X i+2 Xi+3rk i) ,i = 0,1,2,3,31.(Y 0, Y1, Y2, Y3)= R(X 32, X3
10、3, X34, X35)=(X 35, X34, X33, X32) 。本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序。 加密时轮密钥的使用顺序为:(rk 0, rk1, , rk31) 。 解密时轮密钥的使用顺序为:(rk 31, rk30, , rk0) 。SM4 算法的优点是软件和硬件实现容易,运算速度快,但该算法的缺点是消息安全取决于对密钥的保护,泄漏密钥就意味着任何人都能对消息进行密码和解密。由于其加密过程和解密过程互逆,这两个过程均使用相同的保密密钥,使得对称密钥加密体制的适用范围受到了很大限制。5. SM7 对称密码SM7 算法是一种分组密码算法,分组长度为 12
11、8 比特,密钥长度为 128 比特。SM7 的算法文本目前没有公开发布。SM7 适用于非接 IC 卡应用包括身份识别类应用(门禁卡、工作证、参赛证) ,票务类应用(大型赛事门票、展会门票) ,支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通) 。6. SM9 非对称算法SM9 是基于对的标识密码算法,与 SM2 类似,包含四个部分:总则,数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法。在这些算法中使用了椭圆曲线上的对这一个工具,不同于传统意义上的 SM2 算法,可以实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,
12、省去了证书管理等。双线性对的双线性的性质是基于对的标识密码 SM2 中的总则部分同样适用于 SM9,由于 SM9 总则中添加了适用于对的相关理论和实现基础。SM9 给出了数字签名算法(包括数字签名生成算法,数字签名验证算法) ,密钥交换协议,以及密钥封装机制和公钥加密算法(包括密钥封装算法,加密盒解密算法) 。数字签名算法适用于接收者通过签名者的标识验证数据的完整性和数据发送者的身份,也适用于第三方确定签名及所签数据的真实性。密钥交换协议可以使用通信双方通过双方的标识和自身的私钥经过两次或者可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。密钥封装机制和公钥加密算法中,利用密钥封
13、装机制可以封装密钥给特定的实体。公钥加密和解密算法即基于标识的非对称秘密算法,该算法使消息发送者可以利用接收者的标识对消息进行加密,唯有接收者可以用相应的私钥对该密文进行解密,从而获取消息。基于对的算法中同样使用了国家密管理局批准的 SM3 密码杂凑算法和随机数发生器,密钥封装机制和公钥加密算法中使用了国家密码管理局批准的对称密码算法和消息认证码函数。7. 祖冲之对称算法祖冲之密码算法由中国科学院等单位研制,运用于下一代移动通信 4G 网络 LTE 中的国际标准密码算法。祖冲之密码算法(ZUC )的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是一种流密码。
14、它是两个新的 LTE 算法的核心,这两个 LTE 算法分别是加密算法 128-EEA3 和完整性算法128-EIA3。 ZUC 算法由 3 个基本部分组成,依次为:1、比特重组;2、非线性函数 F;3、线性反馈移位寄存器(LFSR)。二、 国密算法行业应用2014 年,中国银联发布了中国银联 IC 卡技术规范和中国银联银行卡联网联合技术规范 ,在兼容最新国际通用技术标准的基础上支持国产密码,丰富了安全算法体系,促进了信息安全,自主可控水平实现提高。1. 长沙银行长沙银行是首批开展国密算法金融 IC 卡试点银行之一,此次发行金融 IC 卡中采用了我国安全可控的国密算法芯片。应用在长沙银行金融 I
15、C 卡上的大唐 CE3D 系列双界面金融安全芯片采用了 32 位CPU 内核,拥有高达 80KB 的 EEPROM 数据存储空间,符合 PBOC3.0中 SM2/3/4 算法升级要求,支持 JAVA 操作技术,具有高安全、高性能、低功耗的特点,实现国密算法的金融 IC 卡成功跨行交易。2. 鹤壁银行2014 年 5 月 12 日,PBOC3.0 国密多应用金融 IC 卡项目产品展示会暨示范应用推广研讨会在河南鹤壁召开。在本次研讨会上,全球首张加载 PBOC3.0 国产密码算法的金融 IC 卡正式亮相,并在鹤壁银行实现了首批试商用发卡。作为国产智能卡芯片的佼佼者,同方微电子为本次发卡提供了符合规
16、范的芯片产品 THD86。该项目通过推进金融信息系统国产密码的应用,将为打破国外密码算法及产品在金融领域应用的垄断局面、全面带动国内信息安全及金融服务相关产业发展提供有力保障,实现国家金融安全的重大战略。金融 IC 卡国产密码算法应用示范项目自 2013 年 5 月份开始已取得了阶段性的成果,分别完成了支持国产密码算法的银行端系统改造、ATM、POS 、刷卡器、加密机、IC 卡芯片等一系列产品的研发和接入银行系统,组成了包括芯片厂商、COS 厂商、卡商、密码设备供应商、支撑系统提供商及银行核心系统供应商等的金融 IC 卡国产密码应用的完整产业链。同方微电子在此项目中应用的 THD86 是国内首
17、款 32 位 CPU 双界面卡芯片,国内首款通过银联芯片安全认证的双界面卡芯片,国内率先通过国密二级认证的双界面卡芯片,支持金融应用扩展,符合PBOC3.0 标准,支持国外密码算法和国产密码双算法体系。 THD86在 PBOC3.0 国密多应用金融 IC 卡示范应用中的成功,将对我国普及推广该项目成果具有重要的示范作用。3. 工商银行工商银行根据国密算法应用实施总体规划,从 2012 年下半年开始,工商银行启动国密算法及产品的相关研究和测评工作,并于2013 年开始在电子认证、网上银行、金融 IC 卡及移动支付等关键领域率先启动国密算法应用试点工作。客户电子认证系统是工商银自建的为网上银行客户
18、提供电子认证服务的系统,在 2013 年 8 月完成国密算法应用改造以及机房、网络等环境改造。改造后增加了国密 SM2 算法证书的后台管理功能,并配合网上银行实现国密 U 盾的签发和交易数据签名验签功能。该系统在 2013 年 11 月通过国密局安全审查,成为金融领域自建电子认证系统第一家通过国家密码管理局安全性审查的单位。同时,工商银行还在网上银行、金融 IC 卡及移动支付领域启动了国密算法应用改造工作,并将金融 IC 卡及移动支付的国密试点项目向发改委申报了“金融 IC 卡与密码应用专项” ,在 2014 年 1 月个人网上银行系统、金融 IC 卡及移动支付系统都顺利完成国密算法技术改造,经过分行对相关功能进行验收后,目前已经在部分分行启动了业务试点工作。2014 年 9 月,国家密码局、工信部、公安部、银行卡检测中心等单位组成联合检查小组,对重庆分行支持国密算法的 IC 卡及移动支付试点情况进行中期检查,检查组对工商银行金融 IC 卡及移动支付国密算法实施工作的总体进度较为满意,并对其实施效果给予了高度评价。