信安读书笔记07-非对称密码RSA详解

346 阅读2分钟

前言:

非对称加密指的是加密和解密的秘钥不同,也就是常见的公钥密码体制,其代表加密算法就RSA。有人可能会说传统的对称加密不是挺好的吗,一个秘钥就可搞定加密和解密。

这就需要说公钥密码体制优点了,

  1. 既保证了通信的机密性,又保证了真实性。假设双方 A 和 B 进行通信,机密性指的是将可以确定接收方是事先设定的,但是发送方不能确定。真实性指的是可以确定发送方的身份是符合事前确定的,但是不能确定接收方的身份。
  2. 加密和解密是分开的,并且私钥加密的密文可以用公钥进行解密,常见的可以用作数字签名。

1、RSA 算法

首先RSA是典型的的非对称加密算法,通过使用该算法生成一个公钥和一个私钥,用户留着公钥和私钥,将公钥发送给对方。

RSA之所以这么的流行以及安全,归因于RSA算法是基于大数因子分解问题,很难对一个大数进行因式分解。例如n=pqn=pq,p和q是两个超级大的素数,如果对 n 进行逆向分解出素数 p 和 q,以目前的电脑性能是结算不出来的,

加密函数和解密函数不难,重点在于生成两个大素数 p 和 q,n=pqn=pq,以及证明公式。

2、 RSA加密

1)RSA明文加密:C=Me mod nC=M^e\ mod\ n,其中 n 和 e 是公钥,C是密文,M是明文。

3、 RSA解密

2)RSA密文解密:M=Cd mod nM=C^d\ mod \ n,将上1)式子带入有:M=Cd mod nM=C^d\ mod \ n。其中 n 和 d 是私钥。C是密文,M是解密后的明文。

4、生成公钥和私钥

1)首先设定两个很大的素数 p 和 q,后 n=pqn=pq,设明文M=19

例如:n = 7× 17 = 119,然后转成二进制为1110111,总共是7位,一般是要1024位才安全。

2)计算欧拉函数 ϕ(n)\phi(n) ,用来计算后面的d。这里ϕ(n)=6×16=96\phi(n)=6\times16=96

3)选定e,e必须满足1<e<ϕ(n)1<e<\phi(n),且 gcd(ϕ(n),e)=1gcd(\phi(n), e)=1。这里可以选定 e=5

4)计算d,满足公式 ed1 mod ϕ(n)ed\equiv1 \ mod \ \phi(n),其中 d 是 e 的乘法逆元。

然后可以计算出e×d=k×96+1e\times d=k\times 96+1,这个数比较小,试出来d=77

5)就得出公钥(n, e)和私钥(n, d),然后将数字按照标准的 RSA 秘钥样式ASN.1格式,将数字按照语法转成字符串,具体怎么变得,后补。

6)计算密文

C=Me mod n=195 mod 119=66C=M^e \ mod \ n=19^5 \ mod \ 119=66

7)解密密文

M=Cd mod n=6677 mod 119=19M=C^d \ mod \ n=66^77 \ mod \ 119=19

总结:

RSA算法并不难,相对于非对称加密的代换和置换,是真的很简洁。之所以RSA这么安全就在于大数 n 不容易分解。后面用到的数字签名都是用 RSA 搞定的。

参考文章:

blog.csdn.net/bian_h_f612…

www.ruanyifeng.com/blog/2013/0…