一种真随机数发生器的制作方法

文档序号:11807628阅读:443来源:国知局
一种真随机数发生器的制作方法与工艺

本申请涉及信息安全领域和集成电路领域,具体涉及一种真随机数发生器。



背景技术:

随着信息革命的逐渐深入,海量的数据正在发生,海量的账号正在逐渐诞生。为了保护信息的安全,特别是一些涉及用户隐私、公司、单位和国家等的机密信息的安全,现代密码技术被应用到现代的安全系统中。由于数字签名、密钥管理和几乎所有的密码协议和算法(如AES等)都要用到随机数,因此,使用随机数的信息安全技术,其安全性都要受到随机数的随机性和安全性的制约。

随机数可由随机数发生器来产生,随机数发生器分为两类,一类是伪随机数发生器(PRNG,Pseudo-Random Number Generator),另一类是真随机数发生器(TRNG,True Random Number Generator)。

伪随机数发生器,顾名思义,其产生的随机数不是真正的随机数,而是可被预测的序列。伪随机数发生器一般根据一个“种子”,然后由一定的数学算法和程序运算一步一步递推出“随机数”序列。这种“随机数”序列是“种子”的函数,不是真正随机的。攻击者一旦得到该“种子”,那么就可以计算得到该伪随机数发生器的随机数序列,这样整个信息系统都会被直接攻破,因此,在一些信息安全要求较高的地方,都不使用伪随机数发生器来产生随机数。

真随机数发生器,顾名思义,其产生的随机是真正的随机数,是不可被预测的序列。真随机数发生器一般是利用了物理和工艺过程中的熵源(即随机源),来产生真随机数。由于整个信息系统中,集成电路是不可或缺的,因此基于集成电路的真随机数发生器是最常用的真随机数发生器。

由于真随机数发生器产生的是不可被预测的真正的随机数序列,因此在对安全性有较高要求的地方一般都是采用真随机数发生器。



技术实现要素:

针对上述情况,本申请提供一种真随机数发生器,用于产生不可被预测的真正的随机数序列。

本申请提供的真随机数发生器,包括:

随机源,包括两个阻变开关器件;

电压施加单元,用于在各阻变开关器件的两端施加不同的电压,以将各阻变开关器件置为高阻态或低阻态;

比较单元,用于当电压施加单元对两个被置为高阻态的阻变开关器件的一端分别施加一不影响阻变开关器件本身电阻的电压时,比较两个阻变开关器件另一端的电压,以输出结果。

较优地,所述电压施加单元在每个工作周期都分三个阶段对阻变开关器件的两端施加不同电压:在置高阶段,电压施加单元对两个阻变开关器件的施加电压以使得两个阻变开关器件都被置为高阻态;在随机数产生阶段,电压施加单元分别对两个阻变开关器件的一端施加一不影响阻变开关器件本身电阻的电压;在置低阶段,电压施加单元对两个阻变开关器件的施加电压以使得两个阻变开关器件都被置为低阻态。

较优地,两个阻变开关器件在随机数产生阶段未被电压施加单元施加电位的一端,都连接于比较单元的同一输入端,比较单元的另一端输入端则接地;或者,两个阻变开关器件在随机数产生阶段未被电压施加单元施加电位的一端,分别连接于比较单元的两个输入端。

较优地,电压施加单元包括第一电源Vx、第二电源Vy以及第三电源,所述第一电源Vx和第三电源配合,以使一个阻变开关器件在置高阶段被置为高阻态,在置低阶段被置为低阻态,以及第一电源Vx还用于使此阻变开关器件的一端在随机数产生阶段被施加一不影响阻变开关器件本身电阻的电压;所述第二电源Vy和第三电源配合,以使另一个阻变开关器件在置高阶段被置为高阻态,在置低阶段被置为低阻态,以及第二电源Vy还用于使此阻变开关器件的一端在随机数产生阶段被施加一不影响阻变开关器件本身电阻的电压。

较优地,所述第三电源包括一开关单元,所述开关单元的输入端接地,输出端分别与两个阻变开关器件连接,控制端用于接收控制信号,使所述开关单元在置高阶段和置低阶段是导通状态,在随机数产生阶段是断开状态。

较优地,所述开关单元为一传输门。

较优地,所述比较单元为一高灵敏电压比较器。

较优地,所述真随机数发生器还包括一采样单元,用于在随机数产生阶段,对比较单元的输出端进行采样。

较优地,所述采样单元为一D触发器,其在随机数产生阶段被触发,以完成对比较单元的输出端进行采样。

本申请的有益效果是:

依上述实施的真随机数发生器,基于阻变开关器件来设计,结构新颖简单;以阻变开关器件不同周期间高阻态的涨落(variation)作为随机源,阻变开关器件不同周期间高阻态的涨落是基于器件和工艺本身的,因而具有真随机性;使用两个耦合的阻变开关器件,使得产生的0和1数量基本相等,随机数序列均一性较好;随机源转换为比特位仅需要一个电压比较器和D触发器,控制电路仅仅需要一个传输门,结构简单新颖;金属氧化物阻变开关器件能够和CMOS工艺兼容,使得整个电路可以在现有的半导体工艺上进行制造,成为集成电路级别的真随机数发生器而不是PCB板级的真随机数发生器。金属氧化物阻变开关器件本身较小,同时整个电路结构简单,因此,整体的面积较小,进一步地,由于面积较小,进而制造成本更低。

附图说明

图1为经典的阻变开关器件的IV曲线示意图;

图2为本申请一种实施例的真随机发生器的结构示意框图;

图3为本申请一种实施例的真随机发生器的电路结构示意图;

图4为本申请一种实施例的真随机发生器的工作时序图;

图5为本申请一种实施例的真随机发生器的工作仿真时序图。

具体实施方式

下面通过具体实施方式结合附图对本申请作进一步详细说明。

2008年,惠普实验室的科研人员首次使用氧化钽实现了阻变开关器件。阻变开关器件有高阻态和低阻态两种状态,可以提供Reset操作置为高阻和Set操作置为低阻。根据Reset和Set操作电压极性的不同,阻变开关器件分为单极型和双极型。目前来讲,双极型阻变开关器件在功耗、面积、擦写次数、寿命、非易失性等性能方面相比单极型较好。金属氧化物阻变器件以金属氧化物作为阻变材料层,是一种双极性阻变开关器件,且可以和CMOS工艺相兼容。目前阻变开关器件一般用于存储器,其组成阵列用于存储领域时,一般被称为阻变随机存储器(Resistive Random Access Memory)。

对于阻变开关器件来说,在不同的操作周期(Cycle),其被置为高阻态时,存在随机涨落(Variation),换句话说,阻变开关器件每次Reset被置为高阻态后,其阻值有较小的偏差,这种现象的产生是由于每次Reset后导电细丝断裂后的形状不同。请参照图1,图1为经典的阻变开关器件的IV曲线图,从图中可以看到不同的周期后得到的高阻不同,各高阻之间存在一定的随机涨落(Variation)。高阻的随机涨落是由于阻变开关器件本身的特性导致的,因此,发明人考虑将其作为真随机数发生器的随机源。

请参照图2和图3,本申请提出的真随机数发生器包括随机源10、电压施加单元30以及比较单元50,在一较优实施例中,还可以包括采样单元70,下面具体说明。

随机源10包括两个阻变开关器件,例如第一阻变开关器件11和第二阻变开关器件12。阻变开关器件包括两端,一端为顶电极,另一端为底电极。

电压施加单元30用于在各阻变开关器件的两端施加不同的电压,以将各阻变开关器件置为高阻态或低阻态。具体地,电压施加单元30在第一阻变开关器件11的两端施加电压,以将第一阻变开关器件11置为高阻态或低阻态;以及电压施加单元30在第二阻变开关器件12的两端施加电压,以将第二阻变开关器件12置为高阻态或低阻态。在一实施例中,电压施加单元30在每个工作周期都分三个阶段对阻变开关器件11、12的两端施加不同电压:在置高阶段,电压施加单元30对两个阻变开关器件11、12的施加电压以使得两个阻变开关器件11、12都被置为高阻态;在随机数产生阶段,电压施加单元30分别对两个阻变开关器件11、12的一端(例如顶电极)施加一不影响阻变开关器件本身电阻的电压;在置低阶段,电压施加单元30对两个阻变开关器件11、12的施加电压以使得两个阻变开关器件11、12都被置为低阻态。在一实施例中,电压施加单元30包括第一电源Vx、第二电源Vy以及第三电源,第一电源Vx和第三电源配合,以使一个阻变开关器件(例如第一阻变开关器件11)在置高阶段被置为高阻态,在置低阶段被置为低阻态,以及第一电源Vx还用于使此阻变开关器件(第一阻变开关器件11)的一端(例如顶电极)在随机数产生阶段被施加一不影响阻变开关器件本身电阻的电压;第二电源Vy和第三电源配合,以使另一个阻变开关器件(例如第二阻变开关器件12)在置高阶段被置为高阻态,在置低阶段被置为低阻态,以及第二电源Vy还用于使此阻变开关器件(第二阻变开关器件12)的一端(例如顶电极)在随机数产生阶段被施加一不影响阻变开关器件本身电阻的电压。在一实施例中,第三电源包括一开关单元31,开关单元31的输入端接地,输出端分别与两个阻变开关器件11、12连接,控制端用于接收控制信号,使开关单元31在置高阶段和置低阶段是导通状态,在随机数产生阶段是断开状态。在一具体实施例中,开关单元31为一传输门,传输门的输入端、输出端分别为开关单元31的输入端、输出端,传输门的控制端包括两个,分别用于接收控制信号Vctrl和~Vctrl,以使得传输门在置高阶段和置低阶段是导通状态,在随机数产生阶段是断开状态。

