rsa加解密 ######### :ref:`openssl rsa` RSA:: 简介: 1977 年 作者: * 麻省理工学院三位数学家Rivest、Shamir 和 Adleman * 罗纳德・李维斯特(Ron Rivest) * 阿迪・萨莫尔(Adi Shamir) * 伦纳德・阿德曼(Leonard Adleman) 算法: 加密: 密文=明文^E mod N 公钥: E 和 N 的组合 解密: 明文=密文^D mod N 私钥: D 和 N 的组合 说明: 对极大整数做因数分解的难度决定了RSA算法的可靠性 第一个能同时用于加密和数字签名的算法 速度是对应同样安全级别的对称密码算法的1/1000左右 缺点: 前向不安全 * 私钥参与了密钥交换 * 安全性取决于私钥是否安全保存 历史:: 1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名 对极大整数做因数分解的难度决定了RSA算法的可靠性 换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠 RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现 速度一直是RSA的缺陷。一般来说只用于少量数据加密 RSA的速度是对应同样安全级别的对称密码算法的1/1000左右 已公开的或已知的攻击方法:: 1999年,RSA-155 (512 bits)被成功分解, 花了五个月时间(约8000 MIPS年)和224 CPU hours在一台有3.2G中央内存的Cray C916计算机上完成 2009年12月12日,编号为RSA-768(768 bits, 232 digits)数也被成功分解 这一事件威胁了现通行的1024-bit密钥的安全性,普遍认为用户应尽快升级到2048-bit或以上 .. figure:: https://img.zhaoweiguo.com/knowledge/images/encrypts/rsa_course.gif :width: 70% 其他变种 ======== :: 1. EIGamal 方式: 与 RSA 不同的点在使用『离散对数』 密文长度是明文的2倍 由 Taher ElGamal 设计,利用了模运算下求离散对数困难的特性。被应用在 PGP 等安全工具中。 2. Rabin方式 与 RSA 不同的点在使用『平方根』 3. ECC(椭圆曲线密码, Elliptic Curve Cryptography): 1985 年由 Neal Koblitz 和 Victor Miller 分别独立提出 ECC 系列算法一般被认为具备较高的安全性,但加解密计算过程往往比较费时。