跳转到主要内容

一个- 1200真随机数发生器的硬件

内容

引用

相关文档和软件,请访问:

//www.xmece.com/亚博电竞菠菜products/greenpak

下载我们的免费GreenPAK设计师软件[1]打开.gp文件[2]和[3]使用GreenPAK开发工具来冻结设计到您自己的定制的集成电路在几分钟内。

yabo国际娱乐对话框半导体应用程序提供了一个完整的图书馆指出[4]以设计实例以及解释的特性和块内集成电路所示的对话框。

  1. GreenPAK设计软件、软件下载、半导体和用户指南,对话框yabo国际娱乐
  2. 一个- 1200真正的随机数生成器Hardware.gp,半导体GreenPAK设计文件对话框yabo国际娱乐
  3. GreenPAK开发工具半导体,GreenPAK开发工具网页,对话框yabo国际娱乐
  4. GreenPAK应用笔记半导体,GreenPAK应用笔记网页,对话框yabo国际娱乐
  5. SLG46620对话框数据表,半导体yabo国际娱乐
  6. d . Gilson“Blockchain.info问题退款比特币盗窃的受害者,”8月21日,2013年。(在线)。可用:http://www.coindesk.com/blockchain-info-issues-refunds-to-bitcoin-theft-victims/。访问:2017年6月30日。
  7. b . Sunar w·j·马丁和d·r·史汀生“起安全真随机数发生器内置宽容主动攻击”,IEEE反式。第一版。卷,56号2007年1月1日。
  8. p . Alfke“高效移位寄存器,LFSR计数器和长伪随机序列生成器,“Xilinx应用注意XAPP 052年,1996年7月7日。
  9. k的山地,c . h . Tan“分析和改进的随机数字生成器FPGA根据振荡器戒指,“可重构计算的Int。j文章ID 501672卷,2009年,2009年。
  10. A . Rukhin j·索托,j . Nechvatal m .萧述三e·巴克利,m . Levenson m . Vangel d银行,A . Heckert j .运货马车,美国签证官,”一个统计随机和伪随机测试套件
  11. 加密应用程序生成器”,NIST的特殊出版800 - 22日修订1,201亚博国际官网平台网址0年4月。
  12. a . t .市场和s w·摩尔”,频率注入攻击Ring-Oscillator-Based真正的随机数生成器,”Proc, 11日Int。车间加密硬件和嵌入式系统。2009年,瑞士洛桑,317 - 331页。
  13. ”的解释结果NIST (p) NRG套房,“1月9日,2017年。(在线)。可用:https://crypto.stackexchange.com/questions/19861/interpretation-of-the-results-of-nist-pnrg-套件。(访问:2017年7月16日)。
  14. “统计测试指南”,7月16日,2014年。(在线)。可用:http://csrc.nist.gov/groups/ST/toolkit/rng/stats_tests.html。(访问:2017年7月17日)。

文摘

