0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

随机数在密码学中占有重要的地位

lhl545545 来源:集成电路应用杂志 作者:集成电路应用杂志 2020-06-16 11:19 次阅读

设计一种超高速全数字真随机数发生器,使用嵌入亚稳态环节的环路振荡器作为随机源。对元胞自动机电路进行改良,向其中添加随机存储的特性,并将其作为后处理电路的一部分,提高了数据的熵值和伪随机性。后级电路采用异或链电路和 DES 加密算法,提高随机序列的每比特熵值,改善输出的统计特性。该方案具有良好的可移植性,极高的生成速率,偏低的资源使用和自定义扩展功能。通过 FPGA 版级验证,真随机数生成速率可达 1 Gb/s,具有一定的应用价值。

DOI:10.19339/j.issn.1674-2583.2020.04.006

一种基于随机储存元胞自动机真随机发生器[J]。集成电路应用, 2020, 37(04): 18-21.

True Random Generator Based on Random Storage Cell Automaton

JI Lei, PAN Weiqing, ZHI Yanan

Abstract — In this paper, a ultra-high-speed all-digital true random number generator is designed.The designer uses ring oscillators embedded in a metastable state as a random source. The cellular automaton circuit is improved, and the random storage feature is added to it as a part of the post-processing circuit, which improves the entropy value and pseudo-randomness of the data. The post-stage circuit uses XOR circuit and DES encryption algorithm to increase the entropy value of each bit of the random sequence and improve the statistical characteristics of the output. This solution has good portability, extremely high generation rate, low resource usage, and custom extension functions. Through FPGA-level verification, the true random number generation rate can reach 1 Gb/s, which has certain application value.

Index Terms — TRNG, ring oscillator, metastable state, cellular automata, DES, FPGA.

随机数在密码学中占有重要的地位,几乎所有的密码算法都要用到一些对攻击者来说必须是秘密的数据,而其中密钥必须是随机数。随着加解密技术的快速发展,基于软件实现的伪随机数发生器可能无法满足安全性的要求,虽然基于物理随机源的 TRNG 能保证安全性, 但其产生的真随机数的质量不高,生成速率偏慢。考虑到 5G 时代的到来,基于区块链物联网、车联网、智慧城市技术的快速发展,海量的数据需要在信息交互节点进行加密传输,这对真随机数生成的速率有了更高的要求。

本文设计了一种超高速真随机数发生器,其具有可移植性好,生成速率高,实现成本低廉的特点并具有自我扩展特性。实际测试中,真随机数生成速率高达 1 Gb/s,吞吐量/资源高于 1 Mb/LUT,远远高于常规真随机数发生器吞吐量百兆级别,0.3 Mb/LUT 左右的性能。

1 真随机整体设计

本文整体架构如 所示,框架包括 5 部分:基于亚稳态的环振器真随机源,基于随机储存的元胞自动机电路,异或链电路,DES 电路和千兆光口输出单元。

J.D. Golic 最早提出 Fibonacci 和 Galois 环形振荡器电路,但随机数生成速率偏低。2008 年,I.Vasyltsov 等人在 Fibonacci 和 Galois 环形振荡器的基础上引入了亚稳态结构,减少所需熵的积累时间。文献中,朱亮亮等人向其中引入控制环节,降低发生器功耗。本文随机熵源采用方案。

控制信号为低电平时,大环路断开,各反相器自成环路,受到半导体噪声的影响,他们的输出会在亚稳态区域波动。当控制信号为高电平的时候,各反相器接入大环路,迅速离开亚稳态区域,并进入稳态区域,此时其输出具有随机性。

二进制系数 fi 决定环振器的反馈连接。当 fi=1 时,反馈连接;当 fi=0 时,反馈断开;反馈多项式可以表示为式。

(1)式中,n 为反相器个数。为了确保输出不会恒定不变,多项式须满足式。

必须保证 n 为奇数,h(x) 不能被 1+x 整除,且 f(x) 可以被 1+x 整除。如果反馈多项式为本原多项式则以上都可以满足。

本文采用 36 个 7 阶 Fibonacci 震荡环,28 个 7 阶 Galois 震荡环作为真随机源。7 阶本原多项式共 18 个,重复 3.5 次使用,其输出作为随机储存元胞自动机电路的选择输入端。7 阶本原多项式如 所示。

以上输出的序列具有真随机和伪随机性,但数字熵源的统计特性往往不够理想,在物理随机过程采样中,会引入偏差和相关性,所以需要添加后处理电路提减小偏差和相关性。

元胞自动机的概念最初被 John von Neumann 和 Ulam 提出,并常用于物理、生物和化学的建模,也用于生成伪随机序列,是常用的后处理算法之一。元胞自动机是元胞的有限阵列,由相同的元胞组成,根据局部过度功能同步并行发展,且只能与他们最近的邻居通信。其可以由四元组(Z,Q,V,f)所定义,其中 Z 代表 d 维的细胞空间,Q 代表可能元胞可能状态组成的集合,V 表示局部规则使用的邻域,f 代表本地规则。初始时,每个元胞都有一个初始状态,根据本地规则和邻域联系,细胞状态发生变化。

