一种单级真随机数的产生方法与流程

文档序号:17089276发布日期:2019-03-13 23:15阅读:321来源:国知局
一种单级真随机数的产生方法与流程

本发明涉及真随机数发生器领域,尤其涉及一种单级真随机数的产生方法。



背景技术:

随着人们对信息安全的越来越重视,信息的加密与破解技术开始得到大的发展,在现代信息系统中,为了保证信息的保密性、完整性、可用性、可控性和不可否认性广泛地使用了加密设备,而所有的加密设备都需要一个难以破解的密匙,所以如何生成一个难破解的密匙则成为了密码学的一个研究方向。众所周知,凡是可以被破解的密码都是会有一定规律可寻的,只要找到这个规律就可以反向去破解,而真随机数是一种靠着纯物理现象生成的随机数,它有着无规律性以及难以复现的优点,很好的满足了人们对密匙安全性的要求。也正因此,现在的很多密匙都是以真随机数为基础而产生的。但是,传统的真随机数发生器都是用精准的模拟电路来实现的,专用性较强,难以复现在不同芯片上,要想使用,需要专门定制电路,耗费大量时间与成本。因此利用纯数字电路来实现真随机数发生器成为一个研究热点。数字真随机数发生器有复用性强,不依赖于特定芯片工艺规格,可以作为ip核集成在其他芯片上等优点。

对于数字的真随机数发生器,主要有以下三种主流的方法去实现,第一种是基于时钟信号抖动来产生真随机数的方法,这种方法很难产生高速率的随机数。第二种是使用长环形振荡器来产生真随机数,这种方法可以产生一定速率的真随机数,但是所需的振荡器环很长,器件使用过多,抖动积累时间较长,对于一些要求不是很严格的场合适用,这也是现在人们应用最多的真随机数发生器结构。第三种则是利用数字电路中的亚稳态去产生真随机数,当电路进入亚稳态,并从亚稳态再次回到稳态时,由于半导体内外部噪声的影响,最终电路会收敛于高低电平中的任意一个,这种不确定性收敛就是真随机数产生的来源,由于亚稳态的偶发性和温度敏感性的特点,亚稳态的产生和使用并不容易,所以这种方法使用的较少。

亚稳态的产生虽然不容易,但是确是很好的真随机数熵源。中国发明申请107038015a公开了一种单级真随机数发生器,其使用了多个fibonacci亚稳态环振的输出进行异或去产生第一随机序列,使用多个galois亚稳态环振的输出进行异或去产生第二随机序列,最后再将产生的两条序列进行加密得到单条加密随机序列。该设计结构很好地利用了亚稳态去产生真随机熵源,并使用多级熵源异或的办法去提高熵源质量,去除单一熵源的相关性。这种多级异或去提高熵源质量,去除相关性的方法也是现在绝大多数真随机数发生器所使用的结构。然而这种结构使用了多级的单一熵源,必定需要较多的逻辑器件,较多逻辑器件的互连也必定占用较大的芯片面积,这也是这种结构的最大弊端。

故,针对目前现有技术中存在的上述缺陷,实有必要进行研究,以提供一种方案,解决现有技术中存在的缺陷。



技术实现要素:

有鉴于此,确有必要提供一种单级真随机数的产生方法,采用单级熵源并通过反馈移位寄存器消除序列相关性,能够有效的减少真随机数发生器模块所使用的逻辑器件,使其占据更小的芯片面积。

为了克服现有技术的缺陷,本发明的技术方案如下:

一种单级真随机数的产生方法,包括以下步骤:

步骤s1:采用两个独立的第一环振和第二环振分别产生两路独立随机信号,其中,所述第一环振和所述第二环振均为单级熵源,采用单个亚稳态子环振形成亚稳态环形振荡器,其工作状态为接入大环路进入稳定振荡状态或者从大环路中断开形成独立的子环振进入亚稳定状态;

步骤s2:通过采样电路采集环振生成的单比特熵形成第一随机序列和第二随机序列;

