CN105190535B - 执行伪随机数产生操作的指令 - Google Patents

执行伪随机数产生操作的指令 Download PDF

Info

Publication number
CN105190535B
CN105190535B CN201480015409.9A CN201480015409A CN105190535B CN 105190535 B CN105190535 B CN 105190535B CN 201480015409 A CN201480015409 A CN 201480015409A CN 105190535 B CN105190535 B CN 105190535B
Authority
CN
China
Prior art keywords
instruction
operand
block
memory
register
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
Application number
CN201480015409.9A
Other languages
English (en)
Other versions
CN105190535A (zh
Inventor
D·格瑞纳
B·内尔兹
T·维塞格拉迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105190535A publication Critical patent/CN105190535A/zh
Application granted granted Critical
Publication of CN105190535B publication Critical patent/CN105190535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Engineering (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

提供了一种机器指令,该机器指令包括提供操作代码的操作代码字段,所述操作代码用于标识执行伪随机数操作,以及用来标识寄存器的寄存器字段,所述寄存器用来指明被使用的第二操作数的存储器中的位置。所述机器指令被执行,并且执行包括:对于所述第一操作数的一个或多个存储器的块中的每一个存储器的块,使用512比特安全哈希技术以及所述机器指令的参数块中的至少一个种子值产生哈希值;以及将所述产生的哈希值的至少一部分存储在所述第一操作数的对应的存储器的块中,所述产生的哈希值是伪随机数的至少一部分。

Description

执行伪随机数产生操作的指令
背景技术
一个或多个方面一般地涉及在计算环境中的处理,更具体地涉及与在计算机程序或其他类型的程序中使用的产生伪随机数相关的处理。
伪随机数是表现为随机但并不真实随机的数。它们是由提供统计上随机数的确定性计算过程产生的数。由于这些数被确定性过程产生后,如果起始点是已知的,给定的数据序列可以在之后被产生。也就是说,给定具体的函数和种子值,同样的数据序列由该函数产生。
伪随机数被用于许多计算机应用程序中,例如,仿真、密码学、以及过程产生等。存在多种方式来产生可用于这些应用程序中的伪随机数。这些方式包括,例如,程序库子例程,以及具有在一些处理器(例如能用于z/架构的处理器)上可用的链式指令的密码消息的受限函数。
发明内容
通过提供一种用于执行机器指令的方法、系统和计算机程序,如所要求的,现有技术的不足被克服,并且优势被提供。
通过一个或多个方面的技术手段,附加的特征和优势可以被实现。其他的实施例和方面在本文中被详细描述并且被认为是权利要求的一部分。
附图说明
作为说明书结尾的权利要求中的示例,一个或多个方面被具体地指出并且清楚地被要求。从以下与附图相结合的详细说明,上述的以及其他对象、特征和优势是明显的,其中:
图1A描述了用来结合和使用一个或多个方面的计算环境的一个示例;
图1B描述了图1A的处理器的进一步的细节;
图2A描述了用来结合和使用一个或多个方面的计算环境的另一个示例;
图2B描述了图2A的存储器的进一步的细节;
图3A描述了执行伪随机数操作指令的格式的一个实施例;
图3B描述了被图3A的执行伪随机数操作指令使用的通用寄存器0(GR0)的内容的一个示例;
图3C描述了被图3A的执行伪随机数操作指令使用的通用寄存器1(GR1)的内容的一个示例;
图3D描述了一个方面中被图3A的执行伪随机数操作指令使用的寄存器R1的内容的一个实施例;
图3E描述了一个方面中被图3A的执行伪随机数操作指令使用的寄存器R1+1的内容的一个实施例;
图3F描述了一个方面中被图3A的执行伪随机数操作指令使用的寄存器R2的内容的一个实施例;
图3G描述了一个方面中被图3A的执行伪随机数操作指令使用的寄存器R2+1的内容的一个实施例;
图3H描述了与被图3A的执行伪随机数操作指令指定的函数代码相关的处理的一个示例;
图3I描述了与检查被图3A的执行伪随机数操作指令指定的修饰指示符相关的处理的一个示例;
图4A描述了被具有为0的函数代码的执行伪随机数操作指令使用的参数块的格式的一个示例;
图4B描述了被具有为3的函数代码的执行伪随机数操作指令使用的参数块的格式的一个实施例;
图5A描述了用于实例化操作的种子材料的构建的一个实施例;
图5B描述了用于重设种子操作的种子材料的构建的一个实施例;
图6描述了产生Vnew的逻辑的一个实施例;
图7描述了产生Cnew的逻辑的一个实施例;
图8A描述了产生伪随机数的逻辑的一个实施例;
图8B描述了创建在产生伪随机数中使用的哈希值的一个示例;
图9描述了基于伪随机数产生操作的普通完成的更新参数块的逻辑的一个实施例;
图10描述了结合一个或多个方面的计算机程序产品的一个实施例;
图11描述了托管计算机系统的一个实施例;
图12描述了计算机系统的进一步示例;
图13描述了包括计算机网络的计算机系统的另一个示例;
图14描述了计算机系统的多个元件的实施例;
图15A描述了图14的计算机系统的执行单元的一个实施例;
图15B描述了图14的计算机系统的分支单元的一个实施例;
图15C描述了图14的计算机系统的加载/存储单元的一个实施例;以及
图16描述了被仿真的托管计算机系统的一个实施例。
具体实施方式
在一个方面,机器指令被提供用于产生伪随机数。所述指令,被称为执行伪随机数操作指令,具有能力来实例化用来产生伪随机数的一个或多个种子值;重设种子一个或多个种子值,和/或产生伪随机数。例如,使用美国国家标准技术研究所(National Instituteof Standards and Technology,NIST)定义的512-比特安全哈希算法(SHA-512)。其符合用于伪随机数产生的最新的NIST建议。然而,出于性能原因,所述指令运行在右-到-左模式,而不是如NIST定义的左-到-右模式。在进一步的实施例中,所述指令可扩展到使用替代的编码算法(也被称为技术手段)。
参考图1A,结合和使用一个或多个方面的计算环境的实施例被描述。计算环境100包括,例如,处理器102(例如中央处理单元),存储器104(例如主存储器),以及通过例如一个或多个总线108和/或其他连接而互相连接的一个或多个输入/输出(I/O)设备和/或接口106。
在一个示例中,处理器102是基于国际商业机器公司提供的z/架构的,并且是服务器(例如系统z服务器)的一部分,系统z服务器也是国际商业机器公司提供的并且实施z/架构。z/架构的一个实施例被描述在一出版物中,标题为“z/Archi tecture Pr inciples ofOperation”,出版号为SA22-7832-09,第10版,2012年9月。在一个示例中,处理器执行操作系统,例如z/OS,z/OS也是国际商业机器公司提供的。以及是美国纽约阿蒙克的国际商业机器公司的注册商标。本文中使用的其他名字可能是国际商业机器公司或其他公司的注册商标、商标、或产品名。
在进一步的实施例中,处理器102是基于国际商业机器公司提供的Power架构的。Power架构的一个实施例被描述在“Power ISATM Version 2.06Revision B”,国际商业机器公司,2010年7月23日。POWER是国际商业机器公司的注册商标。
在进一步的实施例中,处理器102是基于英特尔公司提供的英特尔架构的。英特尔架构的实施例被描述在“64 and IA-32 Architectures Developer’s Manual:Vol.2B,Ins truct ions Set Reference,A-L”,顺序号253666-045US,2013年1月,以及“64 and IA-32 Archi tectures Developer’s Manual:Vol.2B,Instructions SetReference,M-Z”,顺序号253667-045US,2013年1月。是加利福尼亚圣克拉拉的英特尔公司的注册商标。
处理器102包括用于执行指令的多个功能组件。如图1B中描述的,这些功能组件包括,例如,用于提取将被执行的指令的指令提取组件120;用于解码获取到的指令以及获取被解码的指令的操作数的指令解码单元122;用于执行被解码的指令的指令执行组件124;如果需要的话,用于为指令执行访问存储器的存储器访问组件126;以及用于提供被执行的指令的结果的回写组件130。这些组件中的一个或多个可以,按照一个方面,通过包括至少一部分的或具有到种子/产生组件136的访问,提供伪随机数种子和/或产生功能。这个功能下面将被更详细地描述。
在一个实施例中,处理器102还包括被功能组件中的一个或多个所使用的一个或多个寄存器140。
参考图2A,用于结合和使用一个或多个方面的计算环境的另一个实施例被描述。在这个示例中,计算环境200包括,例如,原生(native)中央处理单元(CPU)202,存储器204,以及通过例如一个或多个总线208和/或其他连接而互相连接的一个或多个输入/输出(I/O)设备和/或接口206。作为示例,计算环境200可以包括由纽约阿蒙克的国际商业机器公司提供的PowerPC处理器,pSeries服务器或者xSeries服务器;由加利福尼亚帕洛阿尔托的惠普公司提供的具有英特尔安腾II处理器的惠普Superdome;和/或基于国际商业机器公司、惠普、英特尔、甲骨文或其他公司提供的架构的其他机器。
原生中央处理单元202包括在所述环境中处理期间使用的一个或多个原生寄存器210,例如一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表在任何特定时间点的所述环境的状态的信息。
此外,原生中央处理单元202执行存储器204中存储的指令和代码。在一个具体的示例中,中央处理单元执行存储器204中存储的仿真器代码212。这一代码使得在一个架构下配置的计算环境能够模仿另一个架构。例如,仿真器代码212允许基于不同于z/架构的架构(例如PowerPC处理器、pSeries服务器、xSeries服务器、惠普Superdome服务器或者其他)的机器仿真z/架构并执行基于z/架构开发的软件或指令。
参考图2B,涉及仿真器代码212的进一步细节将被描述。存储器240中存储的访客指令250包括被开发用于在不同于原生CPU202的架构中执行的软件指令(例如与机器指令相关的)。例如,访客指令250可以已经被设计在z/架构处理器102上执行,但是替代地,正在原生CPU202(其可以是例如英特尔安腾II处理器)上被仿真。在一个示例中,仿真器代码212包括指令获取例程252以从存储器204获取一个或多个访客指令,并可选地为获取到的指令的提供缓存。其还包括指令转译例程254以确定已被获取到的访客指令的类型以及将该访客指令转译为一个或多个对应的原生指令256。这一转译包括,例如,识别将被访客指令执行的函数并选择原生指令来执行该函数。
此外,仿真器212包括仿真控制例程260以引起原生指令被执行。仿真控制例程260可以引起原生CPU202来执行模仿一个或多个之前获取到的访客指令的原生指令的例程,并且在这一执行结束时,返回控制到指令获取例程以模仿下一个访客指令或一组访客指令的获取。原生指令256的执行可以包括从存储器204加载数据到寄存器;从寄存器回存数据到存储器;或如转译例程所确定地,执行一些类型的算法或逻辑操作。
每个例程,例如,被在存储器中存储的并被原生中央处理单元202执行的软件中实现。在其他示例中,例程或操作中的一个或多个可以被实现在固件、硬件、软件或者它们的一些组合中。使用原生CPU的寄存器210或通过使用存储器204中的位置,仿真处理器的寄存器可以被模仿。在实施例中,访客指令250、原生指令256和仿真器代码212可以内置在相同的存储器中或者可以分布在在不同的存储设备中。
如本文中使用的,固件包括,例如处理器的微代码、迷你代码和/或宏代码。其包括,例如,在更高级别机器代码的实施中使用的硬件级别指令和/或数据结构。在一个实施例中,其包括,例如,典型地被作为微代码传递的专有代码,该专有代码包括针对承载硬件以及控制访问系统硬件的操作系统的受信任的软件或微代码。
在一个示例中,被获取、转译、和执行的访客指令250是本文中描述的执行伪随机数操作指令。该指令,其是一种架构(例如z/架构),被从存储器中获取、转译和再现为另一种架构(例如PowerPC、pSeries、xSeries、英特尔等)的原生指令256的序列。这些原生指令接着被执行。
与执行伪随机数操作指令相关的细节,包括指令的显式的和隐含的字段,以及由中央处理单元的执行(在原生或者仿真系统中)在这里被描述。执行伪随机数操作指令包括产生操作以产生伪随机数,以及种子操作以启动或者重设用于产生伪随机数的一个或多个种子值。种子值被存储在该指令访问的参数块中。
首先参考图3A,执行伪随机数操作指令的一个实施例被描述。在一个示例中,执行伪随机数操作指令300包括具有指示伪随机数操作的操作代码(例如B93C)的操作代码字段302(例如比特0-15),用于指明至少一个第一寄存器(R1)的第一寄存器字段304(例如比特24-27),以及用于指明至少一个第二寄存器(R2)的第二寄存器字段306(例如比特28-31)。在一个示例中,字段304-306中的每一个是与操作代码字段相分离并且独立的。此外,在一个实施例中,它们是彼此分离并且独立的,然而,在其他实施例中,一个以上的字段可以被组合。
在一个示例中,操作代码字段302指明的操作代码中选中的比特(例如开始的两个比特)具体指定指令的长度。在这一具体示例中,选中的比特指示长度为两个半字(halfword)。此外,指令的格式是具有扩展的操作代码字段的寄存器-和-寄存器操作。具有这一格式,由R1指明的寄存器的内容被称作第一操作数。包含第一操作数的寄存器有时被称作第一操作数位置。此外,R2字段指明具有第二操作数的寄存器,并且R2可以与R1字段指明相同的寄存器。
指令中编码的R1和R2之外,指令的一个实施使用一个或多个隐含寄存器,隐含寄存器包括,例如,通用寄存器0(GR0)和通用寄存器1(GR1)。在下面参考图3B-3G,每个寄存器被进一步描述。
首先参考图3B,通用寄存器0(320)的格式的一个实施例被描述。在一个示例中,通用寄存器0包括修饰(M)比特322(例如比特56),以及函数代码(FC)字段324(例如比特57-63)。函数代码字段包括指定将被执行的函数的函数代码。在一个示例中,指派的函数代码包括:用于查询函数的代码0,代码0具有大小为16的指派的参数块,以及用于SHA-512-DRNG(确定性随机数产生器)函数的代码3,代码3具有大小为240的指派的参数块。通用寄存器0的Should比特57-63指明未指派或未安装的函数代码,规范异常被识别。
查询函数(函数代码0)提供表明其他函数的可用性的方式,所述其他函数包括但不限于其他随机或伪随机数产生器函数。针对查询函数,R1和R2字段以及通用寄存器1的内容被忽略。
在这一实施例中,对于查询函数之外的函数,比特56是用来表明将被执行的具体操作的修饰比特。例如,当修饰比特为0时,产生操作被执行,以及当修饰比特为1时,种子操作被执行。对于查询函数,修饰比特被忽略。在一个实施中,通用寄存器0的所有其他比特被忽略。在进一步的实施例中,如果其他函数被提供,它们可以使用或者可以不使用修饰比特。
参考图3H和3I,函数代码和修饰比特的使用被进一步描述。首先,参考图3H,步骤379,执行伪随机数操作指令,被获取并且被执行。在一个实施例中,步骤380,在执行期间,通用寄存器0中指明的函数代码被获取。步骤382,基于函数代码,关于将被执行的函数,决定被做出。作为示例,该函数可以是查询函数或者随机数产生器函数,例如SHA-512-DRNG函数,或其他类型的随机数产生器函数,或其他函数。
随后,查询384,关于函数代码指明的函数是否使用修饰指示符,决定被做出。如果修饰指示符没有被使用,接着处理进行到步骤386,执行指派的函数。否则,步骤388,修饰指示符被获取,并且步骤390,基于该修饰指示符,处理继续进行。
参考图3I,修饰指示符的使用的一个实施例被进一步描述。首先,查询392中,关于修饰指示符的值,决定被做出。在函数代码指示SHA-512-DRNG函数的一个具体示例中,关于修饰指示符是否为0或者1,决定被做出。
如果修饰比特的值为0,接着步骤394,SHA-512-DRNG函数的产生操作被执行。这包括,例如,针对第一操作数的每一个存储块,使用512比特安全哈希技术以及在参数块中的一个或多个种子值产生哈希值;将产生的哈希值的至少一部分存储在第一操作数中。
否则,如果修饰比特的值为1,接着步骤396,种子操作被执行。这包括,例如,获取种子材料,该种子材料是基于重设种子计数器的值和使用指令的第二操作数中包括的信息而构建的;使用该种子材料和512比特安全哈希技术以提供一个或多个种子值;以及将种子值存储在参数块中。
在函数代码代表其他类型的随机数产生器函数的其他实施例中,相同的修饰比特值可以被用来针对随机数产生器函数,确定产生或种子操作是否被执行。此外,在进一步的实施例中,对于指明其他类型函数的其他类型函数代码,修饰指示符的值可以指明本文中描述的之外的不同操作。许多变体都是可能的。
参考图3C,继续指令寄存器的描述,通用寄存器1(330)的格式的一个实施例被描述。在一个示例中,对于查询函数之外的函数,通用寄存器1包含被指令访问和使用的参数块的最左边字节在存储中的逻辑地址332。在通用寄存器1中的参数块地址的长度和位置取决于寻址模式。在24-比特寻址模式中,通用寄存器1的比特位置40-63的内容构成该地址,比特位置0-38的内容被忽略。在31-比特寻址模式中,通用寄存器1的比特位置33-63的内容构成该地址,比特位置0-32的内容被忽略。在64-比特寻址模式中,通用寄存器1的比特位置0-63的内容构成该地址。在访问-寄存器模式中,访问寄存器1指明包含参数块的地址空间。
图3D描述了R1字段304(图3A)指明的R1(340)的内容的一个示例。具体地,对于产生操作,R1字段指明通用寄存器的偶-奇对,并且用于指明通用寄存器0之外的偶数编号的寄存器;否则,规范异常被识别出。通用寄存器R1的内容指明第一操作数的存储器的位置。具体地,R1的内容指明第一操作数的最左边字节的地址342。第一操作数的长度352(图3E)在通用寄存器R1+1(350)中被指明。R2字段被产生操作所忽略。
对于第二操作数,R2字段306(图3A)指明了通用寄存器的偶-奇对,并且用来指明通用寄存器0之外的偶数-编号的寄存器,否则,规范异常被识别出。通用寄存器R2(360,图3F)的内容指明第二操作数的存储器的位置。具体地,R2的内容指明第二操作数的最左边字节的地址362。第一操作数的长度372(图3G)在通用寄存器R2+1(370)中被指明。R1字段被种子操作所忽略。
不管产生或者种子操作是否被指明,偶数-编号的通用寄存器的内容指明存储操作数的(R1或者R2,分别地))受制于寻址模式。在24-比特寻址模式中,寄存器的比特位置40-63的内容构成存储操作数的地址,并且比特位置0-39的内容被忽略。在31-比特寻址模式中,寄存器的比特位置33-63的内容构成存储操作数的地址,并且比特位置0-32的内容被忽略。在64-比特寻址模式中,寄存器的比特位置0-63的内容构成存储操作数的地址。在访问-寄存器模式中,各自访问寄存器(R1或R2)指明包含存储操作数的地址空间。
不管产生或者种子操作是否被指明,在24-比特和31-比特寻址模式,奇数-编号的通用寄存器(R1+1或R2+1,分别地)的比特位置32-63的内容构成指明存储操作数中的字节的数目的32-比特的无符号二进制整数。在64-比特寻址模式,寄存器的比特位置0-63的内容构成指明存储操作数中的字节的数目的64-比特的无符号二进制整数。
对于产生操作,在指令完成时,在通用寄存器R1+1中第一操作数长度被更新。在24-比特和31-比特寻址模式两者中,更新后的值替代了通用寄存器R1+1的比特位置32-63的内容;通用寄存器R1+1的比特位置0-31的内容保持不变。在64-比特寻址模式中,更新后的值替代了通用寄存器R1+1的内容。
当参数块覆盖了存储操作数的任意部分时,结果是不可预测的。
当存储操作数长度为0时,存储操作数位置的访问异常不能被识别出。然而,即使在存储操作数长度为0时,参数块被访问。对于产生操作,当存储操作数长度为0时,通用寄存器R1+1没有被改变,并且条件代码0被设置。
如其他CPU和I/O子系统观察到的,参数块和存储操作数的引用可以是多访问引用,到这些位置的访问并不必须是块并行的,并且这些访问或引用的顺序没有被定义。
对于产生操作,当PER(程序事件记录-被实施在,例如,基于z/架构的处理器)存储变化事件被识别时,在事件被报告之前,少于4K的额外字节被存储在第一操作数位置中。当对于第一操作数位置和对于被存储的参数块的部分,PER存储变化事件都被识别出时,不能预测这两个位置中的哪个在PER访问标识(PAID)和PER ASCE ID(程序事件记录地址空间控制元件标识(AI))中被标识出。类似地,当对于第一操作数位置和对于参数块,PER零-地址-检测事件被识别出时,不能预测这两个位置中的哪个在PAID和AI中被标识出。
对于产生操作,对于超过指令的单次执行中已处理的第一操作数的更大的部分,访问异常可以被报告。然而,对于不围绕第一操作数的位置或者对于超过4K字节的位置,访问异常没有被从当前正被处理的位置中识别出。
对于产生操作,当该操作因为正常完成而结束时,条件代码0被设置并且在通用寄存器R1+1中的结果值是0。当该操作因为部分完成而结束时,条件代码3被设置并且在通用寄存器R1+1中的结果值是非零的。
在一个实施中,当执行伪随机数操作指令的函数代码是指示查询函数的0时,128-比特的状态字402(图4A)被存储在与该指令相关的参数块400中。这一字段的比特0-127分别对应于执行伪随机数操作指令的函数代码0-127。当一个比特是1时,对应的函数被安装;否则,该函数没有被安装。例如,如果SHA-512DRNG函数被安装,对应于函数代码3的比特3,被设置为1。
当查询函数的执行完成时,条件代码0被设置;条件代码3不适用于此函数。
在一个实施中,当执行伪随机数操作指令的函数代码是3时,确定性随机数产生器(DRNG)函数被执行。取决于修饰比特,通用寄存器0的比特56,DRNG函数执行确定性伪随机数产生操作或者确定性伪随机数种子操作,每一个都使用512-比特安全哈希算法(SHA-512)。
确定性伪随机数产生,也被称为确定性随机比特产生,被定义在,例如,Recommendation for Random Number Generation Using Deterministic Random BitGenerators,美国国家标准与技术研究所(NIST),NIST特别出版800-90A,2012年1月。此外,安全哈希算法的描述被发现在,例如Secure Hash Standard(SHS),,联邦信息处理标准出版,FIPS PUB 180-4,美国国家标准与技术研究所,马里兰州盖瑟斯堡,2012年3月,通过对其整体的引用而被结合到本文中。
用于DRNG函数的参数块的实施例在图4B中被描述。参数块420代表确定性随机数产生器的内部状态,并且包括,例如:
预留的:参数块的字节0-3,16,和128被预留。
重设种子计数器422:参数块的字节4-7包含32比特的无符号二进制整数,该32比特的无符号二进制整数指示从该参数块最近被实例化或者被重设种子开始,指令已经以条件代码0完成的次数。
当重设种子计数器包括零时,下列适用:
·种子操作的执行引起参数块被以初始值实例化,包括设置重设种子计数器为1的值。
·产生操作的执行引起规范异常被识别出。
当重设种子计数器保持非零值时,参数块被认为被实例化,并且下列适用:
·种子操作的执行引起参数块被重设种子,包括重新设置重设种子计数器为1的值。
·引发条件代码0的产生操作的执行引起重设种子计数器被增长1;重设种子计数器字段的比特位置0的任何执行都被忽略。
流字节424:参数块的字节8-15包括64-比特无符号二进制整数。当实例化参数块(即,当重设种子计数器为0时),流字节字段被种子操作的执行设置为零;当参数块已经被实例化时,该字段不被种子操作的执行改变。
产生操作的部分或全部完成引起流字节字段的内容增加存入第一操作数的字节的数目;并且流字节字段的比特位置0的执行被忽略。
值(V)426:参数块的字节17-127包括,例如,指示由该参数块代表的随机数产生器的内部状态的888-比特的值。当实例化参数块时,V被种子操作的执行所初始化。或者当重设种子计数器为非零时,V被种子操作的执行所更新;或者V被以条件代码0结束的产生操作的执行所更新。
常量(C)428:参数块的字节129-239包括,例如,指示由该参数块代表的随机数产生器的内部状态的888-比特的值。C被种子操作的执行所初始化,并且被产生操作所检验。
同样的参数块格式被产生操作和种子操作(包括实例化和重设种子)所使用。包含全零的参数块被认为是没有被实例化。程序需要在发布种子操作以实例化参数块之前将参数块设置为0,并且随后,程序除了将其设置为0,不能修改参数块的内容;否则,不可预料的结果可能被指令产生。
关于DRNG函数(本文中也被称为SHA-512-DRNG函数)的种子操作和产生操作的进一步细节在下面被描述。
种子操作
SHA-512-DRNG种子操作使用512-比特安全哈希算法确定性伪随机数产生参数块。在一个实施例中,操作被中央处理单元执行;然而,在其他实施例中,其由其他的组件或者协-处理器执行。
取决于参数块的字节4-7中的重设种子计数器是0或者非0,实例化或者重设种子操作分别被执行。下面参考附图,实例化或者重设种子的进一步细节被描述。在附图中,指定的符号或缩写具有下面的含义:<#>:字段的字节长度;R2+1:存储器中操作数2的0-512字节范围内的长度;#比特:由SHA-512算法-888比特(378hex(十六进制))产生的比特的32-比特计数;ct:8-比特计数器(例如,由哈希派生函数使用的m);z:为0的8-比特字段。
对于实例化操作,如图5A中描述的,存储器500a中的第二操作数包括熵输入、随机数、以及一个可选的个性化串中的一个或多个,它们中的每个在下面被描述。这一信息被用来形成种子材料502a。
作为示例,熵输入是输入比特串,其提供了对于确定性随机比特产生器(DRBG)机制的不可预测性的评估的最小量。DRBG机制是随机比特产生器(RBG)的一部分,其包括函数以实例化和非实例化RBG、产生伪随机比特、可选地重设种子RBG、以及测试DRBG机制的健康度。
随机比特产生器(RBG)是输出似乎统计学地独立和未偏置的二进制比特序列的设备、算法、技术或机制。RBG的一个示例是DRBG。DRBG是,例如,包括DRBG机制的RBG并且(至少最初地)具有到熵输入的源的访问。DRBG从被称为种子的机密初始值、以及其他可能的输入产生比特的序列。
种子是被用作到DRBG机制的输入的比特的串。种子确定DRBG的内部状态的一部分,并且其熵将足够支持DRBG的安全强度。熵是封闭系统中的无序、随机性或者可变性的度量。最小-熵是在一个实施中使用的度量。
随机变量X的最小-熵(比特中的)是具有下列属性的最大值m:X的每一个观测值提供至少m比特的信息(例如,X的最小-熵是针对X的潜在观测值的信息内容的最大下限)。随机变量的最小-熵是它的熵的下限。对于具有概率p1,...,pn的离散分布,最小-熵的精确公式化是–(log2 max pi)。最小-熵经常被作为随机变量的不可预测性的最差情况度量而使用。
随机数是具有至多可忽略的重复的几率的时间-变化的值,例如,针对每一个使用、时间戳、序列号、或者他们的一些组合而被重新产生的随机值。
个性化串是与机密的熵输入和(可能地)随机数相组合以产生种子的比特的可选串。
对于重设种子操作(重设种子要求影响DRBG机制的内部状态的额外的比特),存储器500b(图5B)中的第二操作数包括熵输入和可选的额外输入,用来形成种子材料502b。可选的额外输入可以是增加进一步的随机性的任何需要的信息,例如时间值或其他任意值。
如图5A中描述的,当执行实例化操作时,仅使用第二操作数形成种子材料。例如,第二操作数的输入值被串联以形成种子材料。然而,如图5B中显示的,当执行重设种子操作时,从例如,值01hex(十六进制)(504)、参数块的V字段506的内容、以及第二操作数500b的内容的串联,种子材料被形成。
对于实例化或者重设种子操作,一个或多个种子值被初始化/更新。一个这样的种子值是Vnew,其如同参考图6所描述地而被形成。在一个实施例中,一字节计数器600a、888的四-字节值(602a)、种子材料604a(如上面描述地而被形成的)、以及填充位606a被串联和使用作为初始链值(ICV)610a。在一个实施例中,填充位是80hex(十六进制)的值,与0-127字节的零相串联,与指明不包括填充位的到SHA-512算法的输入的比特长度(即,一-字节计数器、888的四-字节值、种子材料的长度)的16-字节二进制整数相串联。初始哈希值是,例如,64字节的值,并且这样的值的示例下面被进一步地描述。
SHA-512算法被调用两次以形成两个64-比特哈希的结果612a、612b;一-字节计数器600a包括针对SHA-512算法的第一次调用的值1;并且其包括针对第二次调用的值2(600b)。第二次调用还使用888的四字节值(602b)、种子材料604b、以及填充位606b,并与IHV 610b一起作为到SHA-512算法608b的输入,以形成64-比特哈希的结果612b。在这个示例中,602b是与602a相同的值;604b与604a相同;606b与606a相同;并且610b与610a相同。然而,在其他实施例中,例如,对于其他技术,这些值可以互相是不同的。
两个64-字节哈希的结果612a、612b被串联在一起,并且,在这个示例中,128-字节串联的最左边111字节形成新的参数块中的值字段(Vnew)614。
与Vnew字段的信息类似,在实例化或重设种子操作两者期间,新的常量字段(Cnew)被形成。Cnew是参数块中存储的另一个种子值。如图7中显示的,一字节计数器700a、888的四-字节值(702a)、零的一字节值704a、Vnew字段706a、以及填充位708a被串联,并且被与IHV711a一起用作到SHA-512算法710a的输入。填充位是,例如,80hex(十六进制)的值,与为122字节的零相串联,与指明不包括填充位的到SHA-512算法的输入的比特长度(即,一-字节计数器、888的四-字节值、种子材料的长度)的16-字节二进制整数相串联。在一个实施例中,IHV 711a是与IHV 610a或者IHV 610b相同的值。
SHA-512算法被调用两次以形成两个64-比特哈希的结果712a、712b;一-字节计数器700a包括针对SHA-512算法的第一次调用的值1;并且其包括针对第二次调用的值2(700b)。第二次调用还使用888的四字节值(702b)、零的一字节值704b、Vnew字段706b、以及填充位708b,与IHV 711b一起作为到SHA-512算法710b的输入。在这个示例中,702b是与702a相同的值;704b与704a相同;706b与706a相同;708b与708a相同;并且711b与711a相同。然而,在其他实施例中,例如,对于其他技术,这些值可以互相是不同的。
两个64-字节哈希的结果712a、712b被串联在一起,并且,在这个示例中,128-字节串联的最左边111字节形成新的常量字段(Vnew)714。
对于实例化或者重设种子操作,参数块中的重设种子计数器字段720被设置为1的值。仅对于实例化操作,参数块中的流字节字段722被设置为0;流字节字段保持不为重设种子操作所改变。
当SHA-512-DRNG种子操作的执行完成时,条件代码0被设置;条件代码3不适用于种子操作。
产生操作
如上所描述的,SHA-512-DRNG产生操作使用实例化的或者重设种子的参数块、以及512-比特安全哈希算法产生伪随机数。在一个实施例中,该操作由中央处理单元执行;然而,在其他实施例中,其由其他组件或协处理器执行。
当通用寄存器R1+1中的第一操作数长度非零时,第一操作数被以右-到-左的顺序存储在64-字节块的单元中,除了最右边的块可能包含少于64字节。通过将通用寄存器R1+1中的第一操作数长度向上取整到64的倍数,以及将该值除以64,来决定将被存储的块(包括任何一部分的最右边的块)的数目。第一操作数的块被从左到右编号为0到n-1,其中n-1代表最右边的块。
在一个实施例中,如参考图8A-8B所描述的,对于第一操作数位置的每一个块,下面的过程被执行:从最右边(n-1)块开始并且继续向左。图8B(以及图9)中,<#>代表以字节为单位的字段的长度。
开始参照图8A,步骤801,对于第一操作数位置的块,哈希值被产生。参考图8B,产生哈希值的一个实施例被描述。
1.参照图8B,来自参数块800的值(V)802被加804到正被处理的块数目806,源于该增加的任何溢出被忽略。
2.该增加的111-字节的和808,与17字节的填充位810相串联,被与IHV 811一起,用作到SHA-512算法812的输入,导致64-字节哈希的值814。被提供给SHA-512算法的17-字节的填充位是,例如,被888的16-字节二进制整数值(以比特为单位的V的长度)跟随的80hex(十六进制)的值。IHV 811与IHV 610a、610b、711a、或711b相同;或者,在另一实施例中,例如对于其他技术,其可以具有不同的值。
3.回到图8A,创建哈希的值之后,查询803,如果通用寄存器R1+1中第一操作数长度是64的倍数,接着步骤805,结果的64-字节哈希的值被存储在第一操作数位置的各个块中,并且步骤807,通用寄存器R1+1中的长度被减去64。
如果第一操作数长度不是64的倍数,查询803,接着步骤809,结果的64-字节的哈希的值的最左边m字节被存储在第一操作数的最右边部分的块中,其中,m代表第一操作数长度除以64的余值。这一情况中,步骤807,通用寄存器R1+1中长度被减去m。
4.不考虑全部或部分的块是否被存储,参数块800的字节8-15中的流字节字段816(图8B)被增加存储到第一存储块位置的字节的数目,步骤811(图8A)。
上面的过程被重复直到通用寄存器R1+1中第一操作数长度为0(称作正常完成)或者CPU-确定的数量的块已经被处理(称作部分完成),查询813(图8A)。CPU-确定的块的数量取决于模型、并且可以是指令被执行的每个时刻的不同数目。CPU-确定的块的数量通常是非0的。在特定的不寻常情况中,这一数目可以是0,并且条件代码3可以被设置,而不需要进展。然而,CPU进行保护以免这一无-进展的情况的无尽再次发生。
基于执行产生操作,第一操作数包括伪随机数。
当通用寄存器R1+1中第一操作数长度初始地为0时,正常完成发生,而不需要存储入第一操作数位置;然而,参数块被更新,如参考图9所描述的。此外,当伪随机数产生进程因为正常完成而终止时,如参考图9所描述的,参数块被更新。
参考图9,在一个实施例中,参数块被更新,如下面:
1. 03hex(十六进制)的一字节的值(902)、来自参数块900的111-字节值(V)904、以及144字节的填充位906被串联,并且被与IHV 909一起用作到SHA-512算法908的输入。填充位是,例如,80hex(十六进制)的值,与127字节的零相串联,与指明不包括填充位的到SHA-512算法的输入的比特长度(即,03hex(十六进制)的一-字节值以及V字段的长度)的16-字节二进制整数相串联。在一个实施例中,IHV 909等于IHV 610a、610b、711a、711b或811中的一个;或者,在其他实施例中,例如,对于其他技术,其可以是不同的值。
2.参数块900中4-字节重设种子计数器字段912、111-字节值(V)904以及常量(C)914字段的值,以及64-字节哈希的值(来自上面的计算)910被加到一起920。这一加法的任何溢出被忽略,并且结果的111-字节的和922替代参数块900中值字段(Vnew)904。
3.参数块900中的4-字节重设种子计数器字段912被增加1。
4.条件代码0被设置。
当伪随机数产生进程因为部分完成而终止时,通用寄存器R1+1中的第一操作数长度包括64的非0倍数,参数块中的重设种子计数器和值(V)字段没有被更新,并且条件代码3被设置。
在一个具体的实施例中,规范异常被识别出,并且如果下面条件存在时没有其他动作被采取:
1.通用寄存器0的比特57-63指明未分配的或者未安装的函数代码。
2.下列特殊条件应用于产生操作:
- R1字段指明奇数-编号的寄存器或者通用寄存器0。
- 参数块中的重设种子计数器是0。
3.下列特殊条件应用于种子操作:
- R2字段指明奇数-编号的寄存器或者通用寄存器0(仅种子操作)。
- 通用寄存器R2+1中的长度大于512。
条件代码
0 正常完成
1 –
2 –
3 部分完成(仅产生操作)
程序异常:
· 访问(存储,操作数1,产生操作;获取,操作数2,种子操作;获取和存储,参数块)
· 操作(如果消息-安全-辅助扩展5(z/架构的)没有被安装)
· 规范
· 事务约束
SHA-512算法的进一步细节的实施例现在被描述。
SHA-512
SHA-512可以被用来哈希消息,M,具有比特的长度,其中 该算法使用1)80个64-比特字的消息调度,2)每个为64比特的8个工作变量,3)8个64-比特字的哈希值。SHA-512的最终结果是512-比特消息摘要。
消息调度的字被标记为W0,W1,...,W79。8个工作变量被标记为a,b,c,d,e,f,g,和h。哈希值的字被标记为其将保持初始哈希值,H(o),被每个连续的中间哈希值,H(i),所替代(在每个消息块被处理之后),并且以最终哈希值,H(N),终止。
SHA-512算法可以使用下列参数中的一个或多个:a,b,c,...,h在哈希值H(i)的计算中使用的工作变量w-比特字的工作变量。
H(i) 第i个哈希值。H(0)是初始哈希值;H(N)是最终哈希值并被用来确定消息摘要。
第i个哈希值的第j个字,其中,是哈希值i的最左边的字。
Kt 用于哈希计算的迭代t的常量值。
SHA-512使用80个常量64-比特字的序列。这些字代表最初的80个质数的立方根的小数部分的最初的64比特。hex(十六进制)中,这些常量字是(从左到右)
k 在填充步骤期间添加到消息的零的数目。
消息M的比特长度。
m 消息块M(i)中的比特数目。对于SHA-512,每一个消息块具有1024比特,其被表达为16个64-比特字的序列。
M 将被哈希的消息。
M(i) 大小为m比特的消息块i。
第i个消息块的第j个字,其中是消息块i的最左边的字。
n 当一个字被操作时,将被循环移位或移位的比特的数目。
N 填充的消息中块的数目。
T 在哈希计算中使用的临时w-比特字。
w 一个字中的比特数目。
Wt 消息调度的第t个w-比特字。
进一步地,下列符号中的一个或多个被用在安全哈希算法规范中;每个操作在w-比特字:
∧ 按位AND操作
∨ 按位OR(“同或”)操作
按位XOR(“异或”)操作
按位求补操作
+ 模2w
<< 左移操作,其中通过丢弃字x的最左边n个比特并接着在右边以n个零填充该结果,x<<n被获取
>> 右移操作,其中通过丢弃字x的最右边n个比特并接着在左边以n个零填充该结果,x>>n被获取
此外,下列操作中的一个或多个被用在安全哈希算法规范中:
ROTLn(x) 循环左移(循环左移)操作,其中x是w-比特字并且n是满足0≤n<w的整数,由ROTLn(x)=(x<<n)∨(x>>w-n)定义。
ROTRn(x) 循环右移(循环右移)操作,其中x是w-比特字并且n是满足0≤n<w的整数,由ROTRn(x)=(x>>n)∨(x<<w-n)定义。
SHRn(x) 右移操作,其中x是w-比特字并且n是满足0≤n<w的整数,由SHRn(x)=x>>n定义。
此外,在512-比特安全哈希算法中,下列操作被应用到w-比特
字。SHA-512运作在64-比特字(w=64)。
1.按位逻辑字操作:∧,∨,
2.模2w加。
操作x+y被如下定义。字x和y代表整数X和Y,其中0≤X<2w以及0≤Y<2w。对于正整数U mod V,让U和V成为U除以V的余数。计算
Z=(X+Y)mod 2w
接着0≤Z<2w。将Z的整数转换为字z,并定义z=x+y。
3.左移操作SHRn(x),其中x是w-比特字并且n是满足0≤n<w的整数,由SHRn(x)=x>>n定义。
4.循环右移(循环右移)操作ROTRn(x),其中x是w-比特字并且n是满足0≤n<w的整数,由ROTRn(x)=(x>>n)(x<<w–n)定义。
因此,ROTRn(x)等价于将x向右移动n位置的循环移位。
5.注意下列等价关系,其中在每个关系中w是固定的。
ROTLn(x)≈ROTRw-n(x)
ROTRn(x)≈ROTLw-n(x)
此外,SHA-512使用6个逻辑函数中的一个或多个,其中每个函数操作在64-比特字上,其可以被表示为x,y,和z。每个函数的结果是新的64-比特字。
SHA-512被分为两个阶段描述:处理和哈希计算。
SHA-512处理
处理包括填充消息,将填充的消息解析为m-比特的块,以及设置将在哈希计算中使用的初始化值。初始化、填充和解析下面将被描述。
初始化
如下所描述的,设置初始哈希值H(0)
对于SHA-512,初始哈希值H(0)需要包括下列8个hex(十六进制)的64-比特字:
H0 (0)=6a09e667f3bcc908
H1 (0)=bb67ae8584caa73b
H2 (0)=3c6ef372fe94f82b
H3 (0)=a54ff53a5f1d36f1
H4 (0)=510e527fade682d1
H5 (0)=9b05688c2b3e6c1f
H6 (0)=1f83d9abfb41bd6b
H7 (0)=5be0cd19137e2179
通过提取最初8个质数的平方根的小数部分的最开始的64个比特,这些字被获取。
填充消息
这一填充的目的在于确保填充后的消息是512或1024比特的倍数,取决于算法。填充可以被在消息上开始哈希计算之前插入,或者在哈希计算期间处理将包含该填充的块之前的任何时间插入。
假设消息M的比特长度是比特。将比特“1”添加到消息的结尾,后面跟随着k个0比特,其中,k是公式的最小非负解。接着,添加等于使用二进制表达的数目的128-比特块。例如,(8-比特ASCII)消息“abc”具有长度8×3=24,所以消息被添加一个1比特,接着896-(24+1)=871个0比特,接着消息长度,以成为1024-比特填充后的消息
填充后的消息的长度现在是1024比特的倍数。
解析消息
消息和其填充被解析为N个m-比特的块。
对于SHA-512,消息和其填充被解析为N个1024-比特的块M(1),…,M(N)。自从输入块的1024比特可以被表示为16个64-比特的字,消息块i的最开始的64比特被表示为接着的64比特是并且同样这样直到
SHA-512哈希计算
哈希计算从填充后的消息产生消息调度,并且将该调度与函数、常量、以及字操作一起使用以迭代地产生一系列的哈希值。哈希计算产生的最终哈希值被用来确定消息摘要。
SHA-512哈希计算使用函数和常量,如本文中描述的,以及加法(+)被执行为模264
使用下面的步骤,每个消息块M(1),M(2),...,M(N)被按顺序处理:For i=1 to N:
{
1.准备消息调度,{Wt}:
2.使用第(i-1)个哈希值,初始化8个工作变量a,b,c,d,e,f,g,以及h:
3.For t=0 to 79:
{
h=g
g=f
f=e
e=d+T1
d=c
c=b
b=a
a=T1+T2
}
4.计算第i个中间哈希值H(i)
}
在将步骤1到4重复共N次后(例如,在处理M(N)之后),消息M的结果512-比特消息摘要是:
其中,||是串联。
上面描述的是CPU指令初始地种子或重设种子伪随机数产生器和/或执行产生操作以产生伪随机数的示例。该指令提供产生伪随机数的高性能方式,满足NITS标准,并且可扩展的改变产生技术。该指令的右-到-左处理(例如,在产生操作中)提供了一些性能优势,因为,例如,一些信息不需要保存。
在一个示例中,通过指定额外的函数代码,函数代码中的每一个对应着用来执行初始化、重设种子和/或产生的不同算法,指令是可扩展的。该不同算法可以包括其他算法以满足NIST标准。其他算法的示例包括HMAC_DRBG(基于哈希的消息验证代码_DRBG),CTR_DRBG(计数器-DRBG),and DUAL_EC_DRBG(双椭圆曲线_DRBG)。此外,函数代码可以用来标识不同的哈希或密钥长度,例如512、256、或其他。因此,在一个示例中,函数代码包括算法的指示和哈希或密钥长度的指示,其提供本文中描述的SHA-512技术之外的很多可能性。
本文中,内存、主内存、存储器、以及主存储器被可替换地使用,除非明确地或者由上下文另外地被说明。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图10,在一个示例中,计算机程序产品1000包括,例如,一个或多个非暂时性计算机可读存储介质1002以存储计算机可读程序代码,在其上面的方式或逻辑1004用来提供和推进一个或多个方面。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言、汇编语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以被加载到计算机、其他程序的数据处理装置、或其他设备上以引起一系列的操作步骤被执行在计算机、其他程序的装置或其他设备上,以产生计算机实施的过程,这样在计算机或其他程序的装置上执行的指令提供用于实施在流程图和/或框图块或块中指明的函数/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上面的,一个或多个方面可以被提供客户环境管理的服务提供者所提供、给予、部署、管理、服务等。例如,服务提供者可以创建、保持、支持针对一个或多个客户执行一个或多个方面的计算机代码和/或计算机架构等。作为回报,例如,在一个订购和/或费用协议下,服务提供者可以接收来自客户的付款。额外地或可选地,服务提供者可以接收来自针对一个或多个第三方的广告内容的销售的付款。
在一个方面,应用可以被部署用于执行一个或多个方面。作为一个示例,应用的部署包括提供适用于执行一个或多个方面的计算机架构。
作为进一步的方面,计算机架构可以被部署为包括将计算机可读代码集成到计算系统,其中与计算系统相结合的代码能够执行一个或多个方面。
作为还进一步的方面,用于集成计算架构的过程包括将计算机可读代码集成到可能被提供的计算机系统。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个方面。与计算机系统相结合的代码能够执行一个或多个方面。
尽管上面描述了多种实施例,它们仅仅是示例。例如,其他架构的计算环境可以组合和使用一个或多个方面。此外,指令的改变可以被做出,而不需要偏离一个或多个方面。此外,其他寄存器可以被使用。此外,在其他实施例中(例如针对其他技术),其他的值可以被用在串联或其他计算中。其他变形也是可能的。
此外,其他类型的计算环境可以从一个或多个方面获益。作为一个示例,适于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接地连接到存储器元件的至少两个处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器、以及提供至少一些程序代码的临时存储以减小在执行期间代码必须从大容量存储器取回的次数的缓冲存储器。
输入/输出或I/O设备(包括但不限于,键盘、显示器、指点设备、DASD、磁带、CD、DVD、U盘和其他存储介质等)可以被直接或通过中间I/O控制器连接到系统。网络适配器也可以被连接到系统,使得数据处理系统能够通过中间私有或公有网络被连接到其他数据处理系统或远程打印机或存储设备。调制解调器、光缆调制解调器、以及网卡仅仅是网络适配器的几个可用类型。
参考图11,实施一个或多个方面的托管计算机系统5000的典型的组件被描述。典型的托管计算机5000包括与计算机存储器(例如中央存储)5002通信的一个或多个CPU5001,以及到存储介质设备5011的I/O接口和用于与其他计算机或SAN或类似的通信的网络5010。CPU 5001遵从具有架构的指令集和架构的功能的架构。CPU 5001可以具有用于将程序地址(虚拟地址)转译为存储器的真实地址的动态地址转译(DAT)5003。DAT典型地包括用于缓存转译的转译结构缓存(TLB)5007,这样到计算机存储器5002的块的后续访问不需要要求地址转译的延迟。典型地,缓存5009被部署在计算机存储器5002和处理器5001之间。缓存5009可以是分层的,具有对多于一个CPU可用的大缓存、以及在大缓存和每个CPU之间的更小、更快(更低层次)的缓存。在一些实施中,更低层次的缓存是分离的以针对指令提取和数据访问提供独立的低层次缓存。在一个实施例中,指令被指令提取单元5004通过缓存5009从存储器5002中提取.指令在指令解码单元5006中被解码并且被派发(与一些实施例中的其他指令一起)到一个或多个指令执行单元5008。典型地,一些指令执行单元5008被部署,例如算术执行单元、浮点执行单元和分支指令执行单元。指令被执行单元执行,根据需要从指令指明的寄存器或存储器访问操作数。如果操作数将被从存储器5002访问(加载或存储),加载/存储单元5005典型地在正被执行的指令的控制下处理访问。指令可以被执行在硬件电路或内部微代码(固件)中或被它们的组合执行。
如描述的,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护、和参考和改变记录。寻址的一些方面包括地址的格式、地址空间的概念、地址的多种类型、以及以哪种方式一种类型的地址被转移为另一种类型的地址。主存储器的一些包括永久地分配的存储器位置。主存储器为系统提供数据的直接可寻址的快速访问存储。数据和程序在它们可以被处理之前都被加载到主存储器(从输入设备)。
主存储器可以包括一个或多个更小、更快访问的缓冲存储器,有时被称为缓存。缓存典型地被与CPU或I/O处理器物理地相联。不同存储介质的物理构建和使用的效果,除了性能上的,通常是程序不能感知的。
针对指令和针对数据操作数,独立的缓存可以被保持。缓存中的信息被在称作缓存块或缓存线(或线,简称)的整数边界上以相接的字节被保持。一种模型可以提供返回缓存线的字节大小的提取缓存属性指令。一种模型还可以提供预取数据和预取数据相对长指令,该指令作用于进入到数据或指令缓存的存储的预取、或者从缓存中释放数据。
存储器被看做是比特的长水平串。对于大多数操作,到存储器的访问以从左到右的顺序进行。比特的串被划分为8比特的单元。一个比特单元被称为一个字节,字节是所有信息格式的基本构建块。存储器中每一个字节位置被独一无二的非负整数所标识,独一无二的非负整数是字节位置的地址或简单地是字节地址。相邻的字节位置具有连续的地址,从左边的0开始并且以从左到右的顺序继续。地址是无符号二进制整数并且是24、31、或64比特。
信息在存储器和CPU或信道子系统之间被传递,每次一字节或一组字节。除非被另外说明,例如,Z/架构,存储器中的一组字节被该组中最左边的字节所定址。组中字节的数目被将要执行的操作隐含或者明确地被指定。当在CPU操作中使用时,一组字节被称为字段。在每一组字节中,符合例如,z/架构,比特被以左到右的顺序编号。在z/架构中,最左边的比特有时被称为“高阶”比特,并且最右边的比特被称为“低阶”比特。然而,比特数目不是存储器地址。仅有字节被寻址。为了在存储器中字节的各个比特上操作,整个字节被访问。字节中的比特被编号为0到7,从左到右(例如,Z/架构)。对于24-比特的地址,地址中的比特可以被编号为8-31或40-63,或者对于31-比特地址编号为1-31或33-63;对于64-比特地址,它们被编号为0-63。对于多种字节的任何其他固定-长度格式,组成该格式的比特被从0开始连续地编号。为了错误检测的目的,并且更优地为了纠正,一个或多个校验比特可以被和每个字节或每组字节一起传送。这些校验比特由机器自动地产生并且不能被程序直接地控制。存储器能力以字节的数目被表达。当存储器-操作数字段的长度被指令的操作代码所暗示,该字段被认为具有固定长度,该固定长度可以是1、2、4/8、或16字节。针对一些指令,更大的字段可以被暗示。当存储器-操作数字段的长度没有被暗示但是被明确声明时,该字段被认为具有可变长度。可变-长度操作数可以在长度方面不同,通过一个字节的增加(或者对于一些指令,是两个字节的倍数或者其他倍数)。当信息被放入存储器时,仅有被包括在指示字段中的那些字节位置的内容被替换,尽管到存储器的物理路径的宽度可以大于正被存储的字段的长度。
一些单元的信息将在存储器中的整数边界上。针对信息单元,当信息单元的存储器地址是该单元的字节长度的倍数时,边界被认为是整数的。特殊名称被给予整数界限上的2、4、8、和16字段。半字是在2-字节边界上的一组两个连续的字节,并且是指令的基本组成块。双字是在8-字节边界上的一组8个连续的字节。四倍字是在16-字节边界上的一组16个连续的字节。当存储器地址指明半字、字、双字、和四倍字时,地址的二进制表达分别包括1、2、3、或4个最右边的零比特。指令将在2-字节整数边界上。多数指令的存储器操作数不具有边界-对齐的要求。
针对指令和数据操作数实施独立的缓存的设备上,如果程序进行到指令随后被提取的缓存线的存储,明显的延迟可能出现,不考虑该存储是否改变随后被提取的指令。
在一个实施例中,本发明可以被软件(有时被称为许可的内部代码、固件、微-代码、迷你-代码、微微-代码和类似的,它们中的任何一个可以符合一个或多个方面)所实施。参考图11,实施一个或多个方面的软件程序代码可以被主机系统5000的处理器5001从长期存储介质设备5011,例如CD-ROM驱动器、磁带驱动器或硬驱动器,访问。软件程序代码可以被实施在用于与数据处理系统一起使用的多种已知介质,例如软盘、硬驱动器或CD-ROM,中的任何一个。该代码可以被分布在这些介质上,或者可以从网络5010上的计算机系统的计算机存储器5002或存储到用于其他系统的用户使用的其他计算机系统,被分发给用户。
软件程序代码包括控制多种计算机组件的功能和交互的操作系统,以及一个或多个应用程序。程序代码通常被从存储介质设备5011分页到相对更高-速度计算机存储器5002,在那里它对于处理器5001的处理是可用的。用于在存储器中、物理介质上实施软件程序代码、和/或通过网络分发程序代码的技术和方法是公知的并且在本文中将不会被进一步地描述。程序代码,当在有形的介质(包括但不限于电子存储器模块(RAM)、闪存、光碟(CD)、DVD、磁带和类似的)上被创建和存储时,经常被称作“计算机程序产品”。计算机程序产品介质典型地可以被处理电路,优选计算机系统中的处理电路,读取用于处理电路的执行。
图12描述了一个或多个方面可以被实施的代表性的工作站或服务器硬件系统。图12的系统5020包括代表性的基础计算机系统5021,例如包括可选的外围设备的个人计算机、工作站或服务器。基础计算机系统5021包括一个或多个处理器5026和用来连接和使能根据已知技术的处理器5026和系统5021的其他组件之间的通信的总线。该总线连接处理器5026到存储器5025和长期存储器5027,长期存储器5027可以包括例如硬驱动器(包括例如磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器。系统5021还可以包括用户接口适配器,例如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,用户接口适配器可以是任何用户接口设备,例如触摸感应屏幕、数字化输入板等。总线还通过显示适配器连接显示设备5022,例如LCD屏幕或监视器,到微处理器5026。
通过具有与网络5029进行通信5028的能力的网络适配器,系统5021可以与其他计算机或计算机的网络通信。示例的网络适配器可以是通信信道、令牌环网、以太网或者调制解调器。可选地,系统5021可以使用无线接口,例如CDPD(蜂窝数字分组数据)卡,进行通信。系统5021可以与在局域网(LAN)或广域网(WAN)中的这些其他计算机相联,或者系统5021可以是与另一个计算机的客户端/服务器安排的客户端等。所有的这些设置,以及合适的通信硬件和软件,是本领域中公知的。
图13描述了一个或多个方面可以被实施在其中的数据处理网络5040。数据处理网络5040可以包括多个独立的网络,例如无线网络和有线网络,其中的每一个可以包括多个独立的工作站5041、5042、5043、5044。此外,本领域技术人员将理解的是,一个或多个LAN可以被包括,其中一个LAN可以包括多个连接至主机处理器的多个智能工作站。
接着参考图13,网络还可以包括大型计算机或服务器,例如网关计算机(客户端服务器5046)或应用服务器(可以访问数据资源库并且可以被工作站5045直接访问的远程服务器5048)。作为进入到每个独立网络的点,网关计算机5046提供服务。当将一个网络协议连接到另一个时,网关被需要。网关5046可以被优选地通过通信链路连接到另一个网络(例如因特网5046)。网关5046还可以使用通信链路被直接地连接到一个或多个工作站5041、5042、5043、5044。利用可以从国际商业机器公司得到的IBM eServerTM系统z服务器,网关计算机可以被实施。
现在参考图12和图13,可以实施本发明的一个或多个方面的软件程序代码可以被系统5020的处理器5026从长期存储介质5027(例如CD-ROM驱动器或硬驱动器)访问。软件程序代码可以被实施在用于与数据处理系统一起使用的多种已知介质,例如软盘、硬驱动器或CD-ROM,中的任何一个。该代码可以被分布在这些介质上,或者可以从网络上的计算机系统的存储器或存储到用于其他系统的用户使用的其他计算机系统,被分发给用户5050、5051。
可选地,程序代码可以被实施在存储器5025,并且并处理器5026使用处理器总线访问。这样的程序代码包括控制多种计算机组件的功能和交互的操作系统,以及一个或多个应用程序5032。程序代码通常被从存储介质5027分页到高-速度存储器5025,在那里它对于处理器5026的处理是可用的。用于在存储器中、物理介质上实施软件程序代码、和/或通过网络分发程序代码的技术和方法是公知的并且在本文中将不会被进一步地描述。程序代码,当在有形的介质(包括但不限于电子存储器模块(RAM)、闪存、光碟(CD)、DVD、磁带和类似的)上被创建和存储时,经常被称作“计算机程序产品”。计算机程序产品介质典型地可以被处理电路,优选计算机系统中的处理电路,读取用于处理电路的执行。
处理器最容易得到的(通常比处理器的其他缓存更快和更小)缓存是最低的(L1,或层次1),并且主存储(主存储器)是最高层的缓存(当有3层时为L3)。最低层的缓存通常被划分为保持将被执行的机器指令的指令缓存(I-缓存)和保持数据操作数的数据缓存(D-缓存)。
参考图14,针对处理器5026,示例的处理器实施例被描述。一个或多个层次的缓存5053被典型地部署到缓冲存储器块,以改进处理器性能。缓存5053是可能被使用的存储器数据的高速缓冲保持缓存。典型的缓存线是64、128、或256字节的存储器数据。除了用于缓存数据之外,独立的缓存经常被部署用于缓存指令。缓存连贯性(存储器和缓存中线的拷贝的同步)经常被本领域公知的多种“snoop”算法提供。处理器系统的主存储器存储5025经常被称作缓存。在具有4个层次的缓存的处理器系统5053中,主存储5025有时被称作层次5(L5)缓存,因为它典型地更快并且只保持可以为计算机系统获取的非易失性存储(DASD、磁带等)的一部分。主存储5025“缓存”由操作系统页面化入和出主存储5025的数据的页面。
程序计数器(指令计数器)5061保持对将被执行的当前指令的地址的跟踪。z/架构处理器中的程序计数器是64比特,并且可以截断到31或24比特以支持之前的寻址限制。程序计数器典型地被实施在计算机的PSW(程序状态字)中,这样其在上下文切换期间继续存在。因此,具有程序计数器值的进程中的程序,可以被,例如操作系统(从程序环境到操作系统环境的上下文切换)中断。当程序不在活跃时,程序的PSW保持程序计数器值,并且当操作系统正在执行时,操作系统的程序计数器(PSW中的)被使用。典型地,程序计数器被增加等于当前指令的字节数目的量。当CISC(复杂指令集计算)指令典型地可变长度时,RISC(精简指令集计算)指令典型地固定长度。IBM z/架构的指令是具有2/4或6字节长度的CISC指令。例如,程序计数器5061可以被上下文切换操作或分支指令的分支采用操作所修改。在上下文切换操作中,当前程序计数器值被与正被执行的程序有关的其他状态信息(例如条件代码)一起保存在程序状态值中,并且新的程序计数器值被加载指向将被执行的新程序模块的指令。通过加载分支指令的结果到程序计数器5061,分支采用操作被执行以允许程序做出决定或在程序中循环。
典型地,指令提取单元5055被用来代表处理器5026提取指令。提取单元提取“下一个按序的指令”,分支采用指令的目标指令,或者提取跟随上下文切换之后的程序的第一个指令。目前的指令提取单元经常使用预提取技术以基于预提取的指令可能被使用的概率来推测地预提取指令。例如,提取单元可以提取包括下一个按序的指令和进一步按序的指令的额外字节的16字节的指令。
提取的指令接着被处理器5026执行。在一个实施例中,提取的指令被传递给提取单元的分配单元5056。分配单元解码该指令并且转发关于解码的指令的信息给适当的单元5057、5058、5060。执行单元5057将典型地从指令提取单元5055接收关于解码的算术指令的信息,并且将在根据该指令的操作码的操作数上执行算术操作。操作数优选地被从存储器5025、算术寄存器5059或从正被执行的指令的中间字段提供给执行单元5057。执行的结果,当被存储时,被存储在存储器5025、寄存器5059或其他机器硬件中(例如控制寄存器、PSW寄存器和类似的)。
处理器5026典型地具有用于执行指令的功能的一个或多个单元5057、5058、5060。参考图15A,执行单元5057可以通过接口逻辑5071与架构的通用寄存器5059、解码/分配单元5056、加载存储单元5060、和其他的5065处理器单元通信。执行单元5057可以使用多个寄存器电路5067、5068、5069以保持信息,算术逻辑单元(ALU)5056将在这些寄存器电路上操作。ALU执行算术操作,例如加、减、乘、除以及逻辑功能,例如与、或和异或(XOR)、循环移位和移位。优选地,ALU支持依赖设计的专门操作。其他电路可以提供包括例如条件代码和恢复支持逻辑的其他架构设备5072。典型地,ALU操作的结果被保持在可以转发该结果到多个其他处理功能的输出寄存器电路5070中。存在多种处理器单元的安排,本说明书仅仅打算提供一个实施例的一个代表性的理解。
当例如浮点指令将在具有专用浮点能力的浮点执行中被执行时,例如加(ADD)指令将会在具有算术和逻辑功能的执行单元5057中被执行。优选地,通过执行操作数上的操作代码定义的功能,执行单元操作由指令标识的操作数上。例如,加指令可以被执行单元5057执行在指令的寄存器字段标识的两个寄存器5059中找到的操作数上。
执行单元505在两个操作数上执行算术加并且将结果存储到第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)5066,算术逻辑单元(ALU)5066能够执行多种逻辑功能,例如移位、循环移位、与、或和异或,以及多种代数功能,包括加、减、乘、除中的任意一个。一些ALU 5066被设计用于标量操作,并且一些用于浮点。取决于架构,数据可以是大端(其中最低有效字节在最高字节地址处)或小端(其中最低有效字节在最小字节地址处)。IBM z/架构是大端的。带符号字段可以是符号及数值表示,取决于架构为1的补码或2的补码。因为2的补码中负数或正数仅要求ALU中的加法,ALU不需要设计减法能力,所以2的补码数是有优势的。数通常被简写地描述,其中12比特字段定义4096字节块的地址并且通常被描述为例如4K字节(千字节)块。
参考图15B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,分支单元5058经常使用分支预测算法,例如分支历史表5082,在其他条件操作完成之前预测分支的结果。在条件操作完成之前,当前分支指令的目标将被提取并且被前瞻性地执行。当条件操作完成时,基于条件操作的条件和前瞻的结果,前瞻性执行的分支指令被完成或丢弃。当条件代码符合分支指令的分支要求时,典型的分支指令可以测试到目标地址的条件代码和分支,基于包括例如寄存器字段或者指令的中间字段中找到的数的多个数,目标地址可以被计算。分支单元5058可以使用具有多个输入寄存器电路5075、5076、5077和输出寄存器电路5080的ALU 5074。分支单元5058可以与例如通用寄存器5059、解码分配单元5056或其他电路5073进行通信。
因为多个原因,包括例如操作系统启动的上下文切换、引起上下文切换的程序异常或错误、引起上下文切换的I/O中断信号、或多个程序的多线程活动(在多线程环境中),一组指令的执行可以被中断。优选地,上下文切换动作保存当前执行程序的状态信息,并接着加载被调用的另一个程序的状态信息。状态信息可以被保存例如在硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件代码。存储器转移信息和架构的寄存器内容。上下文切换活动可以被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码、或许可的内部代码(LIC))单独或联合地行使。
处理器根据指令定义的方法访问操作数。指令可以使用一部分指令的值提供中间操作数,可以提供明确地指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。指令可以使用操作码字段标识的如同操作数的隐含寄存器。指令可以使用针对操作数的存储器位置。如同例如z/架构大位移设备示例的,其中指令定义被加到一起以提供存储器中的操作数的地址的基础寄存器、序号寄存器和中间字段(代替字段),操作数的存储器位置可以由寄存器、中间字段、或寄存器和中间字段的组合提供。除非另外指明,这里的位置典型地指代主存储器(主存储)中的位置。
参考图15C,处理器使用加载/存储单元5060访问存储。通过获取目标操作数在存储器5053中的地址以及将该操作数加载到寄存器5059或另一个存储器5053位置中,加载/存储单元5060可以执行加载指令,或者通过获取目标操作数在存储器5053中的地址以及将从寄存器5059或另一个存储器5053位置获取的数据存储到存储器5053中的目标操作数位置。加载/存储单元5060可以是前瞻性的,并且可以以相对于指令顺序无序的顺序访问存储器,然而,加载/存储单元5060是为了保持对于程序来说指令表现为被按序地执行。加载/存储单元5060可以与通用寄存器5059、解码/分配单元5056、缓存/存储器接口5053或者其他元件5083进行通信,并且包括多个寄存器电路、ALU 5085和控制逻辑5090,以计算存储器地址并且提供流水线顺序以保持操作是按序的。如本领域中所公知的,一些操作可以是无序的,但是加载/存储单元提供功能来将该无序的操作对于程序表现为已经被按序执行。
优选地,应用程序“见到”的地址经常被称为虚拟地址。虚拟地址有时被称作“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为他们被多种动态地址转译(DAT)技术中的一个重定向到物理存储器位置,动态地址转译技术包括但不限于简单地使用偏移值来前缀虚拟地址、通过一个或多个转译表来转译虚拟地址,转移表优选地单独或者联合地包括至少一个段描述表和一个页面表,优选地,段描述表具有指向页面表的入口。在z/架构中,分层的转译被提供,包括区域第一表、区域第二表、区域第三表、段描述表和可选的页面表。通过利用包括将虚拟地址映射到关联的物理存储器地址的入口的转译后备缓冲(TLB),地址转译的性能经常被改善。当DAT使用转译表转译虚拟地址时,入口被创建。虚拟地址的随后使用可以接着利用快速TLB的入口,而不需要慢速的顺序转译表访问。TLB内容可以被多种替代算法包括LRU(最少最近使用)管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有职责保持共享的资源,例如I/O、缓存、TLB和存储器,是互锁的以保持一致性。典型地,“窥探”技术将被利用在保持缓存一致性中。在窥探环境下,每个缓存线可以被标记为正处于共享状态、排他、改变状态、无效状态和类似状态中的任意一个,以促使共享。
I/O单元(图14)为处理器提供方式以连接到外围设备,包括例如磁带、磁碟、打印机、显示器、和网络。I/O单元经常被通过软件驱动展现给计算机程序。在大型机中,例如来自的系统z,信道适配器和开放系统适配器是大型机的I/O单元,其提供了在操作系统和外围设备之间的通信。
此外,其他类型的计算环境可以从一个或多个方面获益。作为示例,环境可以包括仿真器(例如软件或其他仿真机制),其中具体的架构(包括,例如,指令执行、架构功能,例如地址转译,和架构寄存器)或它们的子集被仿真(例如,在具有处理器和存储器的原生计算机系统上)。在这样的环境中,仿真器的一个或多个仿真功能可以实施本发明的一个或多个方面,尽管执行仿真器的计算机可以具有真被仿真的能力之外的不同的架构。作为一个示例,在仿真模式中,正被仿真的具体指令或操作被解码,并且合适的仿真功能被构建以实施单独的指令或功能。
在仿真环境中,托管计算机包括,例如,存储器以存储指令和数据;指令提取单元以从存储器提取指令以及可选地提供对于获取的指令的本地缓冲;指令解码单元以接收提取的指令并且确定已经被提取的指令的类型;以及指令执行单元以执行该指令。执行可以包括从存储器加载数据到寄存器;从寄存器存储数据回到存储器;或执行一些类型的算术或逻辑操作,如解码单元所确定的。在一个示例中,每个单元被实施在软件中。例如,正被单元执行的操作被实施为仿真器软件中的一个或多个子例程。
更具体地,在大型机中,架构的机器指令被程序员使用,目前经常是“C”程序员,经常通过编译器应用的方式。在z/架构服务器,或者可替换地在执行其他架构的机器中,存储介质中存储的指令可以被原生执行。它们可以被仿真在现有的和未来的大型机服务器中以及在的其他机器上(例如电力系统服务器和系统服务器)。它们可以被执行在使用AMDTM和其他厂商生产的硬件的更多类型的机器上运行Linux的机器中。除了在z/架构硬件上执行,Linux可以被Hercules、UMX、或FSI(基本软件公司)与使用仿真的机器一起使用,其中指令通常是在仿真模式中。在仿真模式中,仿真软件被原生处理器执行以仿真被仿真的处理器的架构。
原生处理器典型地执行包括固件或原生操作系统以执行被仿真的处理器的仿真的仿真软件。仿真软件负责提取和执行被仿真的处理器架构的指令。仿真软件保持被仿真的程序计数器以保持对指令边界的跟踪。仿真软件可以一次提取一个或多个被仿真的机器指令,并且将该一个或多个被仿真的机器指令转换为用于原生处理器指令的原生机器指令的对应集合。被转换的指令可以被缓存,这样更快的转换可以被实现。尽管如此,仿真软件是为了保持被仿真的处理器架构的架构规则,以保证针对被仿真的处理器撰写的操作系统和应用正确地操作。此外,仿真软件是为了提供被仿真的处理器架构标识的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、包括例如段描述表和页面表的动态地址转译功能、中断机制、上下文切换机制、日期时间(TOD)时钟以及到I/O子系统的架构的接口,这样设计为在被仿真的处理器上运行的操作系统或应用可以在具有仿真软件的原生处理器上运行。
正被仿真的特定指令被解码,并且子例程被召唤以执行各个指令的功能。仿真被仿真的处理器的功能的仿真软件功能被实施,例如,在“C”子例程或驱动、或者提供针对具体硬件的驱动的一些其他方法,将会是在本领域技术人员理解一个或多个实施例的说明之后的的能力范围内。多种软件和硬件仿真专利包括但不限于美国证书专利编号5,551,013,标题为“Multiprocessor for Hardware Emulation(用于硬件仿真的多处理器)”,Beausoleil等;以及美国证书专利编号6,009,261,标题为“Preprocessing of StoredTarget Routines for Emulating Incompatible Instructions on a Target Processor(用于目标处理器上的仿真不兼容指令的存储的目标例程的处理)”,Scalzi等;美国证书专利编号5,574,873,标题为“Decoding Guest Instruction to Directly AccessEmulation Routines that Emulate the Guest Instructions(到仿真访客指令的直接访问仿真例程的解码访客指令)”,Davidian等;美国证书专利编号6,308,255,标题为“Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor SupportAllowing Non-Native Code to Run in a System(用于允许非原生代码在系统中运行的协处理器支持的对称多处理总线和芯片组)”,Gorishek等;美国证书专利编号6,463,582,标题为“Dynamic Optimizing Object Code Translator for Architecture Emulationand Dynamic Optimizing Object Code Translation Method(用于架构仿真和动态优化对象代码转译方法的动态优化对象代码转译器)”,Lethin等;美国证书专利编号5,790,825,标题为“Method for Emulating Guest Instructions on a Host Computer ThroughDynamic Recompilation of Host Instructions(用于通过主机指令的动态反编译在托管计算机上仿真访客指令的方法)”,Eric Traut;并且许多其他的,描述了本领域技术人员可以获取到的多种已知方式以针对目标机器实现为不同的机器而架构的指令格式的仿真。
图16中,被仿真的托管计算机系统5092的一个示例被提供,其仿真主机架构的托管计算机系统5000'。在被仿真的托管计算机系统5092中,主机处理器(CPU)5091是被仿真的主机处理器(或虚拟主机处理器),并且包括具有与托管计算机5000'的处理器5091不同的原生指令集架构的仿真处理器5093。被仿真的托管计算机系统5092具有可以为仿真处理器5093访问的存储器5094。在这个示例实施例中,存储器5094被划分为托管计算机存储器5096部分和仿真例程5097部分。托管计算机存储器5096是被仿真的托管计算机5092的程序根据托管计算机架构可以使用的。仿真处理器5093执行与被仿真的处理器5091之外的架构的架构化指令集的原生指令,从仿真例程存储器5097获取的原生指令,并且可以通过使用顺序和访问/解码例程,该例程可以解码访问的主机指令以确定用于仿真访问的主机指令的功能的原生指令执行例程,中获取的一个或多个指令,从托管计算机存储器5096中的程序访问用于执行的主机指令。定义用于托管计算机系统5000'架构的其他设备可以被架构的设备例程仿真,包括如同下列的这样的设备:例如,通用存储器、控制寄存器、动态地址转译和I/O子系统支持和处理器缓存。仿真例程还可以利用仿真处理器5093中可用的功能(例如通用寄存器和虚拟地址的动态转译),以改进仿真例程的性能。在仿真托管计算机5000'的功能中,特别的硬件和卸载引擎还可以被提供以辅助处理器5093。
本文中使用的术语是仅为了描述具体实施例的目的,并不意在限制本发明。如本文中使用的,单数形式“a”、“an”和“the”意图也包括复数形式,除非上下文中明确地指示另外的情况。将被进一步理解的是,词“comprises”和/或“comprising”,当在说明中使用时,指明宣称的特征、整数、步骤、操作、元件、和/或组件的出现,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件、和/或它们的组合的出现或增加。
下面的权利要求中所有的方式或步骤加功能元件对应的结构、材料、动作、和等同物,如果任意一个,意在包括任何结构、材料、或动作,以与如同特别地要求的其他要求的元件一起执行方法。为了描述和说明的目的,一个或多个方面的说明被呈现,但是并不意在是穷尽的或限制到公开的形式的本发明。对于本领域一般技能人员,许多修改和变形将会是明显的,并不需要偏离一个或多个方面的范围和精神。实施例被选择和描述,以最好地解释一个或多个方面的原则和实际应用,并且使得本领域一般技能人员能够理解用于具有多种修改,如适用于企图的具体使用,的多种实施例的一个或多个方面。

