论文翻译2:61蒙哥马利模块化逆算法回顾

摘要:我们修改Kaliski给出的算法来计算一个质数的整数模的蒙哥马利逆。我们也给出了一个新的定义介绍了计算经典模逆、Kaliski-Montgomery逆和新的Montgomery逆的高效算法。所提出的算法适用于通用微处理器上的软件实现。



关键词:模算术;模逆;几乎逆;蒙哥马利乘法;密码学



1介绍

        模一个素数p的基本算术运算(即加法、乘法和求逆)在密码学中有许多应用,例如RSA算法中的解密运算[9]、Diffie-Hellman密钥交换算法[1]、美国政府数字签名标准[8]以及最近推出的椭圆曲线密码[5]、[6]。模逆运算在公钥密码中起着重要的作用,特别是在利用所谓的加减链[2]、[4]加速求幂运算以及计算有限域GF(p)[5]、[6]。上定义的椭圆曲线上的点运算中。

以质数p取模的整数a∈[1,p-1]的模拟被定义为如ax=1(mod p)的整数x∈[1,p-1]。它通常写成x=a-1(mod p)。这是模逆[4]的经典定义。接下来我们会用到以下方法表示以p取模的数a的倒数:

模逆的定义最近被Kaliski扩展到包括所谓的基于蒙哥马利乘法算法[7]的蒙哥马利逆[3]中。在这篇文章中,我们引入了蒙哥马利逆的一个新定义,也给出了计算经典模逆、Kaliski-Montgomery逆和整数a模质数p的新Montgomery逆的有效算法。

2蒙哥马利逆

两个整数a,b∈[0,p-1]的蒙哥马利乘法被定义为c=ab2-n(mod p)  其中 n=[log2p]。我们使用下面符号表示该乘法运算,

其中p是素数,n是其位长。整数a∈[1,p-1]的蒙哥马利逆由Kaliski[3]定义为整数x=a-12n(mod p)。类似地,我们将使用下列符号来表示由Kaliski定义的Montgomery反演。

在[3]中引入的算法计算了a的蒙哥马利逆。我们给出了下面的算法。第一阶段的输出是整数r,使得r=a-12k(mod p),其中n<k≤2n。然后使用第二阶段对该结果进行校正,以获得蒙哥马利逆x=a-12n(mod p)。

3几乎蒙哥马利逆

如上所示,第一阶段计算整数r=a-12k(mod p),其中n<k≤2n。a的蒙哥马利逆被定义为x=a-12n(mod p),其中n=[log2p]。

接下来我们将第一阶段的输出称为a的几乎蒙哥马利逆,并表示为:

其中n<k≤2n。我们注意到一个类似的概念,伽罗瓦场GF(2m)中元素的几乎逆在文献[11]中引入,也在文章[10]中解决了一些实现问题。

由于k是阶段I的输出,我们将其作为输出值包含在AlmMonInv函数的定义中。我们还建议对几乎蒙哥马利逆算法的使用方式进行额外的改变。不是选择蒙哥马利基数作为R=2m(其中n=[log2p]),而是选择它作为R=2m,其中m是计算机字数w的整数倍,这就是说w=i*w(i为正整数)。蒙哥马利乘积算法适用于任何m,只要m≥n(其中n是质数p的位长)。为了提高效率,我们选择了使m大于n的最小i,换句话说就是iw=m≥n,但是(i-1)w<n。结果表明,almost Montgomery逆算法(阶段一)也适用于这种情况。此外,它甚至适用于输入a,只要它小于2m,它就可能大于p,如下面定理1所证明的。第二个问题是几乎Montgomery逆算法终止后k的值。我们在定理2中证明了n≤k≤m+n。

定理1:如果p>2是一个质数并且a≥1(a可能比p大),那么在almost Montgomery逆算法中,中间值r、s和u总是在区间[0,2p-1]上。

证明:如果a<p,那么在文献[3]中给出的证明可以用在这里。如果a>p且a不是p的整数倍,那么在while循环中只执行步骤5和步骤7,直到v小于u。在此之前,变量u、r和s保持其初始值。 当v < u时,它们开始变化,在这一点之后,算法继续处理a < p的情况。因此,a>p时中间值保持在区间[0,2p-1]内。

定理2: 如果p>2是一个质数并且a≥1,那么在almost Montgomery逆算法结束时产生的指标k取一个介于n和m+n之间的值,其中n=[log2p],m=sw(sw≥n且(s-1)w<n)。

证明:在每次循环(步骤4-7)的uv和(u+v)的减少如表1所示。注意,这些步骤是相互排斥的。也就是说,在一次迭代中,这四种情况只有一种发生。在每次迭代中,uv值至少减半,而u+v最多减半,而且在最后一次迭代之前u和v都等于1。因为uv和(u+v)的初始值分别是ap和a+p,索引值k(即迭代次数)满足:

因为2n-1< p < 2n并且0 < a < 2m,我们有:

因此,我们得到结果:n≤k≤m+n。此外,我们注意到 m-n≤ w-1,其中w是机器的字号。这意味着 m-w+1≤k≤m+n。

4使用几乎蒙哥马利逆