步骤s3:将所述第一随机序列和第二随机序列输入反馈移位寄存器进行数据处理,所述反馈移位寄存器将输入序列与其输出序列异或后不断地输入反馈环以消除序列相关性;

步骤s4:通过异或链纠偏电路消除序列偏置;

步骤s5:将经上述处理后的第一随机序列和第二随机序列输入加密运算单元,以第一随机序列作为明文数据且以第二随机序列作为密钥进行加密运算并输出密文数据作为随机数输出。

作为进一步改进方案,所述反馈移位寄存器采用galois结构反馈移位寄存器。

作为进一步改进方案,所述第一环振和所述第二环振采用单个fabbion亚稳态环振或galois亚稳态环振。

作为进一步改进方案,所述第一环振采用一个fabbion亚稳态环形振荡器作为输出熵源所述第二环振采用一个galois亚稳态环形振荡器作为输出熵源。

作为进一步改进方案,所述亚稳态fibonacci环形振荡器在golic'所设计的fibonacci环形振荡器的基础上加入了选择器去控制环振是否进入亚稳态。所述亚稳态fibonacci环形振荡器采用n个反相器连接成环形振荡器,每个反相器的输出信号均通过反馈环路反馈至第一个反相器的输入端,每个反相器的输入端都接一个二选一选择器,所述二选一选择器的输出端与该反相器的输入端相连接,所述二选一选择器的第一输入端与该反相器的输出端相连接,所述二选一选择器的第二输入端与前级反相器的输出端相连接,所述二选一选择器受控于控制信号使其选通第一输入端或第二输入端,当所述第一输入端选通时,每个反相器从大环路中断开,形成独立的子环振进入亚稳定状态;当所述第二输入端选通时,每个反相器从子环振断开,重新接入大环振,快速进入稳态;

所述亚稳态galois环形振荡器在golic'所设计的galois环形振荡器的基础上加入了选择器去控制环振是否进入亚稳态。所述亚稳态galois环形振荡器采用n个反相器连接成环形振荡器,每个反相器的输出信号均通过反馈环路反馈至第一个反相器的输入端,每个反相器的输入端都接一个二选一选择器,所述二选一选择器的输出端与该反相器的输入端相连接,所述二选一选择器的第一输入端与该反相器的输出端相连接,所述二选一选择器的第二输入端与前级反相器的输出端相连接,所述二选一选择器受控于控制信号使其选通第一输入端或第二输入端,当所述第一输入端选通时,每个反相器从大环路中断开,形成独立的子环振进入亚稳定状态;当所述第二输入端选通时,每个反相器从子环振断开,重新接入大环振,快速进入稳态;

优选地,后处理单元包括galois结构的线性反馈移位寄存器电路和异或链电路两部分组成,所述第一环振产生的第一随机序列和所述第二环振产生的第二随机序列分别先经所述galois结构的线性反馈移位寄存器电路处理,再经过所述异或链电路处理后再输出至所述加密运算单元。

优选地,所述galois结构的线性反馈移位寄存器电路包括n个反相器,所述第一随机序列或第二随机序列串行输入与第n个反相器的输出异或后作为第一个反相器的输入,第n个反相器的输出经过开关与除第一个反相器外的前n-2个反相器的输出异或后作为后一个方向器的输入。当开关断开时,则后一反相器的输入仅为前一反相器的输出;当开关闭合时,后一反相器的输入就是前一反相器的输出与第n个反相器的输出相异或后的输出。这样经过多次反馈后,增加了随机序列的熵值,消除了单熵源可能具有的相关性。

优选地,所述galois结构的线性反馈移位寄存器电路,除第一和第n反相器以外的其他反相器输出端的反馈环路中接入反馈开关(fi,i为2至n-1的自然数),采用本原多项式作为反馈多项式控制反馈开关。

优选地,所述异或链电路包括多个串接的d触发器,所述galois结构的线性反馈移位寄存器电路处理后的第一随机序列或第二随机序列串行输入至第一个d触发器,每个d触发器的输出端均与其下一级d触发器的输入端相连接,所述多个串接的d触发器通过一同步时钟信号控制每个d触发器同时输出信号并通过一异或门异或输出后作为所述异或链电路的输出。

优选地,所述加密运算单元为des加密运算单元。

作为进一步的改进方案,采用电路在亚稳态环形振荡器稳定振荡状态时采样使熵源输出随机序列。

与现有技术相比较,本发明在熵源上采用了单个熵源作为输出,摒弃了真随机数发生器模块中使用较多的多熵源异或的结构,使用单熵源结构的优点是使用了较少的逻辑器件,使电路的实现和复用更加简单和方便,并且少的逻辑器件的使用量也使得真随机数发生器模块将占用更小的芯片面积。同时,为了去除单一熵源中经常出现的序列相关性,创造性的使用galois结构的线性反馈移位寄存器去处理原始序列。经过实验,本发明提出单熵源结构的真随机数发生器产生的真随机数序列满足实际应用需求。

附图说明

图1为本发明方法架构的单级真随机数发生器的结构框图。

图2为单级亚稳态fibonacci环形振荡器的结构框图。

图3为单级亚稳态galois环形振荡器的结构框图。

图4为单熵源结构的结构框图。

图5为galois结构的线性反馈移位寄存器电路的原理图。

图6为异或链电路的原理框图。

图7为des加密运算单元的原理框图。

图8为本发明真随机数发生器的功能仿真图。

图9为本发明真随机数发生器的quartusprime的综合图。

图10为本发明单级真随机数的产生方法的流程框图。

如下具体实施例将结合上述附图进一步说明本发明。

具体实施方式

以下将结合附图对本发明提供的一种单级真随机数发生器作进一步说明。

参见图10,所示为本发明单级真随机数的产生方法的流程框图,包括以下步骤:

步骤s1:采用两个独立的第一环振和第二环振分别产生两路独立随机信号,其中,所述第一环振和所述第二环振均为单级熵源,采用单个亚稳态子环振形成亚稳态环形振荡器,其工作状态为接入大环路进入稳定振荡状态或者从大环路中断开形成独立的子环振进入亚稳定状态;

步骤s2:通过采样电路采集环振生成的单比特熵形成第一随机序列和第二随机序列;

步骤s3:将所述第一随机序列和第二随机序列输入反馈移位寄存器进行数据处理,所述反馈移位寄存器将输入序列与其输出序列异或后不断地输入反馈环以消除序列相关性;

步骤s4:通过异或链纠偏电路消除序列偏置;

步骤s5:将经上述处理后的第一随机序列和第二随机序列输入加密运算单元,以第一随机序列作为明文数据且以第二随机序列作为密钥进行加密运算并输出密文数据作为随机数输出。

参见图1-5,所示为本发明方法架构的单级真随机数发生器的结构框图,至少包括第一环振、第二环振、采样电路、反馈移位寄存器、异或链纠偏电路和加密运算单元,其中,第一环振和所述第二环振均为单级熵源,分别用于产生第一随机序列和第二随机序列;

采样电路用于采集环振生成的单比特熵并传输给所述反馈移位寄存器;

反馈移位寄存器用于将输入序列与其输出序列异或后不断地输入反馈环以消除序列相关性;

异或链纠偏电路用于消除序列偏置并将处理后的序列输出至所述加密运算单元;

加密运算单元以处理后的第一随机序列作为明文数据且以处理后的第二随机序列作为密钥进行加密运算并输出密文数据作为随机数输出。

