加密算法是现在IT互联网,区块链的重要基石构建,在讲非对称加密算法之前,我们先了解下密码学中的对称加密。所谓的对称加密就是在加密和解密的过程中使用相同的密钥,即信息的发送方和接收方使用同一个密钥去加密和解密数据。

  对称加密的优势是加解密速度快,但由于密钥是介于加解者之间共享使用,所以安全性就没有保障,一旦密钥泄露那加密的文件就相当于是明文。常见的对称加密算法有:DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

    

密码学历史

    1976年,美国的两位计算机科学家Whitfield Diffie和Martin Hellman在论文“密码学新方向”介绍了一种分发加密密钥的全新方法,它有助于解决密钥分发 - 这种技术被称为 Diffie-Hellman密钥交换

    其中DH密钥交换协议的Whitfield Diffie 迪菲教授今年在浙大公开讲授密码学课程,同时他还是区块链网络公链NKN的顾问。

    

RSA 非对称加密 原理解析

 

非对称加密

    受DH密钥交换协议的启发,后来人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密方式叫"非对称加密算法"

    非对称加密算法,需要一组密钥对,一个是公开密钥(Public key)公开对外发布,另一个是私有密钥(Private key)用户自己保存。信息发送者用公钥去加密,而信息接收者则用私钥去解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密。在这里需要解释下:加密和签名的概念。加密:是对明文做加密处理。签名:是一种身份证明的签署。其中加密的过程,是用公钥加密,私钥解密。而签名是私钥签名,公钥验证。

 

下图是公私钥加密和签名的过程

RSA 非对称加密 原理解析

    

    常用的非对称加密算法有 RSA、Elgamal、ECC(椭圆曲线加密),其中最著名的就是RSA加密算法,ECC也处于强势发展当中,本篇主要介绍RSA非对称加密算法。

 

RSA

    RSA算法是1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他们三人姓氏开头字母命名,是一种获得广泛使用的非对称加密算法。像服务器登录用的SSH密钥对,https中SSL协议都是使用RSA非对称加密算法。下面看下日常用的百度https安全证书,使用的就是RSA加密算法。

RSA 非对称加密 原理解析

 

要深入理解RSA算法过程,需要从小学的质数开始说起。

 

质数

    在正整数中除了1和它本身没有其他公约数的数叫质数,如1,2,3,5,7,11,13..... 

互质:指两个整数只有1是公约数的两个数称为互质。如,2,3,5,7... 可以看出任意两个质数都互质。

 

欧拉函数

    瑞士数学家,自然科学家 莱昂哈德·欧拉(Leonhard Euler),在数论中引入了它的欧拉函数。是这样定义的:对于正整数n,在小于n的正整数中与n互质的数的个数。函数以欧拉命名叫:Euler's totient function ,又称φ函数。例如:φ(8)=4,因为1,3,5,7均和8互质。对于欧拉φ函数,其中的n有几种情况。本篇只介绍跟下文与RSA算法解析相关的性质。

(1)  n为质数时。φ(n)=n-1,因为质数与小于他的每个数都构成互质的关系。如φ(5)=4

(2)  n为质数的幂次方时。 RSA 非对称加密 原理解析RSA 非对称加密 原理解析   如:  RSA 非对称加密 原理解析

 

(3)  n为质数的乘积。n=p*q,其中p与q互质(p⊥q),应用(1)的性质:φ(p*q)=φ(p)*φ(q)=(p-1)*(q-1) 如:φ(15)=φ(3*5)=φ(3)*φ(5)=8

 

模(mod)

    模就是余数,如:n = a%p 或 (a mod p) 表示a除以p余数是n,这个过程就是取模。当一个整数a被m除时,得到商k1 和唯一一个余数r,另一个整数b也被m除时,得到商k2,得到的唯一余数也是r,其中(0≤r<m),则有:

                     RSA 非对称加密 原理解析

同余式记作:a ≡ b%m 或者 a ≡ b(mod m),读作对于正整数a,b对m取模,他们的余数相同。对于上式,我们相减可以得到

                        a - b = (k1-k2) * m  ==> a - b = K * m

所以对于正整数a,b对m取模,则有:a - b = k * m

 

模逆元

   假设 ed ≡ 1(mod n),ed与1对n取模有同样的余数,已知e为3,求d。那么这里的d就是e取模n的模逆元。那么上式可以写成:

                      3*d ≡ 1(mod 11) ,记作:3*d = 11*k + 1

简单穷举下,3关于11的模逆元d 有 {...,-18,-7,4,15,26...},我们可以发现d是以11为公差的等差数列。

 