蒙哥马利逆算法计算x=a-12n(mod p)。Kaliski算法[3]使用了第二阶段的位级运算来实现它的目标。它在阶段II中使用(k-n)个步骤,在每个步骤中,执行一个位级右移操作。此外,如果r是奇数,则需要执行加法运算r+p。

如前所述,我们将使用这个定义x=a-12m(mod p)。此外,完全消除位级操作并使用Montgomery乘积算法得到相同的结果也是可能的。在我们的方法中,我们将这些位级操作替换为字级Montgomery乘积操作,这在微处理器上本质上更快,特别是当计算机的字大小很大时(16,32或64)。

新的第二阶段是基于预先计算的蒙哥马利基数R=2m(mod p),然而,我们只需要R2(mod p)。这个值可以预先计算、保存并在必要时使用。另一个问题是AlmMonInv和MonPro函数的输入变量范围。对于这两个函数,任何输入都不能超过2m-1。

4.1改进的Kaliski-Montgomery逆

该算法在给定整数a的情况下计算x=MonInv(a)=a-12m(mod p)。因此,它找到了整数a模p的逆,并将其转换为蒙哥马利域。修改后的Kaliski -蒙哥马利逆算法如下:

步骤2.1中MonPro函数的输入是r和R2,它们都在正确的范围内。步骤3中MonPro的输入22m-k也在正确的范围内,因为k≤m时,步骤2.2中k被调整为大于m,因此0 < 22m< 2m。

4.2经典模逆

在某些情况下,我们只对计算x=ModInv(a)=a-1(mod p)而不需要转换到Montgomery域感兴趣。实现此目的的一种方法是首先计算a的Kaliski- Montgomery逆来获得b=a-12m(mod p),依照下列式子使用Montgomery乘积,将结果重新转换回残留(非Montgomery)域:

另一种计算经典逆的方法是反转MonInv和MonPro运算的顺序,并使用常数R2=22m(mod p),具体如下:

但是,除了AlmMonInv函数之外,这些方法中的任何一种都需要两个或三个Montgomery乘积操作。取而代之的是,我们可以修改Kaliski-Montgomery逆算法,使其在一个或两个Montgomery乘积运算的AlmMonInv函数之后直接计算经典的模逆。

4.3新的蒙哥马利逆

我们提出了蒙哥马利逆的新定义:在给定输入a(mod p)的情况下, x=a-122m(mod p)。根据这个新的定义,我们计算一个已经在Montgomery域中的整数的Montgomery逆,得到同样在Montgomery域中的输出x。我们将用以下式子来表示新的蒙哥马利逆计算:

a的Kaliski-Montgomery逆定义为MonInv(a)=a-12m(mod p),其性质如下

换句话说,根据Kaliski-Montgomery逆,乘法恒等式等于1。如果我们在图像1为2m(mod p)的Montgomery域中操作,这是一个错误的假设。另一方面,新蒙哥马利逆具有如下性质:

这种逆的新定义更适合于使用Montgomery乘法计算表达式,因为它在Montgomery域中计算结果。

新的蒙哥马利逆不能直接用给定输入a2m(mod p)的MonInv算法来计算,因为我们会得到:

然而,这可以转换回蒙哥马利领域使用一个单一的蒙哥马利乘法R2(mod p)。因此,我们得到了一种计算新的Montgomery逆的方法:

同样,另一种获得相同结果的方法是颠倒操作顺序:

新算法使用预先计算的值R2(mod p),而且它的效率更高:在AlmMonInv函数之后,它只使用两三个Montgomery乘法操作。

 5结论与应用

我们提出了Montgomery逆的新定义,并给出了计算经典模逆、Kaliski-Montgomery逆和新Montgomery逆的有效算法。新算法基于几乎蒙哥马利逆函数,之后需要两三个蒙哥马利乘积运算,而不是像[3]那样使用位级运算。

我们进行了一些实验,使用经典的(移位和加法)和新提出的基于Montgomery乘法的第二阶段步骤实现了所有三种反演算法。这些算法使用Microsoft Visual c++ 5.0开发系统进行编码。计时结果是在运行WindowsNT4.0操作系统的450MHz奔腾II处理器上获得的。在表2中,我们总结了计时结果。该表包含长度为160和192位的操作数(以微秒为单位)的新旧第二阶段计时(旧PhII和新PhII)。最后两列(PhII-Spd和All-Spd)只给出了第二阶段的加速和总体加速,这说明了所介绍算法的效率。

本文给出了新的蒙哥马利逆在eP计算中的一个应用,其中e是一个整数,P是在有限域GF(P)上定义的椭圆曲线上的一个点。这个计算要求我们执行椭圆曲线点的加法P+Q和加倍运算P+P=2P,每个点运算都需要一些模的加法和乘法以及一个模的反转。逆运算用于计算变量λ:=(y2-y1)(x2-x1)-1(mod p),这是计算椭圆曲线的点加法:P(x1,y1)和Q(x2,y2)是为了得到P+Q=(x3,y3)所需的。假设输入变量在Montgomery域中给定,我们希望得到Montgomery域中的结果。如果使用KaliskiMontgomery逆,它将计算经典逆,这是在留数(非Montgomery)域中的,并且不容易在后续操作中使用。为了转换回蒙哥马利域,我们需要用R2(mod p)执行一个蒙哥马利乘法。然而,借助于新的Montgomery逆,我们可以在一步内完成上述计算。由于这些运算是针对指数e的每一位执行的,因此新的Montgomery逆在这种情况下更有效和更有用。

