RSA算法
RSA算法是一种非对称加密算法。在现代信息安全中具有重要地位,尤其在密钥管理和数字签名中应用广泛,其学习的重要性也就不必多说。但是学习这个有难度,需要耐心和毅力。
先补充一下对称加密和非对称加密
对称加密
- 定义:也叫单钥加密,加密和解密使用相同的密钥。
- 工作原理:发送方用密钥对明文进行加密得到密文,接收方使用相同的密钥对密文进行解密,还原出明文。
- 示例:常见的对称加密算法有AES(高级加密标准)。假设双方共享密钥是“123456”,发送方将明文“hello”通过AES算法和这个密钥加密成密文,接收方用同样的密钥“123456”解密就能得到“hello”。
非对称加密
- 定义:又称双钥加密,使用一对密钥,即公钥和私钥(不一样)。
- 工作原理:公钥可以公开,用于加密或验证;私钥由持有者保密,用于解密或签名。例如,发送方用接收方的公钥加密消息,接收方用自己的私钥解密。
- 示例:RSA是典型的非对称加密算法。如果A想给B发送消息,B把自己的公钥给A,A用这个公钥加密消息发给B,B再用自己的私钥解密。
在RSA中,包含公钥和私钥。公钥用于加密数据或验证签名,私钥用于解密数据或生成签名
RSA的基础是数论中的欧拉定理和模运算。在RSA中,首先要生成密钥对,包括公钥和私钥。
密钥生成
1.选择两个不同的大质数p和q,计算乘积n=p*q(模数),n用于公钥和私钥的一部分,其大小决定了加密的强度
2.计算n的欧拉函数 (n)=(p-1)*(q-1)
3.选择一个整数e,满足1<e<(n)且e与
(n)互质。e是私钥的一部分,通常会选择较小的常数值,如65537,也可写作2的16次方+1或者100000000000000001(16个0)
4.计算私钥d,使得d*e1(
(n))(即d是e关于
(n)的模逆)
公钥:(e,n); 私钥:(d,n)
注意:1.p和q选择长度在1024位及以上的大质数 ,可以利用sagemath生成
2.φ(n)表示在小于等于n的正整数中与n互质的数的个数
加密
- 明文m转化为数字(m<n)
- 使用公钥加密:
c = mod n
- c是密文
解密
- 使用私钥解密:
m = mod n
数字签名
- 使用私钥对消息摘要签名:
S = H(m)^d mod n
- 验证方用公钥验证签名是否正确
例如,假设p = 5,q = 7,那么n = 35,φ(n) = 24。选择e = 5,通过计算得到d = 5(因为5 * 5 ≡ 1 (mod 24))。如果要加密的消息m = 3,那么加密后的密文c = 3^5 mod 35 = 24。解密时,用私钥计算得到3 = 24^5 mod 35。
RSA的安全性主要基于分解大整数n的困难性。如果攻击者能分解n得到p和q,就能计算出私钥d,从而破解加密信息。
后续有什么内容会继续补充。