Crypto
文章平均质量分 75
h0l10w
这个作者很懒,什么都没留下…
展开
-
Pollard’s rho算法
给定一正整数N∈N∗,试快速找到它的一个因数。很久很久以前,我们曾学过试除法来解决这个问题。很容易想到因数是成对称分布的:即N1N和NN。这个很容易想清楚,我们只需要把区间1N扫一遍就可以了,此时试除法的时间复杂度为ON。对于N≥1018的数据,这个算法运行起来无疑是非常糟糕的。我们希望有更快的算法。对于这样的算法,一个比较好的想法是去设计一个随机程序,随便猜一个因数。如果你运气好,这个程序的时间复杂度下限为O1。但对于一个N≥10。原创 2023-06-09 00:03:03 · 538 阅读 · 0 评论 -
大步小步法
大步小步算法(baby step giant step,BSGS),是一种用来求解离散对数(即模意义下对数)的算法,即给出ax≡bmodm中abm的值(这里保证a和m互质),求解x。实际上,大步小步算法就是对暴力枚举的一个简单的改进,使用了类似的思想。我们把x拆成At−B,拆分成这种形式是为了后面移项后指数上能是正的,然后原式就可以化为aAt−B≡bmodm,即aAt≡baBmodm。对于这个式子,如果我们固定一个t值的话,随着B。原创 2023-06-02 22:19:05 · 866 阅读 · 0 评论 -
Rabin密码体制
概述Rabin算法是一种基于计算模合数平方根困难性问题的非对称加密算法,和RSA加密的形式类似。Rabin算法加密选择两个大素数p和q做为私钥计算n = p * q做为公钥若明文为m,则密文为c≡m2(modn)c \equiv m^{2} \pmod{n}c≡m2(modn)实际做题中,加密指数e不仅限于2,所有和n不互素的都有可能解密原理见:Rabin加密算法和n次同余方程 - 先知社区 (aliyun.com)例题from gmpy2 import *from Crypto.U原创 2022-04-18 23:52:42 · 2149 阅读 · 0 评论 -
RSA中利用光滑数进行模数分解
概述光滑数 (Smooth number):指可以分解为小素数乘积的正整数当p是N 的因数,并且p−1是光滑数,可以考虑使用Pollard's p-1算法来分解N当p是N的因数,并且p+1是光滑数,可以考虑使用Williams's p+1算法来分解NPollard的p-1算法算法核心为了分解合数n,设数n的一个因子是p,若p − 1的每个因子q满足q≤Bq\le Bq≤B(B是自己选的一个数,称为界),此时必有(p−1)∣B!(p-1) | B!(p−1)∣B!证:设p−1=q1q2q3…原创 2022-04-15 22:58:59 · 2294 阅读 · 0 评论 -
低加密指数攻击
原理低加密指数攻击:假设e=3, 公钥中的加密指数e很小,但是模数n很大有RSA加密公式:c≡me(modn)c \equiv m^{e} \pmod{n}c≡me(modn) (c密文,m明文)则:当me<nm^{e}<nme<n时,c=mec = m^{e}c=me,所以对c开方就能得到m当me>nm^{e}>nme>n 时,此时用爆破的方法:假设我们me/nm^{e} / nme/n的商为 k 余数为c,则me=kn+cm^{e} = kn + cm原创 2022-03-28 12:00:00 · 1471 阅读 · 0 评论 -
长安“战疫”网络安全卫士守护赛crypto
cry1题目如下,就是一个脚本:from Crypto.Util.number import*from secret import flag,keyassert len(key) <= 5assert flag[:5] == b'cazy{'def can_encrypt(flag,key): block_len = len(flag) // len(key) + 1 new_key = key * block_len return bytes([i^j for原创 2022-03-24 22:44:03 · 7755 阅读 · 1 评论 -
RSA公钥提取
特征此类题目一般会给pub.key和flag.enc。pub.key是公钥文件,可以用txt打开;flag.enc是加密后的二进制文件,用txt打开会是乱码。公钥一般长这样:-----BEGIN PUBLIC KEY-----MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+/AvKr1rzQczdAgMBAAE=-----END PUBLIC KEY-----可以用在线网站去解析获得e和n:SSL在线工具-公钥解析原创 2022-03-18 17:18:25 · 2532 阅读 · 0 评论 -
RSA 共模n攻击
例题c1=2232203527566323704164689377045193350932470191348430333807621060354261275895626286964082248647012114942448557136100742129367551633882219528031379499113604814091884247121984026353633888625049268273943641001343665116172072585548486669008478872134955566原创 2022-02-18 12:00:00 · 529 阅读 · 0 评论 -
RSA维纳攻击
适用情况e过大或过小在e过大或过小的情况下,可使用算法从e中快速推断出d的值。原理我不生产原理,我只是原理的搬运工Wiener 表示如果满足:d<13n14d<\frac{1}{3}n^{\frac{1}{4} }d<31n41那么一种基于连分数(一个数论当中的问题)的特殊攻击类型就可以危害 RSA 的安全。此时需要满足:q<p<2q如果满足上述条件,通过 Wiener Attack 可以在多项式时间中分解 n,思路如下:回想一下 RSA:N =原创 2022-02-03 15:55:07 · 4394 阅读 · 0 评论 -
低加密指数广播攻击
n不互素特点加密指数e非常小一份明文使用不同的模数n,相同的加密指数e进行多次加密可以拿到每一份加密后的密文和对应的模数n、加密指数e解题思路由于模数n只能分解为p和q,所以当n很多时,p或q有相同的风险因此不同的模数n中可能存在相同的p或者说q求出不同n之间的最大公约数 gcd(),如果大于1说明这里存在漏洞,可以继续攻击所得到的最大公约数就是p或q,然后可得d有私钥d就能得到明文例题m = xxxxxxxxe = 65537========== n c ==========原创 2022-01-29 17:15:15 · 1984 阅读 · 0 评论 -
RSA dp泄露
例题e = 65537n = 24825400785152624117772152669890180298583276617622160961225887737162058006043310153832803030521991869764361981420093067961210988553380133534844502375167047843707305554472428068473329805159916766030364518314616149748535863368149212966880240原创 2022-01-28 19:40:19 · 492 阅读 · 3 评论 -
RSA dp,dq泄露
以例题为导向,深入剖析RSA中dp和dq泄露会造成的对RSA的攻击。原创 2022-01-11 20:31:49 · 3538 阅读 · 5 评论