打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速理解RSA密码系统的原理



前段时间刚做了做网站,制作过网站的读者会知道SSL证书这个东西,有了这个证书,通信协议就由超文本传输协议HTTP变成了安全套接字层超文本传输协议HTTPS,HTTPS协议中浏览器和服务器之间的数据传输是加密的,如果他人用抓包工具获得了数据那也是密文,从而保证了通信的安全性。通信的安全性建立在密码系统上,RSA是主流的密码系统,而RSA的安全性又依赖于大数分解的困难性,即一个较大的数分解为素因子之积,所以在这里经典而古老的数论和前沿的科技领域有了一次交融。

在系统地介绍密码学的整个图景之前,这篇文章旨在让你快速了解RAS的密码系统的加密和解密方法,以及它是如何保证在几十年甚至几百年密码不可破解。密码学的发展经过了分组密码、流密码,直到20世纪70年代,一种新型的密码出现了,它就是公钥密码。它有两个密钥,其中加密密钥即公钥是公开的,解密密钥即私钥只自己保存。例如若A想给B传递数据,B将公钥公开给所有人,A用B的公钥给数据加密后传递给B,B用私钥解密后获得明文。其他人尽管知道加密密钥也无法解密,因为加密密钥和解密密钥是分开的,这就是公钥密码系统的优势。在传统的私钥密码系统中,加密密钥和解密密钥是相同的或者彼此能互相推导出来,那么如何保证密钥的安全性是一个重大问题,要让对方能解密就必须告知对方密钥,密钥若被其他人截获,那么密码就被破解了。

RSA密码系统诞生在20世纪70年代,加密密钥由正整数对(e,n)组成,其中 n=pq, p与q是两个大素数,而且要保证(e,Φ(n))=1,也就是 e和Φ(n)互质,Φ(n)是n的欧拉函数。加密信息的第一步是将语言符号转化为数字,例如如果是英文,可以将字母编码,从A到Z,对应数字00到25,如果是汉字,也可以对汉字进行编码,由一串语言符号得到一串数字,然后将数据分组,例如4个数字为一组,就得到了数据组。下面对明文数据组P进行加密,生成密文数据组C。

解密实际上就是找到加密变换E的逆变换,(d,n)是解密密钥,其中d是e模Φ(n)的逆。由于e和Φ(n)互质,根据初等数论里的定理,知d是存在的。现在证明解密变换就是:

现在举例,将“I like math”加密,首先将语言字符转换为数字,即081108100412001907,一共18个数字,使4个数据为一组,则转换为数据组0811,0810,0412,0019,0700,其中最后一组加上00凑成四位数。取加密密钥(e,n)=(13,59*61)=(13,3599),当然在实际应用中,n是非常大的,这样才使得对n的分解质因数非常困难,组成n的两个质数一般会取到100位的数。现在我们对数据进行加密。

这样0811加密后就变为1837,其余4组数据都按照该过程加密,0810对应的密文是0401,0412对应的密文是2241,0019对应的密文是0293,0700对应的密文是3384,密文数据就是1837 0401 2241 0293 3384,于是“I like math”加密后的密文就是1837 0401 2241 0293 3384。现在尝试通过解密密钥解密,看能否得到明文。

由于d是e模Φ(n)的逆,Φ(n)=Φ(59*61)=58*60=3480,所以d就是满足下面同余方程的解:

于是我们得到解密密钥(2677,3599),用它对1837 0401 2241 0293 3384解密。现在用解密密钥对1837 进行解密。

恰好是明文的数据0811,0811转换成语言字符即 IL ,其他的数据段解密过程相同。公钥密码系统的优势就是你无法从加密密钥推出解密密钥,在RSA里,解密密钥的d是由两个素数推导得来的,而加密密钥中只给出了两个素数的积n,将一个很大的数素数分解是非常困难的,如果两个素数是一百位,那么n就是两百位,对它分解素数用当前计算机耗时也要百万年,所以RSA的安全性即依赖于大数分解的困难性。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DSA和RSA的区别
安全技术—RSA公钥密码体制安全性分析
对称加密算法和非对称加密算法
第5章 加密与认证技术
新手入门-密码知识
RSA算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服