初级元胞自动机是一个基本元胞自动机,一维细胞空间 Z,元胞状态 Q={0,1},邻域 V=(-1,0,1),本地规则 f:Q3→Q,Wolfram 在数学上证明了它作为高性能随机数发生器的适用性,可以并行的有效实现,如式。

最上方三个方块表示所有当前时刻 n 可能的邻域状态,下一单元格代表下一时刻元胞输出的状态。本地规则被下一时刻序列的二进制值所命名。

2014 年,一种基于储存的元胞自动机被提出,其中 x,y,z 为包括 0 的正整数[9]。元胞的下一状态的输出与相邻元胞和本身的过去状态有关,如式。

最近,一种基于随机储存的元胞自动机被提出,Q={0,1},邻域 V=(-1,0,1)。其中,τi是随机值,其小于等于元胞储存的状态数 M,元胞的下一状态可以随机地由当前状态,以及过去状态确定,如式。

本文设计一个基于随机储存的元胞自动机,其元胞储存状态数 M 为 1,本地规则为 R150,其τi的值由上级的亚稳态震荡环的输出决定。0 代表τi=0,输出当前状态;1 代表τi=1,输出上一状态。其元胞单元电路如图 5 所示。bit_out 为该元胞自动随机数的输出端,连接到异或链电路。bit_i_m 为随机储存输出端,连接与其相邻的左右两个元胞单元。

随机储存的元胞自动机包含 64 个元胞环形连接,其相互连接图如图 6 所示,其中只有一个 bit_i_m 初始值为 1。系统开始工作后,每个时钟周期生成 64 个 bit_out,每相邻 8 位进行异或压缩操作,送入下级异或链电路中。

为了减小偏差,使得“0,1”分布均匀,采用异或链进行处理,对数据进行校正,结构如图 7 所示。本文采用 8 路异或链电路,每路由 8 个触发器进行异或链纠偏,每个时钟周期输出 8 bit 数据,输出偏执非常小。

1940 年代末,香农提出了设计密码系统的两个基本方法-混淆和扩散。扩散和混淆可以极大改善输出序列的统计特性,提高熵值,弥补统计缺陷。

设计中最后采用 DES 加密算法对数据进一步后处理,为 DES 加密算法处理过程。首先对上级输入的 8 bit 序列进行数据重排,扩展到 128 bit,高 64 bit 和低 64 bit 分别作为明文和密钥输入,进行 IP 初始置换,然后 16 轮迭代变换,最后左右交换后进行逆初始置换(IP-1)得到 64 bit密文,作为真随机数输出序列,16 轮迭代采用 Feistel 密码结构对明文和密钥进行混淆和扩散。其中置换移位操作可获得扩散,非线性函数 f 操作可获得混淆。

2 实验验证

本文设计真随机发生器在 FPGA 上进行实验实现,型号为 xc7z035ffg676-2。外接输入时钟为 100 MHz,经过 PLL 倍频到 500 MHz 后,最后输出真随机输出速率高达 1 Gb/s。实现过程中没有使用任何布局布线约束,完全由设计软件自动处理。PC 端通过光口接受 126 组数据,每组 1 Mbit,使用NIST SP-800-22 随机数测试套件进行随机性评估测试。测试规定当测试通过率都大于 96 %时,则认为通过该项测试;如果数据通过全部 15 项测试,则认为序列是真随机的。

为测试结果,数据完全通过试。

为体现本文所设计的真随机数发生器的性能,本设计与国内外已经公开发表的真随机数发生器进行比较,其中单个 LUT 资源相当于一个 LE 资源;可移植性的判断是基于实现时是否使用特殊器件或手动布局布线,如使用则移植性较差,对比结果如表 3 所示。在吞吐量方面,本文设计的真随机数发生器远超常规数字发生器的百兆级别。吞吐量/逻辑资源比为 1.107 Mb/LUT,远大于常规 0.3 Mb/LUT,更加节省资源。移植性方面由于没有使用特殊器件和物理约束实现,因此可以快速集成到芯片或 FPGA 当中。

由于元胞自动机结构简单,易扩展的特性,本文对该设计的自我扩展性能进行了实验验证,本文将 64 个元胞自动机裁剪为 32 个、16 个,减少硬件资源分别为 143LUT、200LUT,并依次重新实现设计,生成速率分别为 500 Mb/s、250 Mb/s,结果均能通过 NIST SP800-22 测试。实验表明该随机数发生器具有扩展性能,使用者可以根据自己实际需求自我进行裁剪或扩展。

3 结语