Claims (11)

1.一种执行机器指令的方法,所述方法包括步骤:
由处理器获取用于执行的机器指令,所述机器指令被根据一种计算机架构定义用于计算机执行,所述机器指令包括:
提供操作代码的操作代码字段,所述操作代码用于标识执行伪随机数操作;以及
用来标识寄存器的寄存器字段,所述寄存器用来指明被机器指令使用的第一操作数的存储器中的位置;
执行所述机器指令,所述执行包括:
获取与所述机器指令相关联的寄存器的修饰M字段;
基于具有第一值的M字段,执行确定性伪随机数产生操作,所述确定性伪随机数产生操作包括:
对于所述第一操作数的一个或多个存储器的块中的每一个存储器的块,使用512比特安全哈希技术以及所述机器指令的参数块中的至少一个种子值产生哈希值;以及将所述产生的哈希值的至少一部分存储在所述第一操作数的对应的存储器的块中,所述产生的哈希值是伪随机数的至少一部分。
2.根据权利要求1所述的方法,其中,所述机器指令进一步包括用来标识另一寄存器的另一寄存器字段,所述另一寄存器用来指明被所述机器指令使用的第二操作数的存储器中的位置,并且其中所述方法进一步包括:
另一次执行所述机器指令,所述另一次执行所述机器指令包括:
基于具有第二值的所述M字段,执行确定性伪随机数种子操作,所述确定性伪随机数种子操作包括:
基于包括在所述第二操作数中的信息,获取种子材料;
使用512比特安全哈希技术和所述种子材料以提供一个或多个种子值;以及
将所述一个或多个种子值存储在与所述机器指令相关联的参数块中。
3.根据权利要求1所述的方法,其中所述执行进一步包括从与所述机器指令相关联的寄存器获取函数代码,所述函数代码用于指明被执行的函数,以及基于为具体值的所述函数代码,获取所述修饰M字段,并且其中所述参数块被使用与所述机器指令相关联的另一寄存器而定位。
4.根据权利要求1所述的方法,其中所述参数块被配置为包括:重设种子计数器,所述重设种子计数器用于指示从所述参数块最近被实例化或重设种子开始所述机器指令已经以特定条件代码完成的次数;流字节字段,所述流字节字段用于跟踪基于产生操作而被存储的字节的数目;
值,指示由所述参数块代表的随机数产生器的内部状态;以及被种子操作的执行所初始化的常量值。
5.根据权利要求1所述的方法,其中所述存储包括在第一操作数中从右到左地存储。
6.根据权利要求1所述的方法,其中对于所述一个或多个存储器的块中的存储器的块,所述产生所述产生的哈希值包括:
将所述参数块的所述至少一个种子值中的种子值与正被处理的所述存储器的块的块编号相加以提供和值;
组合所述和值与填充以提供输入;以及
使用所述输入和所述512比特安全哈希技术以提供产生的哈希值。
7.根据权利要求6所述的方法,其中所述产生包括针对多个存储器的块产生所述产生的哈希值,所述多个存储器的块是基于所述第一操作数的长度确定的,并且以最右边的存储器的块开始。
8.根据权利要求1所述的方法,其中针对一个产生的哈希值的所述存储包括:
确定如所述机器指令的被选择的寄存器指示的所述第一操作数的长度是否是预定义的数的倍数;
基于所述长度是所述预定义的数的倍数,将所述一个产生的哈希值存储到对应的所述第一操作数的存储器的块中;以及
基于所述长度不是所述预定义的数的倍数,将所述一个产生的哈希值的部分存储到对应的所述第一操作数的存储器的块中。
9.根据权利要求8所述的方法,其中所述部分包括所述一个产生的哈希值的最左边的若干字节。
10.根据权利要求8所述的方法,其中所述方法进一步包括:
基于所述存储,基于所述第一操作数中存储的字节的数目,调整所述第一操作数的长度;
基于所述第一操作数中存储的字节的数目,更新所述参数块的流字节字段。
11.一种执行机器指令的系统,包括适于执行根据任意在先方法权利要求的所述方法的全部步骤的设备。
CN201480015409.9A 2013-03-14 2014-02-11 执行伪随机数产生操作的指令 Active CN105190535B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/828,057 US8873750B2 (en) 2013-03-14 2013-03-14 Instruction for performing a pseudorandom number generate operation
US13/828,057 2013-03-14
PCT/IB2014/058916 WO2014140957A1 (en) 2013-03-14 2014-02-11 Instruction for performing a pseudorandom number generate operation

