RSA加密基本原理

加密过程

选择两个大素数p和q,计算出模数N= p * q

计算φ= (p−1) * (q−1) 即N的欧拉函数,然后选择一个e(1<e<φ),且e和φ互质

取e的模反数为d,计算方法:e * d ≡ 1 (mod φ)

对明文A进行加密:B≡A^e(mod n) 或B= pow(A,e,n),得到的B即为密文

对密文B进行解密,A≡B^d(mod n) 或A= pow(B,d,n),得到的A即为明文

p 和q:大整数N的两个因子(factor)

N:大整数N,我们称之为模数(modulus)

e 和d:互为模反数的两个指数(exponent)

c 和m:分别是密文和明文,这里一般指的是一个十进制的数

一般有如下称呼:

(N,e):公钥

(N,d):私钥

加密分析

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

RSA的算法涉及三个参数,n、e、d。

其中,n是两个大质数p、q的积,n以二进制表示时所占用的位数,就是所谓的密钥长度。

e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质;再选择d,要求(e*d)≡ 1(mod(p-1)×(q-1))。

令φ= (p-1)(q-1) 上式即 d*e= 1 mod φ 即:(d*e- 1)% φ = 0

(n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥。RSA加解密的算法完全相同,设A为明文,B为密文,则:A≡B^d(mod n);B≡A^e(mod n);(公钥加密体制中,一般用公钥加密,私钥解密)

e和d可以互换使用,即:

A≡B^e (modn);B≡A^d(mod n);

附加解释

同余符号“ ≡ ”

数论中的重要概念。给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(modm)。对模m同余是整数的一个等价关系

比如26≡14(mod12)

互质

公约数只有1的两个数,称为互质

RSA常见攻击及分解方法

RSA的非对称体制是建立在大整数分解难题上的,所以最基本的攻击方法就是当模数N过小时,直接计算它的因子。但是大部分情况下稍微有点难度的rsa题目都不会是直接暴力分解N,而是需要一定的攻击手法。

N如果是256bits可以直接分解,如果超过了就基本别想暴力分解了,需要用到下面的一些攻击手法,下面列举一下一些攻击手法。

Wiener’sattack

当d < (1/3)N^(1/4)时,我们可以通过Wiener’sattack分解得到d

费马分解

当大整数N的两个因子p和q相近时,我们可以通过费马分解的办法很快分解大整数

Smallq

当q较小时,即|p-q|较大时,我们可以直接爆破因子

BonehDurfee Method

当d满足d ≤ N^0.292时,我们可以利用该方法分解N,理论上比wienerattack要强一些。

yafu

yafu使用最强大的现代算法去自动化的分解输入的整数。大多数的算法都实现了多线程,让yafu能充分利用多核处理器(算法包括SNFS, GNFS,SIQS, 和ECM)。

factordb

如果对一个大整数用一些特殊算法也分解不了的时候,我们可以在 http://factordb.com/ 中查询一下数据库,说不定就能找到其因子

看完攻击手法,我们拿例题来更好的认识一下攻击手法。

mediumRSA

下载地址:

https://dn.jarvisoj.com/challengefiles/mediumRSA.rar.07aab25c9c54464a8c9821ca28503330

给出两个文件:

flag.enc

pubkey.pem

可以看到一个公钥,一个加密后的文件

正常分解的解决方法

openssl分解公钥得到N、E

可以看到N(256bits)很短直接分解即可(几分钟之内)

python代码生成私钥

openssl 解密

RSActfTOOL

下载地址:

https://github.com/Ganapati/RsaCtfTool

可以用公钥直接生成私钥

私钥解密:

低加密指数攻击

Extremelyhard RSA

题目信息:没想到RSA4096都被你给破了,一定是我的问题,给了你太多信息,这次我只给你一个flag的加密值和公钥,仍然是RSA4096,我就不信你还能解出来。

题目链接:

https://dn.jarvisoj.com/challengefiles/extremelyhardRSA.rar.8782e822c895a2af3d8ba4ffbb3e280b

解题思路:openssl 解码一下piblic.pem可以看到E=3(一般情况下E=0x10001),典型的低加密指数攻击

注:flag.enc以十六进制方式来读取,因为文件中含有很多不可打印字符。

破电脑跑了快半个小时,期间以为卡了,还好跑出来了&……

另一道ctf

正常e的值通常情况下是0x10001,上面这个e明显值过小,而且是3,所以还是低加密指数攻击

脚本如下:

共模攻击

VeryHard RSA

题目链接:

https://www.jarvisoj.com/challenges

题目给出加密代码如下:

注:N后面的L是为了强制编译器把常量作为长整数来处理,只需在后边加上一个字母L(或l)

首先看这个N长度(4096bit)就别想暴力分解了。

代码可以看到是相同的N,不同的E加密的,那就使用共模攻击

解密代码如下:

rabin算法

hardRSA

题目链接:

https://www.jarvisoj.com/challenges

也是给了和上面一样的两个文件pubkey.pem和flag.enc

提取公钥发现e=2,N与上面mediumrsa例题一样,用rabin算法(该算法只适合e=2的情况)

N在上面已经用yafu分解出来p,q了,直接用就可以了。

python脚本如下:

记得投稿哦

如果有好的技术原创文章

欢迎投稿至邮箱:edu@heetian.com

合天会根据时效、新颖程度、文笔及实用性等要素对文章进行评判,一经发布给予100元-500元不等的稿费

还等什么呢?有才能的你快来投稿吧!

了解更多详情点击重金悬赏 | 重金悬赏 | 合天原创投稿等你来!

RSA攻击手法及相应例题解析相关推荐

  1. 操纵神经元构造后门,腾讯朱雀实验室披露AI模型新型攻击手法

    近日,在第19届XCon安全焦点信息安全技术峰会上,腾讯朱雀实验室首度公开亮相.这个颇有神秘色彩的安全实验室专注于实战攻击技术研究和AI安全技术研究,以攻促防,守护腾讯业务及用户安全. 会上,腾讯朱雀 ...

  2. “黑”掉神经网络:腾讯披露新型AI攻击手法,主流机器学习框架受影响

    来源:AI前线 本文约3000字,建议阅读6分钟. 本文为你介绍一种新兴的针对机器学习模型的攻击方式"后门攻击". "后门攻击"是一种新兴的针对机器学习模型的攻 ...

  3. “黑”掉神经网络:腾讯披露新型AI攻击手法

    本文约3000字,建议阅读6分钟.本文为你介绍一种新兴的针对机器学习模型的攻击方式"后门攻击". "后门攻击"是一种新兴的针对机器学习模型的攻击方式. 8月19 ...

  4. c语言入门中冒泡排序的例题,选择排序和冒泡排序例题解析(c语言)

    排序算法排序算法 1.简单选择排序简单选择排序 假设有 n 个数,作简单选择排序简单选择排序,按升序排列: 先通过 n-1 次比较,从 n 个值中找出最小值,将它与第一个值交换. 再通过 n-2 次比 ...

  5. linux管道通信题目,操作系统实训(Linux)——习题解答、例题解析、实验指导-王红-实验实验7软中断及管道通信课案.ppt...

    操作系统实训(Linux)--习题解答.例题解析.实验指导-王红-实验实验7软中断及管道通信课案.ppt 实验7 软中断及管道通信 一.实验目的(1)掌握linux系统软中断通信的实现方法.(2)掌握 ...

  6. Oracle:经典例题解析

    1.环境准备 下面所有SQL语句都是建立在employees表和departments表上,具体表结构如下所示: departments表结构如下所示: 字段名 数据类型 长度 约束 说明 depar ...

  7. AD域渗透 | PTHPTK哈希传递攻击手法

    AD域渗透的第二篇,托更一下Kerberos协议的分析文章,等到攻击手法研究明白了,再把协议分析放上来,防止像那些理解不明不白的人写的东西一样祸害人. 发生情况 在高版本的windows server ...

  8. 计算机组成原理例题4.2,4.2.2 例题解析(1)

    4.2.2  例题解析(1) 1. 单项选择题 [例4-2-1]4个16K×8位的存储芯片,可以设计容量为      的存储器. A. 32K×16位B. 16K×16位 C. 32K×8位 D. 8 ...

  9. 《编译原理》求短语,直接短语,句柄,素短语,最左素短语 - 例题解析

    <编译原理>求短语,直接短语,句柄,素短语,最左素短语 - 例题解析 笔记 (一)明确概念: 名称 概念 短语 定义: 若 S 为文法 G 的开始符号,αβδ 是该文法的一个句型,即 S ...

  10. 可由线性表示且表达式唯一_典型例题解析例1设向量问取何值时可由线性表示且表示.doc...

    典型例题解析例1设向量问取何值时可由线性表示且表示 典型例题解析 例1 设向量. 问取何值时 : (1)可由线性表示,且表示惟一. (2) 可由线性表示,但表示不惟一 (3)不可由线性表示. 解 本题 ...

最新文章

  1. linux搭建markdown服务,Markdown新手快速入门基础教程及Ubuntu下的安装
  2. 微信支付 商户Key 支付Key API密钥 的获取
  3. python怎么添加ui_如何在Python中创建UI
  4. java中properties类_Java中的Properties类详解
  5. win7此更新不适用计算机,win7系统更新提示“此更新不适用于您的计算机”的解决方法...
  6. 大学生数学建模赛题解析及优秀论文-2021电工杯A题高铁牵引供电系统运行数据分析及等值建模(附Python代码)
  7. ad15图层显示_AD15使用及设置
  8. PNP与NPN三极管开关特性
  9. Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
  10. 坚果云和亿方云该如何选?
  11. 程序猿菜鸟打怪升级—一路火花带闪电
  12. MODTRAN辐射传输模型使用笔记
  13. 微信小程序云开发之收藏文章功能的简单实现
  14. OTRS安装使用系列之一——安装及初始…
  15. 【叶子函数分享二十三】计算两个日期之间的工作日
  16. Linux系统网速测速,Linux系统下的网络带宽测速
  17. 基于JAVA线上动漫周边商城计算机毕业设计源码+数据库+lw文档+系统+部署
  18. 基于数字温度传感器的数字温度计 华氏度和摄氏度
  19. 1002-电影观后感---乔布斯传
  20. 软件测试-七项测试的基本原则

热门文章

  1. Vue.js身份证读卡器阅读器谷歌chrome火狐Firefox网页实现读取方法
  2. 使用eclipse开发jsp项目入门
  3. html 5 本地数据库(二)-- Web Sql Database核心方法openDatabase、transaction、executeSql 详解
  4. CMMI3认证和CMMI5认证有哪些不同
  5. 三菱PLC编程软件Work2的FB块加密后的解密方法
  6. 5、Android搭建RN开发环境
  7. 作为移动开发程序员,腾讯3轮面试都问了Android事件分发,分享PDF高清版
  8. 一次Pmbus 调试经验
  9. 分享5款提高工作效率的CAD插件,总有一款适合你
  10. Wordpress中Md文章添加图片点击放大效果