RSA加密浅析

RSA加密是互联网上最常用的加密方式。其加密过程已经在 阮一峰的网络日志 里面介绍的比较详细了。具体大家可以点击下面两个链接进行查看:

RSA算法原理(一)
RSA算法原理(二)

RSA加密算法

既然题目是浅析,那这里就不介绍RSA加密的具体过程了,只简单介绍一下RSA加密。

非对称加密

RSA加密就是一种非对称加密,其即可以使用公钥加密,也可以使用私钥加密,只需要使用其对等密钥来解密就可以了。

所谓的非对称加密实际上是指公钥与私钥非对称。

公钥与私钥

RSA加密首先你需要先生成一个私钥,然后根据私钥生成一个公钥

  1. 生成私钥 - 1024位
openssl genrsa -out rsa_private_key.pem 1024
  1. 根据私钥生成公钥
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

根据 维基百科 上对 RSA加密算法 的介绍。

针对RSA最流行的攻击一般是基于大数因数分解。1999年,RSA-155(512 bits)被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G中央内存的Cray C916计算机上完成 。
2002年,RSA-158也被成功因数分解。
2009年12月12日,编号为 RSA-768 (768 bits, 232 digits)数也被成功分解[1]。这一事件威胁了现通行的1024-bit密钥的安全性,普遍认为用户应尽快升级到2048-bit或以上。

因此,我们生成私钥时,一般指定长度为2048或者4096

安全性

由于RSA加密的破解主要依靠大数分解,在目前的计算能力来看,排除量子计算机等变态的存在之外,RSA还是相对安全的。

在使用的过程中一定要记得自己保留私钥,把公钥交给对方。因为根据私钥可以计算出公钥,如果你把私钥给出去了,那对方就可以计算出你的公钥,那就毫无安全性而言了。

通信过程

  1. 甲生成公钥与私钥,把公钥交给乙
  2. 乙生成公钥与私钥,把公钥交给甲
  3. 甲把要发送的内容使用自己的私钥加密,发给乙,乙使用甲的公钥解密出原始内容
  4. 乙把要发送的内容使用自己的私钥加密,发给甲,甲使用甲的公钥解密出原始数据

同理,使用公钥加密私钥解密也是可以的。

CA(Certificate Authority)证书

CA实际上是一个数字证书认证机构,HTTPS协议使用CA证书来判定网站安全性。

首先向CA提出申请,申请通过之后,你需要把你的公钥提交给CA,等待CA认证。

在浏览器访问的时候,其交互过程下面这张图可以很直观的说明问题,在此我就不再赘述

HTTPS交互过程

参考

mac上使用生成RSA公钥和密钥
SSL and CA
数字证书认证机构