一、简述
商用密码
商用密码是中华人民共和国政府用于非国家机密信息保护所采用的一系列密码技术和密码产品的总称,其相关技术为国家秘密。商用密码的研发及使用由国家密码管理局统一管理。
国密算法
国密算法是指中国自主设计和使用的密码算法标准,其目的是保障信息安全和国家利益。目前,国密算法包括以下几个主要的密码算法:
二、SM1 分组加密算法
SM1 为分组加密算法,对称加密,分组长度和密钥长度都为 128 位,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片中,调用该算法时,需要通过加密芯片的接口进行调用,采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
三、SM2 椭圆曲线公钥加密算法
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。
该算法是一种基于ECC算法的非对称密钥算法,其加密强度为256位,其安全性与目前使用的RSA1024相比具有明显的优势。
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。
SM2算法和RSA算法比较
SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小。
SM2 | RSA | |
---|---|---|
算法结构 | 基本椭圆曲线(ECC) | 基于特殊的可逆模幂运算 |
计算复杂度 | 完全指数级 | 亚指数级 |
存储空间 | 192-256bit | 2048-4096bit |
秘钥生成速度 | 较RSA算法快百倍以上 | 慢 |
解密加密速度 | 较快 | 一般 |
四、SM3 杂凑算法
SM3是国家采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。
该算法也叫密码杂凑算法,属于哈希(摘要)算法的一种,杂凑值为256位,和SM2算法一起被公布。功能与MD5,SHA-1相同。产生256位的编码。该算法为不可逆的算法。具体算法也是保密。
在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。
密码散列函数
密码散列函数(英语:Cryptographic hash function),又译为密码散列函数、加密散列函数,是散列函数的一种。它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这样的单向函数被称为“现代密码学的驮马”。这种散列函数的输入数据,通常被称为消息(message),而它的输出结果,经常被称为消息摘要(message digest)或摘要(digest)。
在信息安全中,有许多重要的应用,都使用了密码散列函数来实现,例如数字签名,消息认证码。
特性
一个理想的密码散列函数应该有四个主要的特性:
-
对于任何一个给定的消息,它都很容易就能运算出散列数值。
-
难以由一个已知的散列数值,去推算出原始的消息。
-
在不更动散列数值的前提下,修改消息内容是不可行的。
-
对于两个不同的消息,它不能给与相同的散列数值。
五、SM4 分组加密算法
SM4.0(原名SMS4.0)是国家采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。
该算法为对称加密算法,随WAPI标准一起被公布,其加密强度为128位。此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。
SM4.0中的指令长度被提升到大于64K(即64×1024)的水平,这是SM 3.0规格(渲染指令长度允许大于512)的128倍。
相关概念
在密码学中,分组加密(英语:Block cipher),又称分块加密或块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。分组加密是极其重要的加密协议组成,其中典型的如DES和AES作为美国政府核定的标准加密算法,应用领域从电子邮件加密到银行交易转帐,非常广泛。
六、SM7 分组加密算法
SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。
产品特点
SM7国密算法的安全特性
1、真随机数发生器
2、采用SM7国密算法加密保护数据交互的安全
3、采用SM7国密算法三重相互安全认证机制
4、具有8个相互独立的128位密码,支持一卡一密和一卡多用
5、每张卡具有4字节的唯一序列号
应用
SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
七、SM9 标识加密算法
SM9是国家采用的一种标识密码标准,由国家密码管理局于2016年3月28日发布,相关标准为“GM/T 0044-2016 SM9标识密码算法”。
SM9是基于对的标识密码算法,与SM2类似,包含四个部分:总则,数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法。在这些算法中使用了椭圆曲线上的对这一个工具,不同于传统意义上的SM2算法,可以实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,省去了证书管理等。
双线性对的双线性的性质是基于对的标识密码SM2中的总则部分同样适用于SM9,由于SM9总则中添加了适用于对的相关理论和实现基础。
在商用密码体系中,SM9主要用于用户的身份认证。据新华网公开报道,SM9的加密强度等同于3072位密钥的RSA加密算法。
八、ZUC 祖冲之算法
ZUC 为流密码算法,对称加密,该机密性算法可适用于 3GPP LTE 通信中的加密和解密,该算法包括祖冲之算法(ZUC)、机密性算法(128-EEA3)和完整性算法(128-EIA3)三个部分。已经被国际组织 3GPP 推荐为 4G 无线通信的第三套国际加密和完整性标准的候选算法。
据了解,在日本福冈召开的第53次3GPP系统架构组会议上,我国祖冲之密码算法(ZUC)被批准成为新一代宽带无线移动通信系统(LTE)国际标准。祖冲之密码算法的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是一种流密码。它是两个新的LTE算法的核心,这两个LTE算法分别是加密算法128-EEA3和完整性算法128-EIA3。ZUC算法由3个基本部分组成,依次为:1、比特重组;2、非线性函数F;3、线性反馈移位寄存器(LFSR)。
相关人士认为ZUC成为国际标准提高了我国在移动通信领域的地位和影响力,对我国移动通信产业和商用密码产业发展均具有重大而深远的意义。
据悉,祖冲之密码算法是我国商用密码算法首次走出国门,参与国际标准竞争,扩大了祖冲之算法的公开评估范围。
九、几种算法对比
对称/可逆
算法名称 | 是否可逆 | 是否对称 |
---|---|---|
SM2 | 可逆 | 非对称 |
SM2签名 | 不可逆 | 对称 |
SM3签名 | 不可逆 | - |
SM4 | 可逆 | 对称 |
SM9 | 可逆 | 对称 |
SM9签名 | 不可逆 | - |
秘钥长度
算法名称 | 秘钥长度 |
---|---|
SM2 | 256位(64位16进制数) |
SM2签名 | 256位(64位16进制数) |
SM3签名 | - |
SM4 | 128位(32位16进制数) |
SM9 | 不限制 |
SM9签名 | 不限制 |
明/密文长度
算法名称 | 算法模式 | 是否补足(isPadding) | 长度关系 |
---|---|---|---|
SM2可逆 | - | - | M=(m-1)/3*8+202 |
SM2签名 | - | - | M=140/142/144 |
SM3签名 | - | - | M=64 |
SM4 | ECB | 是 | m<10时,M=32; m>=10时,M=[(m-10)/12+2]*32 |
SM4 | ECB | 否 | M=[(m-1)/12+1]*32 |
SM4 | CBC | - | m<10时,M=32; m>=10时,M=[(m-10)/12+2]*32 |
算法模式列:-
表示不相关
是否补足列:-
表示无此参数
长度关系列:M
表示密文长度
,m
表示明文长度
优势分析
国密算法作为推荐使用的加密算法,有它们自身与其他算法相较的优势:
SM2与RSA相比,SM2的密码强度更高,由于SM2算法是基于椭圆曲线上点群离散的对数难题,256位的SM2密码强度已经比2048位 RSA密码强度要高;
SM3与MD5和SHA-1相比,产生的杂凑值长度不同,SM3输出长度为256比特,MD5为128比特,SHA-1为160比特,作为杂凑算法,杂凑值越高,安全性越高,因此SM3算法的安全性要高于MD5算法和SHA-1算法;
SM4与3DES相比,SM4与AES具有相同的密钥长度(AES密钥长度为128位时)和分组长度,因此SM4安全性显著高于3DES。