众所周知,为了保障商用密码的安全行,国家商用密码管理办公室制定了一系列密码标
准,包括 SSF33、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法
那等等。其中 SSF33、SM1、SM4、SM7、祖冲之密码是对称算法;SM2、SM9 是非对
称算法;SM3 是哈希算法。目前,这些算法已广泛应用于各个领域中,具体来说是这些国
密算法芯片的应用。比如,广州中盈物流的国密芯片,已广泛应用于门禁系统、签到系统
智能卡、一卡通系统等等领域。
我们常说国密 SM1/SM7 算法芯片,但貌似比较少人了解这些算法,在这里,小编对这
些国密算法做简单的介绍,希望对大家有所帮助:
1、SM1 对称密码
SM1 算法是分组密码算法,分组长度为 128 位,密钥长度都为 128 比特,算法安全
保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以 IP 核的形式存在于芯片
中。
采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加密机等安全
产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警
务通等重要领域)。
2、SM2 椭圆曲线公钥密码算法
SM2 算 法 就 是 ECC 椭 圆 曲 线 密 码 机 制 , 但 在 签 名 、 密 钥 交 换 方 面 不 同 于
ECDSA、ECDH 等国际标准,而是采取了更为安全的机制。另外,SM2 推荐了一条 256
位的曲线作为标准曲线。
ECC 椭圆曲线密码体制 Koblitz 和 Miller 在 1985 年各自引入密码学。椭圆曲 232y?
axy?ay?x?ax?a4x?a6,其上面的所有点和无 132 线的 Weierstrass 方程为穷远点构成
一个加法交换群,其中无穷远点是加法零元。此群的加法法则可以由弦切法所给出。由弦
切法便可以给出椭圆曲线上的加法方程。多倍点运算是指:给定一点 P 和一个整数 k,计
算 kP,即 k 个 P 点的和。椭圆曲线上的离散对数问题为:给定点 P 和 kP,计算整数 k。椭
圆曲线密码体制的安全性便是建立在椭圆曲线离散对数问题之上。
SM2 标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每
个部分的附录详细说明了实现的相关细节及示例。
SM2 算法主要考虑素域 Fp 和 F2m 上的椭圆曲线,分别介绍了这两类域的表示,运算,
以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据
转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节
串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选
取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最
后给出椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中 s 为
用户的私钥,sP 为用户的公钥,由于离散对数问题从 sP 难以得到 s,并针对素域和二元
扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于 SM9 算法。
在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交
换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,
算法流程和相关示例。
数字签名算法适用于商用应用中的数字签名和验证,可满足多种密码应用中的身份认
证和数据完整性,真实性的安全需求。密钥交换协议适用于商用密码应用中的密钥交换,
可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享
秘密密钥(会话秘钥)。公钥加密算法适用于国家商用密码应用中的消息加解密,消息发
送者可以利用接收者的公钥对消息进行加密,接收者用对应的私钥进行解,获取消息。