基于格理论来破解RSA公钥密码(2)

格密码入门 文章目录前言Lattice CryptographyCongruential Public Key SystemSubset-sum problems and knapsack cryptosystemsVector SpaceLattice:Definition and PropertyShort vectors in latticesBabai’s AlgorithmCryptosystems based on hard lattice problemsThe GGH public key crypto 阅读详情

目录

一. 基于格密码求解模多项式的根

1.1 如何求解模多项式的根

1.2 优化

1.3 进一步优化

小结


一. 基于格密码求解模多项式的根

在本小节中,我们将分成三步来解释如何利用格密码来求解模多项式的根。在此过程中,大家可以体会到格密码的应用非常广泛。除了可以自己形成加密或签名系统,也可以用来攻击其他的密码系统。

本文章属于系列文章的第二篇,第一篇的链接已附在结尾。

第一步证明B的界限如下:

\Theta(N^{\frac{2}{d(d+1)}})

其中\Theta中省略了有关于d的系数部分,因为d代表多项式的次数,所以相当于省略了常数部分。

接着将B的界限优化到:

\Theta(N^{\frac{1}{2d-1}})

最终优化到:

B=N^{1/d}

在接下来的讨论中,大家可以把d想象成一个很小的常数,比如像d=3这类。

1.1 如何求解模多项式的根

给定如下次数为d的多项式:

我们的目标是希望寻找如下方程的解x:

f(x)=0\quad mod\ N

且要求x的绝对值不能太大,也就是需要满足:

|x|\leq B

很明显如果B越小的话,这样的解越不好找,这也是解释了为什么最开始我们需要经历三次优化过程。

需要注意的是,这个问题需要模运算,也加大了其求解难度。我们先来看一个特殊的例子。

如果多项式的系数都比较小,比如满足如下:

对任意|x|<B,该多项式的取值一定有上限,且上限一定小于N,可得:

|f(x)|\leq \sum_{i=0}^d|a_iB^i|<N

也就是有没有模N运算,结果是一样的。换句话说f(x)=0  mod N的解与单纯f(x)=0的解是一样的。如果能求出了一个,另一个也就可以求了。

如果没有模运算的话,我们知道f(x)=0的解一定有d个,那么直接找出所有符合的解,并保留整数解,就可以了。

如果以上要求不成立,怎么办?

接下来将是本文章的精髓,也是为什么此类问题可以跟格理论进行结合:

当f的多项式系数不满足如上条件时,那么求解x将是困难的。但是,我们可以将f乘以某个整数,然后再mod N,此过程相当于对系数进行重组,一共有N个整数可以乘,那么应该会存在至少一种结果符合我们的要求,也就是该多项式的系数都相对较小。

接下来,我们希望寻找到一个新的多项式g,来保证该多项式和f拥有一样的根。这样的话,当我们求出多项式g所有的根的时候,也就可以寻找到满足多项式f的小根。来看一个有关多项式的集合:

很显然,对这些多项式进行整数倍的组合,在mod N下与原始的多项式f的根是一样的。这个地方的整数倍组合,不就是对格基进行整数倍组合,这不就是格密码!!

接下来我们的重心则是关注如何对这些多项式进行整数倍组合来保证其满足如上性质。首先可形成如下格:

很明显该矩阵的每一列都对应Z_1中的一个多项式,一共有d+1行,如下:

i=0,\cdots,d

第i行代表x^i的系数乘以B^i,再模N。

我们的目标是在此格中寻找短向量。首先,格的行列式与格基矩阵的行列式计算是一样的,如下:

上三角矩阵的行列式即为对角线处元素相乘。

LLL格基约化可以将格基的长度变短。在此处可以简单回顾LLL格基约化的定理:

注意以上定理中的n为格的维度,在此处即n=d,于是乎我们可以得到:

以上式子中的v即为我们要找到的短格向量。

第一个不等式即为LLL格基约化定理,注意前面d的运算在此处为常数,所以被省略了,用O()代替。

