五分钟知识科普:什么是 RSA 算法 | 算法必看系列二十八

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: RSA 的安全性依赖于大数分解,因此 RSA 算法加密安全性较高。但是,RSA 算法为保证安全性,会大大提升密钥长度,导致运算速度变慢。这导致它在大量数据加密时并不适用。

原文链接

image.png

RSA 算法历史

RSA 是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。

但实际上,在 1973 年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到 1997 年才被发表。

RSA 算法基础知识

密码学知识

明文:是指没有加密的文字(或者字符串)。

加密:是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。

密文:密文是对明文进行加密后的报文。

对称加密:对称是指,在对明文进行加密,对密文执行解密加密过程采用相同的规则(通常将双方采用的规则称为”密钥”)。

例如:
  (1)甲方选择某一种加密规则,对信息进行加密;
  (2)乙方使用同一种规则,对信息进行解密。

非对称加密:非对称加密是指通信双方采用不同的密钥进行加密解密。

例如:
  (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
  (2)甲方获取乙方的公钥,然后用它对信息加密。
  (3)乙方得到加密后的信息,用私钥解密。

数学知识

互质关系:如果两个正整数,除了数字 1 之外没有其他公因子,我们称这两个数是互质关系。

同余定理:给定一个正整数 m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数 a 与 b 对模 m 同余,记作 a ≡ b(mod m)。

RSA 算法流程

(1)选择两个不相等的质数p和q

例如:选择两个不等质数分别为 61 和 53 (实际应用中选择的质数都相当大)。

(2)计算p和q的乘积n

n = p*q = 61 * 53 = 3233。

(3)计算 n 的欧拉函数 φ(n)

φ(3233) = φ(61 * 53) = φ(61) * φ(53)。

由于 61 为质数,因此 φ(61) = 61 – 1 = 60。同理 φ(53) = 53 – 1 = 52。则 φ(3233) = 60 * 52 = 3120

(4)随机选择一个整数 e ,条件是1< e < φ(n),且 e 与 φ(n) 互质

随机选择一个质数e,保证1< e < 3120,这里选择e = 17。

(5)计算e对于φ(n)的模反元素d
e * d ≡ 1 (mod φ(n))。其中e = 17,φ(n) = 3120。

e*d是φ(n)的k的整数倍,余数为1。则上式可以转化为:
17 * d = 3120k + 1。继续转化得到:
17 * d + 3120y = 1。其中y = -k。

其中,对于d的求解转化为二元一次方程求解。此方程可以使用扩展欧几里得方法进行求解。通过辗转相除法计算出一组解为(2753,-15)。

解得d = 2753。

(6)将n和e封装成公钥,n和d封装成私钥

加密公钥为(3233,17),私钥为(3233,2753)。

RSA 算法分析

那么 RSA 算法是如何保证安全性的呢?

在 RSA 算法中 n 与 e 是公开的,那么破解 RSA 加密的步骤即为通过 n 与 e 计算出私钥 d 的值。

(1)ed ≡ 1 (mod φ(n))。只有知道 e 和 φ(n),才能算出 d 。
(2)φ(n) = (p-1)(q-1)。只有知道 p 和 q ,才能算出 φ(n)。

由此得出密码破解的实质问题是:从p * q的值n,去求出 (p-1) 和 (q-1)。换句话说,只要求出 p 和 q 的值,我们就能求出 d 的值而得到私钥。但是,当 p 和 q 是是很大的质数时,从它们的积 p * q 去分解因子 p 和 q ,这是一个公认的数学难题。

比如当p * q大到1024位时,迄今为止还没有人能够利用任何计算工具去完成分解因子的任务。

虽然理论上 RSA 是可以破解的,但是随着密钥长度增加,破解的代价是不可接受的。

因此,只要密钥长度足够长,用 RSA 加密的信息实际上是不能被解破的。目前被破解的最长 RSA 密钥就是 768 位。

RSA 算法总结

RSA 的安全性依赖于大数分解,因此 RSA 算法加密安全性较高。但是,RSA 算法为保证安全性,会大大提升密钥长度,导致运算速度变慢。这导致它在大量数据加密时并不适用。

##END##

来源 | 五分钟学算法
作者 | 程序员小吴

相关文章
|
2天前
|
算法 安全 Go
Go 语言中实现 RSA 加解密、签名验证算法
随着互联网的发展,安全需求日益增长。非对称加密算法RSA成为密码学中的重要代表。本文介绍如何使用Go语言和[forgoer/openssl](https://github.com/forgoer/openssl)库简化RSA加解密操作,包括秘钥生成、加解密及签名验证。该库还支持AES、DES等常用算法,安装简便,代码示例清晰易懂。
28 16
|
3月前
|
算法 安全 Go
RSA加密算法详解与Python和Go实现
RSA加密算法详解与Python和Go实现
202 1
|
5月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
350 1
|
7月前
|
算法 Serverless 数据安全/隐私保护
RSA算法中,为什么需要的是两个素数?
PrimiHub是密码学专家团队开发的开源隐私计算平台,关注数据安全、密码学等领域。RSA算法使用两个素数确保安全,因为它们的乘积易于计算,但分解困难,形成加密基础。算法涉及选择大素数、计算乘积、生成公私钥对。加密时,消息通过公钥变形;解密则需私钥,安全性依赖于大数分解问题的复杂性。
|
6月前
|
算法 C# 数据安全/隐私保护
|
6月前
|
算法 安全 网络安全
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
|
7月前
|
存储 算法 安全
深入解析RSA算法原理及其安全性机制
深入解析RSA算法原理及其安全性机制
|
7月前
|
存储 安全 算法
RSA非对称加密算法中的密钥对生成与传输
RSA非对称加密算法的密钥对生成与传输是信息安全领域的核心问题之一。密钥生成过程需要保证随机性和安全性,而密钥的传输则需要选择适当的方式来确保其保密性和完整性。通过合理的密钥管理和保护措施,可以有效地利用RSA算法保护通信安全,防止信息泄露和篡改。在实际应用中,用户和系统管理员需要结合具体情况选择最佳的密钥生成和传输策略,以达到最佳的安全性和效率。
100 0
|
8月前
|
算法 数据安全/隐私保护
RSA 算法的缺陷
RSA 算法的缺陷
85 0
|
8月前
|
算法 安全 网络协议
https原理--RSA密钥协商算法
https原理--RSA密钥协商算法
99 0

热门文章

最新文章