比较单元50用于当电压施加单元30对两个被置为高阻态的阻变开关器件11、12的一端分别施加一不影响阻变开关器件本身电阻的电压时,比较两个阻变开关器件11、12另一端的电压,以输出结果。在一实施例中,两个阻变开关器件11、12在随机数产生阶段未被电压施加单元30施加电位的一端,都连接于比较单元50的同一输入端,比较单元50的另一端输入端则接地;或者,两个阻变开关器件11、12在随机数产生阶段未被电压施加单元30施加电位的一端,分别连接于比较单元50的两个输入端。例如,在第一阻变开关器件11的顶电极施加一不影响其本身电阻的电压,在第二阻变开关器件12的顶电极施加一不影响其本身电阻的电压,比较单元50比较第一阻变开关器件11的底电极与第二阻变开关器件12的底电极的电压,以输出结果;其中,第一阻变开关器件11的底电极可以连接于比较单元50的一个输出端,而第二阻变开关器件12的底电极可以连接于比较单元50的另一个输出端,或者,第一阻变开关器件11的底电极和第二阻变开关器件12的底电极共同连接于比较单元50的同一个输出端,而比较单元50的另一个输出端则接地。在一具体实施便中,比较单元50为一高灵敏电压比较器。

采样单元70用于在随机数产生阶段,对比较单元50的输出端进行采样。在一实施例中,采样单元70为一D触发器,其在随机数产生阶段被触发,以完成对比较单元50的输出端进行采样。在一实施例中,D触发器可以是边沿触发型。

下面不妨以图3所示的真随机数发生器来例,结合图4,对本申请的真随机数发生器的工作原理和过程作进一步地说明。

图3中,2个耦合的阻变开关器件11、12提供随机源(熵源),两个阻变开关器件11、12的顶电极(图中有折线的一端)接周期性的控制电压Vx、Vy,底电极并联在一起接传输门的输出端和电压比较器的信号输入端,电压比较器的另一输入端接地。信号Vx、Vy、Vctrl、~Vctrl为周期性的波形信号,图4为它们的时序图。

本申请的真随机数发生器周期性产生随机数,每个周期产生一个随机数,每个周期分为依次被分为三个阶段:置高阶段、随机数产生阶段和置低阶段。

(1)置高阶段

在置高阶段,就是对两个阻变器件11、12进行Reset操作,将两个阻变器件11、12都置为高阻态。

具体地,电压信号Vctrl和~Vctrl有效,传输门导通,两个阻变开关器件11、12的底电极(即比较器的信号输入端in)电平被下拉到地;电压信号Vx和Vy经过一段时间的为0后,都逐渐变为负电压Vmax1,之后又逐渐变回到0,在此过程中,这两个阻变开关器件都被负电压Vmax1置到高阻态,由于这两个阻变器件11、12不可能是绝对一样的(通俗地讲,世界上没有完全相同的两片叶子)因此这两个阻变器件11、12的随机涨落也是不一样的,这就造成这两个阻变器件11、12被置为高阻态后,其高阻值存在一定的随机差异。

(2)随机数产生阶段

电压信号Vctrl和~Vctrl变为无效,传输门变成不导通的状态,两个阻变开关器件11、12的底电极以及比较器的信号输入端in不再被一个接地的电源拉低到接地电平。同时Vx从0逐渐地增大到Vread,Vy从0逐渐地减小到-Vread电压,Vread和-Vread电压足够小不足以影响阻变开关器件阻值的变化,即不会使阻变开关器件的阻值发生变化。

