随机数生成器制造技术

技术编号:24505819 阅读:14 留言:0更新日期:2020-06-13 07:57
一种用于生成随机数(202)的方法(300)包括初始化伪随机数生成器(PRNG)(200),该伪随机数生成器(PRNG)(200)具有包括内部位和外部位的2048位的状态,内部位包括2048位的前128位,外部位包括2048位的剩余位。该方法还包括:从密钥源(192)检索AES轮密钥(192),并且针对阈值次数,使用AES轮密钥(192),通过将具有16个128位的分支的Feistel网络中的奇数分支(220)与Feistel网络中的对应的偶数相邻分支的函数进行异或运算来执行轮函数;该方法还包括执行置换后状态的所述内部位与先前状态的所述内部位的异或运算。

Random number generator

【技术实现步骤摘要】
【国外来华专利技术】随机数生成器
本公开涉及生成随机数。
技术介绍
在对大数据流进行分类,洗牌和/或采样以保持属于客户端的数据安全时,随机化算法通常依赖于伪随机数生成器(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本文档来自技高网...

【技术保护点】
1.一种用于生成随机数(202)的方法(300),其特征在于,所述方法(300)包括:/n由数据处理硬件(142)初始化伪随机数生成器(PRNG)(200),所述伪随机数生成器(PRNG)(200)具有包括内部位(210i)和外部位(210o)的2048位的状态,所述内部位(210i)包括所述2048位的前128位,所述外部位(210o)包括所述2048位的剩余位;/n由所述数据处理硬件(142)通过以下步骤来置换所述PRNG(200)的所述状态:/n从密钥源(190)检索高级加密标准(AES)轮密钥(192);以及/n针对阈值次数:/n使用所述AES轮密钥(192)来执行轮函数,所述轮函数包括将具有16个128位的分支(220)的Feistel网络中的奇数分支(220)与所述Feistel网络中的对应的偶数相邻分支(220)的函数进行异或运算;和/n将每个128位的分支(220)洗牌成规定的顺序;以及/n由所述数据处理硬件(142)执行置换后状态的所述内部位(210i)与先前状态的所述内部位(210i)的异或运算。/n

【技术特征摘要】
【国外来华专利技术】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),其特征在于,包括:
数据处理硬件(14...

【专利技术属性】
技术研发人员:扬·瓦森贝格罗伯特·欧伯克于尔基·阿拉库夹拉伊曼纽尔·莫格纳特
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1