| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> WhitegiveCMA-writeup -> 正文阅读 |
|
[人工智能]WhitegiveCMA-writeup |
WhitegiveCMA题目链接,提取码:GAME 理论分析下载后是一个文件 给出了两个e,考虑共模攻击。 为了方便后续阅读,做如下变形: e 10 = a 1 ? p + b 1 ? q + d 1 e_{10} = a_1*p + b_1*q+d_1 e10?=a1??p+b1??q+d1?
e
16
=
a
2
?
p
+
b
2
?
q
+
d
2
e_{16}=a_2*p + b_2*q +d_2
e16?=a2??p+b2??q+d2? 首先通过变换获取只与p,q相关的密文形式,记为 c p , c q c_p,c_q cp?,cq? c p = c 10 b 2 × c 16 ? b 1 = m a 1 × b 2 × p ? a 2 × b 1 × p + d 1 × b 2 ? d 2 × d 1 c_p = c_{10}^{b_2}\times c_{16}^{-b_1} = m^{a_1\times b_2\times p-a_2\times b_1\times p+d_1\times b_2- d_2\times d_1} cp?=c10b2??×c16?b1??=ma1?×b2?×p?a2?×b1?×p+d1?×b2??d2?×d1? c q = c 10 ? a 2 × c 16 a 1 = m a 1 × b 2 × q ? a 2 × b 1 × q + d 2 × a 1 ? d 1 × a 2 c_q = c_{10}^{-a_2}\times c_{16}^{a_1} = m^{a_1\times b_2\times q-a_2\times b_1\times q+d_2\times a_1- d_1\times a_2} cq?=c10?a2??×c16a1??=ma1?×b2?×q?a2?×b1?×q+d2?×a1??d1?×a2? 令 w = a 1 ? b 2 ? a 2 ? b 1 w = a_1*b_2 -a_2*b_1 w=a1??b2??a2??b1? e p = b 2 ? d 1 ? b 1 ? d 2 + w e_p = b_2*d_1 -b_1*d_2 + w ep?=b2??d1??b1??d2?+w e q = a 1 ? d 2 ? a 2 ? d 1 + w e_q = a_1*d_2 -a_2*d_1 +w eq?=a1??d2??a2??d1?+w 则 c p = m w ( p ? 1 ) + e p m o d N c_p = m^{w(p-1)}+e_p \quad mod \quad N cp?=mw(p?1)+ep?modN c q = m w ( q ? 1 ) + e q m o d N c_q = m^{w(q-1)}+e_q \quad mod \quad N cq?=mw(q?1)+eq?modN 根据欧拉定理知道: m p ? 1 ≡ 1 m o d p m^{p-1} \equiv 1 \quad mod\quad p mp?1≡1modp, m q ? 1 ≡ 1 m o d q m^{q-1} \equiv 1 \quad mod \quad q mq?1≡1modq 所以 c p m o d p = m e p m o d p , c q m o d q = m e q m o d q c_p\quad mod\quad p = m^{e_p}\quad mod \quad p,\quad c_q\quad mod\quad q = m^{e_q}\quad mod\quad q cp?modp=mep?modp,cq?modq=meq?modq 令 k p = c p e q m o d N k_p = c_p^{e_q} mod\quad N kp?=cpeq??modN k q = c q e p m o d N k_q = c_q^{e_p} mod\quad N kq?=cqep??modN 如果知道 k = m e p × e q m o d N k = m^{e_p\times e_q}mod \quad N k=mep?×eq?modN 则由 所以 把两个方程看为两个多项式,第一个 k 2 = ( k p + k q ) ? k ? k p ? k q m o d N k^2 =(k_p+k_q)*k - k_p*k_q \quad mod\quad N k2=(kp?+kq?)?k?kp??kq?modN 一般化: ( a 1 ? b 2 + a 2 ? b 1 + a 1 ? a 2 ? ( k p + k q ) ? k + ( b 1 ? b 2 ? a 1 ? a 2 ? k p ? k q ) (a_1*b_2+a_2*b_1+a_1*a_2*(k_p+k_q)*k+(b_1*b_2-a_1*a_2*k_p*k_q) (a1??b2?+a2??b1?+a1??a2??(kp?+kq?)?k+(b1??b2??a1??a2??kp??kq?) 只要确定 a 1 , b 1 , a 2 , b 2 a_1,b_1,a_2,b_2 a1?,b1?,a2?,b2?即可求出解,
根据上述等式用多项式的二分乘法把pow(K,e0,N)化成关于K的一次多项式
化为一次多项式后,有 a ? k ≡ b m o d N a*k\equiv b \quad mod \quad N a?k≡bmodN,即可求出k
根据上面方程可以求出p,q。最后求出结果 完整代码
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:41:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |