系统随机数生成方法

文档序号:8265232阅读:1380来源:国知局
系统随机数生成方法
【技术领域】
[0001]本发明涉及电子器件,特别涉及系统随机数的生成方法。
【背景技术】
[0002]随机数是系统进行加密(例如系统利用随机数生成密钥)的重要工具,因此随机数生成器是所有加密系统所必备的一个环节。一个随机数生成器必须具有足够安全的能力去防止来自外部或内部的攻击。下面列出了最基本的三条安全原则。
[0003]I)频率和游程随机性,生成器的输出要具有随机性,满足频率测试和游程测试,针对长游程和刺探攻击保证安全;
[0004]2)重构恢复/前向安全性,即使知道生成器在某一特定时刻的状态,也不能由此推断出生成器在此刻以前的输出数;
[0005]3)入侵预测/后向安全性,即使知道生成器在某一特定时刻的状态,也不能由此推断出生成器在此刻以后的输出数。
[0006]目前主要有通过真实的硬件随机数生成器生成随机数,和通过软件实现的伪随机数生成器生成随机数两种方式。通过真实的硬件随机数生成器生成随机数的方式,可参见申请号为 “201010559971.1”、“201020624542.3” 的专利文件。
[0007]真实的硬件随机数生成器和软件实现的伪随机数生成器是完全不同的。前者纯粹使用硬件实现,对于相同的输入,每次的结果都完全不可预测;后者易于用软件实现,可以得到统计上的随机数,但是算法实现公开后,同样的输入会得到同样的输出,难以做到算法随机数序列不可重复,不能保证随机数序列的唯一性。

【发明内容】