本文介绍了一种新的数字真随机数发生器,解决现有真随机数发生器生成速率,资源消耗,可移植性和扩展性无法全面的兼顾的问题。实际测试真随机数生成速率可达 1 Gb/s,吞吐量/资源比为 1.1 Mb/LUT,远远高于常规真随机发生器吞吐量的百兆级别和 0.3 Mb/LUT 的吞吐量/资源比。该方案纯具有资源消耗低,吞吐量极高,可移植性好和可扩展的特点。便于集成到芯片和 FPGA 中,缩短开发周期,具有很好的实际应用价值,可满足了未来区块链、物联网、车辆网、智慧城市中需要大量真随机数进行信息加密的场合。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 环形振荡器
    +关注

    关注

    1

    文章

    11

    浏览量

    8650
  • 亚稳态
    +关注

    关注

    0

    文章

    44

    浏览量

    13118
  • 随机数发生器

    关注

    0

    文章

    20

    浏览量

    10944
收藏 人收藏

    评论

    相关推荐

    全志R128应用开发案例——获取真随机数

    获取真随机数 本文案例代码 下载地址 获取真随机数案例代码 https://www.aw-ol.com/downloads?cat=24 R128 内置了TRNG,一个真随机数发生器,随机
    发表于 11-13 16:31

    用rand形成的不是真正的随机数,怎么才能达到真正的随机?

    用rand形成的不是真正的随机数啊,,怎么才能达到真正的随机
    发表于 10-30 06:14

    单片机是如何产生随机数的?

    单片机如何产生随机数
    发表于 10-27 06:44

    AT32的随机数的产生

    AT32的随机数的产生为设计者使用AT32芯片时,产生符合应用需求的随机数,提供设计建议。
    发表于 10-26 06:04

    STM8有随机数发生器吗?

    怎么才能用STM8产生一个随机数
    发表于 10-23 06:55

    求助,为何随机数总是固定数?

    []={0xc00xf90xa40xb00x990x920x820xf80x800x90}; P0=a[rand()%10]; c=0; while (1) ; } 以上是源程序,P0连接共阳数码管,P2.0控制数码管阳极,随机数函数产生一个随机数给P0,应该是每次数都不
    发表于 09-28 07:38

    FPGA的伪随机数发生器学习介绍

    随机试验的结果,产生随机数有多种不同的方法。这些方法被称为随机数生成器。随机数重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。
    的头像 发表于 09-12 09:13 786次阅读

    STM32L4随机数生成器模块(RNG)介绍

    基于噪声源的32位真随机数生成器。 •使用线性反馈移位寄存器进行后处理。 •由专用时钟(PLL48CLK)计时 •两个连续随机数之间的PLL48CLK时钟信号的40个周期 •可禁用以降低功耗 •5个
    发表于 09-11 07:29

    Arm真随机数发生器(TRNG)表征应用说明

    本章概述ARM®真随机数生成器(TRNG)及其特性。 ARM®真随机数生成器(TRNG)从物理熵源收集熵,物理熵源是能够生成不可预测或随机输出比特流的组件。 所收集的熵被用来向密码
    发表于 08-29 07:19

    【野火 fireFlasher Mini 脱机烧录器】随机数功能测试

    ,查看一下这个地址的默认数据是字符串“1234567890”,截图如下: 下面通过上位机对随机数功能进行设置,测试使用2组随机数,地址使用0x8010ccc和0x8010cdc,随机数数量使用4,每个
    发表于 05-21 17:27

    i.MX8QM真随机数生成器符合什么要求?

    大家好, 我们的客户要求我们指定一个真正的随机数生成器。 i.MX8QM 真随机数生成器符合什么要求? 以下是对 SE050 随机数生成器的描述。除此之外,请告诉我 i.MX8
    发表于 05-18 06:13

    【野火 fireFlasher Mini 脱机烧录器】烧录次数和写入随机数测试

    的次数限制是正常的,这个功能对于盗用烧录器和复制代码的非法行为进行了一定的制约,推荐各位使用。 接下来要用一下写入随机数的功能,该功能可以固定的地址写入一个随机的十六进制数据。 设置随机数
    发表于 05-13 18:41

    【野火 fireFlasher Mini 脱机烧录器】随机数测试

    随机数测试 野火mini脱机烧录器支持指定地址添加指定个数的随机数,最多支持4组,每组4096个随机数。本篇来测试一下随机数的功能。 小试
    发表于 05-12 21:42

    【野火 fireFlasher Mini 脱机烧录器】3. 随机数功能测试以及遇到的问题

    fireFlasher Mini 脱机烧录器】1. 上手实测。 烧录固件到单片机的过程,会比单独烧录LED.axf慢一些,我猜测是因为随机数烧录固件到单片机的时候才生成的,
    发表于 05-07 22:05

    S32K312如何获取随机数

    S32K312如何获取随机数
    发表于 05-06 07:46