安全(一)— 完全理解RSA加密算法

879 阅读2分钟


RSA加密算法

RSA加密算法 是一种 非对称加密算法,在公开密钥加密和电子商业中被广泛使用。例如:

  • 在HTTPS协议的加密层(SSL/TLS)作为密钥交换的方法

  • 支付宝支付API作为签名算法

  • 银联支付API作为签名算法

  • Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议

非对称加密算法

公开密钥密码学 (英语:Public-key cryptography,也称 非对称式密码学 )是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密; 不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。

工作原理

本质就是依赖于三个自然数:n,e,d,n 和 d 构成一个密钥,n 和 e 构成另一个密钥。对于(n, d)与(n, e)这两个密钥,无论用哪个密钥加密出来的密文都可以用另一个密钥解开, 所以不必强调哪个用于加密,哪个用于解密,只要把一个公布出去(称为公钥),另一个自己藏着(称为私钥)就行了。

根据这种特性,通常,

  • 使用 公钥加密私钥解密 ,实现 加密

  • 使用 私钥加密公钥解密 ,实现 数字签名

  • 代替 密码散列函数+Token,比如MD5、SHA2,做 消息认证。(关于加密、数字签名,消息认证可以期待下篇文章。)

关于

  1. 如何确定 n,e,d 这三个自然数?

  2. 如何进行加密解密?

  3. 已知公钥如何破解私钥?

我们需要了解RSA加解密的数学原理,主要包括

  • 互质

  • 欧拉函数

  • 同余

  • 欧拉定理

  • 模反元素

  • 扩展欧几里得算法

由于下面内容涉及到 公式证明,而公众号不支持 LaTex表达式,详情可以点击 左下角“阅读原文查看

阅读原文