CN113541949A - 用于加密的素数数字生成 - Google Patents
用于加密的素数数字生成 Download PDFInfo
- Publication number
- CN113541949A CN113541949A CN202010502091.4A CN202010502091A CN113541949A CN 113541949 A CN113541949 A CN 113541949A CN 202010502091 A CN202010502091 A CN 202010502091A CN 113541949 A CN113541949 A CN 113541949A
- Authority
- CN
- China
- Prior art keywords
- integer
- prime number
- candidate
- prime
- pseudorandom
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 claims abstract description 191
- 238000000034 method Methods 0.000 claims description 86
- 230000015654 memory Effects 0.000 claims description 27
- 238000007689 inspection Methods 0.000 claims 5
- 238000004891 communication Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 239000002131 composite material Substances 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000001583 randomness test Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
-
- 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
-
- 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/723—Modular exponentiation
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7204—Prime number generation or prime number testing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Debugging And Monitoring (AREA)
- Tests Of Electronic Circuits (AREA)
- Mobile Radio Communication Systems (AREA)
- Error Detection And Correction (AREA)
- Testing Of Engines (AREA)
Abstract
本公开的实施例涉及用于加密的素数数字生成。设备可以在整数范围内选择第一伪随机整数。设备可以基于第一伪随机整数来生成用于素性测试的第一候选素数。基于确定第一候选素数未通过素性测试,设备可以在整数范围内选择第二伪随机整数。设备可以基于第二伪随机整数生成用于素性测试的第二候选素数。设备可以确定第二候选素数是否满足素性测试。设备可以选择性地:基于第二候选素数未通过素性测试来重新执行选择第二伪随机整数、生成第二候选素数、以及确定第二候选素数是否满足素性测试;或者基于第二候选素数满足素性测试来使用第二候选素数作为密码协议中的素数整数。
Description
技术领域
本公开总体上涉及密码领域,并且更具体地涉及用于加密的素数数字生成。
背景技术
公钥算法可以基于各种问题的计算难度,诸如两素数复合整数的整数因式分解和计算离散对数的难度。许多密码系统可以围绕素数整数而被构建,诸如在基于因式分解、有限域或椭圆曲线密码学中使用的素数整数。
发明内容
根据一些实现,一种方法可以包括由设备在整数范围内选择第一伪随机整数;由设备生成用于素性测试的第一候选素数,其中第一候选素数基于已知素数整数的乘积和第一伪随机整数;由设备确定第一候选素数未通过素性测试;由设备基于伽罗瓦(Galois)寄存器或线性反馈移位寄存器在整数范围内选择第二伪随机整数;由设备生成用于素性测试的第二候选素数,其中第二候选素数基于已知素数整数的乘积和第二伪随机整数的乘积;由设备确定第二候选素数是否满足素性测试;以及选择性地:由设备基于第二候选素数未通过素性测试来重新执行:使用伽罗瓦寄存器或线性反馈移位寄存器来选择第二伪随机整数,生成第二候选素数,以及确定第二候选素数是否满足素性测试,或者由设备基于第二候选素数满足素性测试来使用第二候选素数作为密码协议中的或另一素数的生成中的素数整数。
根据一些实现,一种设备可以包括一个或多个存储器以及一个或多个处理器。在一些实现中,一个或多个处理器通信地耦合到一个或多个存储器。一个或多个处理器可以被配置为:在整数范围内选择伪随机整数;对照筛(sieve)来检查伪随机整数,以确定基于已知素数整数和伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;选择性地:基于确定候选素数能够被筛素数集合中的任何筛素数整除,重新执行在整数范围内的伪随机整数的选择,以及对照筛的伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除,生成用于素性测试的候选素数,其中候选素数基于已知素数整数和伪随机整数;确定候选素数是否满足素性测试;以及选择性地:基于候选素数未通过素性测试来重新执行:伪随机整数的选择,对照筛的伪随机整数的检查,以及伪随机整数的选择和对照筛的伪随机整数的检查的选择性重新执行或候选素数的生成,以及候选素数是否满足素性测试的确定,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或大于候选素数的大素数的生成中的素数整数。
根据一些实现,一种非瞬态计算机可读介质可以存储一个或多个指令。当由设备的一个或多个处理器执行时,一个或多个指令可以使一个或多个处理器:执行整数范围内的伪随机整数的选择,伪随机整数的选择包括:候选伪随机整数的选择;对照筛的候选伪随机整数的检查的执行,以确定基于候选伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;以及选择性:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行:候选伪随机整数的选择以及对照筛的候选伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除,用于素性测试的候选素数的生成,其中候选素数基于已知素数整数的乘积和伪随机整数;以及选择性地:基于候选素数未通过素性测试来重新执行伪随机整数的选择的执行以及候选素数的生成,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或另一素数的生成中的素数整数。
附图说明
图1A-图1F是本文所描述的一个或多个示例实现的图。
图2是其中可以实现本文所描述的系统和/或方法的示例环境的图。
图3是图2的一个或多个设备的示例组件的图。
图4-图6是用于加密的素数数字生成的示例过程的流程图。
具体实施方式
示例实现的以下详细描述参考附图。不同附图中的相同附图标记可以标识相同或相似的元件。
密码系统可以围绕素数整数而被构建。一些密码系统(例如,基于离散对数的公钥密码系统)使用固定的素数整数作为用以提供系统的安全性的元素。但是,作恶方可以尝试通过攻击固定的素数整数来闯入系统中。固定的素数整数对于这些攻击意味着非常高的性价比,极大地增加了攻击方的动机和对用户的风险。此外,随着时间的推移,计算能力的提高可以减少成功发起此攻击可能所需的时间。一旦发生成功的攻击,以固定的素数整数为模的离散对数就变得相对容易计算,并且密码系统可能被危害。
根据本文所描述的一些实现,设备可以被配置为基于定时事件的满足来替换素数整数。换言之,素数整数可以在一段时间后过期,并且设备可以被配置为用替换素数整数来替换该素数整数。在选择素数整数的过程中,设备可以用基于第一伪随机整数和已知素数整数的乘积的候选素数来生成用于素性测试的第一候选素数。为了节省计算资源,设备可以使用筛来确定第一伪随机整数是否能够被筛素数集合中的任何筛素数整除(例如,这可以指示第一候选整数不是素数整数)。以这种方式,设备可以节省计算资源,该计算资源否则可能被用来执行用于素性测试(例如,波克林顿(Pocklington)测试)的附加和/或更多的资源密集型计算以确定第一候选素数是否是素数整数。
在一些实现中,基于伽罗瓦寄存器、线性反馈移位寄存器(LFSR)等,设备可以选择第二伪随机整数(例如,基于第一候选素数未通过素性测试、筛指示第一候选素数能够被筛素数集合中的任何筛素数整除等等)。以这种方式,设备可以用筛来选择用于测试的伪随机整数(例如,使得基于伪随机整数与已知素数的乘积的候选素数避免一致的步长尺寸,以消除素数间隙之后的素数整数的偏差,其从范围中选择每个伪随机整数而无需重复等等)和/或基于伪随机选择过程来生成候选素数。在一些实现中,设备可以在生成连续候选素数之前、在执行素性测试之前等对照筛来检查连续伪随机整数。通过使用伽罗瓦寄存器、LFSR等来选择伪随机整数以在生成用于素性测试的候选素数时使用,设备可以将熵增加到素数数字选择过程,这可以提高安全性。
图1A-图1F是本文所描述的一个或多个示例实现的图。如图1A-图1F中所示,(多个)示例实现100可以包括使用波克林顿定理、波克林顿测试、筛、伽罗瓦寄存器等等来执行素数整数生成过程的设备。
密码系统功能性可能需要素数整数以具有某些属性。例如,基于计算有限群中第r个根(其中r是大素数)的难度的系统,r2必须除以群的阶。如果群是(Z/PZ)*,那么针对某个整数h,p=hr2+1。波克林顿定理给出了针对形式为P=(hR+1)的候选整数的素性测试,其中R的完全因式分解是已知的。波克林顿定理可以是一种用于通过筛、伽罗瓦寄存器和/或线性反馈移位寄存器(LFSR)来生成和/或测试候选素数的高效工具,以提高用于确定素性的效率并增加用于测试的候选整数的选择的随机性。
在本文所描述的一些实现中,设备可以使用用于生成素数整数的算法。例如,设备可以使用算法1:
I:选择随机起始值hL≤h0<hU并设定h=h0。
II:在P=(Rh+1)未通过素性测试时:
A:递增h;
B:如果h=h0,那么返回0(未通过);
III:返回P
算法1
在算法1中,hL和hU是针对h的下边界和上边界,其中hL≤h0<hU≤R2。如算法1中所述,设备可以针对素性来测试候选素数。基于候选素数是否满足素性测试,设备可以递增被用来生成要被测试的新候选素数的值h,或者设备可以输出所测试的候选素数(例如,基于发现候选素数满足素性测试)。
如通过图1A中的附图标记102所示,设备可以生成用于素性测试的第一候选素数。在一些实现中,第一候选素数可以基于已知素数整数的乘积、第一伪随机整数、加数(例如,1或素数数字)、一个或多个整数约束等。在一些实现中,伪随机整数约束可以包括可以从中选择第一伪随机整数的整数范围。
在一些实现中,第一候选素数可以基于等式1和等式2:
P=hR+1 (等式1)
其中h是伪随机整数(例如,第一伪随机整数),rk是不同的素数整数,并且mk是正整数。如果与R相比,某些尺寸约束在h上成立,则仅用(t+1)模P幂就可以证明素性。
使用基于波克林顿定理的素数生成,设备可以从已知素数整数(R)的较小乘积开始,以使用通过波克林顿测试的h值来找到较大的素数。设备可以重复这些步骤以连续地找到较大的素数。
在一些密码系统中,设备可以尝试生成满足一个或多个约束的素数整数。基于一个或多个约束,设备可以生成用于素性测试的第一候选素数,使得第一候选素数满足一个或多个约束。
在一些实现中,一个或多个约束可以包括尺寸约束。如等式3中所示,可以要求伪随机整数的尺寸在给定的比特范围内。
比特范围:2B<P<2B+1 (等式3)
在等式3中,B可以是由安全标准和用户要求所确定的比特数目。较大的B会增加诸如数字字段筛和数字字段筛的变体之类的基于字段的攻击的计算成本。
在一些实现中,一个或多个整数约束可以包括群结构约束。密码系统的安全性和功能要求可能决定乘法群的结构(例如,对(P-1)的因式分解的约束)。例如,要求可以指示必须存在(P-1)的至少一个大素数因子(r),其中r>2b。在一些实现中,b可以是由当前安全标准确定的比特计数。较大的b可以增加基于字段的攻击(例如,数字字段筛)和对素数整数的基于群的攻击的计算成本。
如通过图1B并通过附图标记104所示,设备可以确定第一候选素数未通过素性测试。在一些实现中,素性测试可以包括波克林顿测试和/或另一素性测试的应用。在一些实现中,可以基于确定伪随机整数(h)不能够被筛素数集合的任何筛素数整除的确定(例如,使用筛来确定被用来生成候选素数的h值是否能够被筛素数集合的任何筛素数整除)来应用波克林顿测试。在一些方面中,在确定第一候选素数未通过素性测试之后,设备可以对照筛来检查伪随机整数(h)的后续迭代。以这种方式,设备可以节省计算资源,该计算资源否则可能会被用来对可能被筛过滤掉的候选素数进行波克林顿测试。
波克林顿定理指出,如果候选整数(P)通过测试,则候选整数的所有因子都具有与候选整数相似的属性。换言之,如果qj是P的因子,那么:
qj=(Rhj+1),hj≥1,其中hj是h的值 (等式4)
如果P是合数(例如,不是素数),则其一定具有此形式的至少两个因子(qj)。这些因子可以迫使h变得相当大(例如,大于R)。如果h≤R,那么P不是合数并且一定是素数。
在h的边界上的扩展可以增加等式4的灵活性。增加h的边界可以通过减少必要的步骤(即,允许更快的增长)和所需的幂来增加所生成的素数整数中熵的潜力和/或减少应用等式4而消耗的计算资源。
如通过图1C中的附图标记106所示,设备可以生成用于素性测试的第二候选素数(例如,基于确定第一候选素数未通过素性测试)。在一些实现中,设备可以基于已知数、第二伪随机整数(例如,h的第二迭代)、加数、整数约束等生成用于素性测试的第二候选素数。例如,设备可以利用已知整数R的乘积、第二伪随机整数h、加数1和整数约束(例如,针对h的约束)基于算法1来生成第二候选素数。
如通过附图标记108所示,设备可以基于伽罗瓦寄存器、LFSR、第一伪随机整数、筛等来生成第二伪随机整数。在一些实现中,设备可以被配置为逐步通过值范围内的h的值,使得h的值不重复,递增h可以包括h的随机或伪随机选择,并且h可以是有界的(例如,基于R和/或P的边界)。
伽罗瓦寄存器和/或LFSR可能需要相对少量的计算资源并且以确定性的方式模仿随机数生成器。伽罗瓦寄存器可以满足随机性测试,并且可以在所有可能的非零值上循环(例如,在不重复值的情况下)。如果k比特伽罗瓦寄存器或LFSR以初始值0<reg<2k开始(例如,基于随机选择过程、伪随机选择过程、用户输入、来自另一设备的输入等等),则伽罗瓦寄存器或LFSR在其重复之前可以被步进2k-1次。伽罗瓦寄存器可以使用多项式、多项式算法和/或模数多项式算法来生成伪随机输出。给定当前非零初始状态reg0和当前状态reg,以下的算法2遍历伽罗瓦寄存器。
I:常数:
ply=表示k次基元二元多项式的较低k系数的整数
mask=2k-1
II:如果reg=0:返回ERROR
III:如果reg&mask=0:reg=reg<<1
V:如果reg=reg0:设定reg=0
VI:返回
算法2
如算法2中所示,设备可以使用伽罗瓦寄存器通过以固定的k次多项式步进reg来修改reg。如在操作II处所示,因为寄存器不能为零,所以如果reg=0,则算法2将输出错误指示。如在操作III处所示,如果操作reg&mask=0,则设备可以将寄存器值向左移位一比特(例如,乘以2)。如在操作IV处所示,如果reg&mask≠0,则设备可以将寄存器值向左移位一比特并减小。如在操作V处所示,如果reg=reg0(例如,当前寄存器值等于起始寄存器值),则该寄存器已用尽可能的寄存器值,并且该寄存器值被设定为0。在每次迭代期间,寄存器的值可以被用来通过h的迭代递增h。在一些实现中,如果伽罗瓦寄存器或LFSR无法标识可以被用来生成素数整数的h的值,则设备可以修改hU(例如,通过将hU增加1或1<<B,其中B是h的最大值的比特计数或h+hL的最大值的比特计数)。
在一些实现中,设备可以生成并使用筛来减少与试除相关联的计算成本。设备可以生成超过LFSR或伽罗瓦寄存器的尺寸的筛。如果LFSR或伽罗瓦寄存器为k比特长,并且64比特字被用来存储筛数据,那么针对筛可能需要2k-6个字。对于k=16,筛可能需要64比特字的1024比特数组。筛的尺寸限制可能会局限LFSR或伽罗瓦寄存器的尺寸。在一些实现中,LFSR或伽罗瓦寄存器可能无法覆盖整个h范围。而是,h可以被划分为几个部分,每部分为k比特长。
基于对h的尺寸约束(hL≤h0<hU),h可以被重写为h=hL+h′,其中0≤h′<hR并且hR=(hU-hL)。针对h′的一定数量的可接受值可以被划分为k比特字。可以用非零值对k比特字进行初始化,然后使用LFSR或伽罗瓦寄存器对其进行递增,以找到用于素性测试的h的后续值和整数。如果那么:
使用算法2和/或等式5,设备可以在类似于时钟的过程中递增h以生成用于素性测试的整数。在一些实现中,设备可以将以下的算法3用于扩展的LFSR或伽罗瓦递增(例如,步进)。在算法3中,设备可以针对起始寄存器值提供输入 并且针对当前寄存器值h(j)≠0(0≤j≤s)提供输入
I:设定j=(s-1)
II:当(j≥0)并且对算法2的调用返回错误时:
A:从j中减一:j=j-1
III:如果j<0:返回ERROR
IV:否则返回
算法3
如果边界已被耗尽,则设备可以使用算法3来修改h′并返回错误。作为素性测试的一部分,设备可以使用以下所述的算法4,对照筛来检查整数h(例如,以确定应使用哪些整数来生成候选素数),这可以在应用波克林顿测试之前发生。设备可以为算法4提供输入,包括小的素数集(S={q}1≤i≤s)、已知的素数因式分解P=hR+1(R)、要筛分的比特数量(k)以及h(w,{h(j)})的固定部分,其中0≤j≤s并且j≠w。算法4可以输出k长比特数组,其中好的h值(不能够被小的素数集的元素整除)被设定为“on”。
I:创建k长比特数组A并将A的所有k比特设定为“on”(设定为1)
II:对于每个素数qi∈S
B:设定v=h(w)[i]
C:当v<2k时:
1:关闭A的比特v
2:设定v=v+qi
III:返回A
算法4
下面的算法5可以被用来确定素性。在算法5中,设备可以提供输入,该输入包括设备是否已经将筛应用于伪随机整数h的指示,该伪随机整数h被用来生成候选素数P和以被排序的(P-1)的除数集{rj|1≤j≤t}。
I:设定状态=不确定
II:如果被筛分=假:针对小素数除数集进行测试–如果除数被找到,则返回合数
III:设定g=2
IV:当状态=不确定时:
B:j=1
C:rem=(P-1)
D:设定:除数=1
E:当状态=不确定并且除数<rem2时,并且j≤t:
2:如果gcd(x,P)=1:
a:当rem≡0 mod rj时:设定
i:rem=rem/rj
ii:除数=除数·rj
b:否则:向g加一:g=g+1,并且设定除数=0
F:如果rem≤除数:状态=素数
G:否则rem2≤除数
1:状态=波克林顿扩展(h,R)
V:返回状态
算法5
如在操作II处所示,如果需要(例如,如果筛未被应用),算法5可以检查小的除数。如在操作III处所示,算法5可以为波克林顿的测试设定基数。如在操作IV处所示,算法5可以尝试确定所测试的整数是否满足素性测试的一个或多个元素。如在操作IV(A)处所示,算法5可以确定:如果所测试的整数未通过Fermat测试,则所测试的整数不是素数。操作IV(B)示出,算法5可以将用于R的素数除数的索引设定为1。如在操作IV(C)处所示,算法5可以允许从(P-1)中移除R的所有幂。操作IV(D)示出,算法5可以用(P-1)=rem·除数来存储除数的尺寸。如在操作IV(E)(1)处所示,算法5可以应用波克林顿的第二测试。操作IV(E)(2)示出,算法5可以从rem中移除rj的所有幂并将rj的所有幂插入到除数中。如在操作IV(E)(b)处所示,算法5可以基于所测试的整数是素数的可能性来尝试不同的基数。在操作IV(F)处,算法5可以确定所测试的整数是否满足简单的波克林顿测试。
如由操作IV(G)所示,如果所测试的整数未通过简单的波克林顿测试,则算法5可以确定所测试的整数是否满足波克林顿扩展算法。波克林顿扩展算法在下面被示为算法6。设备可以输入所测试的整数的随机部分(h)和所测试的整数的已知部分(R)。如果所测试的整数是素数,则算法6可以输出真;或者如果所测试的整数是合数,则算法6可以输出假。
I:常数:小的素数集{qj|0≤j<1000},其中q0=5,q1=7,依此类推。
II:设定状态=假
III:设定b=(h mod R)2
V:如果b<a:neg=真;val=a-b
VI:否则neg=假;val=b-a
VII:设定j=0
VII:当j<1000并且状态=假时
B:如果neg为真:
1:如果(qj-1)/2是奇数且v=1:状态=真
2:否则(qj-1)/2是偶数且v=qj-1:状态=真
C:否则:如果v=(qj-1):状态=真
D:j=j+1
算法6
如在操作II处所示,状态可以指示设备是否已使用算法6来确定所测试的整数为素数。最初,状态可以被设定为假,直到所测试的整数未通过二次余数测试为止。在操作V处,算法6可以确定b和a之间的差,并且考虑该差是负还是正。如在操作VIII(B)处所示,算法6可以基于b与a之间的差为负来确定所测试的整数是否为素数。如在操作VIII(C)处所示,算法6可以基于b与a之间的差为正来确定所测试的整数是否为素数。
如通过图1D中的附图标记110所示,设备可以确定第二候选素数是否满足素性测试。在一些实现中,设备可以基于筛的应用、波克林顿测试的应用等等来确定第二候选素数是否满足素性测试。在一些实现中,基于设备未通过素性测试,设备可以重新执行:生成第二伪随机整数,生成第二候选素数以及确定第二候选素数是否满足素性测试。换言之,基于第二候选素数未通过素性测试,设备可以继续搜索素数整数(例如,使用所描述的用于生成第二候选素数并测试第二候选素数的过程)。
如通过图1E中的附图标记112所示,设备可以使用第二候选素数作为密码协议中的或另一素数(例如,较大素数)的生成中的素数整数。例如,设备可以使用素数整数来生成公钥、生成私钥、认证密钥、建立共享密钥等等。
如通过图1F中的附图标记114所示,设备可以用替换素数整数来替换素数整数。在一些实现中,设备可以基于定时阈值的满足(例如,过期)来确定用替换素数整数来替换第二候选素数。在一些实现中,设备可以重复搜索素数整数的过程,直到设备确定候选整数满足素性测试为止。
如通过附图标记116所示,设备可以在密码协议中或在另一素数的生成中使用替换素数整数。例如,设备可以使用替换素数整数来生成公钥、生成私钥、认证密钥、建立共享密钥等等。
如上所指示,仅作为一个或多个示例提供图1A-图1F。其他示例可以与关于图1A-图1F所描述的不同。
图2是其中可以实现本文所描述的系统和/或方法的示例环境200的图。如图2中所示,环境200可以包括第一设备210、第二设备220和网络230。环境200的设备可以经由有线连接、无线连接或者有线和无线连接的组合来互连。
第一设备210包括能够接收、生成、存储、处理和/或提供与密钥交换、加密和/或解密通信等等相关联的信息的一个或多个设备。第一设备210可以包括通信设备和/或计算设备。例如,第一设备210可以包括无线通信设备、用户装备(UE)、移动电话(例如,智能电话或手机等)、膝上型计算机、平板计算机、手持计算机、台式计算机、游戏设备、可穿戴通信设备(例如,智能手表或智能眼镜等)、物联网(IoT)设备或类似类型的设备。如本文其他地方所述,第一设备210可以与环境200的一个或多个其他设备通信。
第二设备220包括能够接收、生成、存储、处理和/或提供与密钥交换、加密和/或解密通信等等相关联的信息的一个或多个设备。第二设备220可以包括通信设备和/或计算设备。例如,第二设备220可以包括无线通信设备、UE、移动电话(例如,智能电话或手机等)、膝上型计算机、平板计算机、手持计算机、台式计算机、游戏设备、可穿戴通信设备(例如,智能手表或智能眼镜等)、IoT设备或类似类型的设备。如本文其他地方所述,第二设备220可以与环境200的一个或多个其他设备通信。
网络230包括一个或多个有线和/或无线网络。例如,网络230可以包括蜂窝网络(例如,第五代(5G)网络、第四代(4G)网络、长期演进(LTE)网络、第三代(3G)网络、码分多址(CDMA)网络等等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如,公共交换电话网(PSTN))、专用网络、自组织网络、内联网、互联网、基于光纤的网络等等和/或这些或其他类型的网络的组合。网络230支持环境200的设备之间的通信。
在一些实现中,第一设备210可以经由网络230向第二设备202传输第一公钥。第二设备220可以向第一设备210传输第二公钥。第一设备210和第二设备220可以基于第一公钥和第二公钥来确定共享秘密(例如,共享密钥)。第一设备210和第二设备220可以基于共享秘密来加密数据、传送加密数据和/或解密数据。
图2中所示的设备和网络的数目和布置作为一个或多个示例被提供。在实践中,与图2中所示的那些相比,可能存在更多的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或不同地布置的设备和/或网络。此外,图2中所示的两个或更多个设备可以在单个设备内实现,或者图2中所示的单个设备可以被实现为多个分布式设备。附加地或备选地,环境200的一组设备(例如,一个或多个设备)可以执行被描述为由环境200的另一组设备执行的一个或多个功能。
图3是设备300的示例组件的图。设备300可以对应于第一设备210和/或第二设备220。在一些实现中,第一设备210和/或第二设备220可以包括一个或多个设备300和/或设备300的一个或多个组件。如图3中所示,设备300可以包括总线310、处理器320、存储器330、存储组件340、输入组件350、输出组件360和通信接口370。
总线310包括允许设备300的多个组件之间进行通信的组件。处理器320以硬件、固件和/或硬件和软件的组合来实现。处理器320采取以下形式:中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类型的处理组件。在一些实现中,处理器320包括能够被编程以执行功能的一个或多个处理器。存储器330包括随机存取存储器(RAM)、只读存储器(ROM)和/或存储信息和/或指令以供处理器320使用的另一种类型的动态或静态存储设备(例如闪存、磁存储器和/或光存储器)。
存储组件340存储与设备300的操作和使用相关的信息和/或软件。例如,存储组件340可以包括硬盘(例如磁盘、光盘和/或磁光盘)、固态驱动器(SSD)、压缩盘(CD)、数字多功能光盘(DVD)、软盘、盒带、磁带和/或另一类型的非瞬态计算机可读介质以及对应的驱动器。
输入组件350包括允许设备300诸如经由用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关和/或麦克风)接收信息的组件。附加地或备选地,输入组件350可以包括用于确定位置的组件(例如,全球定位系统(GPS)组件)和/或传感器(例如,加速度计、陀螺仪、致动器、另一类型的位置或环境传感器等等)。输出组件360包括提供来自设备300的输出信息的组件(例如,经由显示器、扬声器、触觉反馈组件、音频或视觉指示器等等)。
通信接口370包括类收发器组件(例如,收发器、独立的接收器、独立的传输器等等),其使得设备300能够与其他设备通信,诸如经由有线连接、无线连接、或有线和无线连接的组合。通信接口370可以允许设备300从另一设备接收信息和/或向另一设备提供信息。例如,通信接口370可以包括以太网接口、光接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、Wi-Fi接口、蜂窝网络接口等等。
设备300可以执行本文描述的一个或多个过程。设备300可以基于处理器320执行由诸如存储器330和/或存储组件340之类的非瞬态计算机可读介质存储的软件指令来执行这些过程。如本文中所使用的,术语“计算机可读介质”是指非瞬态存储器设备。存储器设备包括单个物理存储设备内的存储器空间或跨多个物理存储设备分布的存储器空间。
软件指令可以经由通信接口370从另一计算机可读介质或另一设备被读取到存储器330和/或存储组件340中。当被执行时,存储在存储器330和/或存储组件340中的软件指令可以使处理器320执行本文所描述的一个或多个过程。附加地或备选地,可以使用硬件电路来代替软件指令或与软件指令结合来执行本文所描述的一个或多个过程。因此,本文所描述的实现不限于硬件电路和软件的任何特定组合。
图3中所示的组件的数目和布置作为示例而被提供。在实践中,与图3中所示的那些相比,设备300可以包括更多的组件、更少的组件、不同的组件或不同地布置的组件。附加地或备选地,设备300的一组组件(例如,一个或多个组件)可以执行被描述为由设备300的另一组组件执行的一个或多个功能。
图4是用于加密的素数数字生成的示例过程400的流程图。在一些实现中,图4的一个或多个过程框可以由设备(例如,第一设备210)执行。在一些实现中,图4的一个或多个过程框可以由与该设备分离的或包括该设备的另一设备或一组设备来执行,诸如第二设备(例如,第二设备220)等等。
如图4中所示,过程400可以包括:在整数范围内选择第一伪随机整数(框410)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以在整数范围内选择第一伪随机整数。
如图4中进一步所示,过程400可以包括:生成用于素性测试的第一候选素数,其中第一候选素数基于第一伪随机整数和已知素数整数的乘积(框420)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以生成用于素性测试的第一候选素数。在一些实现中,第一候选素数基于第一伪随机整数和已知素数整数的乘积。
如图4中进一步所示,过程400可以包括:确定第一候选素数未通过素性测试(框430)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以确定第一候选素数未通过素性测试。
如图4中进一步所示,过程400可以包括:基于伽罗瓦寄存器或线性反馈移位寄存器,在整数范围内选择第二伪随机整数(框440)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以基于伽罗瓦寄存器或线性反馈移位寄存器在整数范围内选择第二伪随机整数。
如图4中进一步所示,过程400可以包括:生成用于素性测试的第二候选素数,其中第二候选素数基于已知素数整数的乘积和第二伪随机整数的乘积(框450)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以生成用于素性测试的第二候选素数。在一些实现中,第二候选素数基于已知素数整数的乘积和第二伪随机整数的乘积。
如图4中进一步所示,过程400可以包括:确定第二候选素数是否满足素性测试(框460)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以确定第二候选素数是否满足素性测试。
如图4中进一步所示,过程400可以包括选择性地:基于第二候选素数未通过素性测试来重新执行使用伽罗瓦寄存器或线性反馈移位寄存器来选择第二伪随机整数、生成第二候选素数、以及确定第二候选素数是否满足素性测试,或者基于第二候选素数满足素性测试来使用第二候选素数作为密码协议中的或另一素数的生成中的素数整数(框470)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以选择性地:基于第二候选素数未通过素性测试来重新执行使用伽罗瓦寄存器或线性反馈移位寄存器来选择第二伪随机整数、生成第二候选素数、以及确定第二候选素数是否满足素性测试,或者基于第二候选素数满足素性测试来使用第二候选素数作为密码协议中的或另一素数的生成中的素数整数。
过程400可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
在第一实现中,素性测试包括波克林顿测试。
在第二实现中,单独地或与第一实现相组合,过程400包括对照筛来检查第二伪随机整数,以确定基于第二伪随机整数和已知素数整数的乘积的第二候选素数是否能够被筛素数集合整除;以及选择性地:基于第二候选素数能够被筛素数集合中的任何筛素数整除来确定第二候选素数未通过素性测试,或者基于第二候选素数不能够被筛素数集合中的任何筛素数整除来执行素性测试。
在第三实现中,单独地或与第一和第二实现中的一个或多个实现相组合,第一候选素数还基于将1与已知素数整数的乘积和第一伪随机整数的乘积相加。
在第四实现中,单独地或与第一至第三实现中的一个或多个实现相组合,第一伪随机整数是整数范围内的伪随机起始值。
在第五实现中,单独地或与第一至第四实现中的一个或多个实现相组合,第二伪随机整数基于第一伪随机整数。
在第六实现中,单独地或与第一至第五实现中的一个或多个实现相组合,过程400包括:基于定时阈值的满足,确定用替换素数整数来替换素数整数;在整数范围内选择第三伪随机整数;生成用于素性测试的第三候选素数,其中第三候选素数基于已知素数整数的乘积和第三伪随机整数的乘积;确定第三候选素数未通过素性测试;使用伽罗瓦寄存器或线性反馈移位寄存器,在整数范围内选择第四伪随机整数;生成用于素性测试的第四候选素数,其中第四候选素数基于已知素数整数的乘积和第四伪随机整数的乘积;确定第四候选素数是否满足素性测试;以及选择性地:基于第四候选素数未通过素性测试来重新执行:使用伽罗瓦寄存器或线性反馈移位寄存器来选择第四伪随机整数,生成第四候选素数,以及确定第四候选素素数是否满足素性测试,或者由设备基于第四候选素数满足素性测试来使用第四候选素数作为密码协议中的或更大素数的生成中的替换素数整数。
在第七实现中,单独地或与第一至第六实现中的一个或多个实现相组合,在密码协议中使用素数整数包括:生成私钥、生成公钥、认证从另一设备接收的密钥、或建立与另一设备的共享密钥。
尽管图4示出了过程400的示例框,但是在一些实现中,与图4中描绘的那些相比,过程400可以包括更多的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程400的两个或更多个框。
图5是用于加密的素数数字生成的示例过程500的流程图。在一些实现中,图5的一个或多个过程框可以由设备(例如,第一设备210)执行。在一些实现中,图5的一个或多个过程框可以由与该设备分离的或包括该设备的另一设备或一组设备来执行,诸如第二设备(例如,第二设备220)等等。
如图5中所示,过程500可以包括:在整数范围内选择伪随机整数(框510)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以在整数范围内选择伪随机整数。
如图5中进一步所示,过程500可以包括:对照筛来检查伪随机整数,以确定基于已知素数整数和伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除(框520)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以对照筛来检查伪随机整数,以确定基于已知素数整数和伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除。
如图5中进一步所示,过程500可以包括选择性地:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行在整数范围内的伪随机整数的选择和对照筛的伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除来生成用于素性测试的候选素数,其中候选素数基于已知素数整数和伪随机整数(框530)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以选择性地:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行在整数范围内的伪随机整数的选择和对照筛的伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除来生成用于素性测试的候选素数,其中候选素数基于已知素数整数和伪随机整数。在一些实现中,候选素数基于已知素数整数和伪随机整数。
如图5中进一步所示,过程500可以包括:确定候选素数是否满足素性测试(框540)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以确定候选素数是否满足素性测试。
如图5中进一步所示,过程500可以包括选择性地:基于候选素数未通过素性测试来重新执行伪随机整数的选择、对照筛的伪随机整数的检查、以及伪随机整数的选择和对照筛的伪随机整数的检查的选择性重新执行或候选素数的生成、以及确定候选素数是否满足素性测试,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或大于候选素数的大素数的生成中的素数整数(框550)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以选择性地:基于候选素数未通过素性测试来选择性地重新执行伪随机整数的选择、对照筛的伪随机整数的检查、以及伪随机整数的选择和对照筛的伪随机整数的检查的选择性重新执行或候选素数的生成、以及确定候选素数是否满足素性测试,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或大于候选素数的大素数的生成中的素数整数。
过程500可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
在第一实现中,素性测试包括波克林顿测试。
在第二实现中,单独地或与第一实现相组合,过程500包括基于伽罗瓦寄存器或线性反馈移位寄存器来选择伪随机整数。
在第三实现中,单独地或与第一和第二实现中的一个或多个实现相组合,伪随机整数是在整数范围内的伪随机起始值。
在第四实现中,单独地或与第一至第三实现中的一个或多个实现相组合,过程500包括:基于定时阈值的满足,确定用替换已知素数整数来替换已知素数整数;在整数范围内选择附加伪随机整数;对照筛来检查该附加伪随机整数,以确定基于附加伪随机整数和替换已知素数整数的乘积所生成的候选替换素数是否能够被筛素数集合中的任何筛素数整除;选择性地:基于确定候选替换素数能够被筛素数集合中的任何筛素数整除来重新执行在整数范围内的附加伪随机整数的选择以及对照筛的附加伪随机整数的检查,或者生成用于素性测试的候选替换素数;以及确定候选替换素数是否满足素性测试;并且选择性地:基于候选替换素数未通过素性测试来重新执行附加伪随机整数的选择、对照筛的附加伪随机整数的检查、以及附加伪随机整数的选择和对照筛的附加伪随机整数的检查的选择性重新执行或候选替换素数的生成、以及附加候选替换素数是否满足素性测试的确定,或者基于候选替换素数满足素性测试来使用候选替换素数作为密码协议中的或生成大于替换素数整数的替换大素数的生成中的替换素数整数。
在第五实现中,单独地或与第一至第四实现中的一个或多个实现相组合,过程500包括生成私钥、生成公钥、认证从另一设备接收的密钥或建立与另一设备的共享密钥。
尽管图5示出了过程500的示例框,但是在一些实现中,与图5中描绘的那些相比,过程500可以包括更多的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程500的两个或更多个框。
图6是用于加密的素数数字生成的示例过程600的流程图。在一些实现中,图6的一个或多个过程框可以由设备(例如,第一设备210)执行。在一些实现中,图6的一个或多个过程框可以由与该设备分离的或包括该设备的另一设备或一组设备来执行,诸如第二设备(例如,第二设备220)等等。
如图6中所示,过程600可以包括:执行整数范围内的伪随机整数的选择,伪随机整数的选择包括:候选伪随机整数的选择,对照筛的候选伪随机整数的检查的执行以确定基于候选伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除,以及选择性:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行候选伪随机整数的选择以及对照筛的候选伪随机整数的检查;或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除来生成用于素性测试的候选素数,其中候选素数基于伪随机整数和已知素数整数的乘积(框610)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以执行整数范围内的伪随机整数的选择,伪随机整数的选择包括:候选伪随机整数的选择,对照筛的候选伪随机整数的检查的执行以确定基于候选伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除,以及选择性:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行候选伪随机整数的选择以及对照筛的候选伪随机整数的检查;或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除来生成用于素性测试的候选素数,其中候选素数基于伪随机整数和已知素数整数的乘积。
如图6中进一步所示,过程600可以包括选择性地:基于候选素数未通过素性测试来重新执行伪随机整数的选择的执行,或者基于候选素数满足素性测试来使用候选素数作为在密码协议中的或另一素数的生成中的素数整数(框620)。例如,如上所述,设备(例如,使用处理器320、存储器330、存储组件340、输入组件350、输出组件360、通信接口370等等)可以选择性地:基于候选素数未通过素性测试来重新执行伪随机整数的选择的执行,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或另一素数的生成中的素数整数。
过程600可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
在第一实现中,素性测试包括波克林顿测试。
在第二实现中,单独地或与第一实现相组合,候选素数进一步基于将1与伪随机整数和已知素数整数的乘积相加。
在第三实现中,单独地或与第一和第二实现中的一个或多个实现相组合,伪随机整数的第一迭代是在整数范围内的伪随机起始值。
在第四实现中,单独地或与第一至第三实现中的一个或多个实现相组合,伪随机整数的第二迭代基于伪随机整数的第一迭代。
在第五实现中,单独地或与第一至第四实现中的一个或多个实现相组合,过程600包括生成私钥、生成公钥、认证从另一设备接收的密钥或建立与另一设备的共享密钥。
尽管图6示出了过程600的示例框,但是在一些实现中,与图6中描绘的那些相比,过程600可以包括更多的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程600的两个或更多个框。
以下是一些示例实施例。
示例1.一种方法,包括:由设备在整数范围内选择第一伪随机整数;由设备生成用于素性测试的第一候选素数,其中第一候选素数基于已知素数整数的乘积和第一伪随机整数;由设备确定第一候选素数未通过素性测试;由设备基于伽罗瓦寄存器或线性反馈移位寄存器,在整数范围内选择第二伪随机整数;由设备生成用于素性测试的第二候选素数,其中第二候选素数基于已知素数整数的乘积和第二伪随机整数的乘积;由设备确定第二候选素数是否满足素性测试;以及选择性地:由设备基于第二候选素数未通过素性测试来重新执行:使用伽罗瓦寄存器或线性反馈移位寄存器来选择第二伪随机整数,生成第二候选素数,以及确定第二候选素数是否满足素性测试,或者由设备基于第二候选素数满足素性测试来使用第二候选素数作为密码协议中的或另一素数的生成中的素数整数。
示例2.根据示例1的方法,其中素性测试包括波克林顿测试。
示例3.根据示例1的方法,还包括:对照筛来检查第二伪随机整数,以确定基于已知素数整数的乘积和第二伪随机整数的第二候选素数是否能够被筛素数集合中的任何筛素数整除;以及选择性地:基于第二候选素数能够被筛素数集合中的任何筛素数整除,确定第二候选素数未通过素性测试;或者基于第二候选素数不能够被筛素数集合中的任何筛素数整除,执行素性测试。
示例4.根据示例1的方法,其中第一候选素数还基于将1与已知素数整数的乘积和第一伪随机整数的乘积相加。
示例5.根据示例1的方法,其中第一伪随机整数是整数范围内的伪随机起始值。
示例6.根据示例1的方法,其中第二伪随机整数基于第一伪随机整数。
示例7.根据示例1的方法,还包括:基于定时阈值的满足,确定用替换素数整数来替换素数整数;在整数范围内选择第三伪随机整数;生成用于素性测试的第三候选素数,其中第三候选素数基于已知素数整数的乘积和第三伪随机整数的乘积;确定第三候选素数未通过素性测试;使用伽罗瓦寄存器或线性反馈移位寄存器,在整数范围内选择第四伪随机整数;生成用于素性测试的第四候选素数,其中第四候选素数基于已知素数整数的乘积和第四伪随机整数的乘积;确定第四候选素数是否满足素性测试;以及选择性地:基于第四候选素数未通过素性测试来重新执行:使用伽罗瓦寄存器或线性反馈移位寄存器来选择第四伪随机整数,生成第四候选素数,以及确定第四候选素数是否满足素性测试,或者由设备基于第四候选素数满足素性测试来使用第四候选素数作为密码协议中的或更大素数的生成中的替换素数整数。
示例8.根据示例1的方法,其中使用密码协议中的素数整数包括:生成私钥,生成公钥,认证从另一设备接收的密钥,或者建立与另一设备的共享密钥。
示例9.一种设备,包括:一个或多个存储器;以及一个或多个处理器,用以:在整数范围内选择伪随机整数;对照筛来检查伪随机整数,以确定基于已知素数整数和伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;选择性地:基于确定候选素数能够被筛素数集合中的任何筛素数整除,重新执行在整数范围内的伪随机整数的选择以及对照筛的伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除,生成用于素性测试的候选素数,其中候选素数基于已知素数整数和伪随机整数;确定候选素数是否满足素性测试;以及选择性地:基于候选素数未通过素性测试来重新执行:伪随机整数的选择,对照筛的伪随机整数的检查,以及伪随机整数的选择和对照筛的伪随机整数的检查的选择性重新执行或候选素数的生成,以及候选素数是否满足素性测试的确定,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或大于候选素数的大素数的生成中的素数整数。
示例10.根据示例9的设备,其中素性测试包括波克林顿测试。
示例11.根据示例9的设备,其中一个或多个处理器还用以:基于伽罗瓦寄存器或线性反馈移位寄存器来选择伪随机整数。
示例12.根据示例9的设备,其中伪随机整数是整数范围内的伪随机起始值。
示例13.根据示例9的设备,其中一个或多个处理器还用以:基于定时阈值的满足,确定用替换已知素数整数来替换已知素数整数;在整数范围内选择附加伪随机整数;对照筛来检查附加伪随机整数,以确定基于替换已知素数整数的乘积和附加伪随机整数而被生成的候选替换素数是否能够被筛素数集合中的任何筛素数整除;选择性地:基于确定候选替换素数能够被筛素数集合中的任何筛素数整除来重新执行:在整数范围内的附加伪随机整数的选择以及对照筛的附加伪随机整数的检查,或者生成用于素性测试的候选替换素数;以及确定候选替换素数是否满足素性测试;以及选择性地:基于候选替换素数未通过素性测试来重新执行:附加伪随机整数的选择,对照筛的附加伪随机整数的检查,以及附加伪随机整数的选择和对照筛的附加伪随机整数的检查的选择性重新执行或候选替换素数的生成,以及附加候选替换素数是否满足素性测试的确定;或者基于候选替换素数满足素性测试来使用候选替换素数作为密码协议中的或大于替换素数整数的替换大素数的生成中的替换素数整数。
示例14.根据示例9的设备,其中当使用密码协议中的素数整数时,一个或多个处理器用以:生成私钥,生成公钥,认证从另一设备接收的密钥,或者建立与另一设备的共享密钥。
示例15.一种存储指令的非瞬态计算机可读介质,指令包括:一个或多个指令,一个或多个指令在由一个或多个处理器执行时,使一个或多个处理器:执行整数范围内的伪随机整数的选择,伪随机整数的选择包括:候选伪随机整数的选择;对照筛的候选伪随机整数的检查的执行,以确定基于候选伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;以及选择性:基于确定候选素数能够被筛素数集合中的任何筛素数整除来重新执行:候选伪随机整数的选择以及对照筛的候选伪随机整数的检查,或者基于确定候选素数不能够被筛素数集合中的任何筛素数整除,用于素性测试的候选素数的生成,其中候选素数基于已知素数整数的乘积和伪随机整数;以及选择性地:基于候选素数未通过素性测试来重新执行伪随机整数的选择的执行,或者基于候选素数满足素性测试来使用候选素数作为密码协议中的或另一素数的生成中的素数整数。
示例16.根据示例15的非瞬态计算机可读介质,其中素性测试包括波克林顿测试。
示例17.根据示例15的非瞬态计算机可读介质,其中候选素数还基于将1与伪随机整数和已知素数整数的乘积相加。
示例18.根据示例15的非瞬态计算机可读介质,其中伪随机整数的第一迭代是整数范围内的伪随机起始值。
示例19.根据示例15的非瞬态计算机可读介质,其中伪随机整数的第二迭代基于伪随机整数的第一迭代。
示例20.根据示例15的非瞬态计算机可读介质,其中使一个或多个处理器使用密码协议中的素数整数的一个或多个指令使一个或多个处理器:生成私钥,生成公钥,认证从另一设备接收的密钥,或者建立与另一设备的共享密钥。
前述公开内容提供了说明和描述,但并不旨在穷举或将实现限制为所公开的精确形式。可以根据以上公开内容进行修改和变化,或者可以从实现的实践中获得修改和变化。
如本文所使用的,术语“组件”旨在被广义地解释为硬件、固件、和/或硬件和软件的组合。
在本文中结合阈值描述了一些实现。如本文中所使用的,取决于上下文,满足阈值可以指的是大于阈值、多于阈值、高于阈值、大于或等于阈值、小于阈值、少于阈值、低于阈值、小于或等于阈值、等于阈值等等。
显而易见的是,本文所描述的系统和/或方法可以以硬件、固件、或硬件和软件的组合的不同形式来实现。用于实现这些系统和/或方法的实际的专用控制硬件或软件代码并不限制实现。因此,本文中不参考特定软件代码来描述系统和/或方法的操作和行为——应理解,可以基于本文的描述将软件和硬件设计为实现系统和/或方法。
即使在权利要求中叙述和/或在说明书中公开了特征的特定组合,这些组合也不旨在限制各种实现的公开。在实践中,许多这些特征可以以权利要求书中未具体叙述和/或说明书中未公开的方式进行组合。尽管下面列出的每个从属权利要求可能仅直接从属于一个权利要求,但是各种实现的公开包括与权利要求组中的每个其他权利要求相结合的每个从属权利要求。
除非如此明确地描述,否则本文中使用的任何元素、动作或指令均不应被解释为关键或必要的。另外,如本文中所使用的,冠词“一”和“一个”旨在包括一个或多个项,并且可以与“一个或多个”互换使用。此外,如本文中所使用的,冠词“该”旨在包括结合冠词“该”引用的一个或多个项目,并且可以与“该一个或多个”互换使用。此外,如本文中所使用的,术语“集合”旨在包括一个或多个项(例如,相关项、不相关项、相关和不相关项的组合等),并且可以与“一个或多个”互换使用。在仅意指一个项目的情况下,使用短语“仅一个”或类似语言。同样,如本文中所使用的,术语“具有”旨在是开放式术语。此外,除非另有明确说明,否则短语“基于”旨在表示“至少部分地基于”。另外,如本文中所使用的,除非另有明确说明(例如,如果与“或者”或“仅其中之一”结合使用),否则术语“或”在一系列中使用时旨在是包括性的,并且可以与“和/或”互换使用。
Claims (20)
1.一种方法,包括:
由设备在整数范围内选择第一伪随机整数;
由所述设备生成用于素性测试的第一候选素数,
其中所述第一候选素数基于已知素数整数的乘积和所述第一伪随机整数;
由所述设备确定所述第一候选素数未通过素性测试;
由所述设备基于伽罗瓦寄存器或线性反馈移位寄存器,在所述整数范围内选择第二伪随机整数;
由所述设备生成用于素性测试的第二候选素数,
其中所述第二候选素数基于所述已知素数整数的所述乘积和所述第二伪随机整数的乘积;
由所述设备确定所述第二候选素数是否满足所述素性测试;以及
选择性地:
由所述设备基于所述第二候选素数未通过所述素性测试来重新执行:使用所述伽罗瓦寄存器或所述线性反馈移位寄存器来选择所述第二伪随机整数,生成所述第二候选素数,以及确定所述第二候选素数是否满足所述素性测试,或者
由所述设备基于所述第二候选素数满足所述素性测试来使用所述第二候选素数作为密码协议中的或另一素数的生成中的素数整数。
2.根据权利要求1所述的方法,其中所述素性测试包括波克林顿测试。
3.根据权利要求1所述的方法,还包括:
对照筛来检查所述第二伪随机整数,以确定基于所述已知素数整数的所述乘积和所述第二伪随机整数的所述第二候选素数是否能够被筛素数集合中的任何筛素数整除;以及
选择性地:
基于所述第二候选素数能够被所述筛素数集合中的任何筛素数整除,确定所述第二候选素数未通过所述素性测试;或者
基于所述第二候选素数不能够被所述筛素数集合中的任何筛素数整除,执行所述素性测试。
4.根据权利要求1所述的方法,其中所述第一候选素数还基于将1与所述已知素数整数的所述乘积和所述第一伪随机整数的乘积相加。
5.根据权利要求1所述的方法,其中所述第一伪随机整数是所述整数范围内的伪随机起始值。
6.根据权利要求1所述的方法,其中所述第二伪随机整数基于所述第一伪随机整数。
7.根据权利要求1所述的方法,还包括:
基于定时阈值的满足,确定用替换素数整数来替换所述素数整数;
在所述整数范围内选择第三伪随机整数;
生成用于素性测试的第三候选素数,
其中所述第三候选素数基于所述已知素数整数的所述乘积和所述第三伪随机整数的乘积;
确定所述第三候选素数未通过所述素性测试;
使用所述伽罗瓦寄存器或所述线性反馈移位寄存器,在所述整数范围内选择第四伪随机整数;
生成用于素性测试的第四候选素数,
其中所述第四候选素数基于所述已知素数整数的所述乘积和所述第四伪随机整数的乘积;确定所述第四候选素数是否满足所述素性测试;以及
选择性地:
基于所述第四候选素数未通过所述素性测试来重新执行:使用所述伽罗瓦寄存器或所述线性反馈移位寄存器来选择所述第四伪随机整数,生成所述第四候选素数,以及确定所述第四候选素数是否满足所述素性测试,或者
由所述设备基于所述第四候选素数满足所述素性测试来使用所述第四候选素数作为所述密码协议中的或更大素数的生成中的所述替换素数整数。
8.根据权利要求1所述的方法,其中使用密码协议中的所述素数整数包括:
生成私钥,
生成公钥,
认证从另一设备接收的密钥,或者
建立与另一设备的共享密钥。
9.一种设备,包括:
一个或多个存储器;以及
一个或多个处理器,用以:
在整数范围内选择伪随机整数;
对照筛来检查所述伪随机整数,以确定基于已知素数整数和所述伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;
选择性地:
基于确定所述候选素数能够被所述筛素数集合中的任何筛素数整除,重新执行在所述整数范围内的所述伪随机整数的所述选择以及对照所述筛的所述伪随机整数的所述检查,或者
基于确定所述候选素数不能够被所述筛素数集合中的任何筛素数整除,生成用于素性测试的所述候选素数,
其中所述候选素数基于所述已知素数整数和所述伪随机整数;
确定所述候选素数是否满足素性测试;以及
选择性地:
基于所述候选素数未通过所述素性测试来重新执行:所述伪随机整数的所述选择,对照所述筛的所述伪随机整数的所述检查,以及所述伪随机整数的所述选择和对照所述筛的所述伪随机整数的所述检查的选择性重新执行或所述候选素数的所述生成,以及所述候选素数是否满足所述素性测试的所述确定,或者
基于所述候选素数满足所述素性测试来使用所述候选素数作为密码协议中的或大于所述候选素数的大素数的生成中的素数整数。
10.根据权利要求9所述的设备,其中所述素性测试包括波克林顿测试。
11.根据权利要求9所述的设备,其中所述一个或多个处理器还用以:
基于伽罗瓦寄存器或线性反馈移位寄存器来选择所述伪随机整数。
12.根据权利要求9所述的设备,其中所述伪随机整数是所述整数范围内的伪随机起始值。
13.根据权利要求9所述的设备,其中所述一个或多个处理器还用以:
基于定时阈值的满足,确定用替换已知素数整数来替换所述已知素数整数;
在所述整数范围内选择附加伪随机整数;
对照所述筛来检查所述附加伪随机整数,以确定基于所述替换已知素数整数的乘积和所述附加伪随机整数而被生成的候选替换素数是否能够被所述筛素数集合中的任何筛素数整除;
选择性地:
基于确定所述候选替换素数能够被所述筛素数集合中的任何筛素数整除来重新执行:在所述整数范围内的所述附加伪随机整数的所述选择以及对照所述筛的所述附加伪随机整数的所述检查,或者
生成用于素性测试的所述候选替换素数;以及
确定所述候选替换素数是否满足所述素性测试;以及
选择性地:
基于所述候选替换素数未通过所述素性测试来重新执行:所述附加伪随机整数的所述选择,对照所述筛的所述附加伪随机整数的所述检查,以及所述附加伪随机整数的所述选择和对照所述筛的所述附加伪随机整数的所述检查的选择性重新执行或所述候选替换素数的所述生成,以及附加候选替换素数是否满足所述素性测试的所述确定;或者
基于所述候选替换素数满足所述素性测试来使用所述候选替换素数作为所述密码协议中的或大于所述替换素数整数的替换大素数的生成中的所述替换素数整数。
14.根据权利要求9所述的设备,其中当使用密码协议中的所述素数整数时,所述一个或多个处理器用以:
生成私钥,
生成公钥,
认证从另一设备接收的密钥,或者
建立与另一设备的共享密钥。
15.一种存储指令的非瞬态计算机可读介质,所述指令包括:
一个或多个指令,所述一个或多个指令在由一个或多个处理器执行时,使所述一个或多个处理器:
执行整数范围内的伪随机整数的选择,所述伪随机整数的所述选择包括:
候选伪随机整数的选择;
对照筛的所述候选伪随机整数的检查的执行,以确定基于所述候选伪随机整数的候选素数是否能够被筛素数集合中的任何筛素数整除;以及
选择性:
基于确定所述候选素数能够被所述筛素数集合中的任何筛素数整除来重新执行:所述候选伪随机整数的所述选择以及对照所述筛的所述候选伪随机整数的所述检查,或者
基于确定所述候选素数不能够被所述筛素数集合中的任何筛素数整除,用于素性测试的所述候选素数的生成,
其中所述候选素数基于已知素数整数的乘积和所述伪随机整数;以及
选择性地:
基于所述候选素数未通过素性测试来重新执行所述伪随机整数的所述选择的所述执行,或者
基于所述候选素数满足所述素性测试来使用所述候选素数作为密码协议中的或另一素数的生成中的素数整数。
16.根据权利要求15所述的非瞬态计算机可读介质,其中所述素性测试包括波克林顿测试。
17.根据权利要求15所述的非瞬态计算机可读介质,其中所述候选素数还基于将1与所述伪随机整数和已知素数整数的所述乘积相加。
18.根据权利要求15所述的非瞬态计算机可读介质,其中所述伪随机整数的第一迭代是所述整数范围内的伪随机起始值。
19.根据权利要求15所述的非瞬态计算机可读介质,其中所述伪随机整数的第二迭代基于所述伪随机整数的第一迭代。
20.根据权利要求15所述的非瞬态计算机可读介质,其中使所述一个或多个处理器使用密码协议中的所述素数整数的所述一个或多个指令使所述一个或多个处理器:
生成私钥,
生成公钥,
认证从另一设备接收的密钥,或者
建立与另一设备的共享密钥。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/852,172 US11411732B2 (en) | 2020-04-17 | 2020-04-17 | Prime number generation for encryption |
US16/852,172 | 2020-04-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113541949A true CN113541949A (zh) | 2021-10-22 |
Family
ID=70977461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010502091.4A Pending CN113541949A (zh) | 2020-04-17 | 2020-06-04 | 用于加密的素数数字生成 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11411732B2 (zh) |
EP (1) | EP3896896A1 (zh) |
CN (1) | CN113541949A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117858079A (zh) * | 2024-03-07 | 2024-04-09 | 四川众璟建设工程有限公司 | 一种楼宇对讲系统的安全控制方法 |
CN117858079B (zh) * | 2024-03-07 | 2024-05-31 | 四川众璟建设工程有限公司 | 一种楼宇对讲系统的安全控制方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11748297B2 (en) * | 2019-04-26 | 2023-09-05 | Csub Auxiliary For Sponsored Programs Administration | Reconfigurable security hardware and methods for internet of things (IOT) systems |
US20220085998A1 (en) * | 2020-09-11 | 2022-03-17 | Cryptography Research, Inc. | System and method to generate prime numbers in cryptographic applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040090907A1 (en) * | 2002-08-19 | 2004-05-13 | Analog Devices, Inc. | Fast linear feedback shift register engine |
US20140355758A1 (en) * | 2011-12-15 | 2014-12-04 | Inside Secure | Method of generating prime numbers proven suitable for chip cards |
EP3364592A1 (en) * | 2017-02-21 | 2018-08-22 | Gemalto Sa | Method for generating a prime number for a cryptographic application |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003122251A (ja) | 2001-10-10 | 2003-04-25 | Sony Corp | 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体 |
US8472620B2 (en) * | 2007-06-15 | 2013-06-25 | Sony Corporation | Generation of device dependent RSA key |
US9434444B2 (en) * | 2013-11-08 | 2016-09-06 | Shimano Inc. | Bicycle hydraulic actuating device |
WO2018015464A1 (en) * | 2016-07-21 | 2018-01-25 | Nagravision S.A. | Method and device to verify if a number is prime |
US11470472B2 (en) * | 2019-05-31 | 2022-10-11 | Logitech Europe S.A. | Secure wireless communication with peripheral device |
-
2020
- 2020-04-17 US US16/852,172 patent/US11411732B2/en active Active
- 2020-06-03 EP EP20178085.5A patent/EP3896896A1/en active Pending
- 2020-06-04 CN CN202010502091.4A patent/CN113541949A/zh active Pending
-
2022
- 2022-07-29 US US17/816,057 patent/US20220385466A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040090907A1 (en) * | 2002-08-19 | 2004-05-13 | Analog Devices, Inc. | Fast linear feedback shift register engine |
US20140355758A1 (en) * | 2011-12-15 | 2014-12-04 | Inside Secure | Method of generating prime numbers proven suitable for chip cards |
EP3364592A1 (en) * | 2017-02-21 | 2018-08-22 | Gemalto Sa | Method for generating a prime number for a cryptographic application |
CN110495133A (zh) * | 2017-02-21 | 2019-11-22 | 泰雷兹数字安全法国股份有限公司 | 用于生成用于密码应用的素数的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117858079A (zh) * | 2024-03-07 | 2024-04-09 | 四川众璟建设工程有限公司 | 一种楼宇对讲系统的安全控制方法 |
CN117858079B (zh) * | 2024-03-07 | 2024-05-31 | 四川众璟建设工程有限公司 | 一种楼宇对讲系统的安全控制方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3896896A1 (en) | 2021-10-20 |
US11411732B2 (en) | 2022-08-09 |
US20220385466A1 (en) | 2022-12-01 |
US20210328792A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9577826B2 (en) | Method of generating proven prime numbers suitable for being implemented in a smart card | |
Nara et al. | Scan-based attack against elliptic curve cryptosystems | |
US20220385466A1 (en) | Prime number generation for encryption | |
EP1583278B1 (en) | Stream Cipher Design with Revolving Buffers | |
US20100020964A1 (en) | Key generation method using quadratic-hyperbolic curve group | |
US9680647B2 (en) | Method of using a token in cryptography | |
JP5648177B2 (ja) | サイドチャネル攻撃に対する素数生成の保護 | |
JP2009229615A (ja) | データ処理システム及びデータ処理方法 | |
Bahadori et al. | A novel approach for secure and fast generation of RSA public and private keys on SmartCard | |
Wang et al. | Evaluating optimized implementations of stream cipher ZUC algorithm on FPGA | |
JP5143817B2 (ja) | ハッシュ暗号装置及び方法 | |
Kasianchuk et al. | Symmetric cryptoalgorithms in the residue number system | |
JP2008530606A (ja) | 擬似ランダム・データ・シーケンスを発生するための方法、システム及び装置 | |
JP2006023647A (ja) | 乗算剰余演算器及び情報処理装置 | |
US11791981B2 (en) | Generating cryptographic random data from raw random data | |
KR101472800B1 (ko) | 공개키 암호화 연산에서의 윈도우의 크기를 변경하는 방법 | |
WO2018015464A1 (en) | Method and device to verify if a number is prime | |
US8850213B2 (en) | Method for verifying an electronic signature and data processing device | |
US7068785B2 (en) | Table driven method for calculating arithmetic inverse for use in cryptography | |
US20230195943A1 (en) | Processor architecture and related techniques | |
Wang et al. | Integral Sampler and Polynomial Multiplication Architecture for Lattice-based Cryptography | |
Kitbumrung et al. | ECC dynamic point encoding on mobile device | |
CN117254909B (zh) | 一种快速生成高概率原根的计算方法、系统及存储介质 | |
CN107040380A (zh) | 一种基于二进制域的椭圆曲线密码体制的改进模除方法 | |
US20220021533A1 (en) | Proving prime integers for encryption |
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 |