要实现一个高质量的真随机数发生器必不可少的就是要有一个高质量的熵源,在现有技术也提出了许多不同原理不同结构的熵源设计方案,比如图2和图3所示的亚稳态fibonacci环形振荡器和亚稳态galois环形振荡器,其优点在于在普通的fibonacci环形振荡器和普通的galois环形振荡器的基础上引入了亚稳态,使得熵源是由电阻热和时钟抖动相结合所产生的,这样产生的熵源是由两种物理随机源一同作用而产生的,提高了熵源质量,并且能够在所有的fpga家族或者在asic中实现;能够利用fpga工具全自动综合。但是上述做法虽然一定程度上提高了熵源质量,但是还是无法去除单一熵源的相关性,所以上述设计使用了繁琐的多熵源异或去消除相关性,背景技术中也提到过,这种多熵源异或结构会使用较多的逻辑器件,占用较大的芯片面积,这在芯片设计时是一个弊端。本发明从减少逻辑器件使用量的角度出发对上述电路进行了改进,提出了单熵源电路结构,并且为了消除单熵源所具有的的相关性问题,使用了一种galois结构的线性反馈移位寄存器去处理原始序列。

本发明中,第一环振和第二环振组成了熵源部分,均为单级熵源;参见图4,所示为本发明提出单熵源结构,第一反馈随机源由单个亚稳态fibonacci环形振荡器组成,第二反馈随机源由单个亚稳态galois环形振荡器组成。单个亚稳态fibonacci环形振荡器的输出经过d触发器的采样后生成第一原始随机序列;单个亚稳态galois环形振荡器的输出经过d触发器的采样后生成第二原始随机序列。这两个采样d触发器使用相同的采样时钟是相同,以保证第一和第二原始随机序列的输出速率是相同的。

现有技术通常将随机数采样点设置为相位抖动的地方,而忽略振荡器从起振到稳定振荡所要经历的另一个不确定的亚稳态状态,此时电路的输出将会取决于电路的噪声特性而变得具有真随机性。因此,亚稳态状态使一种理想的熵源,但是亚稳态状态稍纵即逝,只存在于起振阶段,进入稳定振荡之后就不会再出现。所以设置一个控制信号,根据控制信号不同,环形振荡器会处于以下两种状态:当控制信号为低电平时,各反相器会从大环路断开,各子环振进入亚稳定状态;当控制信号变为高电平时,各反相器从子环振断开,接入大环振,同时它们会结束亚稳定状态,快速进入稳态。当电路从先前的亚稳态模式切换至稳态时,每一个反相器的输出值都由其随机噪声决定,环振的瞬时电压同样也是随机的,如此就产生了高熵值。在控制信号为高电平时,采样1bit随机数据,在采样完成后,此真随机数发生器熵源又进入亚稳态来收集新的随机性。

为了避免一些极端的环境下,单一的环形振荡器的输出序列特征被暴露,在一种优选实施方式中,在单个亚稳态fibonacci环形振荡器和单个亚稳态galois环形振荡器中,除第n反相器以外的其他反相器输出端的反馈环路中接入反馈开关(fi,i为1至n-1的自然数),采用本原多项式作为反馈多项式控制反馈开关。

本原多项式的二进制系数决定着环形振荡器的反馈连接,规定当fi=1时反馈开关闭合,当fi=0时反馈开关断开,用二进制的多项式来表示为:

对于fibonacci环形振荡器,反馈多项式只有在满足以下条件时,它的输出才不会出现固定不变的状态:

f(x)=(1+x)h(x)且h(1)=1(2)

即f(x)可以被1+x整除,但是h(x)不能被1+x整除,其中级数n(即反相器的个数)可以是奇数也可以是偶数,但是不能等于2。

而对于galois环形振荡器,只有在反馈多项式满足以下条件时,它的输出才不会出现固定不变的状态:

f(x)=(1+x)h(x)(3)

即f(x)可以被1+x整除,其中级数n只能是奇数。

如果反馈多项式h(x)是一个本原多项式,那么上述的条件都能得到满足,同时即使控制信号始终为高电平,生成的序列也将是一个周期长度为2n-2的伪随机序列,由于这里只采用了单个亚稳态fibonacci环形振荡器和单个亚稳态galois环形振荡器,所以只要找到任意两个不同的本原多项式即可。

对于上述生成的第一和第二原始序列,由于本发明是为了尽可能使用少的逻辑器件,所以使用单个熵源去产生的,因此不可避免的将会有序列相关性的问题,影响最终得到的随机序列质量。