Publications (2)

Publication Number Publication Date
CN105190535A CN105190535A (zh) 2015-12-23
CN105190535B true CN105190535B (zh) 2018-04-06

Family

ID=51527092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480015409.9A Active CN105190535B (zh) 2013-03-14 2014-02-11 执行伪随机数产生操作的指令

Country Status (6)

Country Link
US (5) US8873750B2 (zh)
JP (1) JP6177355B2 (zh)
CN (1) CN105190535B (zh)
DE (1) DE112014000329T5 (zh)
GB (1) GB2526040B (zh)
WO (1) WO2014140957A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) * 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
WO2017048256A1 (en) * 2015-09-17 2017-03-23 Hewlett Packard Enterprise Development Lp Efficiently storing initialization vectors
US9396248B1 (en) * 2016-01-04 2016-07-19 International Business Machines Corporation Modified data query function instantiations
US10671347B2 (en) 2016-01-28 2020-06-02 International Business Machines Corporation Stochastic rounding floating-point multiply instruction using entropy from a register
US10489152B2 (en) 2016-01-28 2019-11-26 International Business Machines Corporation Stochastic rounding floating-point add instruction using entropy from a register
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US10348506B2 (en) * 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit
US11012425B2 (en) 2018-12-28 2021-05-18 Micron Technology, Inc. Replay protection nonce generation
US11316747B2 (en) * 2019-02-06 2022-04-26 Simudyne Ltd. Method and system for efficient multi agent computer simulation
US11157240B2 (en) * 2019-02-15 2021-10-26 International Business Machines Corporation Perform cryptographic computation scalar multiply instruction
US11733971B2 (en) 2019-03-01 2023-08-22 Simudyne, Ltd. System and method of managing pseudo-random number generation in a multiprocessor environment
US10970070B2 (en) * 2019-03-29 2021-04-06 Arm Limited Processing of iterative operation
CN110083386B (zh) * 2019-04-04 2024-03-19 平安普惠企业管理有限公司 随机数产生控制方法、装置、计算机设备及存储介质
CN111831639B (zh) * 2019-04-19 2024-01-30 北京车和家信息技术有限公司 一种全局唯一id生成方法及装置、车辆管理系统
US11218320B2 (en) * 2019-06-28 2022-01-04 Intel Corporation Accelerators for post-quantum cryptography secure hash-based signing and verification
US11636224B2 (en) * 2019-12-19 2023-04-25 Micro Focus Llc Generating hash values for input strings
CN111124713B (zh) * 2019-12-24 2024-03-26 北京安兔兔科技有限公司 设备系统函数调用方法、装置、终端设备和存储介质
CN113867789A (zh) 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
US11669331B2 (en) * 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
CN115567199B (zh) * 2022-09-15 2023-04-14 北京海泰方圆科技股份有限公司 一种随机数种子生成方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196807A (zh) * 2006-12-08 2008-06-11 国际商业机器公司 随机数发生器和随机数发生方法

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4162519A (en) * 1975-01-20 1979-07-24 Nixdorf Computer Ag Data processor with address allocation to operations
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5365551A (en) * 1992-12-15 1994-11-15 Micron Technology, Inc. Data communication transceiver using identification protocol
EP0582083A1 (en) 1992-08-05 1994-02-09 Motorola, Inc. A method and apparatus for generating pseudo-random numbers
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5416783A (en) * 1993-08-09 1995-05-16 Motorola, Inc. Method and apparatus for generating pseudorandom numbers or for performing data compression in a data processor
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US6324558B1 (en) * 1995-02-14 2001-11-27 Scott A. Wilber Random number generator and generation method
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5778069A (en) 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
US5830064A (en) * 1996-06-21 1998-11-03 Pear, Inc. Apparatus and method for distinguishing events which collectively exceed chance expectations and thereby controlling an output
WO1998047259A2 (en) * 1997-03-10 1998-10-22 Fielder Guy L File encryption method and system
AUPO799197A0 (en) * 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART01)
US6061703A (en) * 1997-05-15 2000-05-09 International Business Machines Corporation Pseudorandom number generator with normal and test modes of operation
US6104810A (en) * 1997-05-15 2000-08-15 International Business Machines Corporation Pseudorandom number generator with backup and restoration capability
US7249108B1 (en) * 1997-07-15 2007-07-24 Silverbrook Research Pty Ltd Validation protocol and system
JPH1153173A (ja) * 1997-08-07 1999-02-26 Nec Corp 擬似乱数発生方法及び装置
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6253223B1 (en) * 1999-06-08 2001-06-26 General Instrument Corporation Robust random number generator
US6507808B1 (en) * 1999-06-23 2003-01-14 International Business Machines Corporation Hardware logic verification data transfer checking apparatus and method therefor
US7685423B1 (en) * 2000-02-15 2010-03-23 Silverbrook Research Pty Ltd Validation protocol and system
GB0013356D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd A method of validating an encrypted message
US7333947B2 (en) * 2000-11-13 2008-02-19 Anoto Ab Network-based system
EP1223506B1 (en) * 2001-01-16 2006-12-13 Telefonaktiebolaget LM Ericsson (publ) Random number generator using compression
US6968460B1 (en) * 2001-05-10 2005-11-22 Advanced Micro Devices, Inc. Cryptographic randomness register for computer system security
US6862605B2 (en) * 2001-08-15 2005-03-01 Scott A. Wilber True random number generator and entropy calculation device and method
US20030059045A1 (en) * 2001-09-26 2003-03-27 Ruehle Michael D. Hash-based pseudo-random number generator
US7219112B2 (en) 2001-11-20 2007-05-15 Ip-First, Llc Microprocessor with instruction translator for translating an instruction for storing random data bytes
US7958374B2 (en) * 2002-03-19 2011-06-07 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium
US20030188044A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation System and method for verifying superscalar computer architectures
US7082449B2 (en) * 2002-05-03 2006-07-25 Sun Microsystems, Inc. Method and apparatus for generating pseudo-random numbers
US6865660B2 (en) * 2002-06-28 2005-03-08 Micron Technology, Inc. Method and apparatus for generating deterministic, non-repeating, pseudo-random addresses
US7209561B1 (en) 2002-07-19 2007-04-24 Cybersource Corporation System and method for generating encryption seed values
US20060039558A1 (en) * 2002-10-07 2006-02-23 Masakatu Morii Pseudo-random number generation method and pseudo-random number generator
US7123590B2 (en) * 2003-03-18 2006-10-17 Qualcomm Incorporated Method and apparatus for testing a wireless link using configurable channels and rates
US7257718B2 (en) 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
US7298843B2 (en) 2003-08-01 2007-11-20 Hewlett-Packard Development Company, L.P. Method and apparatus for seeding a random number generator
DE10339999B4 (de) * 2003-08-29 2005-07-14 Infineon Technologies Ag Pseudozufallszahlengenerator
CN100472430C (zh) * 2004-01-30 2009-03-25 日本胜利株式会社 伪随机数生成装置
US8374284B2 (en) * 2004-02-12 2013-02-12 Apple, Inc. Universal decoder
US7401234B2 (en) * 2004-03-01 2008-07-15 Freescale Semiconductor, Inc. Autonomous memory checker for runtime security assurance and method therefore
FR2867928B1 (fr) * 2004-03-16 2006-06-09 Medialive Procede et systeme hautement securises pour la distribution de flux audiovisuels
DE102004013480B4 (de) * 2004-03-18 2013-01-24 Infineon Technologies Ag Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
US20060294312A1 (en) * 2004-05-27 2006-12-28 Silverbrook Research Pty Ltd Generation sequences
JP2006337429A (ja) 2005-05-31 2006-12-14 Nippon Telegr & Teleph Corp <Ntt> マスク生成関数演算装置、そのプログラム及び記録媒体
JP4546339B2 (ja) * 2005-06-29 2010-09-15 キヤノン株式会社 乱数生成装置及び乱数生成方法
US8443020B2 (en) * 2005-09-09 2013-05-14 Mitsubishi Electric Corporation Pseudo random number generator
US7852162B2 (en) * 2005-10-27 2010-12-14 FortressGB Pseudo random noise device based on a random frequency modulated oscillator
ATE404914T1 (de) * 2006-02-15 2008-08-15 Jaycrypto Ltd Verfahren und vorrichtung zum erzeugen von initialwerten für einen zufallszahlengenerator
WO2007148244A1 (en) * 2006-06-20 2007-12-27 Nxp B.V. Random number generator system, method for generating random numbers
DE102006030888B4 (de) * 2006-07-04 2009-06-25 Infineon Technologies Ag Verfahren und Vorrichtung zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator
US8102999B2 (en) * 2006-08-18 2012-01-24 Medtronic, Inc. Secure telemetric link
WO2008029406A2 (en) 2006-09-07 2008-03-13 Fortress Gb Ltd. A system and method to preclude message modification in data authentication systems through efficient use of feedback in cryptographic functions
US8015224B1 (en) * 2006-12-27 2011-09-06 Marvell International Ltd. Entropy source for random number generation
US8595273B2 (en) 2007-01-24 2013-11-26 International Business Machines Corporation Hash algorithm using randomization function
JP4258551B2 (ja) * 2007-01-25 2009-04-30 日本電気株式会社 認証システム、認証方法、及び認証プログラム
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator
US8726041B2 (en) * 2007-05-09 2014-05-13 Sony Corporation Methods and apparatus for generating a random number in one or more isolated processors
US8130956B2 (en) * 2007-08-02 2012-03-06 International Business Machines Corporation Efficient and low power encrypting and decrypting of data
US8458460B2 (en) 2007-09-27 2013-06-04 Intel Corporation Digest generation from instruction op-codes
US8130955B2 (en) * 2007-12-21 2012-03-06 Spansion Llc Random number generation through use of memory cell activity
US8873570B2 (en) 2008-01-04 2014-10-28 Motorola Mobility Llc Extensible system and method to bridge SIP and UPnP devices
US8255443B2 (en) * 2008-06-03 2012-08-28 International Business Machines Corporation Execution unit with inline pseudorandom number generator
US8189778B2 (en) * 2008-07-07 2012-05-29 General Instrument Corporation Adaptive generation of a pseudo random number generator seed
US8359479B2 (en) * 2008-07-17 2013-01-22 Lsi Corporation High performance arithmetic logic unit (ALU) for cryptographic applications with built-in countermeasures against side channel attacks
JP5241475B2 (ja) 2008-12-24 2013-07-17 三菱電機株式会社 ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム
US20110270676A1 (en) * 2010-04-30 2011-11-03 Sergei Vassilvitskii Probabilistic Linking Approach for Serving Impressions in Guaranteed Delivery Advertising
US20120079281A1 (en) * 2010-06-28 2012-03-29 Lionstone Capital Corporation Systems and methods for diversification of encryption algorithms and obfuscation symbols, symbol spaces and/or schemas
US9128791B1 (en) * 2011-03-21 2015-09-08 Board Of Regents Of The University Of Texas System Generation of distinct pseudorandom number streams based on program context
US8379848B2 (en) * 2011-07-07 2013-02-19 Cape Light Institute, Inc. Method of providing a portable true random number generator based on the microstructure and noise found in digital images
US8639882B2 (en) * 2011-12-14 2014-01-28 Nvidia Corporation Methods and apparatus for source operand collector caching
CN104025501B (zh) 2011-12-29 2018-03-27 英特尔公司 用于不确定性随机位发生器(nrbg)的方法和装置
JP2013206095A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd データ処理装置及びデータ処理装置の制御方法
US8856198B2 (en) * 2012-03-30 2014-10-07 Freescale Semiconductor, Inc. Random value production methods and systems
US9075674B2 (en) * 2012-12-12 2015-07-07 Freescale Semiconductor, Inc. Systems with adjustable sampling parameters and methods of their operation
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196807A (zh) * 2006-12-08 2008-06-11 国际商业机器公司 随机数发生器和随机数发生方法