by JFQ

原文地址:https://www.cnblogs.com/kingQ/p/12371248.html

时间: 2024-11-01 11:57:20

论文翻译2:61蒙哥马利模块化逆算法回顾的相关文章

Mesh R-CNN 论文翻译(原理部分)

毕设做Mesh R-CNN的实现,在此翻译一下原论文.原论文https://arxiv.org/pdf/1906.02739.pdf. 摘要 二维感知的快速发展使得系统能够准确地检测真实世界图像中的物体.然而,这些系统在2D中进行预测,却忽略了世界的3D结构.与此同时,三维形状预测的进展主要集中在合成基准(synthetic benchmarks)和孤立目标(isolated objects).我们结合这两个领域的进步.我们提出了一个能够检测真实世界图像中的物体并生成一个给出该物体的完整三维形状

[Berkeley]弹性分布式数据集RDD的介绍(RDD: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 论文翻译)

摘要: 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Datasets).它同意开发者在大型集群上运行基于内存的计算.RDD适用于两种应用,而现有的数据流系统对这两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域非经常见.二是交互式数据挖掘工具.这两种情况下.将数据保存在内存中可以极大地提高性能.为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD在共享状态的时候是基于粗粒度的转换而不是细粒度的更新(换句话说就是

分布式系统领域经典论文翻译集

分布式领域论文译序 sql&nosql年代记 SMAQ:海量数据的存储计算和查询 一.google论文系列 1.      google系列论文译序 2.      The anatomy of a large-scale hypertextual Web search engine (译 zz) 3.      web search for a planet :the google cluster architecture(译) 4.      GFS:google文件系统 (译) 5.  

蒙哥马利算法详解

这篇文章为大家梳理一下整个蒙哥马利算法的本质,蒙哥马利算法并不是一个独立的算法,而是三个相互独立又相互联系的算法集合,其中包括 蒙哥马利乘模,是用来计算x?y (mod N) 蒙哥马利约减,是用来计算t?ρ?1 (mod N) 蒙哥马利幂模,是用来计算xy (mod N) 其中蒙哥马利幂乘是RSA加密算法的核心部分. 基本概念 梳理几个概念,试想一个集合是整数模N之后得到的 ZN={0,1,2,?,N?1} 注:N在base-b进制下有lN位. 比如10进制和100进制,都属于base-10进制

深度学习论文翻译解析(一):YOLOv3: An Incremental Improvement

原标题: YOLOv3: An Incremental Improvement 原作者: Joseph Redmon Ali Farhadi YOLO官网:YOLO: Real-Time Object Detection https://pjreddie.com/darknet/yolo/ 论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf YOLOv3论文地址:https://arxiv.org/abs/1804.02767 小编是一

欧拉函数 / 蒙哥马利快速幂 / 容斥

一:知识点 欧拉函数参考1 浅谈欧拉函数参考2 欧拉函数的定义: 在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质(即gcd为1)的正整数(包括1)的个数,记作φ(n).     欧拉函数的延伸: 小于或等于n的数中,与n互质的数的总和为:φ(x) * x / 2  (n>1). 欧拉函数φ(x)模板: ll Euler(int n)//即求φ(x) { ll ret=n; for(int i=2;i<=sqrt(n);i++) if(n%i==0) { ret=ret/i*(

深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition

论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch   Richard Zemel Ruslan Salakhutdinov 论文地址:https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf 声明:小编翻译论文仅为学习,如有侵权请联系小编删除博文,谢谢! 小编是一个机器学习初学者,打算认真研究论文,但是英文水平有限,所以论文翻译中用到了Goo

RSA简介(四)——求逆算法

此处所谓求逆运算,是指在模乘群里求逆. 第一节里提到互质的两个定义: (1)p,q两整数互质指p,q的最大公约数为1. (2)p.q两整数互质指存在整数a,b,使得ap+bq=1. 只要明白了欧几里得算法,很容易就可以求出两整数的最大公约数,而这是一个小学时候就学习到的算法.这个算法有个可能让我们更熟悉的名字,叫辗转相除法. 我经常搞不清楚被除数和除数,不知道会不会有人和我一样.所以我要先在这里写明一下,防止混淆,一个除法,除号前的叫被除数,除号后的脚除数. 单次除法,X=m*Y+n,X为被除数

[图像]张正友论文翻译(1)

张正友大牛的文章没有人翻译,这篇神文看的我真是纠结啊,英语渣,翻译了一些,供大家参考,希望大家多多包涵,指出我的不足和错误,谢谢. 张正友论文原文 原文链接: 2000.11 A flexible new technique for camera calibration 5.pdf 我的译文   from: http://blog.csdn.net/humanking7/article/details/46689293