由于这两个阻变开关器件11、12被置为高阻态后,其阻值之间存在差异,因此,在分压的过程中比较器的in端,此节点为一较小的负电压或者正电压,例如,当第一阻变开关器件11的阻值比第二阻变开关器件12大时,则比较器的in端的电压为-Vread到0之间的一个负电压,当当第一阻变开关器件11的阻值比第二阻变开关器件12小时,则比较器的in端的电压为0到Vread之间的一个正电压。当比较器的in端为正电压时,比较器输出Vmax(例如一个高电平),当比较器的in端为负电压或0时,比较器则维持为输出Vmin(例如一个低电平)。

在一实施例中,边沿触发的D触发器的时钟上升沿沿恰好是随机数产生阶段的时间正中点,这时恰好比较器的输出端数据已经保持稳定,采集到一个随机的0或者1。

(3)置低阶段:

电压信号Vctrl和~Vctrl恢复有效,传输门导通,两个阻变开关器件11、12的底电极和比较器的信号输入端in的电平被拉回到0电平;电压信号Vx和Vy均变端均可以变成一个正的三角波,使得两个阻变开关器件11、12被正电压Vmax2进行Set操作,即被置回到低阻态。

以上就就是一个完整的周期,产生了一个随机数。由于存在不同周期间的阻态涨落,再加上两个个阻变开关器件11、12共同分压,导致每个周期的置高阶段之后比较器的输入端in为随机的较小正电压或者负电压,经过比较器和D触发器的数据转换和采样,D触发器的Q端得以输出随机数序列。

下面再举一个实际的例子。

不妨仍以图3所示的电路图为例,使用65nm的工艺来设计传输门、比较器和D触发器,以及与CMOS工艺兼容的金属氧化物阻变开关器件。

工作周期为1ms,Vmax1=Vmax2=2V,Vread=0.5V,在随机数产生阶段的中间时间点,D触发器的上升沿到来把比较器端的输出信号进行读取。

以0到1ms这一周期内的Vx和Vy信号来进行说明:0到0.1ms内,信号Vx和Vy保持为0电压;0.1到0.2ms内,Vx和Vy线性降低到-2V,以进行Reset操作;0.2ms到0.3ms内,Vx和Vy逐渐回到0电压;0.3到0.4ms内,Vx和Vy保持为0;0.4到0.5ms内,Vx从0升到0.5V,Vy从0降低为-0.5V,读取两个高阻态的差异;0.5到0.6ms内,Vx和Vy逐渐回到0电压;0.6到0.7ms内,Vx和Vy保持为0电压;0.7到0.8ms内Vx和Vy从0升到2V,以进行Set操作;0.8到0.9ms内,Vx和Vy逐渐回到0电压;0.9到1ms内,Vx和Vy保持0电压不变,准备进入下一周期。

在上述0到1ms内,只有0.35到0.65ms内,Vctrl为0、~Vctrl为1,传输门关断,以方便进行读取操作,其余时间Vctrl为1、~Vctrl为0,传输门导通,将比较器的in端拉到0电平,以方便两个阻变开关器件11、12进行Set操作和Reset操作。1ms后,不断地重复0到1ms的波形,来不断地产生随机比特位。

请参照图5,为本申请在Cadence公司的仿真平台上进行抽取寄生参数后的电路级的仿真(后访),得到了1000万随机数序列。这1000万的比特位分为10组每组100万个比特位,采用了NIST SP800-2200的测试软件进行15项子测例进行测试,p值和测试通过率均通过,因而证明测试数据是真随机数,本申请是可行的,是能够产生真正的随机数序列的装置。

本申请是一种基于阻变开关器件的真随机数发生器,结构新颖简单。其以阻变开关器件不同周期间高阻态的涨落(variation)作为熵源,是基于器件和工艺本身的,具有真随机性(即使用基于阻变开关器件不同周期内导电细丝断裂的形状不同形成的高阻态涨落(variation),具有真随机性);金属氧化物的阻变开关器件工艺与CMOS工艺相兼容,整个电路可在一定的工艺上一次流片完成,由于使用了阻变开关器件和比较简单的结构,使得面积很小。另上,使用两个阻变开关耦合的方式,使得真随机数发生器产生的0和1的比特位基本相等,均一性较好。而使用电压比较器成功地将高阻态的涨落转换为电压,并经过D触发器的采样使得可以和其他数字电路模块相连接。使用传输门使得一个周期内在随机数产生阶段外提供一个拉到地的信号,从而方便地进行Reset操作和Set操作。传输门关断的时候比较器的in端的电压受Vread和两个阻变器件的电路影响。在一实施例中,作为本发明的拓展,可以在控制信号相同的情况下,用多路本发明的电路产生多比特并行的的随机序列。

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。

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