Also Published As

Publication number Publication date
GB2526040B (en) 2016-03-02
JP6177355B2 (ja) 2017-08-09
JP2016517562A (ja) 2016-06-16
CN105190535A (zh) 2015-12-23
US10061585B2 (en) 2018-08-28
GB201516536D0 (en) 2015-11-04
WO2014140957A1 (en) 2014-09-18
US8873750B2 (en) 2014-10-28
US10846090B2 (en) 2020-11-24
DE112014000329T5 (de) 2015-12-31
US9252953B2 (en) 2016-02-02
US20190065203A1 (en) 2019-02-28
US20180275992A1 (en) 2018-09-27
US20160202984A1 (en) 2016-07-14
US20150049870A1 (en) 2015-02-19
GB2526040A (en) 2015-11-11
US10133575B2 (en) 2018-11-20
US20140270162A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
CN105190535B (zh) 执行伪随机数产生操作的指令
CN105190534B (zh) 执行伪随机数种子操作的指令
CN108702286B (zh) 抗功率侧信道攻击的高级加密标准加速器处理器
TWI512531B (zh) 用以處理blake安全雜湊演算法的方法、設備、系統及製品
CN108701088A (zh) 用于延迟低开销同步页表更新的设备和方法
CN105302522B (zh) 提供通用gf(256)simd密码算法功能性的指令和逻辑
TW201717098A (zh) 具有金鑰雜湊訊息識別碼之處理器,方法,系統及指令
WO2013095617A1 (en) Apparatus and method for propagating conditionally evaluated values in simd/vector execution
JP6916871B2 (ja) 真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法
CN112580113A (zh) 具有专用流水线的处理器

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