密码学:公钥密码.(非对称密码)

news2024/11/25 10:38:49

密码学:公钥密码.

公钥密码 (Public Key Cryptography),又称为非对称密码,其最大特征是加密和解密不再使用相同的密钥,而使用不同的密钥。使用者会将一个密钥公开,而将另一个密钥私人持有,这时这两个密钥被称为公钥和私钥。一般来说,公钥和私钥是难以互相计算的,但它们可以互相分别作为加密密明和解密密钥。当信息发送者选择采用接收者的公钥加密时,接收者收到信息后使用自己的私钥解密,这样便可保持信息的机密性;若信息发送者使用自己的私钥对信息摘要进行加密,接收者使用发送者的公钥对摘要进行验证,即可起到签名的作用,可以保证信息的认证性和不可否认性。


目录:

密码学:公钥密码

RSA算法:

RSA的常见攻击: 

(1)因式分解:

(2)低加密指数小明文攻击

(3)共模攻击

(4)广播攻击

(5)低解容指数攻击 (Wiener's Attack)

(6)Coppersmith's High Bits Attack

(7)RSA LSB Oracle

离散对数相关密码学:

(1)EIGamal和ECC

(2)离散对数的计算

1.暴力计算

2.更高效的计算方法


RSA算法:

RSA 算法是目前工程中使用最广泛的公钥密码算法,算法的安全性基于一个简单的数学事实: 对于大素数 p 和 q,计算 n = pxq 非常简单,但是在已知 n 的情况下分解因子得到 p 和 q 则相当困难。

在线RSA算法加密和解密:RSA在线加密解密 - RSA密钥生成器

RSA的基本算法如下: 选取较大的索数 p 和 q(一般大于 512bit,且 p 不等于 q),计算:

n = p x q

该加解密算法的正确性证明如下:

所以:


RSA的常见攻击: 

(1)因式分解:

由于 RSA 的私钥生成过程中只用到了p、g与e,如果p、q被成功求出,那么可使用正常的计算方法将私钥模数 d 算出。如果 n 的大小不太大 (不大于 512 位),建议先行尝试因式分解法。因式分解时常用的辅助工具有 SageMath 、Yafu,以及在线因子查询网站 factordb。
另外,若p和9的差距非常小,由于

即可通过暴力枚举 p - g 的值来分解pq。

例如,对于 RSA 公钥<n,e>=<16422644908304291,65537>,由于的值较小,可以考虑使用因式分解的方法。使用 Yafu 执行 factor (16422644908304291),得到以下输出:

从而得到两个素数 p 和 q 分别为 134235139 和 122342369 。使用Gmpy2 Python库可以计算出私钥 a 的值。


(2)低加密指数小明文攻击

如果被加密的 m 非常小,而且 e 较小,导致加密后的 c 仍然小于 n,那么便可对密文直接开 e 次方,即可获得明文 m。例如,考虑以下情况: n=100000980001501,e=3,m=233,那么pow (m,e) =12649337,仍然小于n。此时,对12649337开3次方即可解出明文233.

如果加密后的 c 虽然大于 n 但是并不太大,由于pow (m,e) =kn+c,可以暴力枚举 k,然后开 e 次方,直到 e 次方可以开尽,解出了正确的 C 为止。例如,当 r 和 e 与上式相同,但 m =233333时,有 C = pow(m,e,n) =3524799146410。

使用 Python 枚举n的系数的代码如下:

当枚举到 k=127 时,3次方可以开尽,解得明文为233333;


(3)共模攻击

如果使用了相同的n,不同的模数e1、 e2,且e1、e2互素,对同一组明文进行加密,得到密文c1、c2那么可以在不计算私钥的情况下计算出明文 m。设

显然,对相同的m使用同一个n和不同的e加密得到了不同的c,且两个e互素,可以尝试用共模攻击的方法解出m。

首先,使用扩展欧几里得算法求出xe1+ye2=1中的x和y:

即可在不分解n的情况下解得明文m。由于扩展欧几里得算法的时间复杂度为O(logn),在n非常大

时,该方法仍然可用。

如果遇到只有一组明文但被多个e加密得到了多个密文的情况,应该先考虑使用共模攻击。


(4)广播攻击

对于相同的明文m,使用相同的指数e和不同的模数n1,n2,···,ni,加密得到i组密文时(i ≥ e),可以使用中国剩余定理解出明文。设

联立方程组,使用中国剩余定理,可以求得一个Cx满足

下面尝试使用广播攻击来解出n。联立三个方程组,使用中国剩余定理:

可以看到,我们成功解出了明文.

若看到使用相同的e不同的n进行了多次加密且e较小,密文组数不小于e组,应当考虑使用此方法。


(5)低解容指数攻击 (Wiener's Attack)


(6)Coppersmith's High Bits Attack

本方法由Don Coppersmith提出,如果已知明文的很大部分,即m=motx,已知mo或组成n中一个大素数的高位,就可以对私钥进行攻击。一般,对于1024位的大素数,只需要知道640位即可成功攻击。攻击的详细实现见:GitHub - mimoo/RSA-and-LLL-attacks: attacking RSA via lattice reductions (LLL)


(7)RSA LSB Oracle


离散对数相关密码学:

(1)EIGamal和ECC


(2)离散对数的计算

1.暴力计算

当 p 的值不太大时,由于离散对数的取值一定在0 ~p-1范围内,显然可以暴力穷举。例如,考虑以下情况:

可以写出以下暴力计算代码:

以下是椭圆曲线离散对数的暴力破解示例。考虑如下曲线和点,求logpQ:

在Sagemath中定义该圆曲线和P、Q两个点,写出循环,即可进行暴力破解:

该方法的时间复杂度为O (n) ,当p小于1e7数量级时,暴力计算是可以考虑的。


2.更高效的计算方法

Sagemath内置了不同种类的离散对数计算方法,适用于各种场合。以下代码介绍了一些常用的计算离散对数的算法,具体使用条件等请参考代码注释。

     

     

     

学习书籍:从0到1:CTFer成长之路... 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【WebGIS初学到入职】第二阶段的小结

一、前言 2021年12月&#xff0c;我进行了【WebGIS初学到入职】第一阶段的小结&#xff0c;如今&#xff0c;一年半过去了。我完成了毕业设计&#xff0c;平缓得通过了岗位的试用期&#xff0c;而且作为我所在部门唯一的前端开发&#xff0c;参与了越来越多的工作项目。 同时…

源码分析RocketMQ之NameServer

整体架构图 从部署架构图可知NameServer与所有的broker通讯&#xff0c;NameServer集群之间互不通信。 主要功能包括 1、Broker管理 1.1 维护Broker集群 clusterAddrTable 1.2 Broker信息 接收Broker注册信息并保存作为路由信息的基本数据 brokerAddrTable 1.3 Topic消息路由…

【软件质量保证与测试】实验二之ACTS工具

索引 0. 前言1. ACTS 获取2. ACTS 启动2.1 双击启动GUI2.2 终端启动GUI2.3 进入GUI 3. ACTS 参数类型3.1 新建系统3.2 ACTS 添加成员3.2.1 Boolean类型3.2.2 Enum类型3.2.3 Number类型3.2.4 Range类型3.2.5 其他 4. ACTS 约束5. 混合组合强度6. 参考模型6.1 设定模型6.2 参数设…

Win系统软件闪屏 - 解决方案

Win系统软件闪屏 - 解决方案 前言原因解决方案方法1&#xff1a;软件使用独显方法2&#xff1a;软件关闭硬件加速方法3&#xff1a;降级显卡驱动 前言 使用Win10及以上系统时&#xff0c;可能会出现频繁闪现黑屏的状态&#xff0c;下文简称闪屏。一般在使用第三方软件时&#…

【Linux】进程信号保存

前言 上篇博客我们了解了进程信号的概念和信号如何产生。 本篇我们将学习进程信号如何保存。 文章目录 前言一. 阻塞信号二. 递达动作三. 信号集四. 信号集操作函数结束语 一. 阻塞信号 首先我们需要一些预备知识 实际执行信号的处理动作称为信号递达&#xff08;Delivery&am…

可能是最有前途的国产大模型:讯飞星火认知大模型

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 昨天下午&#xff0c;科大讯飞发布了自己的大模型——星火认知大模型。在上周他们还在…

小白专用VScode从安装到入门编写_Windows_C/C++

此篇主要梳理VScode的安装、功能拓展等&#xff0c;包括与git管理和Cmake的结合 一、VScode下载二、VScode功能拓展2.1 VScode中文界面在线安装2.2 VScode中文界面离线安装2.3 鼠标滚轮调整字体大小2.4 调整编辑器界面大小2.5 Windows下VScode C/C环境配置2.5.1 MinGW编译器下载…

Illustrator如何创建Web图形与动画之实例演示?

文章目录 0.引言1.创建切片2.选择和编辑切片3.快速生成PNG元素图标 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对创建…

【Docker】docker核心概念与常用指令

目前掌握的docker处理平时工作倒是可以&#xff0c;但docker网络这块有些模棱两可&#xff0c;干脆从头整理一遍Docker。 &#x1f333;&#x1f333;【Docer篇整理】&#x1f333;&#x1f333; 篇一&#xff1a;docker核心概念与常用指令 篇二&#xff1a;镜像与docker数据卷…

【C++】vector的介绍及使用

目录 一、vector的介绍二、vector的常用接口2.1 vector的定义2.2 vector iterator的使用2.3 vector 空间增长问题2.4 vector 增删查改2.4.1.尾插和尾删2.4.2.任意位置插入和删除以及查找2.4.3.vector 的交换与遍历 2.5 vector 迭代器失效问题 一、vector的介绍 vector是表示可…

《花雕学AI》讯飞星火认知大模型的特点和优势,与ChatGPT的对比分析

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言&#xff0c;实现人机交互和智能服务。近年来&#xff0c;随着深度学习的发展&#xff0c;自然语言处理领域出现了许多创…

人人开源代码

后台源代码&#xff1a; git clone gitgitee.com:renrenio/renren-fast.git 前端源代码&#xff1a; git clone gitgitee.com:renrenio/renren-fast-vue.git 自动生成源代码&#xff1a; git clone gitgitee.com:renrenio/renren-generator.git 关于 renren-fast-vue npm npm报…

RabbitMQ --- 惰性队列、MQ集群

一、惰性队列 1.1、消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度&#xff0c;就会导致队列中的消息堆积&#xff0c;直到队列存储消息达到上限。之后发送的消息就会成为死信&#xff0c;可能会被丢弃&#xff0c;这就是消息堆积问题。 解决消息堆积有三种…

cenos7安装wkhtmltopdf

参考&#xff1a;http://www.023dns.com/server_ECS/2190.html https://blog.csdn.net/nexttrial/article/details/125504683 在Centos7 安装wkhtmltopdf&#xff0c;把html页面转换成pdf文档。 1、安装 yum install wkhtmltopdf 2、安装之后&#xff0c;执行操作&#xff…

处理 json 和 HttpMessageConverter--文件下载-ResponseEntity --SpringMVC 文件上传

目录 处理 json 和 HttpMessageConverter 处理 JSON-ResponseBody 说明: 下面是要完成的效果 准备工作 创建json.jsp 创建Dog.java , 作为返回的数据 创建JsonHandler.java 完成测试(页面方式)和 (Postman 方式) ​编辑 处理 JSON-RequestBody 应用案例 修改 json…

Masonry使用以及源码解析(未完待续

文章目录 Masonry使用约束约束优先级 以及 intrinsicContentSize相关问题 Masonry:iOS12Masonry源码解析下面是使用make.width点语法后的全部内部调用过程&#xff1a; Masonry使用 约束 在写Masonry之前&#xff0c;我想先来聊聊约束的基础知识&#xff0c;我们首先要了解一…

igraph的layout布局

做图论的社区检测&#xff0c;需要画图显示&#xff0c;用igraph可以进行可视化。 igraph有几个布局&#xff0c;分别如下&#xff1a; layout_with_dh &#xff1a; The Davidson-Harel layout algorithm Place vertices of a graph on the plane, according to the simulat…

电脑远程控制

这里介绍2种常用的电脑远程控制方式。第一种&#xff0c;向日葵。第二种&#xff0c;QQ。 向日葵 --- 推荐 支持 Mac、Windows、Linux、iOS、Android。 Mac 版向日葵如果想让别人控制你的电脑&#xff0c;安装完向日葵以后要在 Mac 的“安全与隐私”开启几个权限才能被对方正…

node笔记_写文件(异步写入,同步写入,追加写入,流式写入)

文章目录 ⭐前言⭐写文件&#x1f496;writeFile写入写一个txt文件 &#x1f496;writeFileSync同步写入写一个txt文件 &#x1f496;appendFile 追加写入追加写入一个txt &#x1f496;createWriteStream流式写入流式写入txt ⭐ 结束 ⭐前言 大家好&#xff0c;我是yma16&…

【计算机网络】 总结复习(2)

tcp tcp 工作在传输层可靠的数据传输服务&#xff0c;确保传输数据是无损坏&#xff0c;无间隔&#xff0c;非冗余按序 一些知识点 服务端最大并发 TCP 连接数远不能达到理论上限&#xff0c;会受以下因素影响&#xff1a; 文件描述符限制&#xff0c;每个 TCP 连接都是一个文…