System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 伪随机数生成方法、装置、设备及存储介质制造方法及图纸_技高网

伪随机数生成方法、装置、设备及存储介质制造方法及图纸

技术编号:40442264 阅读:3 留言:0更新日期:2024-02-22 23:04
本发明专利技术公开了一种伪随机数生成方法,利用HASH算法基于接收的熵输入和个人化数据生成密钥和初始值,然后输入AES模块使用CTR模式进行加密运算,将加密生成的密钥流输出作为生成的伪随机数,同时将输出的伪随机数据持续输入HASH模块进行运算,在返回要求的随机数的同时,使用生成随机数的HASH值更新密钥和初始值,用于下一次运算。由于每次生成随机数都使用生成的随机数据的HASH值更新密钥和初始值,本算法不需要定期更新种子,同时也不需要派生函数,简化了算法复杂度。算法中的AES和HASH都是基于硬件模块实现,提高了随机数的生成速度,可以获得高速优质的伪随机数,从而使得电子设备加密更高效,占用的资源更少。

【技术实现步骤摘要】

本专利技术属于电子芯片加密的,尤其涉及一种伪随机数生成方法、装置、设备及存储介质


技术介绍

1、一提到密码学,多数人先想到加密算法还有密钥这两个概念。因为算法不同,决定了安全强度不同,而密钥更是安全的核心关键。但除此之外,还有一个因素对密码学至关重要——随机数。随机数在密钥分发和认证、会话密钥以及流加密中都有应用。

2、随机数分为伪随机数和真随机数。伪随机数又分为弱伪随机数和强伪随机数。

3、弱伪随机数

4、特点是通过纯软件算法,按照一定的规律生成一个随机值。但从名称即可看出,该类随机数的特点是只具备一定的随机性,并不能做到不可预测性,即并不是一个真正的随机数。例如通过mcu的时间作为种子去生成一个随机数,因为时间是不停变化的变量,所以生成的随机数也不停变化。但时间的变化终究有规律可循。

5、强伪随机数

6、顾名思义,该类随机数具有更强的随机数特性,能够满足随机性和不可推测特性。例如通过获取敲击键盘的数据作为随机数种子进而生成一组强伪随机数,因为击打键盘存在不确定性,所以生成的随机数也更接近与真正的随机数。

7、真随机数

8、同时具备随机性、不可推测和不可重复这3个基本特点。任何人无法通过软件算法或其他方法得知下一个随机数(或者随机数下一位)是什么。真随机数的生成是基于物理现象完成的,例如掷骰子、抛硬币等等。对于嵌入式行业来讲,真随机数是需要借助硬件随机数发生器来产生的。

9、随机数发生器

10、可分为真随机数发生器、伪随机数发生器。向下又可细分为硬件真随机数发生器、硬件伪随机数发生器等。这其中只有硬件真随机数发生器对于嵌入式系统应用才是真正安全有效的。

11、真随机数是通过将外界物理环境的不可预测的熵源转换成对应的二进制位流得到的,真随机数生成器(trng)负责这个转换的过程。伪随机数是将一个固定的值(或者叫种子)应用于一个确定的随机数生成算法而得到的二进制位流。有两种不同的伪随机数生成工具,一种是伪随机数生成器(prng),它生成不限长度的位序列,另一种叫伪随机函数(prf),它生成固定长度的位序列。

12、trng需要对真实的不可预测的物理过程进行采样,比如热噪信号、量子力学效应、放射性元素的衰退辐射等,所以它需要硬件的支持,要产生真正的随机数,必须使用专门的设备。prng和trng的主要区别在于prng效率更高,它可以完全是软件算法实现,也可以使用硬件实现,因此设计一种高效优质的伪随机数生成算法,是非常有必要的。


技术实现思路

1、本专利技术的目的是提供一种伪随机数生成方法,整个生成过程算法使用hash和aes算法(纯软算法),在初始化后可以持续输出伪随机数序列,并自动更新密钥和初始值,不需要定期更新种子及派生函数,简化了算法复杂度,可以获得高速优质的伪随机数,从而使得电子设备加密更高效,占用的资源更少。

2、为解决上述问题,本专利技术的技术方案为:

3、一种伪随机数生成方法,包括:

4、基于输入数据,采用hash算法生成初始密钥和初始值;

5、使用初始密钥对初始值进行aes-ctr加密运算,输出伪随机序列;

6、对伪随机序列进行hash迭代,更新密钥和初始值,用于计算生成下一个伪随机数。

7、根据本专利技术一实施例,在初始化阶段,通过hash算法对输入的熵和个人化数据进行hash运算,并将运算结果的256bit数据的高128位作为加密模块的初始密钥,将低128位作为加密模块的初始值。