在加密应用程序(如密钥生成和签署,亚博国际官网平台网址需要随机数字。有很多方法,硬件或固件可以使用它来生成伪随机数。然而,伪随机数生成器是决定性的:如果内部状态的发电机,发电机的输出是完全可预测的。这使得加密应用程序不恰当的伪随机数生成器。亚博国际官网平台网址这些应用程序亚博国际官网平台网址需要一个真正的随机数生成器(TRNG)。

TRNG使用不可预测的物理现象来生成随机数。TRNG是放大的一个例子从一个电阻热噪声,然后使用一个模拟数字转换器将这噪声转换为数字。这样一个系统通常需要大量的离散组件由于大获得所需。因为热噪声是混乱的微观效应的结果,这种发电机将产生不可预测的数字。这种不可预测性称为熵。位熵可以测量,例如,一个公平的抛硬币会产生熵的1位,同样有两种可能的结果。独立的熵增加的来源,所以扔8独立、公正硬币将产生8位的熵。有偏见的硬币总是落在头上会产生0的熵,因为一个完全偏向硬币是完全可预测的。

好的TRNG能够迅速产生足够的熵,所以密钥或秘密不能轻松猜到的。糟糕的随机数发生器可以妥协一个加密系统。例如,一个错误的随机数生成器的原因是一些盗窃cryptocurrency比特币的[6]。

熵源

本应用笔记中描述的真随机数发生器使用不同步的环形振荡器。这些构造环振荡器使用奇数个逆变器构造附近地区。振荡器是不同步的,他们不是其他时钟锁定,并将积累抖动-见图1的频域表示从一个振荡器抖动。这种抖动是很多不可预知的影响的结果,包括热噪声,所以发电机构造的环形振荡器是合理的被称为一个真正的随机数发生器。

图1所示。FFT的一个环形振荡器的输出实现GreenPAK™设备。

这枚戒指的标称频率振荡器震荡大约19兆赫,和输出数字采样在48 kbit / s。因为振荡器的频率远高于奈奎斯特频率的振荡器信号一直别名~ 7.5 kHz。这个环形振荡器的抖动是可见的,如峰值不是无限薄,将是理想的情况,趋于稳定的振荡器。相反,山顶有一个3 dB 2千赫带宽。

可用的熵增加,使设计更加健壮,应该使用许多环形振荡器。因为振荡器是独立的,他们会随机漂移的阶段。振子可以通过定期采样的XOR他们所有的输出,代表了振荡器的相对的阶段。这不是最有效的方法示例振荡器,需要尽可能多的振荡在振荡器将漂移的阶段。然而,它是一个简单的方法,它不需要使用许多环形振荡器——更高的吞吐量的设计可能需要超过100振荡器[7]。

美白

一个完美的熵源产生的比特流有一个白色的功率谱(平等的权力在所有频率;频谱是平的),哪些是统计无偏(几乎等于0和1)。真正的熵源是不完美的,他们产生一个比特流,统计贫困。例如,噪音在电路通常有一个功率谱,不是白色的。事实上,图1展示了该应用程序中使用的环形振荡器注意噪声功率谱不是平的。不对称电路中(例如由于上升和下降传播延迟)的差异可能会导致输出成为偏见。统计上不完美的熵源仍然是有用的,但他们需要后处理。这是被称为美白后处理。

为了说明需要美白,假设有人想从一系列投硬币的提取熵。他们使用一组假设的16个硬币- 8的公平,8是完全的偏见,总是落在头上。为了类比,这个假设的人也无法区分偏见的公平硬币硬币。翻转所有16这些硬币将导致部分可预测的结果,为保证有至少8头出现。然而,应该仍然是一个8位的熵。可以使用增白剂16次抛硬币的结果,这些结果与过程获得8位随机位。

图2。4比特LFSR的例子,使用4 D实现人字拖和XOR门(这个LFSR只是一个例子;它不是用于TRNG实现)。

这个LFSR将会产生以下输出:11110001001101011110001001101011110001001101011110。
检查这个伪随机比特流显示,重复每15位。

在这个应用程序中使用的增白剂注意是一个线性反馈移位寄存器(LFSR)。LFSR很容易构造在硬件和由移位寄存器,寄存器的内容一起xor和反馈移位寄存器的输入,如图2所示的例子。就其本身而言,LFSR的输出将是一个重复伪随机比特序列。仔细选择寄存器XOR在一起意味着什么这个伪随机序列的周期长度将最大周期的长度。最大可能的周期长度n位移位寄存器的2 n - 1。一个表选择合适的XOR的[8]。一个大型的、最大LFSR将产生无偏和白色的比特流。

LFSR将产生一个比特流具有良好的统计特性,但就其本身而言,它还只是伪随机。对于这个应用程序,LFSR的反馈也与原始xor环形振荡器的输出。LFSR的内部状态将影响环振荡器,伪随机数发生器的LFSR转换成一个真正的随机数发生器。即使这一修改,一个大的整体反馈结构,最大LFSR可以确保它的输出仍然是公正的和白色的。因此一个LFSR,以这种方式使用,满足一个增白剂的功能。

实现与GreenPAK设计师:环形振荡器

图3。环形振荡器的实现。
上图显示了四个振荡器在矩阵0端实现的。下面的图片显示了两个振荡器在矩阵1端实现的。

有足够的附近地区SLG46620V六环振荡器。它们的实现如图3所示。每个环振荡器始于一个与非门,而不是一个简单的逆变器。连接到每一个与非门是一个全球性的启动信号(净EN0矩阵0,净EN1矩阵1)。当这个启动信号很低,所有的逻辑门输出高,不管其他输入的状态。这将导致环形振荡器停止振荡并输入一个静态的,定义良好的状态。当这个启动信号高、与非门有效函数作为另一个逆变器。

所有的环形振荡器构造3逆变器,除了一个戒指,一个额外的缓冲。所有的环构造的独特的组合2比特附近地区,3-bit附近地区,4比特附近地区,INV0 / INV1块。这是一个至关重要的设计选择。实验显示,如果任意两个环构造的相同类型的块,他们将有非常相似的振荡频率。频率是如此相似,少量振荡器之间的串扰(可能是由于开关噪声)最终将导致振荡器锁在一起。这种现象(通常称为注入锁定)将导致熵代灾难性故障,振荡器不断将完全的阶段。2比特附近地区,3-bit附近地区,4比特附近地区,INV0 / INV1块都有不同的传播延迟,所以使用这些类型的独特组合块保证振荡器频率将有所不同。

每个环振荡器的输出是锁定的前沿RAW_CLK信号。此前的建议[9],这是观察到没有门闩振荡器输出原因设置和保存时间违反XOR门的输入。这种方法还有助于减少开关噪声,减少有害的振子之间的串扰。

每个环振荡器被测量光谱如图1所示,噪声带宽约2千赫。熵的速度可以计算使用哈特利定律:

C是比特率,B是带宽和M的州的数量。使用B = 2 kHz, M = 2(因为环形振荡器的输出是0或1)结果的比特率4 kbit / s。因此每个环振荡器对熵的贡献4 kbit / s。

最后,所有振荡器的锁定输出xor在一起,来衡量他们的相对相位。这XOR输出锁存的的前沿RAW_CLK信号,以确保没有虚假的输出信号的转换。这导致RAW_OUT信号。RAW_OUT送出19针的用户。销的选择19 RAW_OUT完全是任意的;系统设计师可以自由地重新分配针简化PCB路由。

实现与GreenPAK设计师:LFSR

图4。LFSR的实现。
上图显示了部分矩阵LFSR的0。下面的图片显示了在矩阵1 LFSR的一部分。有必要把LFSR矩阵完全使用两管延迟块。

一个35-bit LFSR实施,因为存在一个最大35-bit LFSR从一个非常简单的结构:寄存器的反馈包括XOR 33到35(见表3的n = 35项[8])。LFSR使用两管SLG46620V延迟块,其中每个管延迟块由16 D拖鞋系列。管延迟0贡献第一个移位寄存器的16位,管延迟1贡献接下来的16位,和D人字拖7,8,9的最后三位移位寄存器。结果35-bit LFSR的循环周期为235 - 1,这是极长相比LFSR时钟频率。

反馈元素使用NXOR代替XOR如图4所示。这并不改变LFSR的结构,或循环周期。然而,它确保LFSR并不进入锁定状态(循环周期= 1)当移位寄存器初始化一个all-0s状态,这种情况在接通电源的。

全球LFSR_CLK LFSR定时/转移的信号(净LFSR_CLK0矩阵0,净LFSR_CLK1矩阵1)。LFSR的输出(LFSR_OUT)不是直接暴露给用户。相反,LFSR的输出锁存的的前沿WHITE_CLK信号。注意,WHITE_CLK运行速度低于LFSR_CLK——这是允许一些LFSR_OUT被丢弃。这个锁定输出发送到销5 WHITENED_OUT信号。像RAW_OUT,选择销5是完全任意的。

实现与GreenPAK设计师:时钟

图5。时钟TRNG结构。
上图显示的部分矩阵0。下面的图片显示了在矩阵1部分。

TRNG的主时钟源是一个环形振荡器构造附近地区,可见在底部的形象图5。虽然SLG46620V确实有很多内置时钟,这些被使用。这样做的原因是为了提高拒绝对共模干扰,如电源噪声、温度变化、电源电压的变化。通过构造熵一样的主时钟源,这些共模干扰来源应该影响主时钟和熵源以同样的方式,部分取消了干扰的影响。

主时钟输入矩阵1的EXT, CLK2 CNT7和CNT8设置为计数器到306年把主时钟,实现名义(VDD = 3.3 V) RAW_CLK约80千赫。CNT7和CNT8是建立在这个特定的级联(CNT7计数器数据= 152,CNT8计数器数据= 1),以确保RAW_CLK有责任周期的50%。RAW_CLK作为采样时钟的环形振荡器,因此RAW_OUT将有一个名义上的比特率为80 kbit / s。RAW_CLK也输出针20(这个引脚分配任意),这样用户可以样品RAW_OUT在正确的时间。

LFSR_CLK RAW_CLK频率一样,唯一的区别在于,可以抑制LFSR_CLK断言ENABLE_WHITENED低。LFSR_CLK用于时钟LFSR的移位寄存器。在矩阵0,LFSR_CLK送入EXT, CLK1这CNT5 CNT6可以推出WHITE_CLK。CNT5和CNT6设置计数器,计数器数据= 1,所以他们LFSR_CLK除以4。WHITE_CLK,分裂时钟是用来毁掉LFSR的输出。WHITE_CLK发送销3(这个引脚分配任意),这样用户可以样品WHITENED_OUT在正确的时间。WHITE_CLK 20 kHz的标称频率;WHITENED_OUT 20 kbit / s的比特率。

最后一个比特率为20 kbit / s被选中,是因为测试显示,每个环形振荡器可以提供4 kbit / s的熵。自熵源由六环振荡器(参见图3),假设熵增加来源,应该有一个总约24 kbit / s RAW_OUT的熵。这是降低到20 kbit / s占环振荡器和LFSR缺陷。

注意,尽管RAW_OUT名义比特率为80 kbit / s,预期的RAW_OUT熵率只有20 kbit / s。这是因为RAW_OUT预计统计缺陷使其比特流部分可预测的。另一方面,WHITENED_OUT完全不可预知的,所以它有一个名义上的比特率(20 kbit / s)等于其预期的熵率。

的输出DLY2持有CNT5复位;DISABLE_WHITENED信号停止WHITE_CLK。DLY2设置以便DISABLE_WHITENED信号的下降沿是推迟了400项LFSR_CLK。增白后的效果是,输出是启用的,第一个400位元的LFSR将被丢弃。有必要丢弃LFSR的第一个400位输出,这样新鲜的熵可以混合到LFSR的内部状态。

实现与GreenPAK设计师:启用逻辑

图6。启用TRNG的逻辑。
上图显示的部分矩阵0。下面的图片显示了在矩阵1部分。

其余配置致力于使逻辑。启用逻辑允许用户通过禁用部分TRNG节省电力。ENABLE_ALL信号连接销17(引脚分配是任意的)。如果用户断言销17低,那么所有环振荡器将停止振荡。这将导致整个TRNG进入一个静态状态。

ENABLE_ALL信号还与运动块的输出值。这是必要的,因为环振荡器将不会开始振荡,除非他们开始从一个定义明确的状态。为什么时钟配置为输出高4µs后接通电源的。这给了环形振荡器4µs适应残疾人定义良好的状态(见章节“实现与GreenPAK设计师:环形振荡器”),确保环振荡器将可靠地开始振荡后开机。

ENABLE_WHITENED信号连接销15(这个引脚分配是任意的)。如果用户断言销15低,那么LFSR_CLK将被禁用,整个LFSR节将进入一个低功率静态状态。DISABLE_WHITENED相关信号,用于抑制增白的前100位输出(即第一个400位元的LFSR输出),这新的熵和LFSR内部状态之前任何输出。出于这个原因,DISABLE_WHITENED将断言高每当LFSR或熵源(重新)开始。

测试结果

在这个应用程序中描述的TRNG SLG46620V注实施,并从RAW_OUT采集标本和WHITENED_OUT别针。这样做是使用LPC11U24单片机,成立样本RAW_OUT / WHITENED_OUT RAW_CLK / WHITENED_CLK的下降沿。这些样本被送到PC UART-to-USB转换器,和样本记录到一个文件供以后分析。

一个FFT进行原始输出的结果如图7所示。而光谱基本持平,在2.5 dB,显然是有高峰和低谷的结构。这个结构是不符合预期的结果的一个完美的熵源(平谱)。

图7。FFT结果约300万位的原始输出从RAW_OUT(采样)。
宽光谱的波峰和波谷清晰可见。

FFT进行增白输出的结果如图8所示。这个频谱是平的,(统计)方差观察到在0.4分贝。

图8。FFT结果约300万位的增白输出(从WHITENED_OUT取样)。
频谱是平(白色)。
观察到的差异在本质上是统计。

进一步的统计测试可以通过使用一套由NIST开发的统计测试,详细描述[10]。简要说明的每个测试检查,看到[13]。NIST的测试是专门适应测试随机比特流。例如,“频率”测试检查是否0和1的比例是相同的即“频率”测试检查比特流是无偏的。测试TRNG,大约80000000位RAW_OUT和WHITENED_OUT收集和记录在文件中。这些文件被分为100 800000位的比特流,然后分析,使用[10]中描述的评估工具。附录A包含最终结果(“finalAnalysisReport.txt”)的原始输出,和附录B包含增白的最终结果输出。

一个访问介绍解释NIST[12]中给出了测试结果。NIST的测试结果含有大量的列,但重要的是“假定值”和“比例”列。“假定值”列中的值应均匀分布在0和1之间。值接近于0(例如0.000000)或1(例如0.999999)表明失败。“比例”专栏描述了多少100年的比特流通过统计检验。据统计,预计一些比特流的失败。最低通过率描述每个附录的底部。星号“假定值”或“比例”列是失败的象征。

NIST的一般结论测试结果是原始输出失败的大部分统计测试。预计这个失败的原始输出是一个不完美的熵。另一方面,白茫茫的输出通过统计检验。这表明增白的输出可以作为一种几乎完全随机位。

如何使用TRNG吗

在这个应用程序中注意只需要实现的TRNG SLG46620V生成随机比特流;它不需要任何外部组件,除了SLG46620V去耦电容。可以将原始输出采样通过连接RAW_CLK(销20)

RAW_OUT(销19)单片机——参见图9这些信号是什么样子的一个例子。

如果单片机SPI在奴隶模式支持,那么RAW_CLK可以连接到SCLK和RAW_OUT可以连接到莫西人,CPOL设置为0和CPHA设置为1 (SPI模式1)。另外,单片机可以设置中断的下降沿RAW_CLK,抽样RAW_OUT中断处理程序。

白茫茫的输出可以同样使用WHITENED_CLK采样(销3)和WHITENED_OUT(销5)信号——参见图9这些信号是什么样子的一个例子。白茫茫的输出是最适合大多数应用程序的输出。亚博国际官网平台网址

图9。时间图显示输出信号是什么样子的一个例子。

RAW_OUT转换RAW_CLK边缘的上升;WHITENED_OUT WHITENED_CLK的前沿上的转换。RAW_OUT和WHITENED_OUT应该在各自的时钟的下降沿采样。在这个例子中,RAW_OUT被描述为输出比特流1001001111101010011,01101 WHITENED_OUT被描述为输出比特流。RAW_CLK运行在80 kHz的名义汇率;RAW_CLK WHITENED_CLOCK运行在一个季度,名义汇率的20 kHz。

白茫茫的输出可以禁用断言ENABLE_WHITENED(销15)低。整个TRNG可以禁用断言ENABLE_ALL(销17)低。使针都停了下来,如果他们都是孤立的,所有部分TRNG将启用。

总结在表1中给出的信号。

表1。总结TRNG信号
的名字
类型
描述
RAW_OUT
19
数字推挽式输出
的原始输出TRNG——锁定XOR的环形振荡器的输出,代表他们的相对相位。
RAW_CLK
20.
数字推挽式输出
RAW_OUT采样时钟。运行在一个名义80千赫。RAW_OUT转换这个时钟的前沿。
WHITENED_OUT
5
数字推挽式输出
LFSR TRNG美白后的输出。
WHITENED_CLK
3
数字推挽式输出
WHITENED_OUT采样时钟。运行在一个名义20 kHz。WHITENED_OUT转换这个时钟的前沿。
ENABLE_ALL
17
数字输入和引体向上
在TRNG低时,停止所有的时钟,把它变成一个低功率静态状态;RAW_CLK和WHITENED_CLK将停止转动。
ENABLE_WHITENED
15
数字输入和引体向上
当低,停止LFSR时钟,导致增白输出停止;WHITENED_CLK将停止转动。

安全注意事项

戒备森严的应用程序应该验证源亚博国际官网平台网址熵是正常工作。要做到这一点,他们必须不测试增白输出;白茫茫的输出不应该被信任是真正随机的,即使它通过统计检验。这是因为最大35-bit LFSR用于本应用笔记是一个好伪随机数生成器,并将产生的结果,通过大多数统计测试,即使熵源是完全坏了。相反,应用程序应该亚博国际官网平台网址试图检测失败的原始输出运行统计测试。例如,应用程序可以测试不同亚博国际官网平台网址寻常的长串0或1,或者使用FFT测试如果原始输出频谱平坦不如图7。

为简单起见,白茫茫的输出可以直接使用密码操作。亚博国际官网平台网址应用程序要求更大的安全应该使用增白输出种子密码安全伪随机数发生器(CSPRNG),不断地重播CSPRNG新增白输出可用。这种方法的优点:

  • CSPRNG可以用于生成高吞吐量的随需应变的比特;应用程序不会局限于20这TRNG kbit / s。
  • 再播操作允许熵CSPRNG内部状态的积累。这保证CSPRNG将变得越来越不可预知的(因此安全)随着时间的推移,甚至在部分出现故障时TRNG熵的来源。
  • 其他熵来源(如无线电接收器的数据)可以用来补播CSPRNG。这将使加密系统更健壮的反熵的故障源。

加密系统使用SLG46620V TRNG非常容易受到外来攻击。攻击者有物理访问系统可以简单地删除SLG46620V,取而代之的一个装置,产生一个完全可预测的比特流。这可以反驳通过物理访问困难,或试图检测物理访问。

TRNGs基于环形振荡器,容易受到信号注入电源[11]。这可以通过过滤反击供电。本应用笔记可能扩展是使用ACMP和VREF块检测这样的注入攻击。

精简的设计

TRNG设计描述在这个应用程序中注意可以实现在一个较小的GreenPAK,降低成本和空间需求。环形振荡器用于熵源的数量可能会减少,至少两个。因为有三次振荡器使用较少,这将降低设计的吞吐量第三:大约6.6 kbit / s。

D触发器需求可以减少通过使用一个更小的LFSR增白剂。最小LFSR大小取决于数量的环形振荡器,振荡器采样时钟频率。的最小LFSR大小可以通过使用实验性地确定先后LFSR长度小,直到增白输出开始NIST的统计测试失败。

通常,TRNG中使用一个系统,包含一个微控制器。因此,最小GreenPAK设计完全可以省略增白剂,依靠单片机执行美白。微控制器的固件可以很容易地实现一个非常大的LFSR,或者也可以使用密码散列函数来实现一个更健壮的增白剂。

结论

GreenPAK可用于实现一个紧凑的真随机数发生器,不需要外部组件(去耦电容器除外),并生成真正的随机数20 kbit / s的速度。TRNG有一个简单的界面,节电功能,使它理想的移动,空间受限的设备需要密码操作的熵源。

附录A: NIST SP 800 - 22为原始输出测试结果

测试方法和解释的结果,请参见“测试结果”部分。

附录B: NIST SP 800 - 22增白输出测试结果

测试方法和解释的结果,请参见“测试结果”部分。