CN111279307A - 随机数生成器 - Google Patents
随机数生成器 Download PDFInfo
- Publication number
- CN111279307A CN111279307A CN201780091668.3A CN201780091668A CN111279307A CN 111279307 A CN111279307 A CN 111279307A CN 201780091668 A CN201780091668 A CN 201780091668A CN 111279307 A CN111279307 A CN 111279307A
- Authority
- CN
- China
- Prior art keywords
- bits
- bit
- prng
- aes
- branch
- 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.)
- Granted
Links
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/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种用于生成随机数(202)的方法(300)包括初始化伪随机数生成器(PRNG)(200),该伪随机数生成器(PRNG)(200)具有包括内部位和外部位的2048位的状态,内部位包括2048位的前128位,外部位包括2048位的剩余位。该方法还包括:从密钥源(192)检索AES轮密钥(192),并且针对阈值次数,使用AES轮密钥(192),通过将具有16个128位的分支的Feistel网络中的奇数分支(220)与Feistel网络中的对应的偶数相邻分支的函数进行异或运算来执行轮函数;该方法还包括执行置换后状态的所述内部位与先前状态的所述内部位的异或运算。
Description
技术领域
本公开涉及生成随机数。
背景技术
在对大数据流进行分类,洗牌和/或采样以保持属于客户端的数据安全时,随机化算法通常依赖于伪随机数生成器(PRNG)。PRNG使用确定性算法从被称为种子的随机输入以非常快的速度生成伪随机数。当对手可以预测PRNG的行为时,依赖于PRNG的算法可能失去其性能保证。在提供对对手的抗攻击的同时,强PRNG通常遭受缓慢的应变方法时间。另一方面,快速PRNG通常容易预测,使得PRNG容易受到攻击者/对手的意外关联或利用的攻击。因此,当为随机化应用选择PRNG时,开发者常常不得不确定适当的安全/速度折衷。通常,开发者不知道随机化应用可能易受对手攻击,因此不愿牺牲安全的速度。审计成千上万的随机生成器使用来识别安全/速度折衷的任务是因为它昂贵而令人怯步。
发明内容
本公开的一个方面提供了一种用于生成伪随机数的方法。该方法包括通过数据处理硬件初始化具有包括内部位和外部位的2048位的状态的伪随机数生成器(PRNG)。内部位包括2048位的前128位,外部位包括2048位的剩余位。该方法还包括由数据处理硬件通过从密钥源检索高级加密标准(AES)轮密钥来置换PRNG的状态。该方法还包括通过使用AES轮密钥执行轮函数,来将PRNG的状态置换阈值次数。轮函数包括将具有16个128位的分支的Feistel网络中的奇数分支与Feistel网络中的对应的偶数相邻分支的函数进行异或运算。对于阈值次数,该方法还包括通过将每个128位的分支洗牌成规定的顺序来置换PRNG的状态。该方法还包括由数据处理硬件执行置换后状态的内部位与先前状态的内部位的异或运算。
然后,一些或所有状态,特别是一些或所有外部位,可以用作或提供伪随机数,用于进一步使用根据需要进行操作。
Feistel网络可以是一般化的Feistel网络,或者更具体地是一般化的type-2Feistel网络。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,初始化PRNG包括将PRNG的状态设置为零,并将外部位设置为任意种子值。可选地,初始化PRNG还可以包括将PRNG的状态设置为先前状态。阈值次数可以包括至少17次。在一些示例中,轮函数包括至少两轮AES。在这些示例中,至少两轮AES中的每一轮可以使用与其它轮AES的AES轮密钥不同的对应AES轮密钥。
在一些示例中,将Feistel网络的奇数分支与Feistel网络的对应的偶数相邻分支的函数进行异或运算,得到随机位。在这些示例中,外部位包括所得到的随机位。在执行所述轮函数并将每个分支洗牌八次之后,将每个128位的分支洗牌成规定的顺序实现了完全子分支扩散。在一些实施方式中,规定的顺序包括{7、2、13、4、11、8、3、6、15、0、9、10、1、14、5、12}。可选地,该方法可以包括防止访问内部位和允许访问外部位。
本公开还提供了一个或多个计算机可读介质,其包括计算机程序代码,所述计算机程序代码被安排成当在适当的计算机设备上实施时执行所述方法。
本公开还提供了设置成实施所述方法的装置。例如,本公开的另一方面提供了一种用于生成随机数的系统。该系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储当在数据处理硬件上执行时使数据处理硬件执行操作的指令。该操作包括初始化伪随机数生成器(PRNG),伪随机数生成器(PRNG)具有包括内部位和外部位的2048位的状态。内部位包括2048位的前128位,外部位包括2048位的剩余位。所述操作还包括通过从密钥源检索高级加密标准(AES)轮密钥来置换PRNG的状态。置换PRNG的状态还包括,对于阈值次数,使用AES轮密钥执行轮函数。轮函数包括将具有16个128位的分支的Feistel网络的奇数分支与Feistel网络的对应偶数相邻分支的函数进行异或运算。置换PRNG的状态还包括,对于阈值次数,将每个128位的分支洗牌成规定的顺序。所述操作还包括执行置换状态的内部位与先前状态的内部位的异或运算。
本公开的实现可以包括以下可选特征中的一个或多个。在系统的一些配置中,初始化PRNG包括将PRNG的状态设置为零,并将外部位设置为任意种子值。阈值次数可以包括至少17次。在一些示例中,轮函数包括至少两轮AES。在这些示例中,至少两轮AES中的每一轮可以使用与其它轮AES的AES轮密钥不同的对应AES轮密钥。
在一些实施方式中,将Feistel网络的奇数分支与Feistel网络的对应偶数的相邻分支的函数进行异或运算,得到随机位。在执行轮函数和将每个分支洗牌八次之后,将每个128位的分支洗牌成规定的顺序可以实现完全子分支扩散。在一些实施方式中,规定的顺序包括{7、2、13、4、11、8、3、6、15、0、9、10、1、14、5、12}。可选地,该方法可以包括防止访问内部位和允许访问外部位。
本公开的一个或多个实现的细节在附图和以下描述中阐述。从说明书和附图以及从权利要求书中,其它方面,特征和优点将是显而易见的。
附图说明
图1是用于生成随机数的示例系统的示意图。
图2A和2B是实施具有16个128位的分支的一般化的Feistel网络的示例性伪随机数生成器(PRNG)的示意图。
图2C是图2A和2B的PRNG执行置换后状态的内部位与先前状态的内部位之间的异或运算的示意图。
图3是用于生成随机数的示例方法的流程图。
图4是示例性计算设备的示意图。
在各个附图中相同的附图标记表示相同的元件。
具体实施方式
本文中的实施方式针对一种伪随机数生成器(PRNG),其实现与现有的通用随机数生成器相等的运行时间成本,同时提供更高的基线安全级别。例如,“较高的基线安全级别”是指以经验随机性,不可预测性和回溯阻力的特性为特征的PRNG。现有的通用随机数生成器可以表现出经验随机性,不可预测性和回溯阻力这些特性中的一个或两个特性,但是都不知道表现出所有三个特性而没有严重牺牲速度(例如,增加运行时间成本)。
如本文所用,“经验随机性”是指PRNG表现出降低的缺陷可能性,例如可能影响模拟的相关性,“不可预测性”是指PRNG能够防止能够生成和存储≥264个随机输出的相对强大的对手预测未来输出,除非他们知道PRNG的当前状态。因此,对手仅具有可忽略的正确预测PRNG未来输出的概率,除非对手获得对当前状态的访问,或者能够发出至少264个查询。由于对手可能花费超过110,000USD来发出至少264个查询的攻击,因此选择264下界作为保守估计,以阻止潜在攻击者尝试预测随机输出。PRNG的“不可预测性”还通过使对手更难在随机化算法中触发最坏情况或影响随机化在线采样算法所提取的样本来使PRNG对于非密码应用有用。最后,“回溯阻力”指的是即使PRNG的当前状态受损,PRNG也防止过去输出的重构。尽管“回溯阻力”的特性对于模拟应用可能不是必需的,但是这将适当地防止对手发现过去行为的输出,通过该过去行为的输出,输入样本被找到/采样。
在一些实施方式中,PRNG采用具有16个128位分支的通用的type-2Feistel网络,并且通过使用高级加密标准轮密钥执行轮函数、并且在执行轮函数之后将128位的每个分支洗牌成指定顺序来置换PRNG的状态。置换可以重复执行轮函数和随后的阈值次数的洗牌,以使洗牌成功地实现全位扩散。如这里所使用的,术语“阈值次数”可以是指阈值数置换轮,其中每个置换轮使用AES密钥和随后的洗牌来执行相应的轮函数。在一些示例中,阈值次数包括用于全位扩散的至少17次,因为洗牌在16轮之后实现两个子块扩散。此外,执行轮函数可以包括执行至少两轮AES以便实现全位扩散。通常,在有效替换盒的比率方面,单轮AES比两轮AES效率低。
参考图1,在一些实施方式中,系统100包括与用户10相关联的一个或多个客户端设备110,110a-n,用户10可以经由网络130与远程系统140通信。远程系统140可以是具有可伸缩/弹性资源142的分布式系统(例如,云环境)。资源142包括计算资源144(例如,数据处理硬件)和/或存储资源146(例如,存储器硬件)。在一些实施方式中,远程系统140执行密钥源190,该密钥源190包含与密钥源190通信的高级加密标准(AES)轮密钥192和伪随机数生成器(PRNG)200,并被配置为通过执行使用从密钥源190检索到的AES轮密钥192的轮函数来生成随机位202。如这里所使用的,术语随机位202和随机数可以互换地使用。轮函数可以包括两轮AES,每轮AES使用与另一轮AES的AES轮密钥192不同的对应AES轮密钥192。轮函数还可以包括多于两轮的AES,其中每轮AES使用不同的对应AES轮密钥192。AES轮密钥192可以是密集的并且彼此独立,以确保对应轮的AES破坏具有全等列的明文的对称性,从而避免对手的攻击。
在一些示例中,远程系统140执行用于管理对PRNG 200的访问的PRNG管理器150。客户端设备110可以是能够通过网络130与PRNG管理器150通信的任何计算设备。客户端设备110包括但不限于台式计算设备和移动计算设备,诸如膝上型计算机,平板电脑,智能电话和可佩戴计算设备(例如,头戴式耳机和/或手表)。客户端设备110可以对应于远程系统140的用户10,其部署和/或访问在远程系统140上执行的软件应用170。例如,远程系统140可以执行在存储器硬件内具有一个或多个容器180,180a-n的容器环境,一个或多个容器180的内容可以与在远程系统140上执行的软件应用170共同关联。客户机设备110可以附加地或替代地执行软件应用170。
在一些实施方式中,PRNG 200响应于从客户端设备110接收到随机数请求120而生成随机数202,并且PRNG管理器150将随机数202发送回客户端设备110。附加地或替代地,在远程系统140上执行的软件应用170可以提供随机数请求120,并且直接从PRNG管理器150接收由PRNG 200生成的随机数202。本公开不限于提供请求120的任何一个特定源。实际上,PRNG 200可以被配置为独立于接收请求120而生成随机位202。在某些情况下,软件应用170使用随机数202作为输入种子值。在其它情况下,软件应用164对应于游戏应用,例如电子彩票,其使用PRNG 200输出的随机数202作为彩票号码(或彩票号码序列)。PRNG 200可以生成随机数/位202,以供需要随机数的任何任务/算法使用。
参照图1和2A-2C,在一些实施方式中,PRNG 200具有包括内部位210i和外部位210o的2048位210的状态。内部位210i包括第一个128位,外部位210o包括2048位中的剩余位。内部位210i对应于与海绵“容量”相关的不可访问的“内部”部分。在密码术中,海绵功能或海绵结构是具有有限内部状态的一类算法,其采用任何长度的输入位流并产生任何期望长度的输出位流。数据处理硬件142初始化(i)PRNG 200,然后实现Feistel网络以置换PRNG200的状态,用于生成随机数202。由于PRNG 200被配置为生成随机数202的可再现序列,因此不希望从外部熵源中播种状态。在一些情况下,初始化PRNG 200包括将PRNG 200的状态设置为零,并且可选地将外部位210o中的至少一部分设置为任意用户指定的种子值。在其它情况下,初始化PRNG 200包括将PRNG 200的状态设置为先前状态。这种初始化PRNG 200的情况可以在首先通过将状态设置为零并将外部位210o设置为任意用户指定的种子值的初始化来构造PRNG 200之后使用。
在初始化PRNG 200之后,数据处理硬件142通过从密钥源190检索AES轮密钥192开始置换。Feistel网络包括16个分支220,每个分支具有128位。Feistel网络包括通常保留用于从较小块/分支(例如,16位到32位块)构造大置换的通用type-2Feistel网络。通用type-2Feistel网络构造是“有声的”,即它们在伪随机函数的足够多次置换轮之后产生强伪随机置换。然而,与使用具有多于八(8)个分支/块的Feistel网络的一些现有数目的生成器不同,这里公开的Feistel网络不依赖于多个独立的输入。在图2A所示的示例中,当PRNG 200被初始化(i)时,第一分支S0 220包括内部位210i(例如,128位),而第二到第十六分支S1-S15 220包括外部位210o(例如,每个分支S1-S15中的128个外部位)。置换包括两个步骤:(1)执行轮函数;和(2)执行轮函数后,将128位的每个分支220洗牌成规定的顺序。
在置换的第一步骤期间,数据处理硬件142使用AES轮密钥192执行轮函数。轮函数可以包括在数据处理硬件142上加速的AES块密码硬件,并且可以使用AESNI指令,使得轮函数比优化软件实施方式快5到10倍,同时优于现有随机数生成器的置换。PRNG 200采用的轮函数使用XOR(异或)240,用于将Feistel网络的奇数的分支220与Feistel网络的对应偶数的相邻分支220的函数230进行异或运算。在所示的示例中,轮函数将奇数的分支S1 220与对应的偶数的相邻分支S0 220的函数230进行异或运算,以输出对应的随机外部位210OR。类似地,轮函数将奇数的分支S3 220与对应的偶数的相邻分支S2 220进行异或运算,以输出对应的随机外部位210OR,依此类推,直到轮函数将最后一个奇数的分支S15 220与对应的偶数的相邻分支S14 220进行异或运算,以输出对应的随机外部位210OR。因此,因为一个轮函数包括两(2)个相邻的偶数-奇数分支220,所以置换并行地执行八(8)个轮函数。相反,传统的置换技术一次只执行一个轮函数,或者最多并行地执行四到六个轮函数。然而,由于最近以来在硬件加速处理器中的进步,PRNG 200能够并行地执行八(8)个轮函数,每个轮函数包括至少两轮AES。
为PRNG 200提供2,048位的状态使得能够并行评估轮函数,从而隐藏与AESENC指令相关联的长等待时间。相反,由较慢的计算性能所限制的现有数目的生成器通常具有256位的状态,从而仅需要具有8个分支的Feistel网络,每个分支具有32位,总共需要四(4)个轮函数来置换分支。
在一些示例中,轮函数包括至少两轮AES,其中每一轮AES使用与另一轮AES的AES轮密钥192不同的对应AES轮密钥192。例如,包括两轮AES的轮函数可以表示如下。
在置换的第二步骤期间,洗牌器250将128位的每个分支220洗牌成规定的顺序。例如,洗牌器从偶数的分支S0,S2,……S14 220中的每一个接收位210、以及通过轮函数将Feistel网络的每个奇数的分支220与Feistel网络的对应的偶数的相邻分支220的函数230进行异或运算而生成的随机外部位210OR。在一些示例中,选择洗牌器250的指定顺序,使得Feistel网络在八(8)次置换轮之后达到完全子分支扩散,例如,执行八(8)次轮函数和随后的洗牌。这里,术语“全子分支扩散”是指取决于每个其它输入分支220的Feistel网络的每个分支220。相比之下,使用循环移位的传统洗牌技术将需要在16个分支上进行16个置换轮,以实现完全子分支扩散,且因此较慢。在一个实施方式中,洗牌器250的规定顺序包括{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12},已知为置换16个分支提供最佳防攻击的顺序。例如,用于将分支220洗牌成规定顺序的置换步骤可以表示如下:
如图2A所示,洗牌器250在第一置换轮期间以规定的顺序输出经洗牌的分支S'1,S'2,S'3,S'4,……S'14,S'15 220'。如上所述,置换可以重复执行轮函数和随后的阈值数目(n)的置换轮(例如,阈值次数),以便使置换成功地实现全位扩散。因此,发生在第一次置换轮之后的每次置换轮使用在紧接着的前一次置换轮期间由洗牌器250输出的经洗牌的分支220。例如,图2B示出了使用从第一置换轮输出的经洗牌的分支S'1,S'2,……S'14,S'15 220'作为用于执行轮函数和随后的洗牌的对应输入的第二置换轮,如上参考图2A所述。这里,洗牌器250在第二置换轮期间以规定的顺序输出洗牌分支S”1,S”2,……S”14,S”15 220”,由此第三置换轮使用这些经洗牌的分支作为用于执行轮函数和随后的洗牌的输入,以规定的顺序输出经洗牌的分支S'”1,S'”2,……S'”14,S'”15 220'”。图2B示出了重复执行轮函数和随后的洗牌的置换,直到达到阈值数目(n)的置换轮,由此洗牌器250以规定的顺序输出经洗牌的分支Sn 1,Sn 2,……Sn 1,Sn 15 220n。这里,分支Sn 1,Sn 2,……Sn 1,Sn 15 220n包含2,048位的置换状态。在一些实施方式方式中,阈值数目(n)的置换轮包括至少17次置换轮(例如,n=17),用于实现全位扩散,因为将每个128位的分支洗牌成规定顺序{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}在16次置换轮之后实现了两个子块扩散。
如上所述,数据处理硬件142可以在置换时从密钥源190检索AES轮密钥192。密钥源190是密码安全的,并且可以在初始化PRNG 200时使用任何技术来生成AES轮密钥192。初始化PRNG 200并为PRNG 200的状态置换17次置换轮可以表示如下。
继续参考图2B,第一分支Sn 1 220n包括与置换状态的2,048位的第一128位相对应的置换内部位210ip,而第二到第十六分支SN2-Sn 15每个包括与置换状态的2,048位的剩余位相对应的置换随机外部位210OR。这里,随机外部位210OR对应于由PRNG 200生成和输出的随机数/位202,以便由在远程系统140和/或客户端设备110上执行的软件应用170所使用。
参考图2C,在一些实施方式中,PRNG 200(例如,经由数据处理硬件142)执行置换后状态(例如,状态[1])的置换后内部位210ip与先前状态(例如,状态[0])的内部位210i的异或运算,以产生异或运算后的内部位210ix。在所示的例子中,当PRNG 200被初始化时(图2A),先前状态的内部位210i包括第一分支S0 220的第一128位。这里,异或运算后的内部位210ix向PRNG 200提供上述“回溯阻力”,从而即使PRNG 200的当前状态(例如,置换状态[1])被折衷,也防止对过去输出的重构。因此,对手不能期望利用对置换的少于2127个的前向或后向查询(例如,通过猜测异或运算后的内部位210ix)来区分先前的输出和随机。因此,PRNG 200允许访问对应于随机数/位202的随机外部位210OR,并防止访问内部位210i,210ix。执行置换状态的内部位与先前状态的内部位的XOR可以表示如下。
图3是用于生成随机数的示例方法300的流程图。当数据处理硬件142初始化具有2048位的状态的伪随机数生成器(PRNG)时,流程图开始于操作302,该2048位包括内部位210i,210和外部位210o,210。内部位210i包括2048位中的前128位,而外部位210o包括2048位中的剩余位。初始化PRNG 200的状态可以包括将PRNG 200的状态设置为零以及将外部位210o设置为任意种子值。任意种子值可以是用户指定的。在其它示例中,初始化PRNG 200的状态包括将PRNG 200的状态设置为先前状态。
在操作304,数据处理硬件142通过首先从密钥源190检索高级加密标准(AES)轮密钥192来置换PRNG 200的状态。数据处理硬件142可以检索至少两个不同的AES轮密钥192,并且密钥源190可以是密码安全的。对于阈值次数,数据处理142还通过使用AES轮密钥192执行轮函数并对分支220进行洗牌来置换PRNG 200的状态。具体地,在操作306,使用AES轮密钥192执行轮函数包括将具有16个128位的分支的Feistel网络的奇数分支220与Feistel网络的对应的偶数相邻分支220的函数进行异或运算。在一些示例中,轮函数包括至少两轮AES。至少两轮AES中的每一轮可以包括与另一轮AES的AES轮密钥192不同的对应AES轮密钥192。在操作308,对分支220进行洗牌包括将每个128位的分支220洗牌成规定的顺序。可以选择规定的顺序,以在执行轮函数并对每个分支220进行八次洗牌之后实现完全子分支扩散。在一些示例中,规定的顺序包括{7、2、13、4、11、8、3、6、15、0、9、10、1、14、5、12}。在一些实施方式中,阈值次数包括至少17次,以便置换实现全位扩散。在操作308,数据处理硬件142执行置换后状态的内部位210,210iP与先前状态的内部位210i的异或运算。异或运算产生异或运算后的内部位210ix,以向PRNG 200提“回溯阻力”,从而即使PRNG 200的当前状态(例如,置换状态[1])受损,也防止对过去输出的重构。
软件应用(即,软件资源)可以指使计算设备执行任务的计算机软件。在一些示例中,软件应用程序可被称为"应用","app"或"程序"。示例应用包括但不限于系统诊断应用、系统管理应用、系统维护应用、字处理应用,电子表格应用,消息应用,媒体流应用,社交网络应用和游戏应用。
非暂时性存储器可以是用于临时或永久地存储由计算设备使用的程序(例如,指令序列)或数据(例如,程序状态信息)的物理设备。非暂时性存储器可以是易失性和/或非易失性可寻址半导体存储器。非易失性存储器的示例包括但不限于闪存存储器和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM)以及磁盘或磁带。
图4是可用于实施本文档中描述的系统和方法的示例性计算设备400的示意图。计算设备400旨在表示各种形式的数字计算机,例如膝上型计算机,台式计算机,工作站,个人数字助理,服务器,刀片服务器,大型机和其它适当的计算机。这里所示的组件,它们的连接和关系以及它们的功能仅仅是示例性的,而不是要限制在本文件中描述和/或要求保护的本发明的实施方式。
计算设备400包括处理器410,存储器420,存储设备430,连接到存储器420和高速扩展端口440的高速接口/控制器440,以及连接到低速总线470和存储设备430的低速接口/控制器460。PRNG 200可以驻留在计算设备400上。组件410,420,430,440,450和460中的每一个使用各种总线互连,并且可以适当地安装在公共母板上或以其它方式安装。处理器410(例如,数据处理硬件142)可处理用于在计算装置400内执行的指令,包括存储在存储器420中或存储装置430上的指令,以在外部输入/输出装置(例如,耦合到高速接口440的显示器480)上显示图形用户界面(GUI)的图形信息。在其它实施方式中,可以适当地使用多个处理器和/或多条总线以及多个存储器和多种存储器。此外,可以连接多个计算设备400,其中每个设备提供必要操作的部分(例如,作为服务器库,一组刀片服务器,或多处理器系统)。
存储器420(例如,存储器硬件144)在计算设备400内暂时时地存储信息。存储器420可以是计算机可读介质,易失性存储器单元或非易失性存储器单元。非暂时性存储器420可以是用于临时或永久地存储由计算设备400使用的程序(例如,指令序列)或数据(例如,程序状态信息)的物理设备。非易失性存储器的示例包括但不限于闪存存储器和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM)以及磁盘或磁带。
存储设备430能够为计算设备400提供大容量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以是软盘设备,硬盘设备,光盘设备,或磁带设备,闪存或其它类似的固态存储器设备,或设备阵列,包括存储区域网络或其它配置中的设备。在另外的实施方式中,计算机程序产品被有形地包含在信息载体中。计算机程序产品包含指令,所述指令在被执行时执行一个或多个方法,例如上述的那些方法。信息载体是计算机可读介质或机器可读介质,例如存储器420,存储设备430或处理器410上的存储器。
高速控制器440管理计算设备400的超带宽操作,而低速控制器460管理较低的超带宽操作。这种职责的分配仅是示例性的。在某些方面实现方式,高速控制器440耦合到存储器420,显示器480(例如,通过图形处理器或加速器)以及高速扩展端口450,高速扩展端口450可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器460耦合到存储设备430和低速扩展端口490。可以包括各种通信端口(例如,USB,蓝牙,以太网,无线以太网)的低速扩展端口490可以例如通过网络适配器耦合到一个或多个输入/输出设备,例如键盘,定点设备,扫描仪,或联网设备,例如交换机或路由器。
计算设备400可以以多种不同的形式来实施,如图所示。例如,它可以被实施为标准服务器400a或者在一组这样的服务器400a,实施为膝上型计算机400b,或者实施为机架服务器系统400c的一部分。
在此描述的系统和技术的各种实现可以在数字电子和/或光学电路,集成电路,专门设计的ASIC(专用集成电路),计算机硬件,固件,软件和/或其组合中实现。这些各种实施方式可以包括在可编程系统可执行和/或可翻译的一个或多个计算机程序中的实施方式,可编程系统包括至少一个可编程处理器,所述可编程处理器可以是专用或通用的,所述可编程处理器被耦合以从存储系统,至少一个输入设备和至少一个输出设备接收数据和指令,并向存储系统,至少一个输入设备和至少一个输出设备发送数据和指令。
这些计算机程序(也称为程序,软件,软件应用或代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来实施。如本文所用,术语"机器可读介质"和"计算机可读介质"是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品,非暂时性计算机可读介质,装置和/或设备(例如,磁盘,光盘,存储器,可编程逻辑设备(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语"机器可读信号"是指用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路执行,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个大容量存储设备或被可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,所述大容量存储设备用于存储数据,例如是磁盘,磁光盘或光盘。然而,计算机不必具有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,介质和存储器设备,包括例如半导体存储器设备,例如EPROM,EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实现,计算机具有显示设备以及可选地键盘和指示设备,显示设备例如是CRT(阴极射线管),LCD(液晶显示器)监视器,或者用于向用户显示信息的触摸屏,键盘和指示设备例如是鼠标或轨迹球,通过键盘和指示设备,用户可以向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户进行交互;例如,通过响应于从网页浏览器接收的请求来向用户的客户端设备上的网页浏览器发送网页。
已经描述了许多实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其它实施方式也在所附权利要求的范围内。
Claims (20)
1.一种用于生成随机数(202)的方法(300),其特征在于,所述方法(300)包括:
由数据处理硬件(142)初始化伪随机数生成器(PRNG)(200),所述伪随机数生成器(PRNG)(200)具有包括内部位(210i)和外部位(210o)的2048位的状态,所述内部位(210i)包括所述2048位的前128位,所述外部位(210o)包括所述2048位的剩余位;
由所述数据处理硬件(142)通过以下步骤来置换所述PRNG(200)的所述状态:
从密钥源(190)检索高级加密标准(AES)轮密钥(192);以及
针对阈值次数:
使用所述AES轮密钥(192)来执行轮函数,所述轮函数包括将具有16个128位的分支(220)的Feistel网络中的奇数分支(220)与所述Feistel网络中的对应的偶数相邻分支(220)的函数进行异或运算;和
将每个128位的分支(220)洗牌成规定的顺序;以及
由所述数据处理硬件(142)执行置换后状态的所述内部位(210i)与先前状态的所述内部位(210i)的异或运算。
2.如权利要求1所述的方法(300),其特征在于,初始化所述PRNG(200)包括:
将所述PRNG(200)的状态设置为零;和
将所述外部位(210)设置为任意种子值。
3.如权利要求1所述的方法(300),其特征在于,初始化所述PRNG(200)包括将所述PRNG(200)的所述状态设置为先前状态。
4.如前述权利要求中任一项所述的方法(300),其特征在于,所述阈值次数包括至少17次。
5.如前述权利要求中任一项所述的方法(300),其特征在于,所述轮函数包括至少两轮AES。
6.如前述权利要求中任一项所述的方法(300),其特征在于,所述至少两轮AES中的每一轮使用与其它轮AES的所述AES轮密钥(192)不同的对应AES轮密钥(192)。
7.如前述权利要求中任一项所述的方法(300),其特征在于,将所述Feistel网络的所述奇数分支(220)与所述Feistel网络的对应的偶数相邻分支(220)的所述函数进行异或运算得到随机位(210),所述外部位(210o)包括所得到的所述随机位(210)。
8.如前述权利要求中任一项所述的方法(300),其特征在于,在执行所述轮函数并将每个分支(220)洗牌八次之后,将每个128位的分支(220)洗牌成所述规定的顺序实现了完全子分支扩散。
9.如前述权利要求中任一项所述的方法(300),其特征在于,所述规定的顺序包括{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}。
10.如前述权利要求中任一项所述的方法(300),其特征在于,还包括防止访问所述内部位(210i)并允许访问所述外部位(210o)。
11.一种系统(100),其特征在于,包括:
数据处理硬件(142);和
与所述数据处理硬件(142)通信的存储器硬件(144),所述存储器硬件(144)存储指令,所述指令在所述数据处理硬件(142)上执行时使所述数据处理硬件(142)执行以下操作:
初始化伪随机数生成器(PRNG)(200),所述伪随机数生成器(PRNG)(200)具有包括内部位(210i)和外部位(210o)的2048位的状态,所述内部位(210i)包括所述2048位的前128位,所述外部位(210o)包括所述2048位的剩余位;
通过以下步骤来置换所述PRNG(200)的所述状态:
从密钥源(190)检索高级加密标准(AES)轮密钥(192);以及
针对阈值次数:
使用所述AES轮密钥(192)来执行轮函数,所述轮函数包括将具有16个128位的分支(220)的Feistel网络中的奇数分支(220)与所述Feistel网络中的对应的偶数相邻分支(220)的函数进行异或运算;和
将每个128位的分支(220)洗牌成规定的顺序;以及
执行置换后状态的所述内部位(210i)与先前状态的所述内部位(210i)的异或运算。
12.根据权利要求11所述的系统(100),其特征在于,初始化所述PRNG(200)包括:
将所述PRNG(200)的状态设置为零;和
将所述外部位(210)设置为任意种子值。
13.如权利要求11所述的系统(100),其特征在于,初始化所述PRNG(200)包括将所述PRNG(200)的所述状态设置为先前状态。
14.如权利要求11至13中任一项所述的系统(100),其特征在于,所述阈值次数包括至少17次。
15.如权利要求11至14中任一项所述的系统(100),其特征在于,所述轮函数包括至少两轮AES。
16.如权利要求11至15中任一项所述的系统(100),其特征在于,所述至少两轮AES中的每一轮使用与其它轮AES的所述AES轮密钥(192)不同的对应AES轮密钥(192)。
17.如权利要求11至16中任一项所述的系统(100),其特征在于,将所述Feistel网络的所述奇数分支(220)与所述Feistel网络的对应的偶数相邻分支(220)的所述函数进行异或运算得到随机位(210),所述外部位(210o)包括所得到的所述随机位(210)。
18.如权利要求11至17中任一项所述的系统(100),其特征在于,在执行所述轮函数并将每个分支(220)洗牌八次之后,将每个128位的分支(220)洗牌成所述规定的顺序实现了完全子分支扩散。
19.如权利要求11至18中任一项所述的系统(100),其中,其特征在于,所述规定的顺序包括{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}。
20.如权利要求11至19中任一项所述的系统(100),其特征在于,还包括防止访问所述内部位(210i)并允许访问所述外部位(210o)。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/060275 WO2019093992A1 (en) | 2017-11-07 | 2017-11-07 | Random number generator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111279307A true CN111279307A (zh) | 2020-06-12 |
CN111279307B CN111279307B (zh) | 2023-05-12 |
Family
ID=60409424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780091668.3A Active CN111279307B (zh) | 2017-11-07 | 2017-11-07 | 随机数生成器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11449311B2 (zh) |
EP (1) | EP3616052B1 (zh) |
JP (1) | JP6782863B1 (zh) |
KR (1) | KR102217865B1 (zh) |
CN (1) | CN111279307B (zh) |
WO (1) | WO2019093992A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907684B2 (en) | 2021-02-16 | 2024-02-20 | Cassy Holdings Llc | High clock-efficiency random number generation system and method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105376055A (zh) * | 2015-12-09 | 2016-03-02 | 捷德(中国)信息科技有限公司 | 一种生成伪随机数的方法及伪随机数发生器 |
US20170163416A1 (en) * | 2015-12-07 | 2017-06-08 | The Boeing Company | Hardware assisted fast pseudorandom number generation |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100388059B1 (ko) * | 2000-12-23 | 2003-06-18 | 한국전자통신연구원 | 비대칭키 암호 알고리즘을 이용한 데이터 암호화 시스템및 그 방법 |
US9361617B2 (en) * | 2008-06-17 | 2016-06-07 | Verifone, Inc. | Variable-length cipher system and method |
DE102009050493A1 (de) * | 2009-10-23 | 2011-04-28 | Röllgen, Bernd | Blockdatenverschlüsselungsverfahren |
KR101194403B1 (ko) * | 2010-12-06 | 2012-10-25 | 삼성에스디에스 주식회사 | 암호학적 안전성이 보장된 의사난수 생성 장치 및 그 방법 |
US20130168450A1 (en) * | 2011-12-30 | 2013-07-04 | Clay W. von Mueller | Format preserving cipher system and method |
US10103873B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
-
2017
- 2017-11-07 KR KR1020197035399A patent/KR102217865B1/ko active IP Right Grant
- 2017-11-07 CN CN201780091668.3A patent/CN111279307B/zh active Active
- 2017-11-07 EP EP17801221.7A patent/EP3616052B1/en active Active
- 2017-11-07 US US16/613,516 patent/US11449311B2/en active Active
- 2017-11-07 JP JP2019566283A patent/JP6782863B1/ja active Active
- 2017-11-07 WO PCT/US2017/060275 patent/WO2019093992A1/en unknown
-
2022
- 2022-08-24 US US17/821,979 patent/US11755287B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170163416A1 (en) * | 2015-12-07 | 2017-06-08 | The Boeing Company | Hardware assisted fast pseudorandom number generation |
CN105376055A (zh) * | 2015-12-09 | 2016-03-02 | 捷德(中国)信息科技有限公司 | 一种生成伪随机数的方法及伪随机数发生器 |
Non-Patent Citations (2)
Title |
---|
CHRISIOPHE PETIT等: "A block cipher based pseudo random number generator secure against side-channel key recovery" * |
JOHN K SALMON等: "Parallel Random Numbers: As Easy as 1,2,3" * |
Also Published As
Publication number | Publication date |
---|---|
US11449311B2 (en) | 2022-09-20 |
JP6782863B1 (ja) | 2020-11-11 |
JP2021501902A (ja) | 2021-01-21 |
EP3616052B1 (en) | 2021-08-25 |
US20200401375A1 (en) | 2020-12-24 |
KR20200003111A (ko) | 2020-01-08 |
US20220405058A1 (en) | 2022-12-22 |
CN111279307B (zh) | 2023-05-12 |
WO2019093992A1 (en) | 2019-05-16 |
US11755287B2 (en) | 2023-09-12 |
KR102217865B1 (ko) | 2021-02-18 |
EP3616052A1 (en) | 2020-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107017981B (zh) | 硬件辅助快速伪随机数生成 | |
AU2016203169B2 (en) | System and Methods for Encrypting Data | |
KR101143041B1 (ko) | 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법 | |
US10007488B2 (en) | Secured pseudo-random number generator | |
US11328097B2 (en) | Encryption circuit for performing virtual encryption operations | |
US20140016778A1 (en) | Random bit stream generator with guaranteed minimum period | |
AL-khatib et al. | Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR | |
US11755287B2 (en) | Random number generator | |
Karimovich et al. | Computer's source based (Pseudo) random number generation | |
Kaur et al. | 3D—Playfair cipher using LFSR based unique random number generator | |
Beckers et al. | Fault analysis of the chacha and salsa families of stream ciphers | |
Singh et al. | 3D—Playfair cipher using Linear Feedback Shift Register | |
Elganzoury et al. | Enhanced stream cipher algorithm using consecutive Nonlinear functions |
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 |