聊聊 RSA 算法

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 1977年,三位数学家 Rivest、Shamir和 Adleman 设计了一种算法,可以实现非对称加密。这种非对称加密算法(公钥密码算法)用他们三个人的名字命名,叫做 RSA 算法。

RSA简介


  1977年,三位数学家 RivestShamir Adleman 设计了一种算法,可以实现非对称加密。这种非对称加密算法(公钥密码算法)用他们三个人的名字命名,叫做 RSA 算法。


非对称加密


非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(公钥)和私有密钥(私钥)


  • 公钥:可以被任何人知道,用于加密消息或者验证签名
  • 私钥:只有接收者本人知道,用于解密消息或者签名
  • 不对称性:用于加密消息的密钥不能用来解密消息。


RSA 原理


  根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。


RSA 算法描述


RSA 密钥


  RSA 加密算法的密钥涉及到三个数,分别是 n,e,d。其中(e,n) 构成公钥(d,n)构成私钥。


1.生成大质数 p q


  p q 是两个很大的素数,通常p q 的大小为 1024 比特,太小的话容易被破译,太大的话会影响计算速度。
  
首先通过伪随机数生成器生成两个大数,由于伪随机数生成器不能直接生成素数,所以需要通过不断的重试得到 p q


2.计算公共模数 n


生成 n 的公式如下:


3.计算欧拉函数 φ(n) = (p-1)(q-1)



4.计算公钥 e


随机选取整数 e 就是用来加密的公钥,e 需要满足以下条件:

  • 1 < e < φ(n),通过伪随机数生成器生成。
  • gcd(e, φ(n)) = 1(gcd 为欧几里得算法)即两个数的最大公约数为 1(注意:e 的选取是很容易的,例如,所有大于pq的素数都可用)

5.计算私钥d


生成 d 的公式如下:

  
解密的钥私 d 满足d*e mod φ(n) = 1,即d*e = kφ(n) + 1 (其中 k 是大于等于1 的整数)。所以,只要知道 e φ(n),则很容易计算出 d


RSA 加密


  成功生成密钥后,对外公开公钥(e, n),然后即可通过如下公式进行 RSA 加密(其中c 表示加密后的密文,m 表示待加密的明文)

RSA 解密


  成功生成密钥后,只有接收者本人拥有私钥(d, n),然后即可通过如下公式进行 RSA 解密(其中m 表示解密后的明文,c 表示待解密的密文,)


RSA 安全性


  1. n = p * q
  2. φ(n) = (p-1)(q-1)
  3. d*e mod φ(n) = 1

  如果破解者尝试破解 RSA 加密后的密文则需要破解密钥d,由公式 3 可知如果知道 φ(n) 那么就可以轻易的求出 d。而φ(n) 是通过公式 2 计算出来的,所以问题转化为求 p q,公式 1 n 又是已知的,所以问题最终转化为对大整数 n 进行质因素分解。(p q 泄露等同于密码泄露)
  
目前来说,还没有有效的对大整数进行质因素分解的高效算法,所以目前来说RSA算法还是很安全的,但是一旦有这样的算法出现,那么RSA将会很容易被攻破。
  RSA
的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解 140 多个十进制位的大素数。因此,模数 n 必须选大些,视具体适用情况而定。
  
官方推荐:1024bits RSA 算法不应该被用于新的用途。2048bits RSA 算法可以用到2030 年,4096bits的算法可以用到2031年。


RSA 运算速度


  RSA 算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长。因此,要根据所保护信息的敏感程度与攻击者破解所要花费的代价值不值得以及系统所要求的反应时间来综合考虑。
  
由于进行的都是大数计算,使得 RSA 最快的情况也比DES 慢上好几倍,无论是软件还是硬件实现,速度一直是 RSA 的缺陷,一般来说只用于少量数据加密,RSA 的速度比对应同样安全级别的对称加密算法要慢 1000 倍左右。所以常使用RSA 算法传输对称加密的密钥,然后双方使用同

相关文章
|
2月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
137 1
|
3月前
|
算法 C# 数据安全/隐私保护
|
4月前
|
算法 Serverless 数据安全/隐私保护
RSA算法中,为什么需要的是两个素数?
PrimiHub是密码学专家团队开发的开源隐私计算平台,关注数据安全、密码学等领域。RSA算法使用两个素数确保安全,因为它们的乘积易于计算,但分解困难,形成加密基础。算法涉及选择大素数、计算乘积、生成公私钥对。加密时,消息通过公钥变形;解密则需私钥,安全性依赖于大数分解问题的复杂性。
|
3月前
|
算法 安全 网络安全
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
|
4月前
|
存储 算法 安全
深入解析RSA算法原理及其安全性机制
深入解析RSA算法原理及其安全性机制
|
4月前
|
存储 安全 算法
RSA非对称加密算法中的密钥对生成与传输
RSA非对称加密算法的密钥对生成与传输是信息安全领域的核心问题之一。密钥生成过程需要保证随机性和安全性,而密钥的传输则需要选择适当的方式来确保其保密性和完整性。通过合理的密钥管理和保护措施,可以有效地利用RSA算法保护通信安全,防止信息泄露和篡改。在实际应用中,用户和系统管理员需要结合具体情况选择最佳的密钥生成和传输策略,以达到最佳的安全性和效率。
|
5月前
|
安全 算法 数据库
MD5、SHA、DES、AES、RSA的算法说明
【5月更文挑战第10天】MD5、SHA、DES、AES、RSA的算法说明
121 2
|
5月前
|
安全 算法 网络安全
|
5月前
|
算法 数据安全/隐私保护
RSA 算法的缺陷
RSA 算法的缺陷
57 0
|
5月前
|
算法 安全 网络协议
https原理--RSA密钥协商算法
https原理--RSA密钥协商算法
66 0