为了解决上述技术问题,本发明在一种优选的实施方式中,使用了galois结构的线性反馈移位寄存器电路去消除序列相关性。

现有技术中,线性反馈移位寄存器主要是用来产生m序列的,m序列就是一种伪随机码,它在一定长度内是随机的,但超过这个长度,就会循环产生这段码。在本发明中,将产生的真随机序列作为种子输入线性反馈移位寄存器中,由于每次都输入一位的真随机数,所以都会产生一段伪随机码,因为真随机数不可预测,所以得到的随机码也就符合真随机数的不可预测性,所以就使本来的伪随机码变为真随机码。又因为本身具有的反馈机制,最后得到的输出位是与前面若干位异或得来的,所以消除了相邻或相近位的相关性。因此,采用上述方式就可以得到消除了相关性的真随机序列。

进一步的,galois结构反馈移位寄存器其实就是根据jovandj.golic提出的galois结构的环形振荡器演变得来的,因为它本身就是从基本的反馈移位寄存器中得来的,所以它也具有反馈移位寄存器本身的功能,通过将原始序列与输出序列异或后不断地输入反馈环可以起到消除序列相关性的作用,因为反馈移位寄存器是将输出信号与前面部分反相器的输出进行异或后作为后级反相器的输入,这样经过多次反馈后,原始序列的相关性将会被消除,这就起到了与多级异或相同的功能,并且galois结构的反馈移位寄存器的结构相当简单,只有反相器与异或门,可以极大的减少器件使用量,减小真随机数模块所占芯片面积。

参见图5,所示为galois结构的线性反馈移位寄存器电路的原理图。所述galois结构的线性反馈移位寄存器电路包括n个反相器,所述第一原始序列或第二原始序列串行输入与第n个反相器的输出异或后作为第一个反相器的输入,第n个反相器的输出经过开关与除第一个反相器外的前n-2个反相器的输出异或后作为后一个方向器的输入。当开关断开时,则后一反相器的输入仅为前一反相器的输出;当开关闭合时,后一反相器的输入就是前一反相器的输出与第n个反相器的输出相异或后的输出。这里采用的n为7。这样经过多次反馈后,由于每个反相器的延迟与相位抖动实际上都不相同,最后很难预测最后的输出是什么,再将其与原始序列异或,就可以起到增加随机序列的熵值,消除了单熵源具有的相关性的作用。

因为galois结构的反馈移位寄存器电路是从基本galois环形振荡器得来,所以上述galois环形振荡器不会出现固定不变的状态的条件也适用于galois结构的反馈移位寄存器电路,所以为了使galois结构的反馈移位寄存器电路在熵源失效的情况下可以产生最大周期的伪随机序列,这里也需采用本原多项式。

实际电路中,由于电路内外部各种噪声影响,随机源输出的随机位不可能如理想情况那样,‘0’和‘1’等概率出现,输出序列的分布可能不能满足要求,影响最终结果的统计特性,因此必须采取后处理电路对数据进行消偏处理。

为了克服上述技术缺陷,本发明单级真随机数发生器还包括异或链电路,经过galois结构的线性反馈移位寄存器电路处理后的第一随机序列和第二随机序列,分别经异或链电路处理后再输出至加密运算单元。

参见图6,所示为本发明采用的异或链电路的原理框图,包括多个串接的d触发器,经过galois结构的线性反馈移位寄存器电路处理后的第一随机序列或第二随机序列串行输入至第一个d触发器,,每个d触发器的输出端均与其下一级d触发器的输入端相连接,多个串接的d触发器通过一同步时钟信号控制每个d触发器同时输出信号并通过一异或门异或输出后作为异或链电路的输出。

上述异或链电路的原理如下:假设输入随机序列中1出现的概率为p,0出现的概率为1-p,则要使相邻两个d触发器的异或输出为1,则他们的输入必须为01或10,此时输出为1的概率为2p(1-p),当他们的输入是00和11时,最终的异或输出将为0,概率为p2+(1-p)2。当有n个d触发器时,由数学归纳法知,输出为1的概率为:

p(1)=0.5-2n-1(p-0.5)n(4)

输出为0的概率为:

p(0)=0.5+2n-1(p-0.5)n(5)

因此,当n趋于无穷大时,p(1)与p(0)都会无限接近0.5。通过以上分析,随着异或链级数的增加,它可以有效的消除序列偏置,实际上当级数为6时,序列的偏置就已经非常小了。

经过galois结构的线性反馈移位寄存器电路和异或链电路处理后的序列仍然不能满足大多数安全系统的要求,因为经过严格的游程检测会发现在序列中仍然存在不均匀的分布。上述各环形振荡器的输出虽然是真随机的,但是它们包含了共模分量,而长游程检测会很大可能的揭示共模分量的存在。美国国家标准和技术研究所(nist,即nationalinstituteofstandardsandtechnology)发布了sp800-22标准,明确规定了如何评价随机数质量的好坏。通过加密/解密算法迭代运算可以有效消除输出比特流中的共模分量,有效的提高共模抑制比(cmrr)。

在一种优选实施方式中,加密运算单元为des加密运算单元。参见图7,所示为des加密运算单元的原理框图,des算法需要两个长度均为64位的输入——明文和密匙,64位的明文数据经过初始ip置换后被均分为左右各32位两部分,然后使用f函数进行16轮迭代运算,这里的f函数是由密匙序列得来的。当16轮的迭代运算都完成后再将左右两部分数据经过逆初始ip-1置换转换为64位的密文数据输出,一次完整的加密算法就此完成。明文寄存器和密钥寄存器从异或链输出端获取数据,当明文寄存器和密钥寄存器存满以后,控制模块发送使能信号给加密运算模块,加密运算工作完成后,密文输出端将64位随机数送到真随机数输出寄存器等待其他模块取用。

参见图8,所示为本发明真随机数发生器的功能仿真图。本设计采用200mhz的工作时钟clk_work,rst_n为复位信号,start为起始信号,只有当两者都为“1”时,真随机数发生器才开始工作。clk_ctrl是控制信号,由工作时钟clk_work二分频得到,控制fibonacci环振和galois环振在稳态和亚稳态之间不断切换。clk_sampling是采样信号,每次均在控制信号clk_ctrl为“1”的中间点进行采样,保证采样的数据是稳定状态。trng_firo_out和trng_garo_out分别是fibonacci环振和galois环振经过消除相关性和改善均匀性后得到的真随机序列,它们经过串转并电路分别生成des的64位明文输入des_data1和64位密匙输入des_data2,当转换完成时,data_vld信号被拉高,此时des模块开始进行运算,当运算完成后,des_rdy被拉高,并且生成64为输出des_out,最后再经过锁存器将des锁存,得到最终可以使用的真随机数密匙trng_out,并在完成后将trng_rdy拉高,代表输出一次密匙。

参见图9,所示为本发明真随机数发生器的quartusprime的综合图。借助某型fpga平台,综合后共占用941个逻辑单元,同比朱亮亮等人的设计占用1041个逻辑单元,本发明确实较少了逻辑器件使用量,这意味着同时减小了真随机模块所占芯片面积,较少了芯片消耗。

为了进一步测试本发明所产生随机数的随机性,根据美国国家标准和技术研究所提供的nistsp800-22标准,使用其随机数测试套件对所接收到的200组总计200mbit的真随机数数据进行随机性评估测试,测试项目和结果如表1所示。

表1随机序列的nist测试结果

由表1的测试结果验证本发明的技术方案通过了nist认证。同时,该方案采用纯数字电路设计,使用了较少的逻辑器件,减小了真随机数发生器模块所占芯片面积,同时相应也会降低功耗,可以作为一款小型的低功耗真随机数发生器ip核使用,这款ip核能快速移植到集成电路设计流程中,缩短开发周期,从而能够在实际芯片设计和产业化中得到了广泛应用。

以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1