CN109952558B - 用于将余数系统表示转换为基数表示的电子计算装置 - Google Patents
用于将余数系统表示转换为基数表示的电子计算装置 Download PDFInfo
- Publication number
- CN109952558B CN109952558B CN201780069076.1A CN201780069076A CN109952558B CN 109952558 B CN109952558 B CN 109952558B CN 201780069076 A CN201780069076 A CN 201780069076A CN 109952558 B CN109952558 B CN 109952558B
- Authority
- CN
- China
- Prior art keywords
- radix
- computing device
- remainder
- representation
- represented
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 21
- 238000012937 correction Methods 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 4
- 230000001052 transient effect Effects 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 description 55
- 238000003860 storage Methods 0.000 description 25
- 238000004590 computer program Methods 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 18
- 108010003272 Hyaluronate lyase Proteins 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 241001074639 Eucalyptus albens Species 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 238000003892 spreading Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 101100391182 Dictyostelium discoideum forI gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000009125 cardiac resynchronization therapy Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000005415 magnetization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/729—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
- Storage Device Security (AREA)
Abstract
一种电子计算装置(100)被布置为将以余数系统(RNS)表示((y1,y2,…,yk))的输入数(y)转换为以基数表示来表示的输出数((e0,e1,…,es‑1)),所述计算装置包括:输入接口(110),其被布置为接收以所述余数系统表示的所述输入数(y);以及处理器电路(120),其被配置为迭代地更新以所述余数系统表示的中间数其中,迭代产生以关于基数(b0,b1,…,bs‑1)的所述基数表示的数字(e0,e1,…,es‑1),至少一次迭代包括:计算所述中间数对所述基数表示的基数(bt)的求模以获得所述基数表示的数字通过从所述中间数减去所述数字、添加混淆数(F;Ft)并除以所述基数(bt)来更新所述中间数
Description
技术领域
本发明涉及电子计算装置、电子计算方法以及计算机可读介质。
背景技术
在安全计算中,尤其是在白盒密码术中,数字通常以余数系统(RNS)表示来编码。在余数系统(RNS)中,模数m是互素较小模数mi的乘积m=m1…mk,并且整数y∈[0,m)由它们的余数列表(y1,…,yk)唯一地表示,其中对于所有i,满足y≡yi modmi。
RNS表示是有利的,因为在RNS表示的数上的算术通常能够在RNS数字上单独地进行。例如,为了加上或乘以以RNS表示的数字,加上或乘以对应分量对对应模数的求模就足够。这样,进位的问题在很大程度上已经消失。特别是在白盒密码术中,RNS表示是有利的。在白盒中,使用表示计算的结果的表在编码的数据上进行计算。虽然即使在白盒中也能够正确地考虑到进位,但是使用RNS能够大大简化计算。此外,进位的存在或不存在很难隐藏,并且能够成为能够通过其攻击白盒实施方式的边信道,例如,取决于诸如分组密码的秘密密钥的密码算法的白盒实施方式。
然而,有时需要以基数表示来表示数。对于某个整数b,最基本类型的基数表示也称为b进制表示。给定正整数b,整数y∈[0,bs)的b进制表示以y=d0+d1b+…+ds-1bs-1的形式写y,对于所有i,具有b进制(整数)数字di∈[0,b)。例如,整数可以表示结果,例如计算的输出。结果可能必须报告给例如不习惯看以RNS表示的数的用户。结果可能必须由不期望RNS数的特定算法进一步处理。例如,结果可能要在非安全例程中进一步呈现或进一步处理。例如,基于数字的算法,例如基于数字的蒙哥马利乘法,需要基数表示作为输入。
本发明人发现,用于将RNS表示转换为基数表示的已知算法不能很好地转换为安全计算,尤其是白盒计算。在白盒计算中,也在RNS到基数转换期间,软件不应当泄漏关于用于保护软件的编码的信息。然而,如下面将进一步详述的,情况并非如此。
发明内容
本发明人发现,在将RNS表示的数转换为基数表示期间,中间值中的一些中间值趋向于变得越来越小。因此,这具有泄漏关于在系统中对小的数进行编码的方式的信息的机会。认为不期望给予攻击者获得关于编码的信息的机会。这样的信息可以在对系统的其他部分进行攻击中被利用。
提供了一种电子计算装置,其被布置为将以余数系统(RNS)表示的输入数转换为以基数表示来表示的输出数,如权利要求中所限定的。在更新中间数期间添加的混淆抵消中间数的减小。因此,攻击者不能通过观察中间值来获得关于小的数的信息。
转换的可能应用是例如向用户或者以某种电子报告的方式报告以RNS完成的较早计算的结果,或者呈现结果。作为基于数字的算法的一部分,也可能需要转换,因为该算法可以完全利用伪余数来工作。RNS系统被广泛使用,例如在数字信号处理和密码学中。该方法非常适合用于白盒应用中,因为它只能处理小数据元素,使得所有算术都可以通过表查找来完成。
根据本发明的方法可以在计算机上实现为计算机实现的方法,或者在专用硬件中实现,或者以两者的组合来实现。根据本发明的方法的可执行代码可以存储在计算机程序产品上。计算机程序产品的示例包括存储器装置、光学存储装置、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非瞬态程序代码,所述非瞬态程序代码用于在计算机上执行所述程序产品时执行根据本发明的方法。
在优选实施例中,计算机程序包括计算机程序代码,当计算机程序在计算机上运行时,所述计算机程序代码适于执行根据本发明的方法的所有步骤。优选地,计算机程序被体现在计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可用于下载的方法。当计算机程序被上传到例如苹果公司的App商店、谷歌公司的Play商店或微软公司的Windows商店时并且当计算机程序可用于从这样的商店下载时,使用该方面。
附图说明
仅通过举例的方式,将参考附图描述本发明的进一步细节、方面和实施例。各图中的元件为简单和清楚起见而示出并且不一定是按比例绘制的。在附图中,对应于已经描述的元件的元件可以具有相同的附图标记。在附图中,
图1示意性地示出了计算装置和运算装置的实施例的示例,
图2示意性地示出了计算装置的实施例的示例,
图3示意性地示出了计算方法的实施例的示例,
图4a示意性地示出了根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图4b示意性地示出了根据实施例的处理器系统的表示。
图1和图2中的附图标记列表:
100 计算装置
110 输入接口
120 处理器电路
130 存储器
150 运算装置
200 计算装置
210 数字形成单元
220 更新单元
225 混淆单元
230 常量存储设备
235 变量存储设备
240 数字存储装置
具体实施方式
虽然本发明可以有许多不同形式的实施例,但是在附图中示出并且将在本文中详细描述一个或多个具体实施例,同时应理解本公开应被认为是例示本发明的原理并且不旨在将本发明限制于所示和所描述的具体实施例。
在下文中,为了便于理解,在操作中描述了实施例的元件。然而,将显而易见的是,相应的元件被布置为执行被描述为由它们执行的功能。
此外,本发明不限于这些实施例,并且本发明在于本文描述的或在相互不同的从属权利要求中记载的每一个新颖特征或特征的组合。
整数可以以许多不同的方式来表示。本申请涉及基数表示和余数系统表示(RNS)。
基数表示有许多特色。对于某个整数b,最基本类型的基数表示也称为b进制表示。给定正整数b,整数y∈[0,bs)的b进制表示以y=d0+d1b+…+ds-1bs-1的形式写y,对于所有i,具有b进制(整数)数字di∈[0,b)。更一般地,给定数字b0,…,bs-1,对于某个整数q,混合基数(MR)表示以y=d0+d1b0+…+ds-1b0…bs-2+qb0…bs-1的形式写y,对于所有i,具有整数MR数字di∈[0,bi)。在一些应用中,可以允许校正项q。如果y足够小,则不需要校正项。
本发明人发现甚至混合基数表示可以被进一步一般化。在一般化的混合基数表示(GMR)中,数被表示为y=e0+e1b0+…+es-1b0…bs-2-εs-1b0…bs-1=e-εs-1b0…bs-1。与混合基数表示的不同之处在于,数字ei不需要从区间[0,bi)中选择,而是被允许为伪余数对bi的求模。对于某个预定整数如果p=x mod m且则整数p是整数x对m求模的伪余数。整数称为扩展界限,并限制伪余数的生长。如果余数=1,则伪余数是正则余数。
如果则对于以一般化的MR表示的数字有多于一次选择。因此,以一般化的MR表示的表示通常不是唯一的。本发明人发现,在采用MR表示作为输入的许多应用中,通常也可以使用一般化的MR表示。这是有利的,因为计算一般化的MR表示可以更高效地并且在具有更好的混淆选项的情况下完成。例如,如果MR表示用作基于数字的蒙哥马利乘法算法的输入,则可以使用一般化的MR表示。但是,通过在下面的实施例中设置可以获得正则MR表示。通过在下面的实施例中对于所有i设置bi=b并且获得b进制表示。
在余数系统(RNS)中,模数m是互素较小模数mi的乘积m=m1…mk,并且整数y∈[0,m)由它们的余数列表(y1,…,yk)唯一地表示,其中对于所有i,满足y≡yi mod mi。通过余数的这种表示称为RNS表示。当仅被假定为伪余数时,即当仅yi≡y mod mi成立时,但不一定具有0≤yi<mi,该表示仍然唯一地确定y。
转换是将以RNS表示的数字转换为基数类型表示的操作。在安全应用中,通常大的整数的b进制数字(或MR数字)及其伪余数两者都以编码形式给出,例如,通过用状态编码能够具有多种表示,并且转换应当在没有泄露关于这些数字的任何信息的情况下来完成。传统算法通常使用对bi求模的模运算的形式来确定MR数字。关于白盒的更多信息,参见Chow等人的文章“A White-Box DES Implementation for DRM Applications”。关于白盒的更多信息,尤其是关于使用状态的编码,参见编号为WO2014096117的申请“Computing deviceconfigured with a table network”。还参见编号为WO2014095772的“Computing devicecomprising a table network”,以获得关于如何以白盒形式表示计算机程序的信息。
在实施例中,以适合于安全实施方式的方式根据例如仅采用伪余数的伪RNS表示来计算转换。实施例使用对bi求模的模运算,但是注意一些实施例不需要精确的余数,而是伪余数。实施例防止泄漏传统转换中固有的信息。此外,由于算法可以完全利用伪余数来工作,因此当以RNS实施时,从我们的转换算法获得的表示也可以被使用在基于数字的算法中。
在实施例中,使用白盒密码术来实施该系统。数据以编码形式可能与状态一起表示。状态是冗余变量,因此编码不是唯一的。例如,(可能非常大的)整数y可以由其编码形式的余数列表(y1,…,yk)表示。也就是说,每个余数yi以的形式给出,其中si是状态变量,并且E是某个编码函数(通常是数据状态空间上的排列)。对编码变量的操作通常使用查找表来执行。如果需要,则较大的操作可以分解为较小的操作。结果,计算可以采用包括多个查找表的表网络的形式。一些表作为算法输入的输入部分,例如,被转换的数。一些表将一个或多个其他表的输出作为输入。一些表产生输出的部分。例如,至少在mi相对较小的情况下,通常通过某种形式的表查找来实现所需的对mi求模的运算。
在白盒转换期间,必须从编码的余数以编码形式获得整数的MR数字。传统的RNS到MR转换算法具有各种缺点,尤其是在白盒实施方式的背景下。
例如,基于中国剩余定理(CRT)的转换方法涉及具有非常大的整数的直接计算,并且因此将涉及某种形式的带进位加法的算法。这种方法不太适合用于白盒应用中,因为即使以编码形式的进位也将很可能泄漏信息。白盒优选用相对较小的(编码)数据来进行计算的方法;大的整数将由(编码)数字列表表示。例如,编码数据可以与字节大小有关。
在余数系统(RNS)中,整数y由其对多个模数m1,…,mk求模的余数列表来表示。通常,模数m1,…,mk被选择为成对素数。在这种情况下,写为m=m1…mk,中国剩余定理(CRT)保证每个整数y(其中0≤y<m)可以从其对模数m1,…,mk求模的余数列表(y1,…,yk)来唯一地恢复。然而,本发明人已经意识到,这种情况虽然方便,但并不是绝对必要的。如果模数并非全部被选择为互素,则RNS也将起作用,在这种情况下,可以将m作为模数m1,…,mk的最小公倍数;整数y(其中0≤y<m)仍然可以从其对模数求模的余数来唯一地恢复。
在下面的讨论中,我们将进一步假设模数是互素的;这将使陈述更容易跟随。然而,下面的实施例可以适于当并非所有模数都是互素时的情况,例如,如果有至少两个模数mi和mj具有大于1的公约数的情况。
我们继续m=m1…mk,并假设模数全部都是成对素数。使用中国剩余定理(CRT),对于某个整数q,基于以下事实,整数y(其中0≤y<m)可以从其余数列表(y1,…,yk)来唯一地恢复:
在应用中,通常需要能够以快速的方式从其余数列表(y1,…,yk)恢复y。对于整数值的b进制MR数字d0,ds-1,其中0≤di<bi,以及整数q,基于MR转换的方法尝试将给定整数y(其中0≤y<m)写成如下的混合基数形式:
y=d0+d1b0+…+ds-1b0…bs-2+qb0…bs-1=d0B0+d1B1+…+ds-1Bs-1+qB (2)
;这里对于所有i,Bi=b0…bi-1(并且B0=1),B=Bs=b0…bs-1。这种表示将被称为混合基数(MR)表示。典型的示例是在给出b进制表示的情况下b0=b1=…=bs-1=b的情况。
考虑以下用于RNS的转换的参考方法,该方法不包括添加混淆数的特征。给定基于模数m1,…,mk的RNS,其具有动态范围m=m1…mk,对于将整数y∈[0,m)从RNS转换为基数,如下进行。
1.设置y(0)=y
2.对于t=0,…,s-1,计算
(b)y(t+1)=(y(t)-dt)/bt(整除)。
那么对于所有t,y(t)=dt+dt+1bt+…+ds-1bt…bs-2,特别地y=y(0)=d0+d1b0+…+ds- 1b0…bs-2,其中数字为dt∈[0,bt)。我们可以通过使用下式根据y(t)的RNS表示(yt,1,…,yt,k)来计算y(t+1)的RNS表示(yt+1,1,…,yt+1,k):
条件是bt和mi是互素的;如果不是,那么我们可以使用例如基数扩展,例如,使用采用混合基数转换的方法(参见Garner,The Residue Number System,Ire Transactions onElectronic Computers,1959年六月,pp 140-147)或使用冗余模数的方法(参见,APShenoy和R Kumaresan.Fast base extension using a redundant modulus inRNS.Computers,IEEE Transactions on,38(2):292–297,1989)来确定新的余数。另外,为了确定dt,如果bt等于某个模数mi,则dt=yt,i;如果不是,那么dt可以再次通过基数扩展来确定。
上述参考算法的缺点是数y(t)=dt+dt+1bt+…+ds-1bt…bs-2变得越来越小,这在白盒应用中是不期望的。由于y(t)中的熵减小,这可能泄漏信息。例如,已知最后的y(s-1)=dt是小的,但是以完整(编码的)RNS系统来编码。结果,关于“小”的数的编码的信息被泄漏。因此,攻击者可以构建编码的小的数的列表。
小的数的泄漏的编码可以由攻击者以不同方式利用。例如,当给出这些小的数作为输入时,通过分析各个模块化加法表的输出,攻击者可能能够从其编码的版本获得小的数的值。通过进一步分析,攻击者甚至可以撤消对所有数的编码,并且因此在程序运行的情况下获得变量的值。此外,这些相同的小的数可以在白盒实施方式中的其他地方重复。攻击者现在可以识别小的数在白盒实施方式中的每个地方的出现。可以利用该信息来攻击实施方式的其他部分。虽然这可以通过在白盒实施方式的不同部分中使用不同的编码来减轻,但是这将需要更多的表来进行计算,即对于每个编码一个表,并且因此增加了实施方式的硬件占用空间。为了避免对程序的每个部分进行单独编码,因此期望尽可能地限制所有部分中的泄漏。
上述参考算法的另一个缺点是它不能利用伪余数来工作,因为它假设在第t次迭代中,可以精确地确定数字dt。
如下面进一步详述的,相反,在一个实施例中,通过适当选择ft,可以确保被散布在其完整范围上,并且因此不泄漏信息。此外,该算法可以利用伪余数代替余数来工作,除了在基数扩展中,对冗余模数 求模的运算必须是精确的。注意,冗余模数可以是互素小模数的乘积,使得冗余模数不对RNS的可能大小k施加约束。在一些实施例中,混淆(例如,随机)整数,例如ft,用于增加中间结果的熵,并允许通过改变这些混淆整数以在每次运行时具有不同版本的算法的可能性,即使在白盒情况下具有不同的编码。在一些实施例中,算法利用伪余数代替余数来操作,可能的例外是冗余模数计算,其在一个实施例中是精确的。通过引入对冗余模数的要求,实施例可以使用利用伪余数代替简单余数的基数扩展。
参照图1和2说明根据本发明的计算装置的实施例。下面进一步详细说明根据图1和2中的任一个的实施例的操作的进一步细节。
图1示意性地示出了计算装置100和运算装置150的实施例的示例。
图1中所示的计算装置100被布置为将以余数系统(RNS)表示(y1,y2,…,yk)的输入数y转换为以基数表示来表示的输出数(e0,e1,…,es-1)。计算装置100在图1中被示出为被包括在运算装置150中。运算装置150可以是安全运算装置,例如某种算法的白盒实施方式。在实施例中,运算装置150对编码的数据进行操作,例如,如上所述,例如,在白盒实施方式中。例如,运算装置150可以调用计算装置100以将数转换为基数呈现,使得它可以被呈现、报告、输出、等等。例如,运算装置150可以调用计算装置100以便执行需要基数表示作为输入的算法。
计算装置100包括输入接口110,其被布置为接收以余数系统表示的输入数(y)。输入接口可以从各种备选方案中选择。例如,输入接口110可以是到局域网或广域网(例如因特网)的网络接口、到内部或外部数据存储设备的存储接口、键盘、等等。接口可以是应用程序接口(API)。运算装置150可以共享处理器电路和存储器。运算装置150可以通过开始执行适当的代码,例如,检索和应用转换算法所需的表,来使用计算装置100。
例如,输入接口110可以获得输入数y作为编码的整数的序列。编码的整数表示余数对RNS的模数mi的求模。例如,输入接口110可以以指向所述编码的整数的指针等的形式获得编码的整数。
计算装置100包括处理器电路120。处理器电路可以是单核,或者可以具有多个核。处理器电路可以分布在两个可能物理上分离的处理器电路(例如子电路)上。计算装置100包括存储器130。存储器可以包括易失性部分和非易失性部分。后者是任选的,例如,在一个实施例中,可以在转换开始之前下载数据的恒定部分,例如处理器指令、表或数据常数。存储器的易失性部分可以存储处理器电路120作用于其上的输入数据、中间数据和输出数据等中的任何一个。处理器电路120可以是被布置为执行存储在存储器中的编程指令的通用计算机处理器。处理器电路120也可能部分地是被布置为执行根据本发明的方法的专用电路。例如,处理器电路120可以包括被配置为检索和/或应用查找表的硬件。
例如,存储器130可以存储被配置为作用于编码的数据的查找表。例如,存储器130可以存储表作用于其上的变量,例如中间数据。例如,处理器电路120可以检索表形式存储器130并将其应用于也从存储器130检索的一个或多个数据项。结果可以存储在存储器130中,并且可以稍后用于形成用于另外的其他表操作的输入。存储器130的一部分可以是只读存储器,例如,用于存储编程指令或表。
存储器130特别地存储以余数系统表示的中间数中间数最初可以是在计算装置100的输入处接收的数字y。中间数也可以根据输入数在任选的额外处理(例如,额外的混淆处理、进一步编码、编码翻译等)之后获得。在后一步骤中,运算装置150中使用的编码被改变为在计算装置100中使用的编码。
处理器电路120被配置为迭代地更新中间数中间数的表示保持以余数系统,优选地以编码形式。每次迭代产生以关于基数表示的基数b0,b1,…,bs-1的基数表示的数字e0,e1,…,es-1中的数字。迭代包括:
以下关于图2并且特别地在以下讨论中提供计算和更新步骤的更多细节。此外,在那里讨论了可应用于计算装置100中的许多选项和备选方案。
图2示意性地示出了计算装置200的实施例的示例。图2中示出的计算装置200具有用于执行实施例的各个部分的多个功能单元。图2中所示的实施例可以以根据图1的实施例的形式来实施。例如,图2中使用的存储设备可以被实施为存储器130的一部分。功能单元可以被实施为存储在存储器中并且由处理器电路120执行的软件单元。这些功能单元也可以被实施为电路,或者被实施为软件和硬件的组合。
计算装置200包括变量存储设备235。计算装置200存储计算装置200作用于其上的中间数据。特别地,变量存储设备235存储以RNS表示的中间数。输入数y也可以存储在变量存储设备中。例如,输入接口可以通过将输入数存储在变量存储设备235中可能结合启动转换过程来实施。
计算装置200还包括常量存储设备230。常量存储设备230可以被实施为只读存储器。对于白盒实施方式,常量存储设备230包括用于对编码的数据进行操作的查找表。常量存储设备230还可以或备选地包括用于对(编码的)数据等进行操作的编程指令。常量存储设备230还可以包括基数表示的基数b0,b1,…,bs-1和/或RNS系统的模数mi。然而,在一个实施例中,这些数被隐含在使用的表中,并且不需要明确地列出,甚至不是以编码的形式。
计算装置200包括数字形成单元210。数字形成单元210被配置为计算中间数对基数表示的基数(bt)的求模以获得基数表示的数字计算装置200包括更新单元220。更新单元被配置为通过从中间数减去数字并除以基数(bt)来更新中间数更新单元包括混淆单元225,该混淆单元被配置为添加混淆数(F;Ft)。注意,有可以实施公式的多种方式,例如,可以预先计算后者F/bt,使得不需要在线执行除法。注意,添加混淆数可以被集成在还计算其他任务(例如,减去et)的表中。
计算装置200被配置为对数字形成单元210进行迭代。迭代产生以关于基数表示的基数(b0,b1,…,bs-1)的基数表示的数字(e0,e1,…,es-1)。由数字形成单元210产生的数字可以存储在数字存储设备240中。数字存储设备240可以与变量存储设备235组合。数字存储设备240因此可以包含计算装置200的输出。数字存储设备240的内容可以由另外的算法使用,例如,用于呈现、用于报告、等等。
在下文中,我们将需要伪余数的概念。整数x对模数m求模的伪余数x是整数p,对于其p≡x mod m。我们将写p=<x>m来表示(未指定的)伪余数。如果伪余数p=<x>m满足我们说具有(整数)扩展因子的伪余数。伪余数允许比精确余数更多的自由度,对于精确余数,要求它恰好位于区间[0,m)中,即0≤p<m。另一方面,确保所有变量都是伪余数避免了变量的不受限制的增长。使用伪余数的额外自由度允许更高效的算法,例如,用于模运算,即使在考虑到余数必须符合扩展因子时。对于精确余数,我们写p=|x|m,在这种情况下0≤p<m。
我们现在提出一种适用于白盒转换(例如从余数系统(RNS)转换为基数类型表示)的新方法。该算法适合于接收伪余数中的输入,并且在计算期间主要采用伪余数。
令m=m1…mk,其中mi为互素正整数。在基于模数m1,…,mk的RNS中,[0,m)范围内的整数y,即0≤y<m,由其余数列表(y1,…,yk)表示,其中可以是伪余数或精确余数。按照中国剩余定理(CRT),范围[0,m)中的每个整数可以从其伪余数列表来唯一地恢复。我们通过其(伪)余数列表(y1,…,yk)对y∈[0,m)的表示称为y的余数系统(RNS)表示。我们将使用术语伪RNS表示来强调在RNS类型表示中允许针对分量yi的伪余数。由于精确余数是伪余数的特殊情况,因此精确RNS是伪RNS的特例。通过将扩展因子设置为1,算法可以适于仅使用精确余数。
令b0,…,bs-1为正整数。关于(b0,…,bs-1)对整数y的混合基数(MR)表示将y写为
y=d0+d1b0+d2b0b1+…+ds-1b0…bs-2+qb0…bs-1, (4)
对于di∈[0,bi),具有整数数字d0,…ds-1,并且具有整数q。在应用中,如果由于产生y的应用而知道y的大小,则q的值可以被限制,甚至可能被限制于q=0。为方便起见,我们假设q=0。
在各种应用中,我们想要从其(伪)余数(y1,…,yk)计算y∈[0,m)的MR表示的数字d0,…,ds-1。注意,例如,在b0=…=bs-1=b的情况下,di只是y的b进制数,并且在s=k且bi=mi+1的情况下,其中q=0,这是关于模数m1,…,mk的混合基数(MR)表示。
为了找出以RNS表示(注意q被假定为0)给出的数y=d0+d1b0+…+ds-1b0…bs-2的MR表示,或其近似值,我们提出以下算法,具有第1部分和第2部分,后者具有子部分2a和2b:
2.对于t=0,…,s-1,进行以下操作:
这里f0,…,fs-1是(可能数据相关的)混淆常数,受下面讨论的某些条件的约束;它们可以针对算法的每次新运行而改变。我们可以将b0…bs-1ft称为混淆数Ft。如果所有混淆数都相等,我们也可以引用F,而没有指示迭代的下标。可以预先计算混淆数Ft或数ft并将其存储在常数存储设备230中。
在第1部分中,将中间数设置为等于输入数y。在迭代部分2a和2b中,确定MR表示的数字(部分2a),并更新中间数(部分2b)。注意,为了清楚起见,中间数的后续值被给出索引t以区分它们。然而,在一个实施例中,当新值可用时,可以用新值重写中间数。
还要注意,在部分2a中计算的MR数字是伪余数,但如果扩展因子是1,则这与精确余数相同。如果扩展因子大于1,那么一些伪余数可能不是精确余数。在这种情况下,获得传统混合基数表示的数字。然而,如果扩展因子大于1,则在部分2a中计算的数字可能与精确余数不同。在这种情况下,我们获得一般化的混合基数表示。注意,扩展因子在实施者的控制下,例如,通过选择使用的模运算。更高的扩展因子允许设计者更自由并且通常是优选的,但扩展因子为1也是可能的。在一个实施例中,步骤2a中使用的伪余数可以不是精确余数,例如,在一个实施例中,数字et中的至少一个数字大于或等于基数表示的基数bt。在使用更一般的伪余数的情况下,还可能发生的是数字et中的至少一个数字小于0。整数因子ft中的一些可以是零,但是它们中的至少一些是正的。
在部分2b中,混淆数b0…bs-1ft可以由bt…bs-1ft代替。这具有针对ft的更大范围的选择可用于选择的优点。例如,在一个实施例中,混淆数是在下一次迭代中使用的基数(b0,b1,…,bs-1)的乘积的倍数,例如,Ft=bt+1…bs-1ft。如果混淆数不是bt的倍数,则可以在除法之后添加混淆数,这是不太优选的。
在上述算法中,维持中间数对模数m=m1…mk求模的伪RNS表示。可以使用基数扩展来计算数字et,如下面进一步说明的。伪余数满足整数扩展界限也就是说,对于所有t,我们具有其中其中δt是由扩展因子界定的某个非负整数变量。整数δt在编译时通常是未知的。
1.
2.et=dt-εt-1+εtbt。
语句1和2可以通过数学归纳法来证明。
换句话说,整数εt表示精确余数dt与伪余数et之间的距离。因此,我们具有
2.y=e0+e1b0+…+es-1b0…bs-2-εs-1b0…bs-1=e-εs-1b0…bs-1。
注意,表达式2是针对y的一般化的混合基数表示。令人惊讶的是,在“误差”整数εt中,只有最后一个εs-1出现在该表达式中。所有其他取消。
如果期望的话,有几种方法可以计算εs-1。在一个实施例中,使用公式1来计算值f,例如,作为迭代的另一部分。例如,可以通过在f=0处的f开始并且在每个新项ft一可用时就添加公式1的项来迭代地计算f。然后,可以根据的计算的RNS表示和已知的f(的RNS表示)来确定εs-1。
一旦我们知道εs-1,我们就得到y的GMR表示,其中对于所有t,数字et满足并且0≤εs-1≤θ。如上所述,GRM通常足够好以被采用于基于数字的算法中。我们将εs-1称为校正项。例如,校正项εs-1也可以被导出为输出,例如存储在数字存储设备240中。注意,et可以大于对应基数,其通过减去项εs-1b0…bs-1来补偿。
在伪余数et事实上已知为精确余数的情况下(即,如果对于所有t已知εt=0),则算法递送et=dt,因此实际上确定了精确的MR数字。如果对于所有t另外ft=0,则算法精简为上述参考算法以确定MR数字。在一个实施例中,整数ft被选择为足够小以仍然允许中间值y(t)的RNS表示。如果可能的中间值y(t)的范围具有至多m的大小,则可以实现后者。
在一个实施例中,使用查找表来完成模运计。在bt中的一些或全部太大而不允许通过查找表来实施模运算的情况下,可以例如使用蒙哥马利乘法或类似方法来实施所需的模运算。参见,例如,的Design of an efficient public-keycryptographic library for RISC-based smart cards.PhD thesis,UniversitéCatholique de Louvain,1998,其讨论了许多模运算算法,特别是模乘法,更特别的是蒙哥马利乘法。有趣的是,模运算方法通常将结果递送为伪余数。需要额外的努力来获得精确余数。通常,在不离开RNS表示域的情况下甚至不能确定精确余数。然而,在这种情况下,本文描述的方法使得能够采用伪余数代替精确余数完全在RNS领域内获得数字确定的形式。
例如,Dehm中的蒙哥马利算法(第2.2.6节)具有“如果Un>N则U=Un-N否则U=Un”作为最后的两个步骤,省略该额外的减法步骤将给出模减法算法,其中输出是具有扩展因子2的伪余数。在算法中可以使用具有较大扩展因子(甚至高达几百)的模乘法算法。
下面进一步详细说明适合于转换的RNS实施方式。假设y由其关于RNS模数m1,…,mk和冗余模数m0的(冗余)RNS表示(y0,y1,…,yk)给出;写出m=m1…mk以表示RNS的动态范围。模数m0,m1,…,mk是互素正整数。此外,对模数m0求模的运算是精确的,使得对模数m0求模的余数不是伪余数而是真余数。例如,对模数m0求模的运算可以通过表查找来实施。对其他模数求模的运算也可以通过表查找来完成,但也可以使用模块化算法的实施方式,例如蒙哥马利乘法等。
对模数m0求模的余数称为冗余模数。任选地,冗余模数可以是多个模数的乘积;在这种情况下,计算是利用多个模数的精确余数来完成的。此外,在一个实施例中,我们将通常的条件设为m0≥k以使得能够进行基数扩展,或者,当利用具有扩展因子的伪余数来工作时,我们要求在算法的实施方式中,我们将维持针对的RNS表示其中,对于所有i≥1,是对模数mi求模的伪余数,并且对于i=0,其是对模数m0求模的精确余数。
在下文中,我们描述了对于其中b0=…=bs-1=b=mk的情况算法的RNS实施方式;很容易理解如何在更一般的情况下进行。现在可以如下实施算法的迭代步骤。对于t=1,…,k,我们具有因为我们假设mk=b,我们可以获得然后,对于i≠k,我们可以立即计算
其中是对mi求乘法逆模。常数存在,因为在RNS中,不同的模数是互素的;这个常数可以被预先计算。然而,对于我们必须以不同的方式进行,因为mk=b没有对mk的乘法逆模。这通过使用基数扩展确定来解决。在一个实施例中,我们使用以下冗余模数方法。例如,对于1≤t<k,我们计算
然后我们具有
这些表达式中的常量可以被预先计算并且可以被假设为精确余数。
计算的上述表达式所需的模运算可以通过普通运算然后跟着对mk的最终归约求模(例如使用延迟归约)来实施。由于我们在这里利用伪余数来工作,我们只具有(其中是扩展因子)。由于假设我们具有因此,为了能够如上确定q的值,我们必须要求
上述算法适合于被实施在白盒编码系统中,例如,使用具有精确余数的RNS,利用通过表查找实施的模运算,或使用伪余数的RNS,等等。
可以以各种方式选择混淆数ft。如果算法被使用在具有动态范围m=m1…mk的模数m1,…,mk的RNS的上下文中,那么整数f0,…,fs-1必须足够小以确保以防止溢出。例如,假设bs≤m,如果我们要求0≤ft<bt就足够。除此之外,我们可以以任意方式选择ft,只要最后我们可以计算出计算εs-1所需的f的期望的表示。注意,通过选择小于指示的ft,例如ft=0,可以选择比所指示的更大的稍后的ft′(t′>t)。特别有利的选择是采用ft=et。
在一个实施例中,ft是固定常数。
在一个实施例中,ft可以随算法的每次新应用而变化。例如,可以在应用中多次使用转换,例如,一些较大的计算,每个这样的转换可以具有不同但固定的混淆数。这在白盒应用中尤其具有吸引力。
在一个实施例中,混淆数ft仅取决于输入数y。这具有以下优点:具有不同输入的不同运行使用不同的混淆数,因此使得更难以将两次不同的运行相关联。但是在具有相同输入的运行中,整个计算是相同的,因为它仅取决于输入数。因此,利用相同输入执行多次运行不能给出额外的信息来攻击系统。例如,混淆数ft可以是输入的可能变化的函数,可能通过依赖于程序中的其他数据间接地是输入的可能变化的函数。例如,对于所有t,我们可以取ft=et,或者对于常数ct,甚至有其可以例如随算法的每次应用而变化。这些选择增加了该方法的防泄漏性。
在一个实施例中,转换是较大应用的一部分。较大的应用可以在以RNS表示的多个数上进行计算,因此产生以RNS表示的结果数。结果数需要转换为基数表示作为输入数。较大的应用对其操作的数据可以用作混淆数的随机源。例如,倍数ft可以取决于以RNS表示的多个数中的一个或多个数。
如上所述,应当以对于所有t使得(动态范围)的方式选择模数。如果我们使用的算法例如具有数字基数m1,…,mk和ft=et,其中et是伪余数(因此可能具有et≥mt),那么为了确保确实有我们可以向RNS添加几个模数mk+1,…,mk+r。同样地,我们可以通过假设y<m1…m1来限制数y,然后用下式来替换算法的部分2(b):
换句话说,我们利用数字基数b0=m1,…,br-1=mr来应用算法(因此具有s=r),以防止在算法的运行期间的溢出。
如果我们使用如下算法,其中bi=b固定并且对于所有t,ft<b,那么对于所有t,通常,我们具有b等于模数之一,比如mk=b。在那种情况下,我们必须通过关于由模数m1,…,mk-1形成的RNS的基数扩展来确定在那种情况下,关于动态范围的条件是bs≤m/mk。在b与所有mi互素的情况下,我们必须通过使用完整的RNS的基数扩展来确定在这种情况下,要求是bs≤m。
在算法的部分2b中,在上面给出的情况下,混淆部分可以被一般化。除了添加b0…bs-1ft之外,还能够添加bt…bs-1ft。这给出了针对ft的更多选择。代替在除法之前添加bt…bs-1ft,也可以在除法之后添加bt+1…bs-1ft。
在实施例中,运行算法,对于所有t=0,…,s-1,具有数字基数bt=b,对于常数ct,具有ft=|et+ct|b,与其中mk=b的具有模数m1,…,mk的RNS组合,在需要时应用如上所述的“冗余模数”基数扩展。
下面的修改被指示为适应其中并非所有模数m1,…,mk都是互素的实施例。考虑=(x1,…,xk)mod(m1,…,mk)。对于所有对i和j,我们具有xi=xj mod gcd(mi,mj)。使用它,一般化的中国剩余定理(GCRT)表明存在唯一的x mod m,其中m=lcm(m1,…,mk)。该数可以被恢复如下。确定常数c1,…,ck,使得
c1(m/m1)+...+ck(m/mk)=1 mod m。
通常,计算装置200包括微处理器(图2中未单独示出),其执行存储在装置200处的适当软件;例如,该软件可能已经被下载和/或存储在对应的存储器中,例如,诸如RAM的易失性存储器或诸如闪存的非易失性存储器(未单独示出)中。或者,装置200可以全部或部分地以可编程逻辑实现,例如,作为现场可编程门阵列(FPGA)。装置200可以全部或部分地实现为所谓的专用集成电路(ASIC),即为其特定用途定制的集成电路(IC)。例如,电路可以用CMOS实现,例如,使用诸如Verilog、VHDL等的硬件描述语言实现。
在一个实施例中,计算装置200包括数字形成电路、更新电路、混淆电路、常量存储设备、变量存储设备和数字存储装置。电路实现本文描述的对应单元。电路可以是处理器电路和存储电路,处理器电路执行在存储电路中电子地表示的指令。电路也可以是FPGA、ASIC等。
下面给出在操作期间的实施例的详细示例。我们现在给出一个我们关于RNS的方法的例子,其中k=3,并且模数m1=13,m2=11,m3=7,并且冗余模数m0=4,其中数字基数b0=b1=7,所以s=2,并且取ft=et,并且对于所有t,具有的伪余数(因此使用具有扩展因子的伪余数)。注意,对于每个t,数将具有形式a+7b,其中a,b<2·7=14,使得使得使用具有模数m1,m2的精简RNS来确定余数对m3=7求模的基数扩展是可行的。此外,根据需要,我们具有
让我们取y=2+5·7=37(假设是未知的),由(已知的)余数(1;11,4,2)对(4;13,11,7)求模表示。运行我们的算法,我们获得以下内容。
(b)η1=<15·|11-1|13>13≡<2·6>13≡12mod13;所以,例如,η1=25;
(c)η2=<1·|13-1|11>11≡1·6≡6mod11;所以,例如η2=17;
(e)从冗余余数,我们得到3≡1·3+1·1-q·1·3≡-3qmod4,因此q=3;
(b)η1=<7·|11-1|13>13≡<7·6>13≡3mod13;所以,例如η1=3;
(c)η2=<8·|13-1|11>11≡8·6≡4mod11;所以,例如η2=4;
(e)从冗余余数,我们得到1≡3·3+4·1-q·1·3≡1-3qmod4,因此q=0;
由于y=e-ε172,我们发现(近似)GMR表示
y=9+11·7-1·72。
还要注意,d0=2且d1=5,使得9=e0=d0+1·7,因此ε0=1,并且11=e1=5-1+1·7,使得确实ε1=1。
图3示意性地示出了计算方法300的实施例的示例。方法300将以余数系统表示(y1,y2,…,yk)的输入数y转换为以基数表示来表示的输出数(e0,e1,…,es-1)。方法300包括:
-接收310以余数系统表示的输入数y,以及
对部分320和330进行迭代,使得迭代产生以关于基数表示的基数(b0,b1,…,bs-1)的基数表示的数字(e0,e1,…,es-1)。
如本领域技术人员将显而易见的,执行该方法的许多不同的方式是可能的。例如,可以改变步骤的顺序或者可以并行执行一些步骤。此外,在步骤中间可以插入其他方法步骤。插入的步骤可以表示诸如本文所述的方法的改进,或者可以与该方法无关。例如,一些部分可以至少部分地并行执行。此外,在下一步骤开始之前,给定步骤可能尚未完全完成。
可以使用软件来执行根据本发明的方法,该软件包括用于使处理器系统执行方法300的指令。软件可以仅包括由系统的特定子实体采取的那些步骤。软件可以存储在合适的存储介质中,例如硬盘、软盘、存储器、光盘等中。软件可以作为信号沿着线、或无线地、或使用数据网络(例如,互联网)发送。该软件可供下载和/或在服务器上远程使用。可以使用比特流来执行根据本发明的方法,该比特流被布置为将可编程逻辑(例如,现场可编程门阵列(FPGA))配置为执行该方法。
将认识到,本发明还扩展到计算机程序,特别是适于将本发明付诸实践的载体上或载体中的计算机程序。程序可以是源代码、目标代码、代码中间源和诸如部分编译形式的目标代码的形式,或者适合用于实现根据本发明的方法的任何其他形式。涉及计算机程序产品的实施例包括与所述方法中的至少一个的每个处理步骤相对应的计算机可执行指令。这些指令可以细分为子例程和/或存储在可以静态或动态链接的一个或多个文件中。涉及计算机程序产品的另一实施例包括与所述系统和/或产品中的至少一个的每个单元相对应的计算机可执行指令。
图4a示出了根据实施例的计算机可读介质1000,其具有包括计算机程序1020的可写部分1010,计算机程序1020包括用于使处理器系统执行计算方法的指令。计算机程序1020可以作为物理标记或借助于计算机可读介质1000的磁化在计算机可读介质1000上实现。然而,也可以设想到任何其他合适的实施例。此外,将认识到,尽管计算机可读介质1000在本文被示为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,诸如硬盘、固态存储器、闪存等,并且可以是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行所述计算方法的指令。
图4b示出了根据实施例的处理器系统1140的示意性表示。处理器系统包括一个或多个集成电路1110。一个或多个集成电路1110的架构在图4b中示意性地示出。电路1110包括处理单元1120,例如CPU,用于运行计算机程序组件以执行根据实施例的方法和/或实现其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的一部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或两者等。电路1110可以包括专用集成电路1124,用于执行在该方法中定义的处理的部分或全部。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连件1130(例如总线)彼此连接。处理器系统1110可以被布置用于分别使用天线和/或连接器进行接触和/或非接触式通信。
例如,在实施例中,计算装置可以包括处理器电路和存储器电路,该处理器被设置为执行存储在存储器电路中的软件。例如,处理器电路可以是Intel Core i7处理器、ARMCortex-R8等。存储器电路可以是ROM电路,或非易失性存储器,例如闪存。存储器电路可以是易失性存储器,例如SRAM存储器。在后一种情况下,计算装置可以包括非易失性软件接口,例如硬盘驱动器、网络接口等,其被布置用于提供软件。
应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够设计许多备选实施例。
在权利要求中,括号内的任何附图标记不应被解释为对权利要求的限制。动词“包括”及其变形的使用不排除权利要求中所述的元件或步骤之外的元件或步骤的存在。元件前面的词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括若干不同元件的硬件来实现,以及借助于适当编程的计算机来实现。在列举了若干单元的装置权利要求中,这些单元中的若干单元可以由同一项硬件来体现。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表示不能有利地使用这些措施的组合。
在权利要求中,括号中的引用指代示例性实施例的附图中的附图标记或实施例的公式,因此增加了权利要求的可理解性。这些引用不应解释为限制权利要求。
Claims (16)
1.一种计算装置(100;200),被布置为将以余数系统表示((y1,y2,...,yk))的输入数(y)转换为以基数表示来表示的输出数((e0,e1,...,es-1)),所述计算装置包括:
输入接口,其被布置为接收以所述余数系统表示的所述输入数(y);以及
计算所述中间数对所述基数表示的基数(bt)的求模以获得所述基数表示的数字(et),
2.如权利要求1所述的计算装置,其中,所有基数都是相等的。
3.如权利要求1或2所述的计算装置,其中,计算所述中间数对所述基数表示的基数(bt)的求模产生大于或等于0且小于所述基数表示的所述基数(bt)的预定倍数的数字(et)。
4.如权利要求3所述的计算装置,其中,计算所述中间数对所述基数表示的基数(bt)的求模产生大于或等于0且小于所述基数表示的所述基数(bt)的数字(et)。
5.如权利要求1或2所述的计算装置,其中,所述数字(et)中的至少一个数字小于0,或者大于或等于所述基数表示的所述基数(bt)。
6.如权利要求1或2所述的计算装置,其中,所述处理器电路被配置为:
计算校正项(∈s-1),所述校正项指示所述输入数(y)与由以关于所述基数表示的所述基数(b0,b1,…,bs-1)的所述基数表示的所述数字(e0,e1,...,es-1)表示的数之间的差。
8.如权利要求1或2所述的计算装置,其中,所述基数中的至少一个基数是所述余数系统的模数。
10.如权利要求1所述的计算装置,其中,所述处理器电路被配置为对以余数系统表示的多个数进行计算,因此产生以余数系统表示的结果数,所述结果数被转换为基数表示作为所述输入数,其中,所述混淆数(Ft)中的倍数取决于以所述余数系统表示的所述多个数中的一个或多个数。
11.如权利要求1或2所述的计算装置,其中,所述处理器电路被配置为在所述输出数作为被乘数之一的情况下执行基于数字的蒙哥马利。
13.如权利要求1或2所述的计算装置,其中,所述输出数由关于所述基数b0,b1,…,bs-1的数字e0,e1,...,es-1和任选的校正项∈s-1表示,使得y=e0+e1b0+…+es-1b0…bs-1-∈s-1b0…bs-1。
15.一种电子计算方法(300),用于将以余数系统表示((y1,y2,...,yk))的输入数(y)转换为以基数表示来表示的输出数((e0,e1,...,es-1)),所述方法包括:
接收(310)以所述余数系统表示的所述输入数(y);以及
计算(320)所述中间数对所述基数表示的基数(bt)的求模以获得所述基数表示的数字(et),
16.一种计算机可读介质(1000),包括表示用于使处理器系统执行根据权利要求15所述的方法的指令的瞬态或非瞬态数据(1020)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16197707.9 | 2016-11-08 | ||
EP16197707 | 2016-11-08 | ||
PCT/EP2017/077835 WO2018086951A1 (en) | 2016-11-08 | 2017-10-30 | Electronic calculating device for converting a residue numbers system representation to a radix representation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109952558A CN109952558A (zh) | 2019-06-28 |
CN109952558B true CN109952558B (zh) | 2023-06-06 |
Family
ID=57326185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780069076.1A Active CN109952558B (zh) | 2016-11-08 | 2017-10-30 | 用于将余数系统表示转换为基数表示的电子计算装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11755288B2 (zh) |
EP (1) | EP3538989B1 (zh) |
JP (1) | JP6670421B1 (zh) |
CN (1) | CN109952558B (zh) |
WO (1) | WO2018086951A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4996527A (en) * | 1989-09-29 | 1991-02-26 | The Boeing Company | Pipelined residue to mixed base converter and base extension processor |
CN103339665A (zh) * | 2010-11-18 | 2013-10-02 | 德国捷德有限公司 | 用于多位数除法或模变换的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4752904A (en) * | 1986-07-28 | 1988-06-21 | International Business Machines Corporation | Efficient structure for computing mixed-radix projections from residue number systems |
US5077793A (en) * | 1989-09-29 | 1991-12-31 | The Boeing Company | Residue number encryption and decryption system |
US7724898B2 (en) * | 2002-10-17 | 2010-05-25 | Telefonaktiebolaget L M Ericsson (Publ) | Cryptography using finite fields of odd characteristic on binary hardware |
US8363830B2 (en) | 2008-02-07 | 2013-01-29 | Harris Corporation | Cryptographic system configured to perform a mixed radix conversion with a priori defined statistical artifacts |
US8848909B2 (en) * | 2009-07-22 | 2014-09-30 | Harris Corporation | Permission-based TDMA chaotic communication systems |
US8462939B2 (en) | 2010-12-07 | 2013-06-11 | King Fahd University Of Petroleum And Minerals | RNS-based cryptographic system and method |
US9081608B2 (en) * | 2012-05-19 | 2015-07-14 | Digital System Research Inc. | Residue number arithmetic logic unit |
BR112015014946A2 (pt) | 2012-12-21 | 2017-07-11 | Koninklijke Philips Nv | dispositivo de computação, compilador, método eletrônico para computar uma função de dados e programa de computador |
CN105453481B (zh) * | 2012-12-27 | 2019-02-26 | 皇家飞利浦有限公司 | 包括表网络的计算设备 |
US9652200B2 (en) * | 2015-02-18 | 2017-05-16 | Nxp B.V. | Modular multiplication using look-up tables |
-
2017
- 2017-10-30 US US16/347,715 patent/US11755288B2/en active Active
- 2017-10-30 JP JP2019523625A patent/JP6670421B1/ja active Active
- 2017-10-30 EP EP17791687.1A patent/EP3538989B1/en active Active
- 2017-10-30 CN CN201780069076.1A patent/CN109952558B/zh active Active
- 2017-10-30 WO PCT/EP2017/077835 patent/WO2018086951A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4996527A (en) * | 1989-09-29 | 1991-02-26 | The Boeing Company | Pipelined residue to mixed base converter and base extension processor |
CN103339665A (zh) * | 2010-11-18 | 2013-10-02 | 德国捷德有限公司 | 用于多位数除法或模变换的方法 |
Also Published As
Publication number | Publication date |
---|---|
US11755288B2 (en) | 2023-09-12 |
CN109952558A (zh) | 2019-06-28 |
WO2018086951A1 (en) | 2018-05-17 |
JP2020512569A (ja) | 2020-04-23 |
US20190272153A1 (en) | 2019-09-05 |
EP3538989B1 (en) | 2020-03-04 |
JP6670421B1 (ja) | 2020-03-18 |
EP3538989A1 (en) | 2019-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | FPGA-based Niederreiter cryptosystem using binary Goppa codes | |
JP4875700B2 (ja) | ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア | |
US20190287427A1 (en) | Device and method for performing obfuscated arithmetic | |
US10200191B2 (en) | Electronic calculating device for performing obfuscated arithmetic | |
CN113032797B (zh) | 在处理设备中执行加密操作的方法 | |
EP3559799A1 (en) | A calculation device for encoded addition | |
JP6621813B2 (ja) | 難読化された算術を実行するための電子計算装置 | |
CN112639774B (zh) | 具有掩蔽功能的编译器设备 | |
CN113141255B (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
US9722773B2 (en) | Method of determining a representation of a product of a first element and a second element of a finite set, method of evaluating a function applied to an element of a finite set and associated devices | |
JPWO2018008547A1 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
US10505710B2 (en) | Electronic calculating device | |
CN109952558B (zh) | 用于将余数系统表示转换为基数表示的电子计算装置 | |
CN108418687B (zh) | 一种适合sm2算法的快速模约减方法和介质 | |
RU2708439C1 (ru) | Вычислительное устройство и способ | |
JP2018503862A (ja) | 電子生成装置 | |
KR20210067958A (ko) | 완전동형암호 기법으로 암호화된 데이터의 로지스틱 회귀 분석 연산 장치 및 방법 | |
US20180373672A1 (en) | Calculating device and method | |
EP3410292A1 (en) | Calculations with reduced time dependence on the input | |
JP5554357B2 (ja) | 演算装置 | |
WO2017102392A1 (en) | Calculating device and method | |
Foster | Accelerating homomorphic encryption in the cloud environment through high-level synthesis and reconfigurable resources | |
WO2024254618A2 (en) | Methods and systems for addition, multiplication, subtraction, and division of rational numbers encoded in the domain of farey rationals for mpc systems | |
Walter | Leakage from montgomery multiplication | |
KR20200034936A (ko) | 인증 코드를 생성하는 방법 및 관련 암호화 처리 디바이스 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |