$\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
随机推荐
- 关于Java字符串、字符与数字之间的相互转换
一.数字转字符串 //将整个数字转化为字符串 int i=456; //方法一 String str1=Integer.toString(i); System.out.println(str1); / ...
- 微信浏览器h5页面开发遇到问题
1.ios不支持window.open(),要创建a链接 let elink = document.createElement('a'); elink.href = baseURL+'/onlineC ...
- 【JavaScript】JS写法随笔(三) JS联动设置元素默认值
问题: 使用DOM获取元素后setAttribute("value", "1")在页面有修改此标签value的情况下,再次触发function发生不生效.无法修 ...
- Java基础|03.基础语法(2)
Java安全|03.Java基础语法(2) 00x1 单例模式 定义: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一 ...
- javaweb链接到数据库(mysql)操作
准备:配置好数据库,下好mysql connect 第一步:将my connec文件和commons-dbutil(,jar)复制到webapp文件下WEB-INF的lib文件中,然后右键构建路径. ...
- 【Android报错】FileNotFoundException open failed:文件路径 EPERM (Operation not permitted)外部存储至根目录报错,Android外部存储权限动态获取问题
报错:FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted) 查了下,大概原因是因为权限的问题.(小白学A ...
- vue+element 表格动态列添加点击事件与排序(/或者空值排最后)
<template> <div> <el-table ref="tableData" :data="tableData& ...
- C# POST GET请求方式汇总
/// <summary> /// POST方式提交 application/json /// </summary> /// <param name="post ...
- 搭建CosId服务
CosId介绍 CosId 旨在提供通用.灵活.高性能的分布式 ID 生成器.项目中还是很好集成,CosId本身采用spring boot与spring cloud框架,如果项目是这类的微服务框架,那 ...
- 20181224《网络攻防技术》Exp7 网络欺诈防范
20181224<网络攻防技术>Exp7 网络欺诈防范 目录 20181224<网络攻防技术>Exp7 网络欺诈防范 相关知识点总结 ARP Spoofing IP源地址欺骗 ...