非对称加密 RSA 算法
一、加密技术一般分为对称加密和非对称加密两种
RSA算法为非对称加密,采用的是模运算(modular arithmetic)原理,本质类似于求余运算 (对于负数有些许不同);
二、过程分析
Φ(N)为欧拉函数,求的是N前有多少位和N互质的正整数(Φ(7)=6,7有6、5、4、3、2、1共6个与他互质的数)
当N为质数时,Φ(N)=N-1
Φ(N)可以化简为两个互质的两个数相乘,Φ(N)=Φ(a)*Φ(b);
- 原理分析:
存在Φ(N),使得mΦ(N)≡1(modN)
=> mkΦ(N)*m≡1*m(modN) 注:k是为了保证指数为整数
=> mkΦ(N)+1=m(modN)
-
加密过程:memodN≡c ,其中(e,N)为公钥,m通过e次方求余得到 c 密文;
-
解密过程:cdmodN≡m ,其中(d,N)为私钥,c通过d次方求余得到 m 原文;
(公钥的(e,N)可以自己假设,根据{d=(kΦ(N)+1)/e}求得 d 作为自己的私钥)
-
过程推导:加密过程的 c 代入解密过程公式,化简为 => medmodN=m => mkΦ(N)+1modN=m => d=(kΦ(N)+1)/e
-
字母含义:encrypt 加密、decrypt 解密、cipher 密文、m 原文、c 密文、≡ 同余号
三、实际使用
- 当双方第一次通信时,互相传递公钥;
- 然后发送消息时通过对方的公钥进行加密;
- 接收方,收到消息使用自己私钥进行解密;
- 由于非对称加密相对耗时,所以基本只在第一次通信时,用来传递对称加密的密钥,后续则使用效率更高的对称加密方式通信;
四、数字证书
- SSL证书也是使用该方式,用私钥签名,而使用公信度更高的证书颁发方CA提供的公钥,一般公钥由各大浏览器提供;
- 流程:
1. 浏览器 对称密钥aes + 公钥加密 -> 服务器使用私钥解密
2. 服务器将hash值使用私钥签名 -> 浏览器使用公钥验签
3. 如果一致,则代表自己的内容未被篡改,后续使用对称加密通信;
SM2、SM3 和 SM4
-
SM2(椭圆曲线公钥密码算法)一种替代RSA和DSA的公钥密码算法, 适用于数字证书、数字签名、密钥交换等场景
-
SM3(密码杂凑算法)一种哈希函数, 将任意长度的消息映射为固定长度的摘要, 适用于数据完整性校验和数字签名等场景
-
SM4(分组密码算法)一种对称密钥算法, 用于加密和解密数据块, 适用于数据加密传输、数据存储保护等场景, 用于替代DES和AES算法
加密类型 | 加密算法 | 应用范围 | 对应国际加密算法 | 说明 |
---|---|---|---|---|
非对称加密 | SM2 | 身份认证、数字签名、密码交换、256位椭圆曲线 | RSA、RSA4096 | 需要生成秘钥对(公钥和私钥 |
对称加密算法 | SM1 | 128位数字加密、算法不公开、仅以IP核的形式存在于芯片中。智能IC卡、智能密码钥匙、加密卡、加密机 | DES、3DES、AES(128)、AES192、AES256 | AES是取代DES的算法 |
对称加密算法 | SM4 | 128位数据加密、相当于AES(128) | 同上 | 同上 |
完整性运算 | SM3 | 256位数据摘要计算,相当于SHA256 | SHA1、SHA-256、SHA-384、SHA-512 |