CN115567199B - 一种随机数种子生成方法、装置、电子设备及存储介质 - Google Patents
一种随机数种子生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115567199B CN115567199B CN202211123608.4A CN202211123608A CN115567199B CN 115567199 B CN115567199 B CN 115567199B CN 202211123608 A CN202211123608 A CN 202211123608A CN 115567199 B CN115567199 B CN 115567199B
- Authority
- CN
- China
- Prior art keywords
- array
- random number
- character string
- hash
- number seed
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims description 69
- 230000015654 memory Effects 0.000 claims description 26
- 230000006870 function Effects 0.000 description 22
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种随机数种子生成方法、装置、电子设备及存储介质,该方法包括:获取第一数组以及以下中的至少一项:第二数组和第三数组;根据第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;对第一字符串进行N+1次哈希迭代计算;根据第一字符串对应的哈希迭代计算结果确定第一随机数种子,根据第一随机数种子输出的随机数用于加密或签名。其中,对第一字符串进行第一次哈希迭代计算的输入为第一字符串,或者,对第一字符串进行第i次哈希迭代计算的输入由对第一字符串进行第i‑1次哈希迭代计算的输出与第二数组组合构成;对第二字符串做哈希运算产生随机数。该方法能够依据N很小或很大提高或限制随机数种子生成效率。
Description
技术领域
本申请实施例涉及信息安全领域,尤其涉及一种随机数种子生成方法、装置、电子设备及存储介质。
背景技术
目前,在信息安全领域,随机数生成器可以基于类似ANSI X9.17标准的逻辑结构产生随机数种子。所述ANSI X9.17标准的逻辑结构为一种美国伪随机数生成器标准逻辑结构。基于类似ANSI X9.17标准的逻辑结构,随机数生成器每产生一个随机数种子,需要使用3DES算法,即需要进行三重数据加密。当软件随机数生成器使用所述3DES算法时,需要安全存储两个密钥和种子,还要调用采样熵源。因此,目前随机数种子的生成效率不高,导致加密和签名过程安全性降低,有待改进。
发明内容
本申请实施例提供一种随机数种子生成方法、装置、电子设备及存储介质,用以提高或限制随机数种子生成效率,实现高效的随机数生成,提高加密和认证安全。
第一方面,本申请实施例提供的一种软件随机数种子生成方法,包括:
获取第一数组以及以下中的至少一项:第二数组和第三数组;根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;对所述第一字符串进行N+1次哈希迭代计算,N为自然数;根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子,根据所述第一随机数种子输出的随机数用于加密或签名;其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出与所述第二数组组合构成,i=2、3、……、N+1;其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;所述第二数组包括与操作系统有关的随机数;所述第三数组包括与计数器有关的随机数。
根据该方法,可以根据哈希迭代生成或更新第一随机数种子,根据所述第一随机数种子输出的随机数用于加密或签名,可依据哈希迭代次数N值的很小或很大,相应地提高或限制随机数种子生成效率,提高加密和认证安全。其中,所述随机数发生器可根据第一数组的具体数据选择对随机数种子进行初始化、普通更新或深度更新。其中,在初始化过程中,第一数组包括第一随机数;在普通更新和深度更新过程中,第一数组可包括第二随机数种子。
在一种可能的设计中,所述方法包括:对第二字符串进行哈希计算,得到第一哈希值,所述第二字符串根据所述第一随机数种子以及根据所述第二数组和所述第三数组中的至少一个确定;将所述第一哈希值作为随机数输出。
根据该设计,根据哈希迭代计算得到第一哈希值,可输出第一哈希值。
在一种可能的设计中,在输出第一哈希值后,所述方法包括:对所述第三数组的数值进行加一处理或减一处理,获得更新的第三数组;所述更新的第三数组的数值用于确定是否满足深度更新条件。
根据该设计,根据所述第三数组的数值确定对所述第一随机数种子进行更新,提高种子更新效率。
在一种可能的设计中,所述根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子,包括:根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及第四数组和所述第三数组中的至少一项获得第三字符串,所述第四数组包括与操作系统有关的随机数;对所述第三字符串进行N+1次哈希迭代计算;根据所述第三字符串对应的哈希迭代计算结果获得所述第一随机数种子;其中,对所述第三字符串进行第一次哈希迭代计算的输入为所述第三字符串;或者,对所述第三字符串进行第j次哈希迭代计算的输入根据对所述第三字符串进行j-1次哈希迭代计算的输出,以及第四数组和所述第三数组中的至少一项确定,j=2、3、……、N+1。
根据该设计,通过哈希迭代函数计算确定所述第一随机数种子,提高随机数种子的不可预测性。
在一种可能的设计中,在所述根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及第四数组和所述第三数组中的至少一项获得第三字符串之前,所述方法还包括:确定所述第三数组的数值属于满足深度更新条件的阈值。
根据该设计,对所述第一随机数种子进行初始化或深度更新,初始化或深度更新提高了随机数种子的安全性。
在一种可能的设计中,所述方法还包括:将所述第三数组的值设置为初始值。
根据该设计,重置第三数组的值,根据所述第三数组的数值确定对所述第一随机数种子进行初始化或深度更新,根据深度更新条件的阈值可准确判断是否需要进行随机数种子的深度更新,灵活确定对否进行深度更新。
第二方面,本申请实施例还提供的一种随机数种子生成装置,包括获取模块和处理模块。其中:
获取模块,用于获取第一数组以及以下中的至少一项:第二数组和第三数组;处理模块,用于根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;所述处理模块,还用于对所述第一字符串进行N+1次哈希迭代计算,N为自然数;所述处理模块,还用于根据所述第一字符串对应的哈希迭代计算结果获得第一随机数种子,根据所述第一随机数种子输出的随机数用于加密或签名;其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出与所述第二数组组合构成,i=2、3、……、N+1;其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;所述第二数组包括与操作系统有关的随机数;所述第三数组包括与计数器有关的随机数。
在一种可能的设计中,所述处理模块还用于:对第二字符串进行哈希计算,得到第一哈希值,所述第二字符串根据所述第一随机数种子以及根据所述第二数组和所述第三数组中的至少一个确定;将所述第一哈希值作为随机数输出。
在一种可能的设计中,所述处理模块还用于:对所述第三数组的数值进行加一处理或减一处理,获得更新的第三数组;所述更新的第三数组的数值用于确定是否满足深度更新条件。
在一种可能的设计中,所述处理模块具体用于:根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及和第四数组和所述第三数组中的至少一项获得第三字符串,所述第四数组的数值包括键盘输入、鼠标移动和与操作系统有关的随机数;对所述第三字符串进行N+1次哈希迭代计算;根据所述第三字符串对应的哈希迭代计算结果获得所述第一随机数种子;其中,对所述第三字符串进行第一次哈希迭代计算的输入为所述第三字符串;或者,对所述第三字符串进行第j次哈希迭代计算的输入根据对所述第三字符串进行j-1哈希迭代计算的输出,以及第四数组和所述第三数组中的至少一项确定,j=2、3、……、N+1。
在一种可能的设计中,所述处理模块还用于:确定所述第三数组的数值属于满足深度更新条件的阈值。
在一种可能的设计中,所述处理模块还用于:将所述第三数组的值设置为初始值。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面及其任意一种设计的方法。
第四方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面及其任意一种设计的方法。
第二方面至第四方面及其任意一种设计所带来的技术效果可参见第一方面中对应的设计所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种随机数种子生成方法的流程示意图;
图2为本申请实施例提供的一种处理过程示意图;
图3为本申请实施例提供的一种装置结构示意图;
图4为本申请实施例提供的另一种装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作可选的详细描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。应理解,下面所介绍的方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
目前,在信息安全领域,随机数生成器可以基于类似ANSI X9.17标准的逻辑结构产生随机数种子。所述ANSI X9.17标准的逻辑结构为一种美国伪随机数生成器标准逻辑结构。
根据类似美国伪随机数生成器标准ANSI X9.17的逻辑结构,随机数生成器每产生一个随机数,需要使用一次三重数据加密(Triple Data Encryption Algorithm,TDEA),所述三重数据加密也可通称为3DES。所述3DES算法可以保证随机数生成器生成的密码强度。
当所述随机数生成器使用3DES算法时,需要安全存储两个密钥和种子,还需要调用采样熵源。因此,目前的随机数生成器存在随机数种子生成效率不高和只生成8字节随机数种子等问题,有待改进。
为了解决以上问题,本申请提供了一种随机数种子生成方法,用以解决目前随机数生成器存在的随机数种子生成效率不高和只生成8字节随机数种子等问题。
在本申请实例中,获取第一数组以及以下中的至少一项:第二数组和第三数组;根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;对所述第一字符串进行N+1次哈希迭代计算,N为自然数;根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子;其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出与所述第二数组组合构成,i=2、3、……、N+1;其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;所述第二数组包括与操作系统有关的随机数;所述第三数组包括与计数器有关的随机数。该方法能够提高随机数种子生成效率,以提高加密和认证安全。
图1示例性的示出了一种随机数种子生成方法的流程示意图。示例性的,该方法的执行主体可以是随机数发生器,或其他可用于生成随机数或随机数种子的装置。下文中以随机数发生器是执行主体为例进行说明。随机数发生器可通过处理器或芯片或逻辑电路等实现。示例性的,本申请所提供的随机数发生器属于一种确定性随机数发生器。确定性随机数发生器(deterministic random number generator,DRNG)可以包括某密码系统的一个子函数。
参考图1所示流程,在本申请实施例中提供的方法具体步骤包括:
步骤101,获取第一数组以及以下中的至少一项:第二数组和第三数组。
可选的,所述第一数组为L字节的无符号数组,可包括L字节的字符串,一般可32≤L≤64,也可更小或更大。所述1个字节,指包括8比特字符。
可选的,所述第二数组为2字节(包含2字节)至24字节(包含24字节)的无符号数组。
可以理解,以上第一数组、第二数组的字节数可根据应用场景的需求变更,不限于以上所举例的数值。
作为一种示例,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,以及所述第二数组包括与操作系统有关的随机数。此时可实现随机数种子的初始化。
步骤101中,所述获得第一数组,包括:随机数发生器获取用户的随机输入数据,根据所述用户的随机输入数据给第一数组赋初始值。
例如,用户可随意地数次敲击键盘和拖曳鼠标,随机数发生器通过记录键盘输入值、敲击之间的时间间隔、鼠标移动速度和距离等信息,产生随机数据。所述随机数发生器也根据用户敲击键盘和拖曳鼠标等操作,获取操作时对应的系统时间、光标所在屏幕中的坐标位置数值或者采集到的噪声或声音等多类信息数据。所述随机数发生器将这些数据或数值转化成字节后构成第一数组。例如,所述随机数发生器将一个32位无符号整型数X按8比特作简单分割,构成4字节。所述随机数发生器也可以作一些略复杂的运算,比如由X计算Y,Y=X3+5X+7mod232,然后将Y按8比特分割为4字节,实现由32比特字X到4字节的转换。如果所述随机数发生器根据上述多种方式对第一数组赋初始值,若按以上多种方式获得第一数组后,第一数组的数值不足L字节,则所述随机数发生器根据还可调用某些编译系统中的一些能产生随机数的函数,使第一数组的数值足够L字节,如调用C++和C语言中的rand()函数,每调用一次可产生两字节随机数,可以连续多次调用,直至使第一数组的数值充满L字节,即获得第一数组。
步骤101中,第二数组可包括与操作系统有关的随机数。例如,第二数组所述第二数组可包括与操作系统有关的随机数,随机数发生器根据所述与操作系统有关的随机数给第二数组赋初始值。
例如,当第一数组从键盘、鼠标或系统等方面得到了L字节的初值后,所述随机数发生器将系统时间和光标位置等信息按转换函数转化成n字节记入第二数组。例如,所述随机数发生器在系统中获取系统时间、获取光标位置或调用随机数生成函数或语句,所述函数或语句包括C语言中的rand()函数、Java和Python语言中的类似语句。所述随机数发生器可采用单一函数或语句,也可并用多种所述函数或语句。所述随机数发生器将产生的数据依某种规则转换为若干长度的字符串,长度一般2至24个字节即可,若追求较高的安全性能,16至24字节为宜,即获得第二数组。第二数组只用于铺助计算,没有记忆功能。
步骤101中,第三数组可包括与计数器有关的初始值。例如,第三数组可包括计数值和深度更新条件。第三数组可包括4字节的字符串。其中,所述计数值可占2字节,深度更新条件可占2字节。所述计数值的初始值为0,所述深度更新条件可为数值0或数值T。
示例性的,在随机数发生器进行种子普通更新或深度更新过程中,可根据更新后的随机数种子确定第一数组,根据随机数种子更新次数确定所述计数值。具体将在下文中说明,这里暂不展开。
示例性的,所述T的值可根据用户设置确定。例如,所述随机性发生器可依据应用场景对安全性的需求将深度更新条件的阈值设置在1至65535之间。如果某信息系统防范得十分严密,不可能被黑客攻击,那么可将深度更新条件的阈值设置得很大,比如深度更新条件的阈值为50000。而如果系统容易被黑客攻击,那么应将深度更新条件的阈值设置得很小,比如深度更新条件的阈值为5、10或者20等。若黑客攻入了某信息系统,找到种子,则黑客对后续产生的随机数具有破解能力。而当深度更新条件的阈值很小时,种子将很快被深度更新,则黑客很难破解更新后的种子,除非他重新入侵系统,重新获得深度更新后的种子。
步骤102,根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组。
可选的,如图2所示,步骤102包括:
示例性的,所述第一数组包括L个字节的字符串,所述第二数组包括n个字节的字符串,所述第三数组包括4个字节的字符串。所述随机数发生器将所述第一数组以及以下中的至少一项:第二数组和第三数组进行拼接,获得第一字符串。所述第一字符串包括(32+n)个字节的字符串。所述n为自然数。
可选的,第一字符串可根据第一数组和第二数组确定,或者,根据第一数组和第三数组确定,或者,根据第一数组、第二数组和第三数组确定。可选的,本申请中,在每次通过随机数种子计算并输出随机数后,对第三数组的值进行加一或减一处理,处理后的第三数组的值可用于识别是否需要进行深度更新。
其中,随机数发生器可根据函数F的任一表达式确定第一字符串。函数F的表达式包括:
F(A,B,C)=(A|B)或者F(A,B,C)=(A|B|C);
其中,C表示第三数组,A表示第一数组,B表示第二数组。
步骤103中,对所述第一字符串进行N+1次哈希迭代计算,N为自然数。
可选的,步骤103包括:
根据F(A,B,C)确定的哈希迭代计算公式,包括:
H=hash(F(A,B,C));
其中,本方案实施例中以F(A,B,C)=(A|B)为例对所述第一字符串进行N+1次哈希迭代计算。
示例性的,如图2所示,随机数发生器将第一字符串A|B按如下公式进行N+1次哈希迭代计算:
Hi=hash(A|B) i=0;
Hi=hash(Hi-1|B) i>0;
其中,Hi表示第(i+1)次计算得到的哈希迭代计算结果,i=1、2、3、……、N+1;
其中,当i=0时,Hi=hash(A|B)表示任一哈希函数对第一字符串A|B的哈希迭代计算,Hi表示对所述第一字符串进行第一次哈希迭代计算的输出;当i>0时,Hi=hash(Hi-1|B),Hi-1表示对所述第一字符串进行第i次哈希迭代计算的输出,Hi表示对所述第一字符串进行第i+1次哈希迭代计算结果。
例如,可选的,一个能输出32字节的哈希算法,比如SM3算法。将A|B按SM3算法函数进行第一次哈希迭代计算,得到H0。将H0按SM3算法函数进行第二次哈希迭代计算,得到H1。将H1按SM3算法函数进行第二次哈希迭代计算,得到H2。随机数发生器依照此过程进行计算,根据对所述第一字符串进行第i次哈希迭代计算的输出Hi-1以及所述第二数组确定Hi,得到HN。HN即所述第一字符串对应的哈希迭代计算结果。其中,上述计算HN的过程可称为HN生成。所述N被称为哈希迭代深度,可以N=0,1,2,……,65535,……。所述N的值可依据性能需求和应用环境确定。其中,N的值表示做N+1次哈希迭代计算。例如,当N=0时,种子更新最快,当N越大时,占用的计算资源越多。如果用户对随机数的生成速度没有较高要求,可以将N设置为较大值,如将N设置为50000,这将有益于种子被盗情形下,提高随机数的抗预测攻击能力。
步骤104,根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子。其中,根据所述第一随机数种子输出的随机数用于加密或签名。
例如,根据第一随机数种子输出的随机数可用于产生密钥、产生数据加密系统中的初始化向量或密码协议中的NONCE等。NONCE是指加密通信中只能使用一次的数字。有些公钥加密算法或数字签名算法也要用到随机数。
可选的,步骤104包括:
示例性的,随机数发生器获得所述第一字符串对应的哈希迭代计算结果,将所述第一数组右移M个字节,即将所述第一数组的后M个字节移除。随机数发生器将哈希迭代计算结果和完成M个字节移除的所述第一数组进行拼接,得到第一随机数种子,也就是将哈希迭代计算结果置于移除右端M个字节后的第一字符串的左端。所述L的值不小于32,所述L的值大于或等于所述M的值,L和M为正整数。其中,L是第一数组的长度,M是哈希函数的输出长度。
例如,M=32,随机数发生器根据步骤103产生了HN后,将第一数组右移32个字节,删除第一数组右端的32字节,再将32字节HN放到第一数组左端空出的32字节位置上,得到第一随机数种子。其中,如果第一数组的长度为32字节,则通过上过程将32字节HN作为第一随机数种子,即根据HN确定第一随机数种子的全部;如果第一数组的长度大于32字节,则可将HN作为第一随机数种子的一部分。因此,步骤104,也可称为:根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子的部分或全部。
可选的,所述随机数发生器在得到第一随机数种子后,执行状态随机性检查。例如,随机数发生器统计0与1的个数和字符频次(或游程),若不符合要求,例如,第一随机数种子的随机性不高,则重新从步骤101开始执行。
如图2所示流程,哈希函数可用于确定第一哈希值。其中,第一哈希值可根据对所述第二字符串的哈希计算获得。随机数发生器输出第一哈希值,对所述第三数组的数值进行加一处理或减一处理,以获得更新的第三数组,并根据更新的第三数组的数值确定是否满足深度更新条件。
可选的,在每次进行随机数种子初始化或深度更新后,随机数发生器将第三数组的值置为初始值,初始值为0或T,具体将在下文中说明,这里暂不展开。
示例性的,用于获得第二字符串的函数G的表达式可包括:
G(A,B,C)=(C|A)或者G(A,B,C)=(0x9687|B|A)。
其中,C表示第三数组,A表示第一随机数种子,B表示第二数组。也就是说,第二字符串可根据第一随机数种子,以及根据第二数组和第三数组中的至少一项确定。
根据G的任一函数表达式确定的哈希迭代计算公式:
R=hash(G(A,B,C));
其中,C表示第三数组,A表示第一数组,B表示第二数组。
示例性的,下面以函数G=(C|A)为例对获得和输出第一哈希值的过程进行描述。
例如,如图2所示,随机数发生器取函数G=C|A,其中,C表示第三数组,A表示第一随机数种子。C|A表示第二字符串,根据如下公式对第二字符串C|A进行一次哈希迭代计算,得到第一哈希值:
R=hash(C|A);
R表示第一哈希值。
图2所示流程也可应用于随机数种子的初始化或深度更新。
随机数种子的初始化包括:随机数发生器执行步骤101至步骤104得到第一字符串对应的哈希迭代计算结果,将第一字符串对应的哈希迭代计算结果和第一数组进行移位处理,得到更新的第一数组。其中,移位处理可包括对第一数组右移一定字节,使得移出的字节被丢弃,将哈希迭代计算结果置于右移后的第一数组的左端空出的位置,得到更新的数组。其中,一定字节可以是哈希迭代计算结果的字节数。随机数发生器根据用户的随机输入操作确定获得第四数组,将所述更新的第一数组以及所述第四数组和第三数组中的至少一项进行拼接得到第三字符串。随机数发生器根据第三字符串进行N+1次哈希迭代计算,将第三字符串对应的哈希迭代计算结果和更新的第一数组再次进行移位处理,得到第一随机数种子。再次进行的移位处理的方式可以和上述位移处理的方式相同,不再赘述。
例如,随机数发生器根据用户的随机输入操作确定所述第一数组,根据与操作系统有关的随机数确定第二数组。随机数发生器根据所述步骤101至步骤104得到第一字符串对应的哈希迭代计算结果,对第一字符串对应的哈希迭代计算结果进行移位处理,得到更新的第一数组。随机数发生器重新获得与操作系统有关的随机数确定的第四数组,将更新的第一数组与所述第四数组拼接成第三字符串。随机数发生器参照步骤103中的哈希迭代公式,对所述第三字符串进行N+1次哈希迭代计算,得到第一随机数种子。可选的,根据第四数组和第一字符串对应的哈希迭代计算结果获得第三字符串的方式可参照获得第一字符串的方式的说明。可选的,获得第三字符串所采用的函数F与获得第一字符串所采用的函数F可以相同或不同,不作具体要求。
可以理解,深度更新与初始化过程的区别在于,在初始化过程中,第一数组的值为第一随机数,在深度更新过程中,第一数组的值为第二随机数种子。此外,在深度更新之前,需要根据第三数组判断是否满足深度更新条件。在第三数组的值属于满足深度更新条件的阈值时,进行深度更新。
可选的,在初始化过程和深度更新过程中,在获得新的随机数种子之后,随机数发生器可将第三数组的值设置为初始值。随机数发生器设置第三数组的初始值的方法包括:随机数发生器根据需求设置第三数组的计数值和深度更新条件阈值。其中,计数值可用于判断是否进行深度更新。
例如,在初始化过程和深度更新过程中,随机数发生器在获得第一随机数种子后,将计数值设置为0。则随机数发生器在每次输出根据随机数种子获得的随机数后,对所述第三数组的数值进行加一处理,获得更新的第三数组。当更新的第三数组的值为T时,随机数发生器对第一随机数种子进行深度更新,其中,T也就是满足深度更新条件的阈值。又如,随机数发生器在获得初始化的随机数种子后,将计数值的数值设置为T。则随机数发生器在每次输出根据随机数种子获得的随机数后,对所述第三数组的数值进行减一处理,获得更新的第三数组。当更新的第三数组的置为0时,随机数发生器对第一随机数种子进行深度更新,其中,0也就是满足深度更新条件的阈值。
可选的,随机数发生器还可将计数值设置为初始值0或T。至此,完成了随机数种子初始化过程。
示例性的,随机数发生器根据第三字符串对应的哈希迭代计算结果确定的第一随机数种子为完成初始化的随机数种子。
示例性的,随机数发生器完成随机数种子的初始化后,根据第二随机数种子的值重新获取第一数组,且第三数组的数值属于满足深度更新条件的阈值,则按照类似步骤进行深度更新。随机数发生器获取第一随机数种子后,再次获取第一数组,以及获得第四数组和所述更新的第三数组的数值。所述第一数组包括第二随机数种子,且第三数组的数值属于满足深度更新条件的阈值,所述第二数组包括与操作系统有关的随机数。可以理解,第二随机数种子可以是经过步骤101至步骤104获得的第一随机数种子,具体可参见前述说明,这里不再赘述。
例如,随机数发生器根据第三数组判断计数组满足深度更新条件阈值,根据第二随机数种子确定所述第一数组,根据与操作系统有关的随机数确定第二数组,参见随机数种子的初始化过程完成深度更新过程,这里不再赘述。
示例性的,在本申请实例中,随机数发生器可通过步骤101至104完成对所述随机数种子的普通更新,还可通过包括步骤105至110,或包括步骤111至114,或包括步骤115至120,进行对随机数种子的初始化、输出第一哈希值、对所述随机数种子进行深度更新等操作。
可选的,所述随机数发生器根据所述步骤101至104对随机数种子进行普通更新,包括:
其中,所述第一数组包括第二随机数种子,所述第二随机数种子可根据前一次经步骤101至104获得的第一随机数种子确定。
可选的,所述随机数发生器根据所述步骤105至110对随机数种子进行初始化,包括:
示例性的,步骤105中,所述随机数发生器根据所述用户的随机输入操作确定第一随机数,根据所述与操作系统有关的随机数确定第二随机数。所述随机数发生器根据第一随机数确定数组1,所述随机数发生器根据第二随机数确定数组2。
示例性的,步骤106中,所述随机数发生器对字符串1进行N+1次哈希迭代计算,所述字符串1为所述数组1和所述数组2的组合。
示例性的,步骤107中,所述随机数发生器根据对字符串1进行N+1次哈希迭代计算获得所述字符串1对应的哈希迭代计算结果。
示例性的,步骤108中,所述随机数发生器将数组1右移32个字节,即移除数组1右端的32字节,使得数组1左端空出32字节。随机数发生器将32字节的哈希迭代计算结果放到数组1左端空出的32字节位置上,获得更新的数组1。
示例性的,步骤109中,随机数发生器对字符串2进行N+1次哈希迭代计算,所述字符串2为所述更新的数组1和所述数组3的组合。
示例性的,步骤110中,所述随机数发生器将更新的数组1右移32个字节,丢弃所述更新的数组1右端的32字节,使得数组1左端空出32字节。随机数发生器将32字节的所述字符串2对应的哈希迭代计算结果放到所述更新的数组1左端空出的32字节位置上,获得的随机数种子1。
此外,随机数发生器根据用户设置,将数组4的值置为0或T。
以上步骤105至110中,数组1对应于本申请中的第一数组,数组2对应于本申请中的第二数组,字符串1对应于本申请中的第一字符串,哈希值1对应于本申请中的第一哈希值,随机数种子1对应于本申请中的第一随机数种子,数组3对应于本申请中的第四数组,数组4对应于本申请中的第三数组。
可选的,所述随机数发生器根据所述步骤111至114输出第一哈希值,包括:
示例性的,步骤111,所述随机数发生器获取数组5,数组5包括根据获取用户设定的深度更新条件的阈值T。
示例性的,步骤112,所述随机数发生器获取数组6,数组6包括随机数种子2。
示例性的,步骤113,所述随机数发生器对字符串2进行哈希计算获得哈希值2,所述字符串2为所述数组5和所述数组6的组合。
示例性的,步骤114,所述随机数发生器对数组4的数值进行加一处理,并输出哈希值2。
数组5对应于本申请中的第四数组,随机数种子2对应于本申请中的第一随机数种子,字符串2对应于本申请中的第二字符串,哈希值2对应于本申请中的第一哈希值。
可选的,随机数发生器进一步判断数组4的值是否属于满足深度更新条件的阈值,并根据判断结果确定是否进行随机数种子的深度更新。
例如,当加一处理后的数组4的数值为T时,需要进行深度更新。
可选的,所述随机数发生器根据所述步骤115至120进行随机数种子深度更新,包括:
示例性的,步骤115中,所述随机数发生器根据所述与操作系统有关的随机数确定数组7。
示例性的,步骤116中,所述随机数发生器对字符串3进行N+1次哈希迭代计算,所述字符串3为所述数组7和所述随机数种子3的组合。举例来说,可以是前述随机数种子2。
示例性的,步骤117中,所述随机数发生器根据对字符串3进行N+1次哈希迭代计算获得所述字符串3对应的哈希迭代计算结果。
示例性的,步骤118中,所述随机数发生器将随机数种子3右移32个字节,移除随机数种子3右端的32字节,随机数种子3左端空出32字节。随机数发生器将32字节的所述字符串3对应的哈希迭代计算结果放到随机数种子3左端空出的32字节位置上,获得更新的随机数种子,记为随机数种子4。随机数种子4是需要进行深度更新的随机数种子。
示例性的,步骤119中,随机数发生器对字符串4进行N+1次哈希迭代计算,所述字符串4为所述数组8和所述随机数种子4的组合。数组8由所述随机数发生器根据键盘输入、鼠标移动和所述与操作系统有关信息等高熵量随机数据确定。
示例性的,步骤120中,所述随机数发生器将随机数种子4右移32个字节,即删除所述随机数种子4右端的32字节,使得随机数种子4左端空出32个字节。随机数发生器将32字节的所述字符串4对应的哈希迭代计算结果放到所述随机数种子4左端空出的32字节位置上,获得的随机数种子5。
此外,随机数发生器根据用户设置,将数组4的值置为0或T。
以上步骤115至120中,随机数种子3对应于本申请中的第二随机数种子,随机数种子5对应于本申请中的深度更新后的第一随机数种子,数组4对应于本申请中的第三数组,数组8对应于本申请中定的第四数组,字符串3对应于本申请中的第一字符串,字符串4对应于本申请中的第三字符串。
基于相同的技术构思,本申请示例性的提供了一种随机数种子生成装置,如图3所示,该装置包括:
获取模块301,用于获取第一数组以及以下中的至少一项:第二数组和第三数组;
处理模块302,用于根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;
所述处理模块302,还用于对所述第一字符串进行N+1次哈希迭代计算,N为自然数;
所述处理模块302,还用于根据所述第一字符串对应的哈希迭代计算结果获得第一随机数种子;
其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出与所述第二数组组合构成,i=2、3、……、N+1;
其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;
所述第二数组包括与操作系统有关的随机数;
所述第三数组包括与计数器有关的随机数。
可选的,所述处理模块302,还用于对第二字符串进行哈希计算,得到第一哈希值,所述第二字符串根据所述第一随机数种子以及根据所述第二数组和所述第三数组中的至少一个确定;输出所述第一哈希值。
可选的,所述处理模块302,还用于对所述第三数组的数值进行加一处理或减一处理,获得更新的第三数组。所述更新的第三数组的数值用于确定是否满足深度更新条件。
可选的,所述处理模块302,具体用于根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及第四数组和所述第三数组中的至少一项获得第三字符串,所述第四数组的数值包括与操作系统有关的随机数;对所述第三字符串进行N+1次哈希迭代计算;根据所述第三字符串对应的哈希迭代计算结果获得所述第一随机数种子;其中,对所述第三字符串进行第一次哈希迭代计算的输入为所述第三字符串,或者,对所述第三字符串进行第j次哈希迭代计算的输入根据对所述第三字符串进行j-1哈希迭代计算的输出,以及所述第四数组和所述第三数组中的至少一项确定,j=2、3、……、N+1。
所述处理模块302,还用于确定所述第三数组的数值属于满足深度更新条件的阈值。
所述处理模块302,还用于将所述第三数组的值设置为初始值。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。该电子设备可以用于执行以上方法实施例所述的动作。在该实施例中,电子设备的结构可以如图4所示,包括存储器401以及一个或多个处理器402。
存储器401,用于存储处理器402执行的计算机程序。存储器401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器401可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器401也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器401可以是上述存储器的组合。
处理器402,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等。所述处理器402,用于调用存储器401中存储的计算机程序时实现上述方法。
本申请实施例中不限定上述存储器401和处理器402之间的具体连接介质。作为一种示例,本申请实施例在图4中以存储器401和处理器402之间通过总线403连接,总线403在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线403可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,处理器402可用于执行以上由获取模块301、处理模块302中任意一项或多项执行的动作。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的方法。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种随机数种子生成方法,其特征在于,包括:
获取第一数组以及以下中的至少一项:第二数组和第三数组;
根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;
对所述第一字符串进行N+1次哈希迭代计算,N为自然数;
根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子,根据所述第一随机数种子输出的随机数用于加密或签名;
其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出以及所述第二数组组合构成,i=2、3、……、N+1;
其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;
所述第二数组包括与操作系统有关的随机数;
所述第三数组包括与计数器有关的随机数。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
对第二字符串进行哈希计算,得到第一哈希值,所述第二字符串根据所述第一随机数种子以及根据所述第二数组和所述第三数组中的至少一个确定;
将所述第一哈希值作为随机数输出。
3.如权利要求2所述的方法,其特征在于,在输出所述第一哈希值之后,所述方法还包括:
对所述第三数组的数值进行加一处理或减一处理,获得更新的第三数组;
所述更新的第三数组的数值用于确定是否满足深度更新条件。
4.如权利要求1所述的方法,其特征在于,所述根据所述第一字符串对应的哈希迭代计算结果确定第一随机数种子,包括:
根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及第四数组和所述第三数组中的至少一项获得第三字符串,所述第四数组包括键盘输入、鼠标移动和与操作系统有关的随机数;
对所述第三字符串进行N+1次哈希迭代计算;
根据所述第三字符串对应的哈希迭代计算结果获得所述第一随机数种子;
其中,对所述第三字符串进行第一次哈希迭代计算的输入为所述第三字符串;或者,
对所述第三字符串进行第j次哈希迭代计算的输入根据对所述第三字符串进行j-1次哈希迭代计算的输出,以及第四数组和所述第三数组中的至少一项确定,j=2、3、……、N+1。
5.如权利要求4所述的方法,其特征在于,在所述根据所述第一字符串对应的哈希迭代计算结果和所述第一数组,以及第四数组和所述第三数组中的至少一项获得第三字符串之前,所述方法还包括:
确定所述第三数组的数值属于深度更新条件的阈值。
6.如权利要求5所述的方法,其特征在于,在所述根据所述第三字符串对应的哈希迭代计算结果获得所述第一随机数种子之后,所述方法还包括:
将所述第三数组的值设置为初始值。
7.一种随机数生成装置,其特征在于,包括:
获取模块,用于获取第一数组以及以下中的至少一项:第二数组和第三数组;
处理模块,用于根据所述第一数组以及以下中的至少一项确定第一字符串:第二数组和第三数组;
所述处理模块,还用于对所述第一字符串进行N+1次哈希迭代计算,N为自然数;
所述处理模块,还用于根据所述第一字符串对应的哈希迭代计算结果获得第一随机数种子,根据所述第一随机数种子输出的随机数用于加密或签名;
其中,对所述第一字符串进行第一次哈希迭代计算的输入为所述第一字符串,或者,对所述第一字符串进行第i次哈希迭代计算的输入由对所述第一字符串进行第i-1次哈希迭代计算的输出与所述第二数组组合构成,i=2、3、……、N+1;
其中,所述第一数组包括第一随机数,所述第一随机数根据用户的随机输入操作确定,或者,所述第一数组包括第二随机数种子;
所述第二数组包括与操作系统有关的随机数;
所述第三数组包括与计数器有关的随机数。
8.如权利要求7所述的装置,其特征在于,所述处理模块还用于:
对第二字符串进行哈希计算,得到第一哈希值,所述第二字符串根据所述第一随机数种子以及根据所述第二数组和所述第三数组中的至少一个确定;
将所述第一哈希值作为随机数输出。
9.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~6中任一所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~6中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211123608.4A CN115567199B (zh) | 2022-09-15 | 2022-09-15 | 一种随机数种子生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211123608.4A CN115567199B (zh) | 2022-09-15 | 2022-09-15 | 一种随机数种子生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115567199A CN115567199A (zh) | 2023-01-03 |
CN115567199B true CN115567199B (zh) | 2023-04-14 |
Family
ID=84740639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211123608.4A Active CN115567199B (zh) | 2022-09-15 | 2022-09-15 | 一种随机数种子生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567199B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827148A (zh) * | 2023-12-30 | 2024-04-05 | 北京海泰方圆科技股份有限公司 | 一种随机数生成方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105190535A (zh) * | 2013-03-14 | 2015-12-23 | 国际商业机器公司 | 执行伪随机数产生操作的指令 |
CN115051798A (zh) * | 2022-06-10 | 2022-09-13 | 北京海泰方圆科技股份有限公司 | 一种随机数生成方法、装置、电子设备及存储介质 |
-
2022
- 2022-09-15 CN CN202211123608.4A patent/CN115567199B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105190535A (zh) * | 2013-03-14 | 2015-12-23 | 国际商业机器公司 | 执行伪随机数产生操作的指令 |
CN115051798A (zh) * | 2022-06-10 | 2022-09-13 | 北京海泰方圆科技股份有限公司 | 一种随机数生成方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
郁昱 ; 李祥学 ; .基于单向函数的伪随机产生器与通用单向哈希函数.西安邮电大学学报.2016,(第02期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115567199A (zh) | 2023-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284372B2 (en) | Method and system for secure management of computer applications | |
US10467389B2 (en) | Secret shared random access machine | |
US9798677B2 (en) | Hybrid cryptographic key derivation | |
CN109598122B (zh) | 用于检测侧信道攻击的方法和装置 | |
EP3930252A1 (en) | Countermeasures for side-channel attacks on protected sign and key exchange operations | |
CN115567199B (zh) | 一种随机数种子生成方法、装置、电子设备及存储介质 | |
EP3762850A1 (en) | Attestable and destructible device identity | |
CN115051798A (zh) | 一种随机数生成方法、装置、电子设备及存储介质 | |
Le et al. | A tale of two trees: one writes, and other reads | |
CN115714644B (zh) | 一种随机数生成方法及装置 | |
CN112000484A (zh) | 栈帧地址随机化方法及相关设备 | |
CN116185341A (zh) | 真随机数的生成装置、方法、设备及存储介质 | |
CN111538962A (zh) | 程序控制流混淆方法、系统、存储介质、云服务器及应用 | |
WO2019113844A1 (zh) | 生成随机数的方法、芯片和电子设备 | |
JP2021528773A (ja) | ランサムウェア対応の為のデータ処理方法、これを実行させるプログラム及び上記プログラムを記録したコンピュータ読取り可能な記録媒体 | |
JP2020064461A (ja) | 変換装置、変換方法、変換プログラム及び難読プログラム | |
JP7168010B2 (ja) | 行動計画推定装置、行動計画推定方法、及びプログラム | |
Kim et al. | Analysis of the rainbow tradeoff algorithm used in practice | |
CN116225373A (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
Askoxylakis et al. | Computer Security--ESORICS 2016 | |
ElAtali et al. | BliMe: Verifiably secure outsourced computation with hardware-enforced taint tracking | |
Mood et al. | PAL: A pseudo assembly language for optimizing secure function evaluation in mobile devices | |
CN116055039B (zh) | 一种基于分组密码算法的随机数生成方法及装置 | |
CN109918928A (zh) | 一种高速缓存访问碰撞的密码计时分析方法 | |
CN116301721B (zh) | 一种随机数生成方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |