IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第五周) -> 正文阅读

[网络协议]山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第五周)

2021SC@SDUSC

很抱歉由于自身身体原因,本来打算这周对AES算法进行CPU和GPU的实际检测比较分析进行推迟。我决定对于SHA、AES、RSA三个算法在CPU和GPU性能对比放在最后几周。

本周介绍RSA算法的基本原理。

一、RSA加密算法简介:

RSA加密算法是一种非对称加密算法。所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用公钥进行加密、私钥进行解密。

在RAS算法中,公钥是公开信息,而私钥是需要保密的。加密算法和解密算法也都是公开的。虽然私钥是由公钥决定的,由于无法计算出大数n的欧拉函数phi(N),所以不能根据公钥计算出私钥。

也就是说,对极大整数做因数分解的难度决定了RSA算法的可靠性。理论上,只要其钥匙的长度n足够长,用RSA加密的信息实际上是不能被解破的。

RSA算法通常是先生成一对RSA密钥,其中之一是私钥,由用户保存;另一个为公钥,可对外公开。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

二、RSA算法的由来

一直到上个世纪70年代,人们都还在使用对称加密算法。换言之,信息的收发双方都会通过事先商定好的密钥对数据进行加解密。然而这种加密方式有诸多缺陷,随着网络规模的不断增大,每多一个用户就需要保存许多额外的密钥,密钥的管理也逐渐成为每个人的负担。更致命的是,密钥必须通过必须见面协商,无法通过网络进行交换,因为密钥的传输过程同样需要加密。

那么有没有一种可能,加解密的密钥是不同的密钥。而加密的公钥所有人可用来加密,但私钥只有接收者掌握解密。

在公钥加密算法中,由于公钥是对所有人公开的信息。我们需要保证数据被公钥加密后不能轻易被反推出来。因此需要一种单向算法,而不是像简单的1+1=2,2-1=1这样存在双向可逆推的加减法。答案是模运算。像计算机中的随机数、散列算法都是模运算的典型运用。

思考一下3^3 mod 7 = ? 很明显答案是6。但 3^x mod 7 = 6 这样逆推出x就非常困难,只能一个一个数带进去试,穷举法才找到x=3。若模的数很大很大,如3^x mod 2343569469375275 = 6,那么x再用穷举法尝试显然是不现实的。因此模运算被称为单向函数

公钥加密正是利用了这一特性。

假设原始数据表示成一个数m(message 信息),对m求e(encrypt 公钥)次幂,得到密文c(cipher)。这样就完成了加密过程。

解密过程与之相似,对密文c求d(decrypt 私钥)次幂,得到原始数据m。

为了理解方便,将上面两个式子做一些变换合并,成为下面的式子:

我们发现,ed成为公钥加密中的关键。这里不得不提欧拉在1763年的一个重要发现——欧拉定理

?

?对于任何一个与n互质的正整数m,取它的phi(n)次方,并除以n取余数,结果永远等于1。其中phi是欧拉函数,其代表在小于或等于n的正整数中有多少个与n互质的数。

举个简单的例子,phi(6),我们发现小于等于6的正整数有1,2,3,4,5,6 其中只有1和5与6互质(除了1以外并不存在其他公约数),所以phi(6)=2。

现在我们对等式两端同时取k次幂,在同时乘以m,最后将模运算写在等式左边得到下面的式子:

将上面的式子同之前加解密公式对应起来:

?

?

这个公式看起来简单,但其中phi(n)的计算没有想象中的容易,同时这也是公钥加密中最关键的部分,计算phi(n)的唯一办法就是对n做质因数分解,例如8=2*2*2,11445=3*5*7*109。然而大数的质因数分解很困难。截至目前为止,用最前沿的分布式算法大约花了2700个“CPU年”才成功分解了一个829位的数字。因此phi(n)的求解可以看作计算上不可行的。

但若n本身就是一个质数,情况就会发生反转。例如phi(7),小于等于7的正整数有1,2,3,4,5,6,7 其中与7互质的数有1-6,所以phi(7)=6。同理可得phi(13)=12,这也就推广到phi(p)=p-1,其中p为质数。另外phi函数还有一个重要的特性:

其中p与q为两个互质的正整数。

有上述特性,我们来看下面的一个例子:

?为了方便,我们选取一个较小的数e=3,同时保证e与phi(n)互质。(因为如果不互质,那么d必不可能是整数)于是在k=5的情况下,求得私钥d等于587。在求出私钥后,我们不再需要这里的p和q,算法会将e和n公布作为加密时用的公钥,而d将保存下来作为私钥。其他人由于不知道p和q这两个关键的质因数,无法计算这里的phi(n),因而无从破译私钥d,利用信息不对等,让加密者能够快速构造一个phi(n),而其他人无法用有限的时间求解出它。

简而言之,就算告诉你n=325436455474768,但你无法用有限的时间解得phi(25436455474768)=?,而真正通信的加密者知道325436455474768的质因数分解,因此能够很快算出其欧拉函数的结果,根据公式做成私钥d。

下面是模拟一段信息加解密过程,假设加密字符a(对应ASCII码为97):

第一步,用公钥e进行加密,得到密文79

第二步,用私钥d对密文79进行解密,成功还原字符a(97)

以上讲到的就是公钥加密算法的工作原理,在1977年被三个麻省理工的数学家独立发掘,成为当下众所周知的RSA加密算法。

RSA作为应用最广泛的公钥加密算法,其典型应用很多,例如:数字签名,数字证书、SSH和HTTPS的加密连接。公钥加密算法常被用作最初连接的建立,而真正数据传输的过程交由对称加密算法处理。

以上就是对于RSA算法基本原理的简单介绍。

参考视频:探秘公钥加密算法 RSA_哔哩哔哩_bilibili

参考博客:RSA加密算法原理_张维鹏的博客-CSDN博客_rsa加密算法原理

?

?

?

?

?

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:59:31  更:2021-11-09 20:00:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/1 21:23:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码