第二个不等式是Minkowski定理,可以快速回顾下:

省略前面的系数,带入即可得。

第三个等式:带入格的行列式

如果我们对B的长度,限定为如下:

B\leq c_1(d)N^{\frac{2}{d(d+1)}}

其中c1(d)为很小的数,且只跟d有关,由此可得v的长度满足:

|v|\leq \frac{N}{d+1}

换句话说,我们也可以得到v的每一个系数都要小于N/(d+1)

借助以上理论,我们从多项式集合Z1中寻找到了一种整数组合方式,得到一个新的多项式:

该多项式的系数相对较小,也就是满足:

\forall i=0,\cdots,d\quad |b_iB^i|<\frac{N}{d+1}

此时对多项式g(x)来讲便可以将模N直接去掉,那么可以使用一些标准的方法来求解多项式g的所有小正数解根。

又因为多项式g与多项式f的解是一样的,此问题描述结束。

1.2 优化

我们来看一个更大的多项式集合,如下:

对如上多项式进行整数倍组合,形成新的多项式g,实际上该多项式g包含所有多项式f的根。当然需要注意的是,g可能含有比f更多的根,但只要把g的根全部找出来,f也就解决了。

由此可形成如下格基:

模仿刚才的过程,也同样使用LLL格基约化过程,由此可得一个格向量v其长度满足:

接下来,我们可以对上界B选择:

B\leq c_2(d)N^{\frac{1}{2d-1}}

其中c2(d)为一个很小的数。借助此边界可以让格向量v的长度小于N/2d。简单解释就是对多项式集Z2中的多项式进行整数倍组合时,可以形成v。

多项式g的次数是2d-1,且一定满足:

\forall i=0,\cdots,2d-1\quad |b_iB^i|<\frac{N}{2d}

现在便可以直接在整个整数域上求取多项式g的短解。

1.3 进一步优化

接下来我们调整让f(x)和g(x)在模不同的数,也就是原来的多项式为:

f(x)=0\quad mod\ N

转变为:

g(x)=0\quad mod\ N^{h-1}

其中h为大于等于2的整数,如下:

h\geq 2

由此现在多项式的集合如下:

我们发现当h=2时,其实就跟前一种情况是一模一样的。

如果对以上多项式进行整数倍组合,则可以形成新的多项式g(x)。

运用同样的方法,可以设定h适当大一点,对任意的:

\epsilon>0

可得:

B=N^{\frac{1}{d}-\epsilon}

比如可以取B的上限为:

B=10N^{1/d}
以上问题便可以同样解决。

小结

在网络安全领域,本过程可用于攻击RSA公钥密码系统。

系列文章:

基于格理论来破解RSA公钥密码(1)-优快云博客

