CN104025501B - 用于不确定性随机位发生器(nrbg)的方法和装置 - Google Patents
用于不确定性随机位发生器(nrbg)的方法和装置 Download PDFInfo
- Publication number
- CN104025501B CN104025501B CN201180076075.2A CN201180076075A CN104025501B CN 104025501 B CN104025501 B CN 104025501B CN 201180076075 A CN201180076075 A CN 201180076075A CN 104025501 B CN104025501 B CN 104025501B
- Authority
- CN
- China
- Prior art keywords
- strings
- entropy
- nrb
- drb
- data
- 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
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/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
-
- 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
-
- 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/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了基于硬件的数字随机数发生器。在一个实施例中,处理器包括数字随机数发生器(DRNG)以及耦合到所述DRNG的执行单元,所述数字随机数发生器用于调节熵源所提供的熵数据、生成多个确定性随机位(DRB)串、以及生成多个不确定性随机位(NRB)串,所述执行单元响应于读取种子值的第一指令来从DRNG中检索NRB串之一并将该NRB串储存在该第一指令所指定的目的地寄存器中。
Description
技术领域
本公开涉及处理器,并且具体涉及处理器中的随机数发生器。
背景技术
密码算法和使用它们的协议需要密钥(它们基于随机数)。例如,这样的密钥可以是诸如高级加密标准(AES)和数据加密标准(DES)(用于块或流加密)等对称密钥算法所使用的秘密/共享密钥、以及诸如Riverst,Shamir,Adleman(RSA)以及数字签名算法(DSA)等非对称密钥算法所使用的公钥/私钥对。
随机数由随机数发生器来创建。逻辑上存在两种随机数发生器:真随机数发生器(TRNG)和伪随机数发生器(PRNG)。
TRNG只可使用基于硬件的“熵源”来构建并且可产生真随机数的不确定性序列。TRNG通常被用来作为软件PRNG的“种子”并且也被称为不确定性随机位发生器(NRBG)。缺少高质量、高性能真TRNG已经造成了计算机系统安全故障。
附图说明
随着以下详细描述继续,并且基于参考附图,所要求保护的主题的各实施例的特征将变得明显,在附图中相似标号描绘相似部件,并且在附图中:
图1A是示出根据本发明的一个实施例的具有硬件随机数发生器的处理器的框图;
图1B是根据本发明的原理的包括不确定性随机位发生器(NRBG)的硬件随机数发生器的实施例的框图;
图2是图1示出的熵确认模块的实施例的框图;
图3是图1示出的组合调节器、DRBG以及NRBG模块的实施例的框图;
图4是图1示出的确定性随机数发生器的实施例的框图;
图5是图1示出的具有硬件随机数发生器的处理器的实施例的框图;以及
图6是根据一个实施例的示出处理指令以获得随机位串的方法的流程图。
图7是根据一个实施例的示出生成随机位串的方法的流程图。
图8是解说可与本发明的一实施例一起使用的数据处理系统的框图。
图9是解说可与本发明的另一实施例一起使用的数据处理系统的框图。
虽然下列详细描述将参考所要求保护的主题的说明性实施例来进行,但是,许多替代方案、修改以及其变体将对所属领域的技术人员显而易见。因此,所要求保护的主题旨在被宽泛地认为,并且只如在所附权利要求书中阐明的那样来限定。
具体实施方式
下面将参考下面所讨论的细节来描述本发明的各实施例并各方面,各个附图将示出各实施例。下面的描述和图形只是本发明的说明,而不作为对本发明的限制。描述了很多具体细节,以便全面地理解本发明的各实施例。然而,在某些实例中,没有描述已知的或常规的细节,以便提供对本发明的各实施例的简洁的讨论。
在本说明书中对“一个实施例”或“实施例”的引用意思指和该实施例一起描述的特定特征、结构或特征可以被包括在本发明的至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例。
“保护”计算机上的任何事物需要使用高质量密码(这需要高质量密钥)。高质量密钥需要高质量随机数/熵。高质量随机数/熵需要高质量熵源(硬件)和如此验证的高质量(例如,顺从标准的)后处理(例如,Federal Information Processing StandardsPublication(经由联邦信息处理标准公布),FIPS PUB140-2/3 2级)。
高质量密钥是所有密码使用的基础启用器,包括:
通信——所有栈的所有级别(可扩展标记语言(XML)、传输层安全(TLS)、虚拟专用网(VPN)、因特网协议(IP)、WiFi、WiMax);签名——数字证书、完整性清单、证明、事务;存储——文件和卷隐私;以及数字权限管理(DRM)。累积并处理足够数量和质量的熵来(重新)作为PRNG/DRNG的种子是计算系统中的复杂、耗时、且易错的活动。因此,计算系统不具有足够数量的高质量熵。提供了用于生成高质量熵的不确定性随机位发生器(NRBG)的实施例。在一实施例中,NRBG是集成在处理器或处理器核中的顺从标准的硬件NRBG。在一实施例中,提供软件接口以允许经由处理器指令来控制NRBG。
图1A是示出了根据一实施例的处理器的示例的框图。参考图1A,处理器150可以表示任何类型的指令处理设备。例如,处理器150可以是通用处理器。处理器150可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种,其各种混合型,或完全其他类型的处理器。在一个实施例中,处理器150包括接收和解码指令156的指令解码器151。指令解码器151生成并输出一个或多个微操作、微代码、入口点、微指令、其他指令或其他控制信号,它们反映或来源于指令156。指令解码器151可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、等等。
处理器150还包括一个或多个执行单元152,该执行单元152可以包括算术逻辑单元或能够基于指令156来执行操作的另一种类型的逻辑单元。作为指令解码器151解码指令156的结果,执行单元152可以接收一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,它们反映或来源于指令156。执行单元152可以作为指令156指出一个或多个源操作数(SRC)158的结果可操作,并将结果存储到由指令156指出的寄存器组155的一个或多个目的地操作数(DEST)159中。执行单元152可以包括可操作以执行指令或从指令156导出的其他控制信号的电路或其他执行逻辑(例如,与硬件和/或固件相结合的软件),并相应地执行操作。执行单元152可以表示诸如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元等等之类的任何类型的执行单元。
在一个实施例中,指令156可以隐式地指出和/或显式地指定(例如,通过一个或多个专用的字段或位组)源和目的地操作数。操作数的合适的源和/或目的地的示例包括寄存器、存储器、指令的立即数(immediate)以及其组合。在各实施例中,源和目的地操作数可以是8位、16位、32位或64位操作数,虽然这不是必需的。
在一个实施例中,源和目的地操作数中的某些或全部可以被存储在寄存器组或存储器155的寄存器中。寄存器组可以是寄存器文件的一部分,以及潜在地,诸如状态寄存器、标志寄存器等其他寄存器。寄存器可以是可以被用来存储数据的存储位置或设备。寄存器组常常可以在物理上位于带有执行单元的管芯中。寄存器可以从处理器的外部或从编程器的角度可见。例如,指令可以指定存储在寄存器中的操作数。各种不同类型的寄存器都是合适的,只要它们能够存储和提供如此处所描述的数据。寄存器可以被重命名,也可以不被重命名。合适的寄存器的示例包括但不仅限于专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合,等等。可另选地,源和目的地操作数中的一个或多个可以存储在存储位置,而不是寄存器中,诸如,例如,系统存储器中的位置。
根据一个实施例,处理器150包括用于生成确定性随机位流或串和/或不确定性随机位流或串的数字随机数发生器(DRNG)100。执行单元152还包括DRNG单元153(例如具有对应的微代码),用于执行获取随机数的指令(例如,RDRAND指令)或获取随机种子数的指令(例如,RESEED指令)。在一个实施例中,DRNG 100包括确定性随机位发生器(DRBG)和不确定性随机位发生器(NRBG),它们将在下文进一步详细地描述。
图1B是根据本发明的一些实施例的硬件随机数发生器100的实施例的框图。参考图1B,数字随机数发生器(DRNG)100包括具有至少三个阶段(子单元或模块)的逻辑上异步的流水线。在一个实施例中,参考图1B,该至少三个阶段包括:(1)熵源102;(2)熵确认104;以及(3)组合调节器、确定性随机位发生器(DRBG)以及不确定性随机位发生器(NRBG)106。注意,组合调节器、DRBG以及NRBG 106可以在各分开的模块中实现,诸如举例而言彼此通信耦合的调节器逻辑、DRBG逻辑以及NRBG逻辑。
熵是随机性的度量,随机性即系统中无序性或不确定性的程度。一组位的随机性的度量是下一组位的不可预测性的度量。在图1B所示的数字随机数发生器100中,熵从熵源模块或逻辑102流到熵确认模块104,并最终流到组合调节器、DRBG以及NRBG模块106。
熵源(ES)逻辑102生成偏熵数据。该偏熵数据被输出作为与熵源输入时钟109同步或由该时钟驱动的随机位流以及数据有效信号108,熵源输入时钟109可驻留在DRNG 100之内或外部。在一实施例中,熵源102所输出的随机位流(串行数据)108具有大于诸如大约每位0.5比特的预定阈值的最小熵。
在一实施例中,熵确认模块104将接收到的随机位流(串行偏熵数据)108并行化并确定随机位流108在1和0的特定模式的预期到达速率方面是否符合熵源102的预定数学模型。
组合调节器、DRBG以及NRBG模块106提供来自从熵确认模块102接收到的随机位流108的全熵数据。组合调节器、DRBG以及NRBG模块106(在本文统称为随机位发生器或RBG)使用预定算法来根据种子所确定的初始值产生位序列,种子是根据RBG模块106的熵输入来确定的。本文所称的算法是指定数学计算过程,即一组规则(如果遵行的话)将产生规定或定义的结果。种子是用作RBG模块106的输入的位串。种子确定DRNG 100的内部状态的一部分,并且它的熵足以支持DRNG 100的安全强度。
组合调节器、DRBG以及NRBG模块106包括根据本发明的一些实施例的NRBG模块和DRBG模块。在一实施例中,NRBG是基本上顺从NIST SP800-90B和SP800-90C的增强的不确定性随机数发生器(ENRNG)。基于NRBG对NIST SP800-90B和SP800-90C的遵从,任意种子序列可按任意次序来彼此附加以形成任意长度的位串,其中所得的位串具有所需的抗预测属性以满足任意宽度的DRBG的(重新)播种需求(例如,如支持NIST SP800-90A DRBG所需要的)。DRNG 100(可重用单元)可被嵌入在硅产品中,如图5所示。
在一实施例中,DRNG 100包括内建自测(BIST)单元(模块)111。BIST模块111在上电复位之后使用以提供对熵确认模块104和组合调节器、DRBG以及NRBG模块106的全面测试覆盖并对熵源102执行健康测试。在一实施例中,全面测试覆盖是使用BIST已知答案测试来执行的。另外,BIST单元执行用于制造测试的签名分析。
在一实施例中,熵源102从热噪声(也称为约翰逊噪声或奈奎斯特噪声)中导出熵位流,热噪声是电子电路的自然发生特性并且是由导电材料中电子的随机热运动造成的。在一个实施例中,熵源102使用热噪声来生成随机位流。
在一个实施例中,RBG模块106被配置成基于从熵确认模块104和/或熵源102接收到的熵数据110生成DRBG数据112和NRBG数据122。根据一个实施例,RBG模块106包括基于已由RBG模块106的调节器调节的熵数据生成DRBG数据112的DRBG模块。DRBG数据112可被存储在DRBG缓冲器中,这可随后响应于处理器接收到的指令(诸如举例而言RDRAND指令)来检索。在另一实施例中,RBG模块106还包括基于经调节的熵数据和DRBG数据112来生成NRBG数据122的NRBG模块。NRBG数据122可被存储在NRBG缓冲器中,这可随后响应于处理器接收到的指令(诸如举例而言RDSEED指令)来检索。
图2是图1B示出的熵确认模块104的实施例的框图。根据一个实施例,熵确认模块104基于熵源模型(例如,数学模型)动态地测量熵源生成“原始”熵样本与预期到达速率/所选模式的分布的“拟合度”。在这一实施例中,熵确认模块104包括串行到并行转换器模块200、健康检测模块202以及控制流转移模块204。
在一个实施例中,串行到并行转换器模块200从熵源102(图1B)接收随机位流108并将该流转换成一个或多个8位块(字节),这些8位块随后再次被转换成更大的块,例如128位(16字节)块、256位(32字节)块或其他大小的块。
健康检测模块202通过执行每样本(在一个数据块上)测试和统计以及M样本滑动窗口测试和统计(在M个数据块上),来对熵源内部“原始”输出执行测试。在一实施例中,健康检测模块202对某些位模式的出现进行计数,如每一数据块(128位或256位)中六个不同的位模式,并检查这些位模式中的每一个是否发生在统计界限内。如果是,则该数据块被认为是健康的。
例如,在一实施例中,可对数据块检查预定位模式的出现次数,如4位模式“0110”。在一实施例中,如果在256位数据块中‘0110’的出现次数落在预定范围(如,3和34之间)内,则位模式‘0110’可被认为处于统计界限内。这些模式的数量可被计数以改进统计测试的可靠性。
如果健康检测模块202指示该块通过了健康检查(经由OK信号),则控制流转移模块204准许将该数据块110转发给组合调节器、DRBG以及NRBG模块106(图1B)。在一替换实施例中,只有健康状态指示符被转发以供确定需要DRBG的重新播种。
图3是图1B示出的组合调节器、DRBG以及NRBG模块106的实施例的框图。组合调节器、DRBG以及NRBG模块106包括接收来自熵确认模块104和/或熵源102的输出的调节器300。调节器300对接收到的熵确认模块104输出执行“熵提取”和“熵压缩”并向DRNG 100提供熵种流。在一个实施例中,调节器300耦合到经调节的熵缓冲器302,经调节的熵缓冲器302存储供DRBG304使用的熵种流。
在一个实施例中,模块106包括用于基于由调节器300调节并储存在条件熵缓冲器302中的经调节的熵数据来生成DRBG数据的DRBG模块304。DRBG数据随后被存储在DRBG缓冲器306中,它随后可由处理器响应于诸如举例而言RDRAND指令的指令来检索。
在一个实施例中,组合调节器、DRBG以及NRBG模块106包括包含XOR(异或)逻辑308和NRBG缓冲器310(它可例如是先进先出(FIFO)缓冲器)的NRBG模块。NRBG FIFO的输出提供了NRBG数据122。XOR逻辑308耦合到经调节的熵缓冲器302的输出和DRBG 304的输入。XOR逻辑308的输出耦合到NRBG FIFO 310的输入。储存在NRBG缓冲器310中的NRBG数据随后可由处理器响应于诸如举例而言RDSEED指令的指令来检索。
在NRBG FIFO 310未充满且因此需要填充新值时,DRNG 100取得储存在经调节的熵缓冲器307中的种子之一以及来自DRBG输出FIFO 306的输出,并经由XOR逻辑308对它们执行XOR操作。DRNG 100将XOR操作的结果储存在NRBG FIFO 310中。经调节的种子可以是纯熵值。对这样的种子与来自DRBG 304的输出进行异或提供了安全网,其中如果熵源102或调节器300的输出由于某种瞬时误差而暂时偏离纯随机性,则DRNG 100确保从NRBG FIFO输出的NRBG数据的质量不能落在DRBG的输出质量之下。这与SP800-90C的要求一致。
在一实施例中,NRBG输出接口用与DRBG接口相同的信令协议被添加到DRNG 100,以提供对NRBG输出数据310的外部访问。在一个实施例中,经由可通过DRNG和消费者(例如,英特尔片上系统构造(IOSF))之间的总线结构访问的64位数据寄存器来使得NRBG输出数据301对消费者可用。这一寄存器的值源自DRNG 100,经由NRBG接口到达NRBG FIFO 310。
顺从NIST SP800-90B和SP800-90C的NRBG功能和它周围的FIPS边界的组合支持DRNG 100的扩展“白盒”验证(例如,经由FIPS PUB 140-2)。“FIPS边界”是硬件实施的一组互锁,在有效时,该组互锁排除对DRNG的内部状态(例如,寄存器内容或状态机400值)的任何外部访问(例如,经由通过外部总线的读/写)。“FIPS边界”可经由外部硬件融合状态来被迫使生效。
图4是图3示出的确定性随机数发生器304的实施例的框图。确定性随机数发生器包括状态机400、高级加密标准(AES)模块402、输出缓冲器306以及经调节的熵(CE)缓冲器302。状态机中的状态包括重新播种、生成、以及调节。在生成状态,AES功能被用来使用动态随机位发生器的当前内部状态来生成输出,并且新内部状态被生成以用于下一请求。在重新播种功能,新熵输入被获取并与当前内部状态相组合以创建新种子和新内部状态。
在一实施例中,组合调节器、DRBG以及NRBG模块106使用AES提供全熵数据。被美国国家标准和技术研究所(NIST)发布为FIPS 197的AES是可被用来加密和解密数据块的对称块密码。当在调节模式时,接收到的偏熵数据的两个块(128位或256位块)被DRBG模块104使用以提供更少数量的全熵数据。AES加密模块402在CBC-MAC模式中用AES以来调节熵并经由AES计数器(CTR)模式来扩展熵。
状态机400控制状态变量、工作变量、AES模块以及DRBG的输入和输出。状态机400包括初始化、重新播种、生成、以及调节模式。AES加密(密码)模块402使用秘密密钥(密码钥匙)执行一系列变换以将称为“明文”的可理解数据变换成称为“密文”的不可理解形式。
在一实施例中,从熵确认模块104接收到的每一个256位块被使用AES-CBC-MAC模式构造进行调节。提供经调节的熵缓冲器302以用于从若干“原始”熵源样本累积熵池,其中从该池中提取熵来为DRBG 106(重新)播种(图1B)。在一实施例中,根据从熵确认模块104接收到的两个256位未经调节的样本来生成256位“经调节的”熵输出样本。256位输出112可使用AES-CTR模式构造来生成。
除了生成“随机数”之外,数字随机数发生器100是“随机地行动”(或不确定地行动)的随机数发生器。不确定性行为在熵源102所生成的位序列的不确定性之外增加了所输出熵位流112的总体不可预测性。在一实施例中,数字随机数发生器100所提供的一组不确定性行为包括时间异步性、熵源“额外”位、熵测量以及自发数字随机数发生器重新播种。这些不确定性行为将在下文更详细地描述。
数字随机数发生器100的每一子单元(模块)(即熵源模块102,熵确认模块104,和调节器以及组合调节器、DRBG及NRBG模块106)彼此异步地操作。因此,数字随机数发生器100在逻辑上是三阶段/子单元(模块)异步生产流水线。出于“流控制”目的,每一模块具有该模块与下一下游模块之间的逻辑“输出队列”。因此,存在依赖上游模块的生产速率和下一下游模块的消费速率的不可预测的动态同步,即模块之间存在时间异步性。
在一实施例中,熵源102输出高熵输出位流,例如每输出位大于0.9位熵。如前所述,在数字随机访问发生器中,熵源相对于其他模块异步地运行。
在一实施例中,熵源模块102的熵源输入时钟109的频率大于输入到其他模块的时钟的频率。因而,熵源模块102可以按其他模块(逻辑)的时钟速率的若干倍(例如,2.5倍)来产生内部熵位流。这允许通过同步机制选择来自从熵源模块102输出的内部熵位流的位子集以供使用。因而,从熵源的内部熵位流选择的位是不可预测的。
例如,在一个实施例中,熵源模块102所生成的每预定位之一(例如,每三个位之一或每五个位之一)可被选择,而丢弃(扔掉)其他(“额外”)位。在另一实施例中,对额外位执行异或(XOR)运算并且该XOR运算的结果在所选输出位流中转发。因此,被选择从熵源102转发的位的数量依赖于数字逻辑采样时钟的频率相对于熵源时钟的频率。
如前所述,基于熵源102的数学模型,存在着熵源模块102所输出的熵位流中的所选位串模式的预期发生率或分布。熵确认模块104动态地测量熵源的熵位流以顺从该模型。
使用每样本测试/统计和每M样本窗口测试/统计。
在一实施例中,基于每样本测试/统计的熵测量是使用某些位模式来执行的,如1、2、3和/或4位模式,应用于移动位序列窗口来累积跨每一256位熵源输出样本的发生/分布统计。每模式的可接受性计数/统计范围是基于该数学模型从预期分布导出的并且逐样本地持续重复。
在一实施例中,使用每M样本窗口测试/统计的熵测量是使用长窗口M(64K位=256位/样本的256个样本)来执行的。该窗口在时间上动态地向后移动(最新近的M个样本)并持续地重复(逐样本地)。输出良好性的测量是M个样本中的N个样本“通过了”每样本测试,其中N是根据仿真和测试芯片行为通过经验来选择的。
基于所选位串模式的每样本预期发生率或分布和N个(M个中的N个)最近“通过”样本两者的配置参数,在调节操作之前多个样本从熵源102转发到确定性随机数发生器106,并且(随后)重新播种操作基于熵源样本对该模型的分布曲线的动态拟合而变化。
使用同一种子生成过多输出可提供用于预测将来输出的充足信息。重新播种是一种获取具有用于所需安全强度的足够熵的附加位的方法。动态随机位发生器106可被周期性地重新播种。因而,周期性重新播种可被用来降低安全风险。通常,种子具有有限的种子寿命,即在预定义时间段期间所产生的输出的数量。
与执行周期性重新播种形成对比,在一个实施例中,确定性随机数发生器106只要方便时就被重新播种,而不干扰来自确定性随机数发生器106的消费。重新播种的能力基于熵源102的相对性能优点,即熵源102所产生的串行流的每秒位数。
因而,另一不确定性行为是自发DRBG重新播种。基于配置参数,确定性随机位发生器106自发地请求它被重新播种。确定性随机位发生器106中的熵池的“新鲜度”是与确定性随机位发生器106的输出的熵的可能质量有关的指示符。自发重新播种启用是通过运行熵源102所产生的熵的“质量”以及确定性随机位发生器的熵状态“新鲜度”的测量来控制的。熵的“新鲜度”是基于该熵的初始质量是否未受损害的。
在AES CTR模式中,在确定性随机位发生器106中的重新播种事件期间,储存在经调节的熵缓冲器605中的经调节的熵被用在输出生成中。在一个实施例中,每当不存在生成请求且数字随机数发生器在“关闭自己”之前已填充所有可用存储器(例如,外部队列)来存储随机数时,就发生重新播种。在另一实施例中,在超过了关于确定性随机位发生器106所生成的熵“陈旧度”的基于计数的限制时并且给定调节器保证如果其输入具有>0.5位/位熵则用于重新播种确定性随机位发生器106的调节器输出是1.0位/位熵时,就发生重新播种。
在被调用时,响应于“(重新)播种”请求,确定性随机位发生器106中的状态机进入重新播种状态。在重新播种状态,执行自发重新播种启用准则测试。这些测试包括将通过熵源测量测试的两个熵源样本(512位)成功传递至调节器,将M个质量准则中的N个成功应用于每一样本以对它和熵源的长期/最近状态进行限定,以及累积调节器中不合格的ES输出(在合格的ES输出之前或之后)(而不管熵源测量状态)。在两个合格的ES样本(512位)已成功传递至调节器之后,来自确定性随机位发生器106的“(重新)播种”(需要256位)请求被该调节器满足。
图5是包括一个或多个核(处理器核)502、504以及图1所示的数字随机数发生器(DRNG)100的处理器500的实施例的框图。在图5所示的实施例中,处理器核502、504中的每一个包括读取随机指令微代码506、508,读取种子指令微代码505、507,以及随机数发生器(RNG)微代码(μCode)510、512。DRNG 100自动填充处理器核专用RNG队列514、516来为核502、504的微代码随机数请求进行服务DRNG 100中的组合调节器、DRBG以及NRBG模块106生成被加载到RNG队列514、516中的最终随机数。
在一实施例中,可使用各种NIST批准算法(例如,AES、SHA-256)来实现DRBG。在一实施例中,DRBG是顺从NIST SP800-90A的确定性随机数发生器(DRBG)。在一实施例中,NRBG是顺从NIST SP800-90B和SP800-90C的增强的不确定性随机数发生器(ENRNG)。
在另一实施例中,可存在一个以上DRNG 100来达到不同的功率或性能要求,例如代替由一个或多个处理器核502、504共享一个DRNG 100,可以每处理器核502、504存在一个DRNG 100。同样,RNG队列514、516的深度可以变化以达到不同的功率或性能要求。
在另一实施例中,RNG排队机制可以在DRNG的输出处的共享队列和处理器核专用RNG队列514、516之间拆分,以达到不同的功率或性能要求。在又一实施例中,代替具有每核一个核专用RNG队列514、516,可以存在由各处理器核502、504共享的单个RNG队列。
从功率管理的观点看,DRNG 100和RNG队列514、516在处理器核功率阱的外部,即在一个或多个处理器核502、504共享的逻辑中。因此,对处理器核功率管理操作没有影响。熵可以是“提前计算的”并且被存储以供稍后消费。因而,当在RNG队列514、516中已经存储了足够的随机数时,DRNG 100可通过关闭时钟来自动“关闭自己”以节省功率。
如果RNG队列514、516全满,则在DRNG 100的时钟仍然被提供给RNG队列514、516时该时钟可被关闭,以允许RNG队列514、516响应于微代码请求来提供随机数据。在检测到RNG队列514、516存储了小于阈值量的随机数据时,该时钟可被提供给DRNG 106以使得DRNG106可向RNG队列514、516提供随机数据。在所有RNG队列514、516满时,DRNG 100的时钟可再次被关闭。
此外,如果处理器核502、504处于低功率(睡眠)模式并随后返回全功率模式,则处理器核502、504没有附加等待时间来从RNG队列514、516接收随机数据,因为在处理器核502、504处于睡眠模式时时钟继续被提供给RNG队列514、516。
在图5所示的实施例中,确定性随机数发生器100是共享资源,因为它由多个处理器核502、504共享。除了由多个处理器核502、504共享之外,确定性随机数发生器100在每处理器核502、504的多个硬件线程之间共享,在系统中的多个虚拟机之间共享,在跨多个虚拟机的多个操作系统之间共享,以及在每操作系统的多个应用之间共享。
另一不确定性行为是来自共享资源的消费。消费者(例如,应用程序或线程)的异步行为和动态消费速率使得哪一消费者将从确定性随机数发生器100的输出流中得到哪一样本是不可动态地预测的,并且添加了对任何单个消费者针对来自确定性随机数发生器100的输出序列的可视性的破坏。
若干基于消费的因素可以生成不同的异步递送模式,例如用于避免的多个消费者的基于拒绝服务(DOS)的“饿死”的消费“公平性”保证;确定性随机数发生器100和消费者之间的多个队列,尤其是在深度大于1以及熵消费的宽度(例如,32或64位)的情况下,从128位确定性随机数发生器100的单个输出进行递增消费时。
基于消费的因素还可影响确定性随机位发生器的“重新播种速度”,因为重新播种触发器之一是确定性随机数发生器100“静止”,动态共享消费的暂时丧失造成确定性随机数发生器100输出的序列中的突然不可预测的变化。
这些不确定性行为的动态组合使得即使在知晓确定性随机数发生器100的内部状态的一个或多个项的情况下也不可能允许成功预测DRNG 100的将来输出。
在一实施例中,提供可由需要顺从标准的NRBG/TRNG生成熵来作为它们的软件或硬件DRBG/PRNG的种子的操作系统供应商(OSV)和独立软件供应商(ISV)使用的宏指令(RDSEED指令)。用于读取种子宏指令的读取种子指令微代码705、707被存储在核702、704中。
在一个实施例中,读取种子值的宏指令句法被如下定义:
RDSEED r16/32/64
其中‘r32/64’指定其中存储来自DRNG 100的种子输出的目的地寄存器。种子数据的大小(位数)依赖于目的地寄存器大小(例如,16位、32位、64位或其他大小)。在一个实施例中,诸如算术进位标志等标志可被用来存储指示储存在目的地寄存器中的随机位串是否有效的值。例如,算术进位标志的状态指示储存在目的地寄存器中的值是否是熵,即在RDSEED指令被执行时RNG队列中是否存在可用的随机数据。在一实施例中,如果熵不可用则算术标志位是零。在一实施例中,RDSEED宏指令可供用在处理器500的所有特权级别和所有操作模式中。
在一实施例中,提供可由密码协议使用以获得DRNG 100所生成的随机数的宏指令(RDRAND指令)。随机数可被用来生成公钥/私钥对。用于读取随机宏指令的读取随机指令微代码506、508被存储在核502、504中。
在一个实施例中,读取随机数的宏指令句法被如下定义:
RDRAND r16/32/64
其中‘r16/32/64’指定其中存储来自DRNG 100的随机数据输出的目的地寄存器。随机数据的大小(位数)依赖于目的地寄存器大小(例如,16位、32位、64位或其他大小)。
在一个实施例中,诸如算术进位标志等标志可被用来存储指示储存在目的地寄存器中的随机位串是否有效的值。例如,算术进位标志的状态指示储存在目的地寄存器中的值是否是熵,即在RDRAND指令被执行时RNG队列中是否存在可用的随机数据。如果当前没有熵可用,则可使用预定义机制来重试RDRAND,直至熵变得可用。
与每一操作系统和安全相关应用必须单独地创建随机数的源相比,RDRAND宏指令的可用性通过提供单个指令以获得随机数而改进了操作系统和安全相关应用的性能。在一实施例中,RDRAND宏指令可供用在处理器500的所有特权级别和所有操作模式中。DRNG 100还提供随机数以供内部微代码(μCode)功能使用,例如使用随机数的微代码功能。
在一实施例中,DRNG(NRBG和DRBG及它们的状态)被保护免受软件攻击跨系统中的“n”个处理器核、线程、虚拟机(VM)以及应用来共享的资源。数字随机数发生器在多重消费者负载功率管理下伸缩并且具有自调度、提前计算、低等待时间、消费驱动的、排队的接口。
图6是根据一个实施例的示出处理指令以获得随机位串的方法的流程图。方法600可以通过图5的处理器500来执行。参考图6,在框601,处理器接收用于获得确定性随机值(例如,随机数)或不确定性随机值(例如,种子)的指令(例如,RDSEED或RDRAND)。在框602,响应于该指令,处理器从该处理器内的DRNG所生成的随机位串池(例如,DRBG或NRBG输出缓冲器)中检索随机位串。在框603,检索到的随机位串被储存在该指令所指定的目的地寄存器中。在框604,可任选地,更新标志以指示储存在目的地寄存器中的随机位串是否有效。
图7是根据一个实施例的示出生成随机位串的方法的流程图。方法700可以通过图5的处理器500来执行。方法700可以相关于方法600独立地执行。参考图7,在框701,调节器对熵源所提供的熵执行调节操作以生成经调节的熵数据。在框702,DRBG逻辑基于经调节的熵数据来生成DRBG数据。在框703,NRBG逻辑基于DRBG数据和经调节的熵数据来生成NRBG数据。在一个实施例中,NRBG数据是通过将DRBG数据和经调节的熵数据进行异或来生成的。在框704,NRBG数据随后被储存在缓冲器(例如,图3的NRBG FIFO310)中以便可经由指令(例如,RDSEED)进行检索。
图8是示出了根据本发明的一实施例的数据处理系统的示例的框图。系统900可以表示上文所描述的系统中的任何一个。例如,处理器901可以表示图5的处理器500。系统900可以表示台式机、膝上型计算机、平板电脑、服务器、移动电话(例如,智能电话)、媒体播放器、个人数字助理(PDA)、个人通信器、游戏设备、网络路由器或中枢、无线接入点或中继器、机顶盒或其组合。请注意,尽管图8示出了数据处理系统的各种组件,但是,并不旨在表示互连这些组件的任何特定体系结构或方式;因为这样的细节不是与本发明的各实施例有密切关系的。还可以理解,也可以与本发明的各实施例一起使用具有少一些的组件或也许多一些的组件的网络计算机、手持式计算机、移动电话及其他数据处理系统。
参考图8,在一个实施例中,系统900包括处理器901,以及通过总线或互连将各种组件(包括存储器905以及设备903-904)耦合到处理器901的芯片组902。处理器901可以表示带有单一处理器核或多个处理器核909的单一处理器或多个处理器。处理器901可以表示一个或多个通用处理器,诸如微处理器、中央处理单元(CPU)等等。更具体而言,处理器901可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理器901还可以是一个或多个专用的处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器,或能够处理指令的任何其他类型的逻辑。例如,处理器901可以是位于加利福尼亚州圣克拉拉的英特尔公司所提供的4、Dual-Core、2 Duo and Quad、XeonTM、ItaniumTM、XScaleTM、i7、CoreTMi5、或StrongARMTM微处理器。处理器901被配置成执行用于执行此处所讨论的操作和步骤的指令。
处理器901可以包括可以接收和解码各种指令的指令解码器。解码器可以生成并输出一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,它们反映、或来源于原始输入指令。解码器可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、等等。
解码器可以不是处理器901的必需的组件。在一个或多个其他实施例中,处理器901可以相反具有指令仿真器、指令转换器、指令变形器、指令解释器,或其他指令转换逻辑。各种不同类型的指令仿真器、指令变形器、指令转换器等等是已知的。指令转换逻辑可以接收比特范围隔离指令,模仿、转换、变形、解释,或以别的方式转换比特范围隔离指令,并输出对应于原始比特范围隔离指令的一个或多个指令或控制信号。指令转换逻辑可以以软件、硬件、固件或其组合来实现。在某些情况下,指令转换逻辑中的某些或全部可以位于晶片外,与指令处理设备其余部分一起,诸如单独的管芯或在系统存储器中。在某些情况下,指令处理设备可以具有解码器和指令转换逻辑。
处理器901和/或核909还可以包括与解码器的输出耦合,或以别的方式与解码器的输出进行通信的一个或多个执行单元。术语"耦合"可以表示,两个或更多元件直接电接触或连接。然而,"耦合"还可以表示,两个或更多元件不彼此直接连接,但是,仍合作或相互进行交互或通信(例如,通过中间组件)。作为一个示例,解码器和执行单元可以通过中间可选缓冲器或本领域已知可能耦合在解码器和执行单元之间的其他组件彼此耦合。处理器901和/或核909还可以包括多种不同类型的执行单元,诸如,例如,算术单元、算术逻辑单元(ALU)、整型单元等等。
处理器901还可以包括一个或多个寄存器文件,包括,但不仅限于,整数寄存器、浮点寄存器、矢量或扩展寄存器、状态寄存器,以及指令指针寄存器等等。此处使用术语"寄存器"来指被用作标识操作数的宏指令的一部分的板上的处理器存储位置。换言之,此处引用的寄存器是从处理器外部可见的那些寄存器(从编程器的角度来看)。然而,寄存器在含义上不应该限于特定类型的电路。相反,寄存器只需能够存储和提供数据并执行此处所描述的功能。此处所描述的寄存器可以通过处理器内的电路使用任意数量的不同的技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合等等。在一个实施例中,整数寄存器存储32比特或64比特整型数据。寄存器文件可以包含用于封包的数据的扩展的多媒体SIMD寄存器(例如,XMM)。这样的寄存器可以包括涉及SSE2、SSE3、SSE4、GSSE或以外的(一般地称为"SSEx")技术的128比特宽的XMM寄存器和256比特宽的寄存器(可以包括低阶比特的XMM寄存器)来保存这样的打包数据操作数。
处理器901和/或核909还可以可任选地包括一个或多个其他已知的组件。例如,处理器901可以可任选地包括指令获取逻辑、预先解码逻辑、调度逻辑、重新排序缓冲器、分叉预测逻辑、引退逻辑、寄存器重命名逻辑等等,或其某些组合。这些组件可以按常规方式实现,或基于本发明利用对所属领域的技术人员显而易见的是小的修改。为了理解此处的实施例,不需要这些组件的进一步的描述,虽然进一步的描述轻松地获得,在需要时,在公开文献中。有已知的这样的组件的很多不同的组合和配置。范围不仅限于任何已知的这样的组合或配置。实施例可以有或者没有这样的额外的组件地实现。
芯片组902可以包括存储器控制中枢(MCH)910和输入输出控制中枢(ICH)911。MCH910可以包括与存储器905进行通信的存储器控制器(未示出)。MCH 910还可以包括与图形设备912进行通信的图形接口。在本发明的一个实施例中,图形接口可以通过加速图形端口(AGP)、外围组件互连(PCI)Express总线或其他类型的互连,与图形设备912进行通信。ICH911可以提供到诸如设备903-904之类的I/O设备的接口。设备903-904中的任何一个都可以是存储设备(例如,硬盘驱动器、闪存设备)、通用串行总线(USB)端口、键盘、鼠标、并行端口、串行端口、打印机、网络接口(有线或无线)、无线收发器(例如,WiFi、蓝牙,或蜂窝收发器)、媒体设备(例如,音频/视频编解码器或控制器)、总线桥接器(例如,PCI-PCI桥接器),或其组合。
MCH 910有时被称为北桥,而ICH 911有时被称为南桥,虽然有些人在它们之间作出技术的区别。如此处所使用的,术语"MCH"、"ICH"、"北桥"、"南桥"从广义上来解释以涵盖其功能包括向处理器传递中断信号的各种芯片。在某些实施例中,MCH 910可以与处理器901集成。在这样的配置中,芯片组902作为执行MCH 910和ICH 911的某些功能的接口芯片来操作,如图9所示。此外,图形加速器912还可以集成在MCH 910或处理器901内。
存储器905可以存储包括由处理器901或任何其他设备执行的指令序列的数据。例如,各种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS),和/或应用程序的可执行代码913和/或数据914可以加载到存储器905中,并由处理器901执行。操作系统可以是任何类型的操作系统,诸如,例如,来自的操作系统、来自苹果公司的Mac 来自的或其他实时操作系统。在一个实施例中,存储器905可以包括一个或多个易失性存储设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM),或其他类型的存储设备。还可以使用非易失性存储器,诸如硬盘或闪存存储设备。前端总线(FSB)906可以是多点分支或点对点互连。术语"FSB"旨在覆盖到处理器901的各种类型的互连。芯片组902可以通过点对点接口来与诸如设备903-904之类的其他设备进行通信。总线906可以实现为各种总线或互连,诸如,例如,快速路径互连(QPI)、超传输互连,或与诸如AMBA高性能总线(AHB)之类的高级微控制器总线体系结构(AMBA)兼容的总线。
缓存908可以是任何类型的处理器缓存,诸如级别1(L1)缓存、L2缓存、L3缓存、L4缓存、最后一个级别缓存(LLC),或其组合。缓存908可以被与处理器901的处理器核909共享。缓存908可以嵌入在处理器901内和/或在处理器901外部。缓存908可以被在核909之间共享。可另选地,核909中的至少一个还包括嵌入在其中的其自己的本地缓存。核909中的至少一个可以使用本地缓存和与核909中的另一个共享的缓存两者。处理器901还可以包括直接缓存访问(DCA)逻辑,以允许诸如设备903-904之类的其他设备直接访问缓存908。处理器901和/或芯片组902还可以包括中断控制器,诸如高级可编程中断控制器(APIC),以处理诸如消息中断之类的中断。
前面的详细描述的某些部分以算法、和/或对计算机存储器内的数据位的操作的符号表示法的形式存在。这些算法描述和表示法是那些精通数据处理技术的人所使用的最有效地将他们的工作的实质传递到精通技术的其他人的方式。算法,这里一般是指导致所希望的结果的操作的独立的序列。操作是那些需要对物理量进行物理操纵的操作。
然而,应该记住,所有这些和/或类似的术语将与适当的物理量关联,仅仅是应用于这些量的方便的标记。除非特别声明,从上文的讨论中显而易见地看出,应该理解,在整个本说明书中,利用诸如在下面的权利要求中所阐述的术语的讨论,引用了计算机系统,和/或类似的电子计算设备的动作和/或进程,它们操纵和/或转换表示为计算机系统的寄存器和存储器内的物理(电子)量的数据,将这些数据转换为类似地表示为计算机系统存储器或寄存器和/或其他这样的信息存储器、传输和/或显示设备内的物理量的其他数据。
图形所示出的技术可以使用在一个或多个电子设备上存储和执行的代码和数据来实现。这样的电子设备使用计算机可读介质,诸如非瞬时的计算机可读取的存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和瞬时的计算机可读取的传输介质(例如,电气,光学,声音或其他形式的传播的信号——诸如载波,红外信号、数字信号等等),存储和传递(内部和/或与其他电子设备,通过网络)代码和数据。
前面的图形中所描绘的进程或方法可以通过包括硬件(例如,电路、专用逻辑等等)、固件、软件(例如,在非瞬时的计算机可读介质上实现),或两者的组合的处理逻辑来执行。虽然上文是利用某些顺序操作来描述进程或方法的,但是,应该理解,所描述的某些操作可以以不同的顺序来执行。此外,某些操作也可以并行地而并非按顺序执行。
在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,在不偏离如下面的权利要求所阐述的本发明的更广泛的精神和范围的情况下,可以作出各种修改。相应地,说明书和附图应被视为说明性的,而不是限制性的。
Claims (19)
1.一种处理器,包括:
数字随机数发生器DRNG,所述数字随机数发生器用于调节熵源所提供的熵数据、生成多个确定性随机位DRB串、以及生成多个不确定性随机位NRB串,其中,所述DRNG包括:
调节器,所述调节器用于调节所述熵源所提供的熵数据以生成经调节的熵CE数据;
DRB发生器DRBG,耦合到所述调节器并用于基于所述CE数据而生成所述DRB串;以及
NRB发生器NRBG,耦合到所述调节器和所述DRBG,并用于基于所述DRB串和所述CE数据而生成所述NRB串;以及
执行单元,所述执行单元耦合到所述DRNG,并响应于读取种子值的第一指令而从所述DRNG中检索所述NRB串之一并将该NRB串储存在所述第一指令所指定的目的地寄存器中。
2.如权利要求1所述的处理器,其特征在于,还包括标志寄存器,所述标志寄存器用于存储由所述执行单元设置来指示储存在所述目的地寄存器中的NRB串是否有效的标志。
3.如权利要求1所述的处理器,其特征在于,所述执行单元用于响应于读取随机数的第二指令,从所述DRNG检索所述DRB串之一并将该DRB储存在所述第二指令所指定的目的地寄存器中。
4.如权利要求1所述的处理器,其特征在于,所述NRBG包括异或XOR逻辑,所述异或逻辑用于对所述DRB串和所述CE数据执行XOR运算以生成所述NRB串。
5.如权利要求1所述的处理器,其特征在于,还包括:
条件熵缓冲器,用于存储所述CE数据;
DRBG缓冲器,用于存储所述DRB串;以及
NRBG缓冲器,用于存储所述NRB串。
6.如权利要求5所述的处理器,其特征在于,所述DRBG用于在储存在所述DRBG缓冲器中的DRB串的数量落在第一预定阈值之下时自动生成更多DRB串。
7.如权利要求5所述的处理器,其特征在于,所述NRBG用于在储存在所述NRBG缓冲器中的NRB串的数量落在第二预定阈值之下时自动生成更多NRB串。
8.一种指令处理方法,包括:
经由数字随机数发生器DRNG调节熵源所提供的熵数据,以生成多个确定性随机位DRB串、以及生成多个不确定性随机位NRB串,其中,所述DRNG包括:
调节器,所述调节器用于调节所述熵源所提供的熵数据以生成经调节的熵CE数据;
DRB发生器DRBG,耦合到所述调节器并用于基于所述CE数据而生成所述DRB串;以及
NRB发生器NRBG,耦合到所述调节器和所述DRBG,并用于基于所述DRB串和所述CE数据而生成所述NRB串;
响应于读取种子值的第一指令,从所述DRNG检索NRB串之一;以及
将所述NRB串储存在所述第一指令所指定的目的地寄存器中。
9.如权利要求8所述的指令处理方法,其特征在于,还包括在标志寄存器中存储用于指示储存在所述目的地寄存器中的NRB串是否有效的标志。
10.如权利要求8所述的指令处理方法,其特征在于,还包括响应于读取随机数的第二指令,从所述DRNG检索所述DRB串之一并将该DRB储存在所述第二指令所指定的目的地寄存器中。
11.如权利要求8所述的指令处理方法,其特征在于,所述NRBG包括异或XOR逻辑,所述异或逻辑用于对所述DRB串和所述CE数据执行XOR运算以生成所述NRB串。
12.如权利要求8所述的指令处理方法,其特征在于,所述DRNG还包括:
条件熵缓冲器,用于存储所述CE数据;
DRBG缓冲器,用于存储所述DRB串;以及
NRBG缓冲器,用于存储所述NRB串。
13.如权利要求12所述的指令处理方法,其特征在于,所述DRBG用于在储存在所述DRBG缓冲器中的DRB串的数量落在第一预定阈值之下时自动生成更多DRB串。
14.如权利要求12所述的指令处理方法,其特征在于,所述NRBG用于在储存在所述NRBG缓冲器中的NRB串的数量落在第二预定阈值之下时自动生成更多NRB串。
15.一种计算机系统,包括:
互连;
处理器,与所述互连耦合,所述处理器包括:
数字随机数发生器DRNG,所述数字随机数发生器用于调节熵源所提供的熵数据,以生成多个确定性随机位DRB串、以及生成多个不确定性随机位NRB串,其中,所述DRNG包括:
调节器,所述调节器用于调节所述熵源所提供的熵数据以生成经调节的熵CE数据;
DRB发生器DRBG,耦合到所述调节器并用于基于所述CE数据而生成所述DRB串;以及
NRB发生器NRBG,耦合到所述调节器和所述DRBG,并用于基于所述DRB串和所述CE数据而生成所述NRB串;以及
执行单元,耦合到所述DRNG,并用于响应于读取种子值的第一指令而从所述DRNG中检索所述NRB串之一并将该NRB串储存在所述第一指令所指定的目的地寄存器中;以及
耦合到所述互连的动态随机存取存储器DRAM。
16.如权利要求15所述的计算机系统,其特征在于,还包括标志寄存器,所述标志寄存器用于存储由所述执行单元设置来指示储存在所述目的地寄存器中的NRB串是否有效的标志。
17.如权利要求15所述的计算机系统,其特征在于,所述执行单元用于响应于读取随机数的第二指令,从所述DRNG检索所述DRB串之一并将该DRN串储存在所述第二指令所指定的目的地寄存器中。
18.一种机器可读介质,包括存储在所述机器可读介质上的指令,所述指令当被执行时使机器执行如权利要求8-14中任一项所述的指令处理方法。
19.一种用于指令处理的设备,包括用于执行如权利要求8-14中任一项所述的方法的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810150426.3A CN108199829A (zh) | 2011-12-29 | 2011-12-29 | 用于不确定性随机位发生器(nrbg)的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067920 WO2013101101A1 (en) | 2011-12-29 | 2011-12-29 | Method and apparatus for a non-deterministic random bit generator (nrbg) |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810150426.3A Division CN108199829A (zh) | 2011-12-29 | 2011-12-29 | 用于不确定性随机位发生器(nrbg)的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104025501A CN104025501A (zh) | 2014-09-03 |
CN104025501B true CN104025501B (zh) | 2018-03-27 |
Family
ID=48698335
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180076075.2A Active CN104025501B (zh) | 2011-12-29 | 2011-12-29 | 用于不确定性随机位发生器(nrbg)的方法和装置 |
CN201810150426.3A Pending CN108199829A (zh) | 2011-12-29 | 2011-12-29 | 用于不确定性随机位发生器(nrbg)的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810150426.3A Pending CN108199829A (zh) | 2011-12-29 | 2011-12-29 | 用于不确定性随机位发生器(nrbg)的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9544139B2 (zh) |
EP (1) | EP2798771A4 (zh) |
CN (2) | CN104025501B (zh) |
TW (1) | TWI489376B (zh) |
WO (1) | WO2013101101A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2491896A (en) * | 2011-06-17 | 2012-12-19 | Univ Bruxelles | Secret key generation |
US9201629B2 (en) | 2013-03-14 | 2015-12-01 | International Business Machines Corporation | Instruction for performing a pseudorandom number seed operation |
US8873750B2 (en) | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
KR101488270B1 (ko) * | 2013-05-27 | 2015-01-30 | 한국전자통신연구원 | 난수 발생기용 잡음원 엔트로피 획득 장치 및 방법 |
US9449197B2 (en) * | 2013-06-13 | 2016-09-20 | Global Foundries Inc. | Pooling entropy to facilitate mobile device-based true random number generation |
US20150172050A1 (en) * | 2013-12-12 | 2015-06-18 | Nxp B.V. | Random data from gnss signals and secure random value provisioning for secure software component implementations |
CN104753666B (zh) * | 2013-12-30 | 2018-08-14 | 华为技术有限公司 | 密钥处理方法和装置 |
DE102014016548A1 (de) * | 2014-11-10 | 2016-05-12 | Giesecke & Devrient Gmbh | Verfahren zum Testen und zum Härten von Softwareapplikationen |
US9436529B2 (en) | 2014-12-26 | 2016-09-06 | Red Hat, Inc. | Providing random data to a guest operating system |
US9971565B2 (en) * | 2015-05-07 | 2018-05-15 | Oracle International Corporation | Storage, access, and management of random numbers generated by a central random number generator and dispensed to hardware threads of cores |
US9658832B2 (en) | 2015-05-18 | 2017-05-23 | Red Hat Israel, Ltd. | Multi-factor entropy sourcing for random number generators |
US9928036B2 (en) * | 2015-09-25 | 2018-03-27 | Intel Corporation | Random number generator |
US9880811B2 (en) * | 2016-01-04 | 2018-01-30 | International Business Machines Corporation | Reproducible stochastic rounding for out of order processors |
US10250387B1 (en) * | 2016-05-18 | 2019-04-02 | Patrick Joseph Guerin | Quantum computer resistant algorithm cryptographic key generation, storage, and transfer device |
US10235138B2 (en) | 2016-09-30 | 2019-03-19 | International Business Machines Corporation | Instruction to provide true random numbers |
US10877509B2 (en) * | 2016-12-12 | 2020-12-29 | Intel Corporation | Communicating signals between divided and undivided clock domains |
US10333708B1 (en) * | 2017-02-03 | 2019-06-25 | Amazon Technologies, Inc. | Hybrid random-number generator |
WO2018143845A1 (en) * | 2017-02-06 | 2018-08-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Lawful interception security |
US10168994B2 (en) * | 2017-04-11 | 2019-01-01 | Intel Corporation | Random number generator including entropy source |
WO2018191879A1 (en) | 2017-04-19 | 2018-10-25 | Ebay Inc. | Consistency mitigation techniques for real-time streams |
US10536266B2 (en) * | 2017-05-02 | 2020-01-14 | Seagate Technology Llc | Cryptographically securing entropy for later use |
US20190058578A1 (en) * | 2017-08-17 | 2019-02-21 | Intel Corporation | Encryption system including an online tester |
US20190065253A1 (en) * | 2017-08-30 | 2019-02-28 | Intel Corporation | Technologies for pre-configuring accelerators by predicting bit-streams |
GB2568660B (en) * | 2017-10-20 | 2020-10-14 | Graphcore Ltd | Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit |
US10691485B2 (en) | 2018-02-13 | 2020-06-23 | Ebay Inc. | Availability oriented durability technique for distributed server systems |
CN108306732A (zh) * | 2018-04-20 | 2018-07-20 | 北京数字认证股份有限公司 | 一种随机数生成方法、相关设备及系统 |
US11030075B2 (en) * | 2018-11-14 | 2021-06-08 | Microsoft Technology Licensing, Llc | Efficient register breakpoints |
CN111190570A (zh) * | 2018-11-15 | 2020-05-22 | 北京创原天地科技有限公司 | 一种高质量随机数发生器及一种随机数生成方法 |
US11483167B2 (en) | 2019-06-20 | 2022-10-25 | Intel Corporation | Method and apparatus to provide memory based physically unclonable functions |
AU2020202883B1 (en) * | 2020-01-10 | 2021-01-07 | Mesinja Pty Ltd | Systems and computer-implemented methods for generating pseudo random numbers |
WO2021237538A1 (zh) * | 2020-05-27 | 2021-12-02 | 华为技术有限公司 | 一种随机数生成装置及方法 |
US11924338B2 (en) * | 2020-11-04 | 2024-03-05 | Advanced Micro Devices, Inc. | Split random number generator |
EP4281892A2 (en) * | 2021-04-06 | 2023-11-29 | Google LLC | Secure cryptographic coprocessor |
FR3123472A1 (fr) * | 2021-05-28 | 2022-12-02 | Kapslog | Procédé de génération de nombre aléatoires |
US11816012B2 (en) | 2021-10-13 | 2023-11-14 | Raytheon Company | Multi-domain systems integration and evaluation |
TWI806804B (zh) * | 2021-12-23 | 2023-06-21 | 國立陽明交通大學 | 具有自單一puf電路來源所得多重硬體簽章之裝置及相關方法、系統與應用 |
US20230205531A1 (en) * | 2021-12-23 | 2023-06-29 | Intel Corporation | Random data usage |
CN115277094B (zh) * | 2022-06-24 | 2023-07-18 | 北京天融信网络安全技术有限公司 | 一种基于区块链的通信方法、终端、系统及存储介质 |
US20240152328A1 (en) * | 2022-11-08 | 2024-05-09 | Microchip Technology Incorporated | Indication of quality for random number generation |
CN117827285B (zh) * | 2024-03-04 | 2024-06-14 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令缓存方法、系统、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100332574A1 (en) * | 2009-06-26 | 2010-12-30 | Herbert Howard C | Digital random number generator |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963104A (en) * | 1996-04-15 | 1999-10-05 | Vlsi Technology, Inc. | Standard cell ring oscillator of a non-deterministic randomizer circuit |
US7174457B1 (en) | 1999-03-10 | 2007-02-06 | Microsoft Corporation | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party |
US6792438B1 (en) * | 2000-03-31 | 2004-09-14 | Intel Corporation | Secure hardware random number generator |
US7571199B1 (en) | 2000-11-15 | 2009-08-04 | Microsoft Corporation | Method and apparatus for generating random numbers |
WO2007014031A1 (en) * | 2005-07-22 | 2007-02-01 | Psigenics Corporation | Device and method for responding to influences of the mind |
US8015224B1 (en) * | 2006-12-27 | 2011-09-06 | Marvell International Ltd. | Entropy source for random number generation |
WO2009109959A1 (en) * | 2008-03-04 | 2009-09-11 | Sandisk Il Ltd. | Digital random number generator based on digitally-controlled oscillators |
US20110075840A1 (en) * | 2009-09-30 | 2011-03-31 | Zayas Fernando A | Method and system for generating random numbers in a storage device |
-
2011
- 2011-12-29 US US13/976,175 patent/US9544139B2/en active Active
- 2011-12-29 WO PCT/US2011/067920 patent/WO2013101101A1/en active Application Filing
- 2011-12-29 CN CN201180076075.2A patent/CN104025501B/zh active Active
- 2011-12-29 EP EP11878687.0A patent/EP2798771A4/en not_active Withdrawn
- 2011-12-29 CN CN201810150426.3A patent/CN108199829A/zh active Pending
-
2012
- 2012-12-22 TW TW101149297A patent/TWI489376B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100332574A1 (en) * | 2009-06-26 | 2010-12-30 | Herbert Howard C | Digital random number generator |
Also Published As
Publication number | Publication date |
---|---|
EP2798771A4 (en) | 2015-10-07 |
EP2798771A1 (en) | 2014-11-05 |
TW201346716A (zh) | 2013-11-16 |
TWI489376B (zh) | 2015-06-21 |
CN108199829A (zh) | 2018-06-22 |
US20150055778A1 (en) | 2015-02-26 |
WO2013101101A1 (en) | 2013-07-04 |
CN104025501A (zh) | 2014-09-03 |
US9544139B2 (en) | 2017-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104025501B (zh) | 用于不确定性随机位发生器(nrbg)的方法和装置 | |
CN104584435B (zh) | 有可访问和不可访问的物理不可克隆功能的集成电路 | |
EP3757833A1 (en) | Implicit integrity for cryptographic computing | |
CN107851170A (zh) | 支持用于存储器地址范围的可配置安全级别 | |
TWI705352B (zh) | 具有金鑰雜湊訊息識別碼之處理器,方法,系統及指令 | |
CN104202161B (zh) | 一种SoC密码芯片 | |
US20190065203A1 (en) | Instruction for performing a pseudorandom number generate operation | |
CN1836220B (zh) | 具有降低的解密延迟的存储器加密的装置和方法 | |
US20100332574A1 (en) | Digital random number generator | |
CN108702286A (zh) | 抗功率侧信道攻击的高级加密标准加速器处理器 | |
CN105190534B (zh) | 执行伪随机数种子操作的指令 | |
CN108228960A (zh) | 用于熔丝验证的基于Simon的散列 | |
CN107924444A (zh) | 安全的模幂运算处理器、方法、系统和指令 | |
Dürmuth et al. | On password guessing with GPUs and FPGAs | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
Wang et al. | Dynamically reconfigurable encryption and decryption system design for the internet of things information security | |
Venugopal et al. | High throughput implementations of cryptography algorithms on GPU and FPGA | |
Lim et al. | Bitsliced high-performance AES-ECB on GPUs | |
Bilski et al. | Multi-core implementation of the symmetric cryptography algorithms in the measurement system | |
CN109690546A (zh) | 支持对客户机飞地存储器页的超额订阅 | |
CN104639313B (zh) | 一种密码算法的检测方法 | |
Yu et al. | An AES chip with DPA resistance using hardware-based random order execution | |
CN1661958B (zh) | 区块密码功能的微处理器及方法 | |
Kim et al. | Generative adversarial networks-based pseudo-random number generator for embedded processors | |
Cox et al. | Intel's digital random number generator (DRNG) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |