type
status
date
summary
password
category
slug
icon
小师傅给的题后面好多都是HNP问题,在这里先学习一下再去做题🥹🥹🥹🥹好难好难我爱密码!!🤥🤥
🐳隐藏数问题(HNP / Hidden Number Problem)
📍隐藏数问题
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F211a29fc-29f7-4e56-9ee7-3c5f78e7d805%2FUntitled.png?table=block&id=0cd49584-65b2-40b6-b7f5-d6eff51acb16)
📍HNP定义
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F77f6c1fb-68ee-4c82-b599-57d9672c1ac8%2FUntitled.png?table=block&id=67f0149c-ea9b-46ed-b71a-e9ec9c663f17)
MSB(most significant bits)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2aa994f4-234b-47f0-920e-48e44277ec1e%2FUntitled.png?table=block&id=9efdbad7-d00b-4ee0-9db6-f23aff031527)
提出了most significant bits (MSB) 的定义。首先令p是一个素数, n是p的二进制位数,即n,用x mod p来表示一个定义在有限域的数a∈GF(p),即x=(modp)。定义(x)的值为t并且
or更简单的定义
(x)=z,|x-z|<
简单理解t=(x):
- 若满足,则 是一个输出
- k越大,越接近x
多大的k可以来解决HNP问题
定理1
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3a934c72-aae6-4100-9726-884d29cb4364%2FUntitled.png?table=block&id=e17ce934-766d-45ee-a9df-38975d109a66)
定理1
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb06a578e-f645-45ae-bf9e-c1f31beafaf0%2FUntitled.png?table=block&id=b92110b5-35cf-4c77-9321-94199b5777df)
定理2
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2522c4a8-28e8-41be-8073-d79a3cd10a07%2FUntitled.png?table=block&id=513f2354-2f3c-4398-b160-5bad05034117)
定理2
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa8d5e183-3879-4314-8e5a-33e4e00f5e79%2FUntitled.png?table=block&id=af9dc1fc-cb98-419a-a5b2-fdbc7f21352f)
LLL算法
LLL格约减算法的定义
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7e216aa2-3e0a-44a9-b37a-275e94126b39%2FUntitled.png?table=block&id=f809710e-4866-46af-a440-23379a4bb207)
LLL格约减之后得到优质基,优质基其中一条性质是基尽可能小
LLL的应用
可规约到格的另一个基本问题:最近向量问题(CVP)。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb5344e6e-deac-4ac5-ab78-ea66410cce13%2FUntitled.png?table=block&id=05ac1dc6-05f3-4f0b-ad2a-9e41044d5c43)
E.G
已知
构造格
肯定在格子中
?A,X*?B应该多大呢
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F886a5d61-3e11-4f7f-ba89-8c5e6cfdd453%2FUntitled.png?table=block&id=a76c240c-8816-4548-9244-c8ad52b7ca38)
保证vk中的每一项的长度都差不多,这样有利于找到vk
Lattice 之 HNP
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd5a1d70c-09e0-4ab2-b167-aced1556d4a1%2FUntitled.png?table=block&id=e901f847-1dc4-4814-9703-78fb62d731b1)
有这样的一些等式,然后A,B已知,k的bit位数要小于p的bit位数,等式数量足够的情况下,少6bit位数可以求解k
具体构造如下矩阵
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ffa8f421a-c922-4682-b549-3ad57d500d85%2FUntitled.png?table=block&id=2296e18c-1022-4758-97d7-5ea732ea1a33)
其中K为ki同bit位数的数(bit_length(ki)=250 K=2^250)
Z为需要自己构造的数
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0110e5ff-d27b-406a-9898-586b93e233dd%2FUntitled.png?table=block&id=18c787d8-2ed9-472c-b96c-b5acad41a4b4)
要尽可能的满足Z*x的bit位数与K一致
一般Z取K/q, K的构造也是为了让vk中的每一项的长度都差不多,这样有利于找到vk
注意:Z取K/q 这时候构造的矩阵不能是ZZ,K/q结果不一定是整数
例题
🥹MTCTF2022 strange_rsa3
📑题目
🪄题解
gift = (p[0] * a - p[1]) * inverse(b, p[0] * p[1] ** 2) % (p[0] * p[1] ** 2)
先求出
p0,p1
连分数求解出p0,p1
求b
第一种解法 HNP问题构造格
第二种解法 模上P(大师傅307教的👐🫣)
gift = (p[0] * a - p[1]) * inverse(b, p[0] * p[1] ** 2)
同时模上p[0]
gift%p[0]=-p[1]*ib
求出r0
👀wp
第一种
第二种
小研究
逆元的比特值靠近模数的比特
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3f1d25c7-3273-4816-95ac-9bd44f4f5547%2FUntitled.png?table=block&id=d8ab5cac-7e34-4f30-ba9e-6d021077dbfd)
🥹红明谷CTF 2022 sm2
📑题目
out(sigs)
🪄题解
👀wp
📎 参考
- 一些引用
- 引用文章
🥹XCTF2020-高校战役
📑题目
🪄题解
多了一步筛选,if k_bits < 122:
构造格求出私钥x(128bit),筛选k的比特与X相差较小的
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fab6ccd40-b2a2-4726-8bb0-08f71bf05d0d%2FUntitled.png?table=block&id=1e23e057-9aec-4654-a85e-d90e438cacc7)
👀wp
🥹NPUCTF2020-babyLCG
📑题目
🪄题解
恢复seed,接下来生生随机数,KEY,iv可知,decrypt
恢复seed(已知a,b,m和伪随机数的高位,恢复seed)
hnp问题,构造格,恢复低位,高位已知,即可求出所有随机数
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F10825a2e-4352-4ffe-bda9-69d434e70a9a%2FUntitled.png?table=block&id=229f75ef-03bc-41c6-9ae5-384d8de697e0)
保证规约出来的bit差不多
算出seed之后脚本直接更改题目里这几个值就好啦
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3c3b9583-92d7-46be-b6e6-7929ccb90f7b%2FUntitled.png?table=block&id=8163d2d8-e069-429c-ba22-f45b877dd36c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F15fcc4f3-d2b8-4ba0-939c-05aff8ddc561%2FUntitled.png?table=block&id=62524b05-e654-4a1c-8fc0-d33aabdf3567)
👀wp
总结
解决HNP问题
- 一般需要多组数据,每一组就像方程组中的每一条方程,据这些方程组构造一个Lattice(矩阵),像在用矩阵解决线代中的 XA=B 的问题,这个B中的每一项是我们获得的MSB这样子的比较模糊的信息(比如比特位等信息),这个B向量的长度(范式)需要相对与格中其他向量要短,然后我们就可以利用LLL算法找到这个B,进而根据我们的构造,确定X向量中我们需要的一个特定的值。也就是方程组的解。
- 有时候B很大,这时候就要通过这时候需要根据规约出来的相对较小值来计算出B,HZNU nothing那题通过规约出来的vi=得到k,根据ki与x的等式关系求x