基于密码学中格的基础知识相关介绍(学习笔记) 全同态学习(i春秋课程https://www.ichunqiu.com/course/50439 课时一:基于密码学中格的基础知识相关介绍) 一、什么是格 格是一组由一些线性无关的向量组成的点。其中称为基, 应为整数。 ... 阅读详情

相关推荐

基于格的抗量子密码-LWE格密码

(2)选择秘密向量s和小误差向量e,在动画中展示了从格点A·s到含误差点b的转换。:调整σ值时,可以观察到误差分布从集中(σ=2)到扩散(σ=8)的连续变化。:在维度滑动条上可观察到,当n>400时量子优势已不明显。(步骤5):当故意调大误差时,可观察到解密结果出现跳变。,与其他依赖特定实例困难性的密码体系形成鲜明对比。(4)公钥:(A, b),私钥:s。公钥从矩阵→多项式,尺寸从O(n²)降到O(n)当基向量正交时,格点呈规则网格分布(解码容易)当基向量接近平行时,格点分布稀疏(解码困难)

qq_36911630的博客 1896

格密码的基础概念(1)

格密码的基础概念前言一.格的定义二. 格的延展空间三. 格的基本区四.格基的判断定理五. 格基的关系六. 格基的变换七. 格的行列式八. Gram-Schmidt正交化结论 前言 首先引入数学上的一个概念“格点”。怎么定义格点呢?格点是n维空间中的一组具有周期性结构的点,如下图所示(二维空间的“格”)。三维空间的“格点”可以出现在一些晶体中,就像一堆整齐叠放的橘子。历史上,从18世纪末开始,拉格朗日、高斯以及后来的闵可夫斯基等数学家已经开始研究“格”这个概念。 近几年,“格”已经成为计算机科学领域中研究

forest_LL的博客 1万+

RSA编码私钥获取RSA公钥原理解析

    本文目的在于在逆向破解过程中遇见一个RSA私钥字符串,以为仅仅含有私钥信息,无法获取公钥进行数据解密。但是经过后面的发现才知道自己理解错误。 先看java层的代码: 可以看出在这里私钥是一种叫PKCS8编码格式的,其实这里带入arg10编码串是能够导出公钥的。 但是刚开始很迷惑,私钥(d,n)对怎么可能能生成公钥(e,n)。为了搞清查看了一下公私钥的生成方式,网上找到如下步骤: ...

wenrennaoda的专栏 6762

Crypto--格密码(一)

记录格密码的一些题

刘十三t的博客 4786

密码学之RSA算法

RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,得名于他们姓氏的首字母。最初设计用于解决密钥分发问题,现已广泛应用于数据加密、数字签名等。fill:#333;color:#333;color:#333;fill:none;1976年 Diffie-Hellman密钥交换算法1977年 RSA算法提出1983年 MIT申请专利2000年代 分布式计算和量子计算理论挑战RSA安全性RSA算法以其安全性和广泛的应用在现代密码学中占据重要地位。

零度°C的博客 6370

公钥密码体系崩溃风险:Shor算法可在多项式时间内破解RSA、ECC等基于大整数分解和离散对数问题的公钥算法。4099量子位的量子计算机运行Shor算法可在10秒内破解RSA2048

量子计算颠覆密码体系是确定性事件,但工程瓶颈延缓了威胁时间表。主动布局PQC迁移是平衡安全与成本的核心路径。当前量子位规模距破解RSA2048差2个数量级。注:逻辑量子位需纠错,实际需物理量子位约。数据来源:ETSI/NIST安全强度标准。

百态·数智思维 | 聚焦大数据、量化与未来AI 1057

基于格理论来破解RSA公钥密码(3)【完结篇】

基于格理论来破解RSA公钥密码(1)-优快云博客基于格理论来破解RSA公钥密码(2)-优快云博客在以上文章中,我们证明了一个非常重要的定理,此处我们来简单回顾一下该定理想表达的内容。令N代表一个整数,f代表“首1”且次数为d的多项式,也就是满足:其中“首1”的含义是最高次数项的系数为1。下标N代表多项式的每个系数均小于N,类似于模N的效果。如果现在我们想求解一个方程为:该方程的本质就是求根。

forest_LL的博客 1567

密码学基本理论

密码学基础知识、密码体制分类、常见密码算法、Hash函数与数字签名、密钥管理与数字证书、安全协议、密码学网络安全应用

我的个人博客 7934

基于格理论来破解RSA公钥密码(1)

我们生活中常使用的网络浏览器,智能卡片都有RSA公钥密码的影子。从1977年,RSA密码系统提出,五十年来涌现出了大量的攻击算法。Hastad和Coppersmith创新性的用格密码理论来攻击RSA系统,尤其是公开指数较小的时候。实际上,对于低次数的多项式,可以利用LLL算法来找到其小解。这种思想便可以用来攻击RSA系统。由于智能卡片的运算能力有限,电池供能限制等等,如果在这些系统内部部署RSA时,加密过程的运算我们希望越简单越好。比如可以让以上公开的指数r尽可能小一点,比如r=3等等。

forest_LL的博客 2044

❿⁄₃ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 密码破解理论(上)

本文系统阐述了密码破解的核心原理与方法。首先明确了加密(可逆)与哈希(不可逆)的根本区别,指出密码破解本质是离线哈希比对攻击。其次,详细对比了主流破解工具Hashcat(GPU优先,速度快)与John the Ripper(CPU优先,更通用)的差异。关键环节是破解时间计算,其中GPU凭借海量并行核心在破解常见哈希时具有压倒性速度优势。最后,介绍了Hashcat的实战参数(如 -b 基准测试、-m 指定算法)。

“被信息安全硌得牙疼?来这儿,包你嚼得动、咽得香!😋”核心知识掰开嚼碎,攻防大战揭秘如追剧,政策法规解读不瞌睡!每周两顿“安全小灶”,保准有趣有料还不胖!觉得有用?点赞❤️收藏⭐ 鼓励一下呗!+关注😉= 永久VIP席位,速来!!! 1450

RSA-and-LLL-attacks:通过晶格约简(LLL)攻击RSA

对RSA的基于格的攻击 此回购主机使用格缩减技术(特别是LLL )的实现和对不同RSA攻击的解释。 首先,我们将看到Coppersmith如何发现您可以使用晶格简化技术来攻击宽松的RSA模型(我们知道消息的一部分,或者我们知道其中一个素数的一部分,...)。 以及Howgrave-Graham如何重新制定他的进攻方式。 其次,我们将了解Boneh和Durfee如何在私钥过小( d < N^0.292 )时使用类似于铜匠的攻击来将RSA模数d < N^0.292 。 其次是Herrman和May的简化。 如果要使用实现,请参见下面的和。 如果您想深入研究,还可以阅读或观看。 我还对Boneh-Durfee算法进行了一些个人研究,默认情况下将它们用在boneh_durfee.sage ,只需使用helpful_only = False即可禁用改进。 。 关于该主题的最新研究是: 铜匠

RSA加密的原理——为什么被公钥加密的可以被私钥解密?

RSA加密的原理——为什么被公钥加密的可以被私钥解密? 目录 一,RSA 数学理论基础 二,RSA实现原理 三,RSA加密的过程 四,参考文献 引言 在密码学最开始,都是使用的普通加密模式 A 用加密规则加密了字符串m 然后发给B B 用A的加密规则来解密,得到原始信息m 在这个过程中A必须把自己的加密规则告诉B,否则B无...

一个想写小说的程序员 4万+

【遥感数字图像处理(朱文泉)】第四章 变换域处理方法

变换域的处理方法

甜子yu的博客 4307

实现RSA公钥密码设计

前言:   自己动手实现RSA公钥密码,加强理解。 一、实验目的   通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。   二、实验原理   对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。   非对称密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在非对称密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于

1ance's blog 2077

数字电路实验避坑指南:如何正确搭建主从JK触发器测试电路(附Proteus仿真)

本文详细解析了主从JK触发器的工作原理及实验搭建指南,重点解决了常见的Catching Problem现象,并提供了Proteus仿真优化方案。通过元器件选型、电路连接步骤和常见错误排查,帮助读者正确搭建测试电路,确保数字电路实验的稳定性和可靠性。

weixin_30790841的博客 469

带你学习Android中的ContentObserver

通过使用,开发者可以有效地监听系统设置的变化,例如屏幕亮度等。这种机制使得应用能够动态响应系统设置的更改,提升用户体验。在实现需要与系统设置交互的应用时,合理使用是非常重要的。

执剑人 1311

格密码学4:基于格上困难问题的密码系统和 GGH 公钥密码系统

《An Introduction to Mathematical Cryptography》格密码学一章学习4:基于格上困难问题的密码系统和 GGH 公钥密码系统

Jason_Cheng667的博客 1544

弘玑RPA进阶攻略

01.弘玑RPA产品概要。02.设计器的安装与卸载。03.设计器特性与使用。

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 3639

公开密钥加密算法RSA的理论概述

RSA加密算法的最大优点就是不需要对密钥通信进行保密,所需传输的只有公开密钥,这样就省去了一条开销很大的密钥传输信道。其保密性强,密钥管理方便,并且具有数字签名、认证和签别等多种功能,特别适合于现代保密通信的需要。大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。RSA的安全性是基于大数因子分解的困难性。目前一般认为RSA需要1024位以上的字长才有安全保障。由于RSA所采用的模幂运算耗时太多,因此它通常只能用于加密少量数据或者加密密钥。

FPGA/MATLAB学习教程/源码/项目合作开发 4057

基于PLC1200与CB1241的RS485从站Modbus Rtu通信实战指南

本文提供了一份详细的西门子S7-1200 PLC与CB1241 RS485通讯板实现Modbus RTU从站通信的实战指南。内容涵盖从硬件接线、博途软件组态、关键参数设置到程序调试与测试的全过程,重点解析了Modbus_Slave指令配置与数据块映射,帮助工程师快速掌握工业自动化系统中的数据采集与设备接入技术。

Apple的专栏 793

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1298

RSA加密算法及特定条件下的破解

在对称加密算法中,信息的发送方和接收方用同样的密钥对信息进行加密和解密,而如何安全传递key本身成为了一个十分严重的问题,因此产生了公开密钥密码体制。 公开密钥密码体制使用不同的密钥来进行加密和解密,加密密钥公开(公钥),而解密密钥私有(私钥),加密算法和解密算法都是公开的。解密密钥由加密密钥决定,但却无法从加密密钥运算得到。 由于公钥和加密算法的公开,理论上攻击者可以尝试所有可能的原文并对其

6149

ubuntu-emto-cpa 测试和使用(单核运行)

ubuntu-emto-cpa 测试和使用(单核运行)

qq_45834835的博客 1399

剑指RSA——量子计算Shor算法对经典密码体制的威胁

RSA 加密算法是目前广泛使用的一种公钥加密系统,由Rivest,Shamir 和 Adleman 于 1978年在美国麻省理工学院研制出来的(RSA是三位设计者的名字首字母的组合),是迄今为止理论上最为成熟和完善的一种公钥密码体制。所谓公钥加密系统,就是可以分为公开的“公钥”和保密的“私钥”。两者在生成时是成对的,公钥加密的信息,只能其对应的私钥才能解密。下文将从RSA加密基础知识、算法原理及加密、解密过程介绍RSA算法。密钥配制过程:首先选择一对不同的大素数p与q,使得N=pq;

weixin_62697873的博客 4885

基于Simulink的固态变压器(SST)多级协同控制​

本文介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为智能电网关键设备,其三级架构(AC-DC整流、DC-DC隔离、DC-AC逆变)存在级间耦合问题。文章提出纵向解耦与横向联动相结合的协同控制策略,详细推导了各级控制算法,并通过Simulink实现了10kV/400V级联型SST系统建模。仿真结果显示,在±20%电网波动和0-100%负载跳变下,系统能保持直流母线电压波动<2%。文章还提供了工程部署建议和代码生成方法,为SST的研发提供了实用指导。

amy_mhd的博客 298

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

从 RSA 公钥体系原理 引出量子计算

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,使用公钥加密、私钥解密,或者私钥签名、公钥验签。预计算攻击(Precomputation Attack),即预先计算大量大整数的质因数分解并存储,然后在破解 RSA 时直接查询。2048-bit RSA:n 是 2048 位(约 617 位十进制数),p 和 q 各约 1024 位。4096-bit RSA:n 是 4096 位,p 和 q 各约 2048 位。2048-bit RSA(推荐),4096-bit(更高安全需求)。

eloudy的专栏 1094

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 详解矩阵的三角分解A=LU
下一篇: 详解线性分组码(linear code)
唠嗑!
唠嗑! 优质创作者: 信息安全技术领域 优质创作者: 信息安全技术领域
博客等级 码龄5年 3万+粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值