首页 > 其他分享 >$\mathcal{Crypto}$ 共模攻击原理实现以及$\mathcal{CRT}$优化

$\mathcal{Crypto}$ 共模攻击原理实现以及$\mathcal{CRT}$优化

时间:2023-03-20 10:47:31浏览次数:34  
标签:gmpy2 CRT Crypto RSA mathcal mod e1 e2

共模攻击概述

共模攻击是一种攻击 \(RSA\) 加密的技术,当两个密文使用相同的 \(RSA\) 公共模数时,攻击者可以使用中国剩余定理\((CRT)\)和最大公因数\((GCD)\)算法,推导出明文。这种攻击技术利用的是\(RSA\)加密算法中的数学性质,特别是模运算具有分配律和结合律的属性。共模攻击只需要拥有两个使用相同的公共模数加密的密文就能够推导出明文。因此,RSA算法的安全性在很大程度上依赖于保护其公共模数的机密性。

n:RSA公共模数
e1 & e2:RSA加密密钥指数
c1 & c2:对同一明文加密后得到的两个密文

使用 \(gmpy2.gcdext()\) 函数来计算两个密钥指数\(e1\)和\(e2\)的最大公因数,以及用于计算解密密钥的系数\(s1\)和\(s2\)。这些系数可以通过下面的式子计算得出:

s1 * e1 + s2 * e2 = gcd(e1, e2)

这里的 \(gcdext\) 函数返回三个参数,其中第一个是最大公因数,第二个是 \(s1\) ,第三个是 \(s2\)。

然后,代码计算明文\(m\),通过以下公式来计算:

m = (c1^s1 * c2^s2) mod n

\(CRT\)优化

可以使用中国剩余定理 \((CRT)\) 来优化这段代码,这样可以更快地计算明文 \(m\) ,从而提高解密的效率。 \(CRT\) 可以利用多个同余方程求解一个线性方程组,这个线性方程组的解就是原来的方程组的解。

假设p和q是n的两个质因数,它们分别满足以下条件:

p ≡ 1 (mod e1)
p ≡ 0 (mod e2)
q ≡ 0 (mod e1)
q ≡ 1 (mod e2)

这里 \(e1\) 和 \(e2\) 分别是RSA加密的两个密钥指数。

我们可以使用 \(CRT\) 求解 \(m\) ,其计算公式如下:

m = (c1 * q * gmpy2.invert(q, p) + c2 * p * gmpy2.invert(p, q)) mod n

在这个公式中,\(invert()\) 函数用于计算模 \(p\) 或 \(q\) 的逆元,即p或q的乘法逆元,其中 \(n = p * q\) 。

下面是优化后的代码:

p = gmpy2.powmod(c1, e1, n)
q = gmpy2.powmod(c2, e2, n)

p1 = gmpy2.invert(q, n)
q1 = gmpy2.invert(p, n)

m = (c1 * q * p1 + c2 * p * q1) % n

标签:gmpy2,CRT,Crypto,RSA,mathcal,mod,e1,e2
From: https://www.cnblogs.com/sqrthyy/p/17235458.html

相关文章

  • BUUCTF Crypto 1-20
    https://blog.csdn.net/ao52426055/article/details/1093046461、MD5MD5在线网站解密2、一眼就解密base64解码3、URL编码控制台解码decodeURI()、decodeURICompon......
  • BUUCTF Crypto 21-40
    21、RSA1:::tipsp=863763376725700856709965348654109117132049150943361544753916243791124417588566780639841179052408355344515811350222774520620532769093950403......
  • exCRT小记
    众所周知CRT只能处理模数两两互质的情况,因为它要算逆元。那么如果模数两两不互质,有没有办法呢?答案是有的。我们先来考虑两个同余方程,设为\(x\equivb_1\pmod{a_1},x\e......
  • ( Crypto)BUUCTF之Url编码
     题目如下 下载文件解压后得到一个txt文件  结合题目的名字,使用url解码   ......
  • [JS JavaScript] 使用CryptoJS库对给定的加密字符串进行解密
    本代码可以使用在Web中,或者其他可以出入密码的场景在需要解密的信息不大的情况下,可以将加密后的信息放入到JS中,在输入密码后,对加密后的信息进行解密在vue中,可以很方便的......
  • 文献阅读CDCL--Crypto-- SAT Solvers for Cryptanalysis
    CDCL(Crypto)SATSolversforCryptanalysisAuthors: SaeedNejati VijayGanesh AuthorsInfo&ClaimsCASCON'19:Proceedingsofthe29thAnnualIntern......
  • [CISCN 2022 初赛]online_crt
    [CISCN2022初赛]online_crt涉及漏洞分析参考文章CVE-2022-1292的分析-先知社区(aliyun.com)附件源码Flask路由部分@app.route('/',methods=['GET','POST'])de......
  • Python - Crypto 导入失败问题解决记录
    python3.7Mac安装psycopg2$pipinstallpsycopg2...Error:pg_configexecutablenotfound....出现报错:Error:pg_configexecutablenotfound.解决参考:h......
  • SecureCRT 颜色方案
     安装完CRT之后,再网上找了很多颜色方案,发现都不是很理想。有的文章有截图没有颜色方案的具体数据,有的文章有具体数据,没有截图展示,给我造成了很大的影响。在设置好自己的颜......
  • crypto.js 前端加解密
    crypto-js是谷歌开发的一个纯JavaScript的加密算法类库,可以非常方便的在前端进行其所支持的加解密操作。目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、AES、RSA、Rabb......