费马小定理

    法国律师和业余数学家 皮埃尔·德·费马(Pierre de Fermat),他有个猜想,说有个整数a∈z ,p是一个质数。则有: 

                     RSA 非对称加密 原理解析

记作:

                     RSA 非对称加密 原理解析 

转换下可以得到

                     RSA 非对称加密 原理解析 

模两边同时消去a  

                     RSA 非对称加密 原理解析

这就是费马最终的猜想,他说具体对不对呢?我就不证明了,后来欧拉在此基础上进行了验证。

 

欧拉-费马定理

    欧拉在费马的猜想基础上进行了拓展,他说有正整数a∈z,n∈z 并且a与n互质(a⊥n)

则有:        

                     RSA 非对称加密 原理解析

可以理解成:a的φ(n)次方减去1是n的倍数。

当n为质数时,上式可以记作:

                     RSA 非对称加密 原理解析

这个不就是上述的费马小定理吗?至此欧拉-费马定理形成:

                     RSA 非对称加密 原理解析

充分必要条件是:正整数a∈z,n∈z 并且a与n互质(a⊥n)

 

RSA公私钥生成

   介绍了这么多概念定理,下面就可以使用这些定理生成RSA公私钥了。

(1) 取两个大整数p,q 令N=p*q,其中p与q互质(p⊥q)

(2) 根据欧拉函数:r=φ(N)=φ(p*q)=φ(p)*φ(q)=(p-1)*(q-1)

(3) 选择一个正整数e, 其中e与φ(N)互质,并且e<φ(N)

(4) e*d≡1(mod φ(N)),在已知e和φ(N)的条件下求d。就是求e对于取模φ(N)的模逆元d

(5) 其中(N,e)作为公钥,上述解出来的d使用(N,d)作为私钥。公钥公开给发送方,私钥自己保存

(6) 将p和q销毁,密钥生成者只记录φ(N),N,e,d.当N足够大时,想要通过N做质数分解,是一件很困难的事

 

RSA加密与解密

    中国古代有梁山伯和祝英台,密码学的悄悄话有Alice和Bob。Alice已经使用了RSA算法生成了密钥对,将(N,e) 公钥给了Bob,Bob现在想要在不太可信的网络里给Alice发送消息m,他就需要用Alice的公钥(N,e)对m进行加密,这里m必须是整数(字符串可以取ascii值或unicode值),如果m消息比较长可以分成几段发送。并且m<N。

 

加密可得:         

           RSA 非对称加密 原理解析

通过加密后,Bob取得密文c,然后发给Alice。Alice拿到密文c后,使用自己保存的私钥d进行解密。

 

解密过程:

                      RSA 非对称加密 原理解析

那为什么Alice用私钥d,可以计算得出明文m呢?下面我们就来证明下

                      RSA 非对称加密 原理解析RSA 非对称加密 原理解析

简化下可得

                      RSA 非对称加密 原理解析RSA 非对称加密 原理解析

交换参数

                      RSA 非对称加密 原理解析RSA 非对称加密 原理解析

等式两边同时用指数d运算,k*N的d次方后其实大数还是k*N,将它记作(1)式    
                       RSA 非对称加密 原理解析

          RSA 非对称加密 原理解析RSA 非对称加密 原理解析

写成等式    
                       RSA 非对称加密 原理解析
将上式代入(1)式,并记作(2)式
            RSA 非对称加密 原理解析
等式拆解,记作(3)式
                     RSA 非对称加密 原理解析
由费马定理可知
                     RSA 非对称加密 原理解析
简化成等式
            RSA 非对称加密 原理解析
将上式代入(3)式
                   RSA 非对称加密 原理解析
简化等式
                    RSA 非对称加密 原理解析
简单记作
                    RSA 非对称加密 原理解析
转换成模形式
                    RSA 非对称加密 原理解析
最终得证解密的模运算算法。

 

    在这篇技术文章里涉及了很多数学定理公式,多位数学家、计算机专家。由于他们的卓越贡献研究,才有了今天较为安全可靠的“非对称加密算法”。因为加密使得信息传输安全可信,给互联网科技带来了蓬勃的发展,同时加密算法也是区块链科技发展的重要基石。如果你觉得本篇文章对你有帮助,请关注微信公众号“刻意链习”,持续带你理解更多的区块链技术。

    RSA 非对称加密 原理解析

 

相关文章:

  • 2022-01-07
  • 2021-12-27
  • 2021-12-09
  • 2021-06-22
  • 2022-12-23
猜你喜欢
  • 2021-08-10
  • 2021-05-30
  • 2021-09-01
  • 2022-12-23
  • 2021-05-14
  • 2021-10-06
相关资源
相似解决方案