Security+ 学习笔记15 非对称密码学
一、Rivest,Shamir,Adelman(RSA)
非对称密码学通过给每个用户一对钥匙(a pair of keys)用于加密和解密操作来解决可扩展性问题。RSA算法是最早的非对称加密算法之一,它至今仍在使用。RSA算法的名字来自于该算法的三位创造者的首字母,他们被认为是密码学的三位先驱者。RC4密码的创造者罗恩-里维斯特(Ron Rivest)、阿迪-沙米尔(Adi Shamir)和莱恩-阿德尔曼(Len Adleman)在1977年首次发表了他们发明的算法。四十年前创造的算法至今仍在使用。
当一个新用户想使用RSA加密技术与他人交流时,他们会创建一个新的密钥对。现在,在创建密钥的过程中涉及很多复杂的数学运算,但我们真正需要了解的基本原理是,用户选择两个非常大的素数,这些素数被用来创建密钥。在经过一些数学计算后,RSA使用这些数字来创建一个公钥(public key) 和一个 私钥(private key)。
与任何非对称算法一样,用户要负责保护私钥的安全,并将公钥分发给他们希望与之交流的其他人。当一个用户想用RSA算法向另一个用户发送加密信息时,发送者用收件人的公钥对信息进行加密。当有人收到RSA加密的信息时,他们用自己的私钥解密该信息。只要用户保持该私钥的安全,他们就是唯一拥有解密信息所需知识的人。这确保了RSA加密通信的保密性。
RSA算法的主要缺点是它的速度相当慢。因此,它通常不被用来在通信系统之间直接交换长信息。相反,RSA经常被用来创建一个初始的安全通信通道,两个系统通过该通道交换一个对称密钥。然后,这些系统使用该对称密钥在剩余的会话中加密通信。
总结一下,RSA是一种非对称加密算法,使用可变长度的密钥,通常在1,024和4,096比特之间。尽管曾有一些针对RSA的公开攻击,但当使用至少1024比特的足够长的密钥时,这种算法的目前仍被认为是安全的。
二、PGP和GnuPG
1991年,Phil Zimmerman发布了一种算法,他称之为Pretty Good Privacy或PGP算法。PGP至今仍被广泛使用,其细节通过开放的PGP标准免费提供给任何人使用。PGP使用公钥和私钥对,但它以一种更复杂的方式进行加密和解密,结合了对称和非对称密码学。让我们先来看看使用PGP的加密过程:
信息的发送者拥有原始的纯文本,然后生成一个随机的对称加密密钥。接下来, 发送者用随机的对称密钥对信息进行加密, 然后用接收者的公开密钥对随机密钥进行加密。然后,发送方传输加密信息,这是加密数据和加密的随机密钥的组合。当收件人收到该加密信息时,他们进行解密过程:
首先,他们用自己的私钥解密加密的随机密钥。这就产生了由发件人创建的随机密钥。接下来,他们使用该随机密钥来解密加密信息并检索原始信息。开放的PGP标准有许多不同的实现方式。其中一些以PGP品牌名称销售的是商业性质的。其他的则是免费提供的开放源码应用程序。其中一个开放源码包是New privacy Guard,也被称为new PG或simply GPG。这个软件包可用于所有主要的计算平台。
有一点需要注意的是, PGP本身不是一种加密算法. 它是一个使用其他加密算法的框架。PGP的用户仍然需要使用其他非对称和对称算法来进行实际的加密和解密操作。
三、椭圆曲线和量子密码学(Elliptic-curve and quantum crptography)
椭圆曲线密码学和量子密码学。所有公钥密码学都是基于解决复杂数学问题的难度。就RSA算法而言,该算法的安全性取决于对两个大素数的乘积进行因式分解(Factoring prime numbers)的难度。
质数(prime numbers)是那些只能被自己和数字1整除的数字。质数的常见例子包括2、3、5、7和11。如果将15是两个质数的乘积,我们可以很容易地确定这些数字是3和5。或者,我们对21的质因数分解,也能很快发现这两个质数是3和7。
然而,RSA和其他取决于素数因式分解难度的加密算法使用的素数要大得多。目前还没有有效的方法来有效解决大数的素数分解问题。如果有人发现了一个有效的方法,所有依赖素数分解的加密算法将立即变得不安全。
椭圆曲线密码学或ECC并不依赖于质因数分解问题。 它使用一个完全不同的问题,即椭圆曲线离散对数问题。现在,解释这个问题要比质因数问题困难得多,目前只要记住它使用的方法与素数分解问题不同即可。量子计算是一个新兴领域,试图利用量子力学来执行计算任务。它仍然主要是一个理论领域,但如果它发展到该理论变得切实可行的地步,量子密码学可能能够击败依赖于大素数因式分解的密码算法。不幸的是,使用椭圆曲线加密法将无法提供对量子攻击的保护。椭圆曲线方法甚至比素数因子化算法更容易受到量子攻击。同时,量子计算可能被用来开发更强大的加密算法,其安全性将远远高于现代方法。
四、洋葱路由器和完美的前向保密性(Tor and perfect forward secrecy)
1.Tor
Tor协议为个人提供了一种匿名、安全的方式来访问互联网。Tor还可以访问匿名网站,通常被称为暗网。Tor是洋葱路由器(The Onion Router)的缩写,使用加密和中继节点来隐藏网络通信的真实来源和目的地,它在安全界被广泛使用。
Tor的工作原理:
假设我们有一个用户Alice,她希望访问一个网站,但不想让网站知道她的身份,也不想让沿途的任何人知道她是谁。Alice在她的电脑上打开一个Tor浏览器,输入网站的URL,也许是WashingtonPost.com。然后,她的浏览器访问一个Tor目录服务器,并加载当前互联网上所有Tor节点的列表。
这是一个很长的列表,其中包括每个Tor节点,而且有很多。在Tor项目的指标网站上,我们可以看到,现在互联网上有超过6000个节点。每一个都是计算机系统,其所有者将它们置于Tor网络的服务之下。
节点的拥有者并没有因此得到任何好处,只是想为提供匿名的网络冲浪做出贡献。一旦Alice的浏览器有了节点列表,它就会随机选择一系列的节点,通常是三个,用来将她的流量路由到其目的地。这些节点中的每一个都只知道在这个过程中它之前和之后的节点的身份。
所以节点一知道请求来自Alice,下一步是节点二,但不知道《华盛顿邮报》是最终目的地。节点二知道请求来自于节点一,并且正在前往节点三,但它不知道Alice或《华盛顿邮报》的身份。节点三知道请求来自节点二,目的地是《华盛顿邮报》,但不知道Alice或节点一参与其中。当请求最终到达《华盛顿邮报》服务器时,它看起来就像该网站收到的任何其他请求,但它似乎来自节点三,并没有提供Alice的身份。服务器回应了该网页,它通过相同的路径反向返回,直到到达Alice。
2.完美前向保密
Tor使用一种被称为完美前向保密(Perfect Forward Secrecy)或PFS的技术来实现这种匿名性。PFS使用加密技术向通信参与者隐藏通信的细节,确保每个节点只知道紧接在它之前和之后的节点的身份。
以下是它是如何工作的。Alice创建了发给《华盛顿邮报》的原始请求,并通过加密把它封在一个虚拟的信封里,以便只有节点三可以阅读它。然后,Alice的Tor浏览器将该信封放入另一个寄给节点二的信封中,并对该信封进行加密,使其只能由节点二读取。最后,这个信封被封在另一个寄给节点一的信封里:
当节点一收到请求时,它打开第一个信封,因为它有需要的解密密钥。但节点一不能打开下一个信封,因为它没有那个密钥,所以它把信封转给了节点二,而节点二有正确的密钥。节点二然后打开发给自己的信封,找到寄给节点三的信封,并把它发送给节点三。节点三然后打开最后一个信封,将真正的请求发送给《华盛顿邮报》。这种加密技术的使用提供了完美的前向保密性。
目前,我们了解了用户如何使用Tor来匿名浏览普通的互联网网站。Tor还提供了双向匿名的能力,使用户也不知道网站的位置。这就是所谓的隐藏网站的功能,这里就不详细说明了。
参考资料来源:
https://www.linkedin.com/learning/paths/become-a-comptia-security-plus-certified-security-professional-sy0-601
Security+ 学习笔记15 非对称密码学相关推荐
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...
- C++语言学习笔记15:Clean 垃圾清理插件
C++语言学习笔记15:Clean 垃圾清理插件 对话框 STET1 图片切换功能 导入位图资源 插入图片控件并修改属性 添加消息处理函数 step2 开发思路及类关系图 step3 添加控件及MFC ...
- 区块链学习笔记15——ETH状态树
区块链学习笔记15--ETH状态树 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 引入 要实现的功 ...
- 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配
数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...
- 点云学习笔记15——PCL常用的基础代码
点云学习笔记15--PCL基础 命名规范 常用代码 1.时间计算 2.pcl::PointCloud::Ptr和pcl::PointCloud的两个类相互转换 3.如何查找点云的x,y,z的极值? 4 ...
- 凸优化学习笔记 15:梯度方法
前面的章节基本上讲完了凸优化相关的理论部分,在对偶原理以及 KKT 条件那里我们已经体会到了理论之美!接下来我们就要进入求解算法的部分,这也是需要浓墨重彩的一部分,毕竟我们学习凸优化就是为了解决实际当 ...
- 影像组学视频学习笔记(15)-ROC曲线及其绘制、Li‘s have a solution and plan.
本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(15)主要介绍: ROC曲线及其绘制 ROC 曲线 ROC = receiver operating characteristic cu ...
- cocos2d-x学习笔记15:cocos2d-x教程资源总结
注:cocos2d可作为cocos2dx的参考,两者接口很相似. 名称:知易的<知易Cocos2D-iPhone开发教程> 官方地址:http://blog.sina.com.cn/s/a ...
- 台湾大学林轩田机器学习技法课程学习笔记15 -- Matrix Factorization
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Radial Basis Function Network.它的原理就是基于距离相似性(distance-based simi ...
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
红色石头的个人网站:redstonewill.com 上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决.在之前的EinEinE_{in}上加上一个reg ...
最新文章
- bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
- 纯CSS图片缩放后显示详细信息
- java获取excle表格对象_Java使用excel工具类导出对象功能示例
- Django的Field(字段)
- oracle静默安装集群,静默安装Oracle数据库10g篇
- 购买台式计算机方案,购买电脑的注意事项有哪些?
- mysql limit 分页 0_Mysql分页之limit用法与limit优化
- linux修改python默认版本
- 盘点数据治理的6个价值
- Vue中的三种Watcher
- iPhone SplitViewController
- Zuul异常Zuul spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL
- 天梯—个位数统计(C语言)
- 蓝桥杯C语言程序设计真题
- matlab画调和曲线图,调和曲线图和轮廓图的比较
- 文件删除需要管理员权限
- 推荐几个适合上班摸鱼的神操作!
- 水仙花数素数质因数分解的C语言实现
- 审计系统---堡垒机项目之表结构设计
- iphone电压测试软件,新款iPhone SE充电兼容性大测试之45W篇
热门文章
- 有了它,让我在bug面前一点也不慌!
- 基于DEAP库的python进化算法-7.多目标遗传算法NSGA-II
- 深度学习2.0-神经网络
- 机器学习基础算法11-Logistic回归-ROC和AUC分类模型评估-实例
- pytorch中lstm用法详解(二)
- LeetCode刷题——283. 移动零
- 排序算法之——三路快排分析
- Machine Learning - 神经网络的表示和学习 (Week 4 - 5)
- vs新建一个excelpackage时间太长_炖牛肉vs煎牛肉,前者几小时后者几分钟,大厨告诉了我原因...
- python皮卡丘编程代码_儿童Python代码编程库Pygame Zero介绍