[0008]本发明的目的在于提供一种系统随机数生成方法,使得用户可以得到唯一和不可复制的系统随机数。
[0009]为解决上述技术问题,本发明提供了一种系统随机数生成方法,包含以下步骤:
[0010]获取保存在一次性编程OTP寄存器中设定地址内的芯片标识符;
[0011]以所述获取的芯片标识符作为初始种子数;
[0012]根据所述初始种子数和设定的生成多项式生成所述系统随机数。
[0013]本发明实施方式相对于现有技术而言,以获取保存在一次性编程OTP寄存器中设定地址内的芯片标识符作为“初始种子数”,以用户写入到OTP寄存器中的用户标识作为“生成多项式”,根据所述初始种子数和生成多项式生成系统随机数。由于所述芯片标识符具有唯一性和不可复制的特性,使得用户可以得到唯一和不可复制的系统随机数。
[0014]另外,在获取保存在一次性编程OTP寄存器中设定地址内的芯片标识符之前,还包含以下步骤:
[0015]将待写入到一次性编程OTP寄存器中的芯片标识符,进行安全散列算法SHA的运算,得到经所述SHA加密后的芯片标识符;
[0016]将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内;
[0017]所述获取的芯片标识符为经SHA加密后写入到所述设定地址内的芯片标识符。
[0018]本发明中,写入到OTP寄存器的芯片标识符是经过SHA运算后得到的加密的芯片标识符,该加密的芯片标识符与上述待写入到OTP寄存器中的芯片标识符不同,因此可以对待写入到OTP寄存器中的芯片标识符进行加密保护,防止被破解。同时,SHA是把不定长度的一串消息,加以特定的算法处理,得到固定长度的数据,这个数据在理论上破解很困难,工程实现也是不可能的,所以本发明中的芯片标识符也是唯一的,不可复制的。
[0019]另外,在所述将待写入到OTP寄存器中的芯片标识符,进行SHA的运算之前,还包含以下步骤:
[0020]将所述待写入到OTP寄存器中的芯片标识符作为第一字段,在所述第一字段后的第二字段用于存放停止位,在所述第二字段后的第三字段为填充字段,所述填充字段中的各比特位填充为O ;
[0021]在所述第三字段后的第四字段用于指示所述第一字段占用的比特位数;
[0022]所述第一字段、第二字段、第三字段和第四字段的比特长度总和为512位比特;
[0023]在所述将待写入到OTP寄存器中的芯片标识符,进行SHA的运算的步骤中,将所述第一字段、第二字段、第三字段和第四字段组成的512位比特,进行所述SHA的运算。
[0024]在SHA运算过程中,由于输入的数据必须是512位比特,通过上述SHA运算之前的准备步骤,就能将第一字段、第二字段、第三字段和第四字段的比特长度总和综合处理成适用于SHA运算的512位比特,保证了 SHA运算的可操作性和准确性。
[0025]另外,芯片标识符包含用户设定的ID和厂商设定的ID。使用这种方法,只要保护好厂商代码或用户代码,即使是知晓全部设计细节的研发人员,缺了任意一个代码,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定Chip ID的芯片,比单有一个厂商代码或者用户代码安全系数更高。
[0026]另外,将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内的步骤中,包含以下子步骤:
[0027]在经所述SHA运算后得到的数据中,取低位的N个比特位,所述N为所述厂商设定的ID的比特长度;
[0028]将所述N个比特位写入到所述OTP寄存器中的用于存放厂商设定的ID的字段中;将所述N个比特位中的低位的NI个比特位写入到所述OTP寄存器中的用于存放用户设定的ID的字段中;其中,所述NI为所述用户设定的ID的比特长度。
[0029]由于使用SHA算法运算后的芯片标识符信息会按照一定的顺序写入到OTP寄存器中,而本发明中OTP寄存器中用户设定的ID的字段和厂商设定的ID的字段是有一一对应的位置存放关系的,这就为SHA算法的准确性提供了保障,使整个运算过程井井有条,不容易发生由于位置关系不正确导致的运算错误。
【附图说明】
[0030]图1是根据本发明第一实施方式中的系统随机数生成方法的流程图;
[0031]图2是根据本发明第二实施方式中的芯片标识符写入方法的流程图;
[0032]图3是根据本发明第二实施方式中的芯片标识符写入方法的示意图;
[0033]图4是根据本发明第二实施方式中的写入OTP寄存器的芯片标识符的数据通道。
【具体实施方式】
[0034]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0035]本发明的第一实施方式涉及一种系统随机数生成方法。具体流程如图1所示。
[0036]首先是步骤101,获取初始种子数。该初始种子数是保存在一次性编程OTP寄存器中设定地址内的芯片标识符,该芯片标识符具有唯一性和不可复制的特性。OTP寄存器是通过电子熔丝e-Fuse、烧断laser或熔断fuse实现的,其中e_Fuse型OTP寄存器包含稱合电容型的e-Fuse寄存器、串联晶体管型的e-Fuse寄存器和电介质击穿型的e-Fuse寄存器。这些方式实现的OTP寄存器特点是只能一次性写入,不可改写,但是可以重复读出数据。
[0037]接着是步骤102,获取生成多项式。
[0038]该生成多项式可以为用户写入到OTP寄存器中的用户标识。
[0039]需要说明的是,步骤101和步骤102并无明确的先后顺序,既可以先执行步骤101,也可以先执行步骤102,二者也可以同时进行。
[0040]最后是步骤103,生成系统随机数。根据获取的初始种子数和生成多项式生成系统随机数。
[0041 ] 至此,整个随机数生成过程结束。
[0042]与现有技术相比,本发明中以获取保存在一次性编程OTP寄存器中设定地址内的芯片标识符作为“初始种子数”,以用户写入到OTP寄存器中的用户标识作为“生成多项式”,并根据获取的初始种子数和生成多项式生成系统随机数。由于所述芯片标识符具有唯一性和不可复制的特性,使得用户可以得到唯一和不可复制的系统随机数。
[0043]上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0044]本发明的第二实施方式涉及一种系统随机数生成方法,具体流程如图1所示。第二实施方式在第一实施方式的基础上作了进一步细化,给出了将芯片标识符写入OTP寄存器中设定地址内的具体方法,进一步阐述了芯片标识符以及系统随机数的唯一性和不可复制的特性。具体地说,在获取保存在一次性编程OTP寄存器中设定地址内的芯片标识符之前,包含将芯片标识符经SHA运算加密后写入到OTP寄存器中设定地址内的步骤。在本实施方式中,将芯片标识符(Chip ID)写入OTP寄存器中设定地址内的具体流程如图2所示。
[0045]首先是步骤201,经系统接口获取待写入到OTP寄存器中的Chip ID。
[0046]该Chip ID包含用户设定的ID、厂商设定的ID、其它自定义的ID或其任意组合的ID,在本实施方式中使用用户设定的ID和厂商设定的ID的组合,如图3所示。使用这种方法,只要保护好用户设定的ID和厂商设定的ID,即使是知晓全部设计细节的研发人员,缺了任意一个值,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定Chip ID的芯片,比单有一个厂商代码或者用户代码安全系数更高。
[0047]经过系统接口获取待写入到OTP寄存器中的Chip ID后,需要经过一个合并处理的过程,用于把用户设定的ID和厂商设定的ID合并处理成一定的顺序,以便用于后续的SHA运算。具体如图4所示:
[0048]首先系统接口将待写入到OTP寄存器中的由用户设定的ID (图4中编号I)和厂商设定的ID (图4中编号2)组成的Chip ID作为第一字段,如图4中的编号3,然后在上述第一字段后的第二字段存放停止位,如图4中的编号4,之后把上述第二字段后的第三字段作为为填充字段,该填充字段中
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1