8、根据本专利技术一实施例,在伪随机数生成阶段,通过aes加密引擎使用初始密钥对初始值进行加密生成密钥流,在ctr模式下,每个分组对应一个逐次累加的计数器,将所述初始值作为计数器初始值,每次加密后计数值增加1。

9、根据本专利技术一实施例,在伪随机数生成阶段,将加密生成的密钥流作为伪随机序列输出,同时对伪随机序列进行hash迭代;当伪随机数生成结束时,得到此次生成伪随机序列的hash值,将hash值的256bit数据的高128位作为下一次生成伪随机数的初始密钥,将低128位作为下一次生成伪随机数的初始值。

10、一种伪随机数生成装置,包括:

11、初始化模块,基于输入数据,采用hash算法生成初始密钥和初始值;

12、伪随机数生成模块,使用初始密钥对初始值进行aes-ctr加密运算,输出伪随机序列;同时,对伪随机序列进行hash迭代,更新密钥和初始值,用于计算生成下一个伪随机序列。

13、一种伪随机数生成设备,包括:存储器和处理器,所述存储器中存储有计算机指令,所述计算机指令被所述处理器执行时,使得所述处理器执行本专利技术一实施例中的伪随机数生成方法中的步骤。

14、一种存储有计算机指令的存储介质,所述计算机指令被一个或多个处理器执行时,使得一个或多个处理器执行本专利技术一实施例中的伪随机数生成方法中的步骤。

15、本专利技术由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:

16、本专利技术一实施例中的伪随机数生成方法,利用hash算法基于接收的熵输入和个人化数据生成密钥和初始值,然后输入aes模块使用ctr模式进行加密运算,将加密生成的密钥流输出作为生成的伪随机数,同时将输出的伪随机数据持续输入hash模块进行运算,在返回要求的随机数的同时,使用生成随机数的hash值更新密钥和初始值,用于下一次运算。由于每次生成随机数都使用生成的随机数据的hash值更新密钥和初始值,本算法不需要定期更新种子,同时也不需要派生函数,简化了算法复杂度。算法中的aes和hash都是可以基于硬件模块实现,也提高了随机数的生成速度,可以获得高速优质的伪随机数。从而使得电子设备加密更高效,占用的资源更少。

本文档来自技高网...

【技术保护点】

1.一种伪随机数生成方法,用于电子加密设备;其特征在于,包括:

2.如权利要求1所述的伪随机数生成方法,其特征在于,在初始化阶段,通过HASH算法对输入的熵和用户数据进行HASH运算,并将运算结果的256bit数据的高128位作为加密模块的初始密钥,将低128位作为加密模块的初始值。

3.如权利要求1所述的伪随机数生成方法,其特征在于,在伪随机数生成阶段,通过AES加密引擎使用初始密钥对初始值进行加密生成密钥流,在CTR模式下,每个分组对应一个逐次累加的计数器,将所述初始值作为计数器初始值,每次加密后计数值增加1。

4.如权利要求3所述的伪随机数生成方法,其特征在于,在伪随机数生成阶段,将加密生成的密钥流作为伪随机序列输出,同时对伪随机序列进行HASH迭代;当伪随机数生成结束时,得到此次生成伪随机序列的HASH值,将HASH值的256bit数据的高128位作为下一次生成伪随机数的初始密钥,将低128位作为下一次生成伪随机数的初始值。

5.一种伪随机数生成装置,其特征在于,包括:

6.一种伪随机数生成设备,其特征在于,包括:存储器和处理器,所述存储器中存储有计算机指令,所述计算机指令被所述处理器执行时,使得所述处理器执行如权利要求1至4中任意一项所述的伪随机数生成方法中的步骤。

7.一种存储有计算机指令的存储介质,其特征在于,所述计算机指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至4中任意一项所述的伪随机数生成方法中的步骤。

...

【技术特征摘要】

1.一种伪随机数生成方法,用于电子加密设备;其特征在于,包括:

2.如权利要求1所述的伪随机数生成方法,其特征在于,在初始化阶段,通过hash算法对输入的熵和用户数据进行hash运算,并将运算结果的256bit数据的高128位作为加密模块的初始密钥,将低128位作为加密模块的初始值。

3.如权利要求1所述的伪随机数生成方法,其特征在于,在伪随机数生成阶段,通过aes加密引擎使用初始密钥对初始值进行加密生成密钥流,在ctr模式下,每个分组对应一个逐次累加的计数器,将所述初始值作为计数器初始值,每次加密后计数值增加1。

4.如权利要求3所述的伪随机数生成方法,其特征在于,在伪随机数生成阶段,将加密生成的密钥流作为伪随机序列输出,...

【专利技术属性】
技术研发人员:陈玲周玉洁刘红明
申请(专利权)人:上海航芯电子科技股份有限公司
类型:发明
国别省市:

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

1