1、SM4
- SM4 跟 SM1 类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法。SM4 算法与 AES 算法具有相同的密钥长度、分组长度,都是128bit。
- SM4的加密过程:SM4的加密过程基于Feistel网络结构,经过32轮的迭代运算来加密128位明文。每一轮的操作包括:
- 密钥调度:将128位的密钥通过密钥扩展生成32个子密钥,每个子密钥用于加密过程中的一轮运算。
- 非线性变换:在每一轮中,对输入数据块进行非线性变换,通过S盒(Substitution box)实现。S盒提供了高度的随机性和复杂性,增强了算法的安全性。
- 【注】S盒(一个预先定义的查找表)是一种在密码学中广泛使用的非线性变换机制,作用是将输入的比特序列通过查表的方式转换成不同的输出比特序列,从而引入混淆性和复杂性。
- 线性变换:在每一轮的运算中,除了非线性变换,SM4还包含线性变换,用于混淆和扩散数据块中的比特位,进一步提高加密的强度。
2、SM7
- SM7是一种中国国家密码管理局设计的分组对称加密算法,未公开。
- SM7 适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
3、SM9
- SM9 是中国国家密码管理局发布的基于身份的密码算法(Identity-Based Cryptography, IBC)。它基于椭圆曲线密码学,主要用于实现基于身份的公钥密码系统。
- 基于身份的加密:用户的公钥可以直接由其身份(如邮箱地址、手机号等)推导出,不再需要复杂的公钥基础设施(PKI)。这简化了公钥的分发和管理流程。
- 椭圆曲线密码学:SM9基于椭圆曲线密码学中的双线性对(bilinear pairing),这一点与传统的RSA或ECC公钥体系有所不同。双线性对是一种数学结构,能够实现复杂的密码学运算,如基于身份的加密和签名。
- SM9包含了一整套密码机制,包括数字签名、加密、密钥交换等,适用于身份认证和密钥管理等应用场景。
- 数字签名:允许用户使用其身份进行数字签名,确保数据的完整性和真实性。
- 身份加密:允许用户使用接收者的身份进行加密,无需直接获取对方的公钥。
- 密钥交换:两方通过各自的身份生成密钥,实现安全的密钥交换。
- 工作原理:
- 主私钥生成:系统由一个信任的第三方(称为主密钥生成中心,Key Generation Center, KGC)生成一个主私钥(KGC持有)和对应的主公钥(公开)。
- 用户私钥生成:每个用户私钥由第三方根据主私钥和用户身份信息生成。该身份信息可以是用户的邮箱地址、手机号、身份证号等。用户身份信息充当用户公钥。
- 加密和解密:发送方使用接收方的身份(用户公钥)和主公钥进行加密;接收方使用自己的用户私钥解密。
- 签名和验证:用户也可以使用用户私钥对信息进行签名;验证方可以直接使用发送者的身份和主公钥验证签名的真实性。