CNSS-Recruit2025-Crypto-WriteUp
Crypto
🌟栖居于可能性之中
MNZWK327L5SW6ZDGOJ2GQZLPMNPWS5LOPNWG25DUL5ZF6X3ZN5XV65LBNJXHG43XMNSW62DXNRXWG4C7OB4V63TPL56Q====
Base32 + (Fence=3)cnss{welcome_to_the_world_of_crypto_hope_you_can_join_us}
🎏波兰来客
from Crypto.Util.number import * |
单素数RSA,phi=p-1
太简单就不放代码了cnss{welcome_to_the_world_of_number_theory}
🪄贝阿朵莉切的传说
from sage.all import* |
找圆周率小数部分中的6个512bits的素数
实际上能找出前3个因子就够了(只要m小于当前选择的n=pqr即可,这也是一个很常规的应用,有的时候是不需要知道全部因子才能求的,m小于当前选择的模数即可),区间应该在1w-100w
import gmpy2 |
🌧️November Rain
from Crypto.Cipher import AES |
hint xor key结果的高十六字节异或低十六字节即可恢复key(异或运算的规则下,key高十六字节为全0)
通过已知的全部明文和最后的三个密文块,结合key(AES-ECB-decrypt)向前推导(xor),恢复iv
from Crypto.Cipher import AES |
🎡Ever17
from Crypto.Util.number import* |
$相邻的两个素数:开平方找下一个素数即可,或者费马分解法$
$d\equiv 13^{b^3-b+1}\equiv 13^B\pmod {pp}$
$DLP求解B$
$b^3-b+1=B\pmod t$
$f(b)\equiv 0\equiv b^3-b+1-B\pmod t$
$通过多项式环的根,求解b$
# sage |
📻坏掉的收音机
from secret import FLAG4 |
$en大小近似:Winner\ Attack$
$套板子即可$
from Crypto.Util.number import * |
🌸鲜花盛开的森林
from sage.all import* |
这题就是简单的ECDLP+CRT
$ct=e*pt$
已知的是ct的横坐标x,但pt也恰好是横坐标满足flag的点,因此只需要找到逆元即可恢复pt
但整数环的阶并不方便计算,n还不是素数,E.order() sage会直接报错,因此得借助n的三个小素数crt恢复flag
在素数域下E.lift_x(cc)会得到两个点(加参数:all=True),但这道题目只需要考虑横坐标x,因此任意一个点都可以恢复flag,不用这么麻烦
from sage.all import * |
☀️20世纪少年
from Crypto.Util.number import* |
出题人老坏了,用了个d=p+q来迷惑我们,让我们觉得这玩意一定有用,实则一点用都没有
真正的d=p*q
$en\equiv epqr\equiv edr\equiv r\pmod {\phi(n)}$
$2^{en}\equiv 2^{r}\pmod n\equiv 2\pmod r$
$2^{en}-2\equiv 0\pmod r$
$r=gcd(2^{e*n}-2,n)$
至于为什么有这样的想法,请见⛏️ 铜匠的艺术Ⅰd=p
from Crypto.Util.number import * |
🗡️浪客剑心
from secret import FLAG5 |
a = (b * cc + c) % (r + 114514)
$其实是,a\equiv b*p+c\pmod{(r+114514)}$
这里就两个未知的变量pc
正好,p是350位,c是400位,还等什么呢,二元copper端上来,直接秒了
cuso应该也能直接出
# sage |
$既然flag提到了格,就再写一个格的做法吧,正常的格好像规约不出来?$
$a\equiv b*p+c\pmod{(r+114514)},转化为CVP,最近向量问题$
$可以利用Babai最近平面算法,求解CVP$
$令m=r+114514,有c’=a-b*p\pmod m$
$考虑所有满足y=-b\cdot x\pmod m的整数点(x,y)在二维平面上构成点集,称之为格L$
$目标解(p,c’)满足c’=a-b*p\pmod m$
$满足这个方程的点集可以理解为,将整个格L进行平移(y+a)后得到的新点集$
$现在的几何问题被转换为,在这个新点集上找到离(0,0)最近的那个点(p,c’)$
$具体一点就是,在原始的、未平移的格L中,找到一个格点v,使得它与目标向量t=(0,-a)的距离∥v−t∥最近$
$我们期望找到的这个最短的向量s=v−t,就等于(p,c′)$
$v_{1}=(1,-b\pmod m),v_{2}=(0,m)$
$这两个基向量线性无关,可以构造出基矩阵M$
$为了得到一个更优的(向量更短、更接近正交)格基,令L=M.LLL()$
$令t=C\cdot L,用来求向量t在新基L下的坐标C$
$这一步是,Babai算法中进行坐标系转换的核心$
$则,C=t\cdot L^{-1}$
$对C_{i}四舍五入进行取整得到,Z_{i}=[C_{i}]$
$格点v=Z\cdot L$
$s=v-t=(p-0,(-bp)-(-a))=(p,a-bp)=(p,c’)\pmod m$
from sage.all import * |
🧢棒球英豪
from Crypto.Util.number import * |
$u^2+v^2=c^2(1+du^2v^2)\pmod p$
$两边同时除以c^2,u=cx,整理得到$
$x^2+y^2=1+(dc^4)x^2y^2\pmod p$
$x^2+y^2=1+d’x^2y^2\pmod p$
$通过缩放可以转换得到,标准的扭曲爱德华兹曲线$
$这里的加法属于扭曲爱德华兹曲线上的加法,与普通的曲线加法相比多乘了一个c$
$P\ Q\ sP\ t*Q都是曲线上的点,通过这四个点恢复(p\ c\ d)$
具体推导原理参考博客(里面已经很详细了):
https://www.cnblogs.com/mumuhhh/p/18019200
https://tangcuxiaojikuai.xyz/post/678d5ec.html
$这里求出来的p需要除2才能是素数$
from Crypto.Util.number import * |
🌍Rewrite*
from collections import namedtuple |
$不是哥们,怎么还是这题啊$
$\phi(n)=(p^2+p+1)(q^2+q+1)$
$r是用来构造三次扩域的,貌似不需要使用到(?)$
$令x=p+q$
$ed=k(n^2+x(x+n+1)-n+1)+1$
$k\in [2^{250},2^{256}],x\in [2^{256},2^{257}]$
$说实话,二元copper也打了,cuso也试过了,真解不出来啊。。。$
这下未完待续了……
下面开始垂死挣扎:
- pbCTF2021-yet another rsa
- maple3142’s wp
- PBCTF 2nd place wp
- paper1-2021
- paper2-2022
- paper3
- paper4
- paper5
- A novel RSA–like cryptosystem based on a product related to the cubic Pell equation and Rédei rational functions
已经很尽力调参了,奈何就是打不出来(尝试了二元copper、连分数分解、论文脚本),$d=N^{0.5}$,也能满足论文的条件($d<N^{0.569}$)啊,0.4的时候就特别好打。。。。
其实通过搜索Murru-Saettone scheme cubic pell rsa,你会发现大量相关的论文,就不全部罗列出来了
也尝试通过24年的研究优化了22年脚本的一些参数,没出
上面的脚本,也仔细调参数了,也没能出……
What can I say……