$\mathcal{Crypto}$ 共模攻击原理实现以及$\mathcal{CRT}$优化
\(\mathcal{共模攻击概述}\)
共模攻击是一种攻击 \(\mathcal{RSA}\) 加密的技术,当两个密文使用相同的 \(\mathcal{RSA}\) 公共模数时,攻击者可以使用中国剩余定理\(\mathcal{(CRT)}\)和最大公因数\(\mathcal{(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
\(\mathcal{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
随机推荐
- phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)(Kali)
phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞. 通过vulhub靶场进行复现 ...
- Java基础Day5-数组
一.数组声明创建 首先必须声明数组变量,才能在程序中使用数组. 声明数组变量的语法如下: dataType[] arrayRefVar; 例如: int[] nums; Java语言使用new操作符来 ...
- Docker-compose安装Wordpress
Docker-compose实战Wordpress 96 iXiAo9 2019.01.10 18:54 字数 82 阅读 105评论 0喜欢 0 Docker-compose实战Wordpress ...
- MapReduce实践
1. 词频统计任务要求 首先,在Linux系统本地创建两个文件,即文件wordfile1.txt和wordfile2.txt.在实际应用中,这两个文件可能会非常大,会被分布存储到多个节点上.但是,为了 ...
- Nginx版本。
Nginx官网提供了三个类型的版本Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版Stable version:最新稳定版,生产环境上建议使用的版 ...
- Blob文件下载type类型
let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], {type: "Blob类型"}) let li ...
- 面试-JVM
1.java内存模型 / java运行时数据区模型? 元空间属于本地内存 而非JVM内存 内存模型 程序计数器 1.作为字节码的行号指示器,字节码解释器通过程序计数器来确定下一步要执行的字节码指令,比 ...
- 西电oj135题 拼数字并排序
类别综合 时间限制 1S 内存限制 1000Kb 问题描述 对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出.例如字符串"abc123d5e ...
- 转载C#文件下载的实现
一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { /* ...
- PYinstall打包程序出现编码错误的解决 'utf-8' codec can't decode byte 0xce in position 171: invalid continuation b
网上说,先执行,再打包 chcp 65001 试过没有用. 解决方案: 把import的包批量注释,然后寻找是import那个文件导致. 虽然注释会导致程序运行出错,但是打包才不管你能不能运行. 最后 ...