Yk2eR0's Blog.

rsa

字数统计: 647阅读时长: 2 min
2019/03/11 Share

储备知识:

欧拉函数:φ(n)为小于或等于n的正整数中与n沪指的数目
若m,n互质,φ(mn)=φ(m)*φ(n)
若n为质数则φ(n)=n-1
pow(x,y,z):x的y次方再对z求余数

ESA算法简介:

选择两个大素数p和q,计算出模数N=pq
计算φ=(p-1)(q-1),然后选择e与φ互质
取e的模反数为d,(e
d)%φ=1
对明文m进行加密:c=pow(m,e,N),C即为密文
对密文c进行解密,m=pow(c,d,N),得到的m即为明文

参数:

p和q:大整数的两个因子(factor)
N:大整数N,模数(modulus)
e和d:互为模反数的两个指数(exponent)
c和m:分别为明文和密文,一般指十进制的数

我们称(N,e)公钥,(N,d)私钥

CTF中RSA题型

公钥+密文

出题人会给你一个公钥文件(通常是以.pem或.pub结尾的文件)和密文(通常叫做flag.enc之类的),你需要分析公钥,提取出(N,e)
针对此类文件可以直接使用openssl提取,大概使用过的方式有:
openssl rsautl -encrypt -in FLAG -inkey public.pem -pubin -out flag.enc
openssl rsa -pubin -text -modulus -in warmup -in public.pem

文本文档

对于第一种题型,耿直点的出题人直接给你一个txt文本文档,里面直接写出了(N,e,c)所对应的十进制数值,然后你直接拿去用就行了。当然也不都是给出(N,e,c)的值,有时还会给出其他一些参数,这时就需要思考,这题具体考察的什么攻击方法

pcap文件

会给你一个流量包,你需要用wireshark等工具分析,然后根据流量包的通信信息,分析题目考察的攻击方法,你可以提取出所有你解题需要用到的参数,然后进行解密

本地脚本分析

题目会给你一个脚本和一段密文,一般为python编写,你需要逆向文件流程,分析脚本的加密过程,写出对应的解密脚本进行解密

远程脚本利用

这种题型一般难度较大。题目会给你一个运行在远程服务器上的python脚本和服务器地址,你需要分析脚本存在的漏洞,确定攻击算法,然后编写脚本与服务器交互,得到flag

当模数N过小时

N过小代表可以爆破N,由N,e可以求出d,c已知,从而解出密文

基本工具在虚拟机

原文作者:Yk2eR0

原文链接:https://www.yk2er0.fun/2019/03/11/rsa/

发表日期:三月 11日 2019, 11:09:00 上午

更新日期:April 5th 2021, 11:44:48 am

版权声明:非商业用允许转载

CATALOG
  1. 1. 储备知识:
  2. 2. ESA算法简介:
    1. 2.1. 参数:
  • CTF中RSA题型
    1. 1. 公钥+密文
    2. 2. 文本文档
    3. 3. pcap文件
    4. 4. 本地脚本分析
    5. 5. 远程脚本利用
  • 当模数N过小时