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

    文章

    12

    浏览量

    8701
  • 亚稳态
    +关注

    关注

    0

    文章

    46

    浏览量

    13250
  • 随机数发生器

    关注

    0

    文章

    21

    浏览量

    11004
收藏 人收藏

    评论

    相关推荐

    蓝牙AES+RNG如何保障物联网信息安全

    的安全性。竞争应答机制随机数生成器也发挥着关键作用。它确保了多个设备竞争同一资源时,能够依据公平且随机的原则分配访问权,有效避免通信
    发表于 11-08 15:38

    闪存随机读写与连续读写哪个重要

    快速响应的应用,如数据库操作、服务器处理请求等,随机读写速度至关重要。 多任务处理能力 : 随机读写能力强的闪存能够更有效地处理多个并发任务,因为它们可以更快地访问和修改存储
    的头像 发表于 10-12 11:44 308次阅读

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此没有内置硬件TRNG的AT32的微控制器系列,如何提高
    的头像 发表于 08-30 12:26 460次阅读
    雅特力AT32 MCU的<b class='flag-5'>随机数</b>生成

    如何在FPGA实现随机数发生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7实现4位伪随机数发生器(PRNGs)。
    的头像 发表于 08-06 11:20 598次阅读
    如何在FPGA<b class='flag-5'>中</b>实现<b class='flag-5'>随机数</b>发生器

    鸿蒙开发:Universal Keystore Kit密钥管理服务 密钥派生介绍及算法规格

    密码学,密钥派生函数(Key derivation function,KDF)使用伪随机函数从诸如主密码
    的头像 发表于 07-11 16:30 301次阅读

    如何使用Python生成四位随机数

    为了实现这些目标,Python 为我们提供了random() 模块。random() 是一个内置的 Python 模块,用于生成随机数
    的头像 发表于 04-15 12:47 610次阅读

    恩智浦:向后量子密码学迁移,我们应该怎么做?

    之前的博文中,我们介绍了由美国国家标准与技术研究院 (NIST) 主导的后量子密码学 (PQC) 标准化进程,以及未来可能采用的部分PQC标准。在这篇博文中,我们探讨PQC迁移过程面临的一些挑战
    的头像 发表于 03-22 09:39 1619次阅读
    恩智浦:向后量子<b class='flag-5'>密码学</b>迁移,我们应该怎么做?

    国内首枚!合肥造量子芯片重大突破

    记者3月19日从合肥安创谷科技园获悉,位于该园的合肥硅臻芯片研发的量子随机数发生器芯片QRNG-10,日前通过了国家密码管理局商用密码检测中心的
    的头像 发表于 03-21 08:42 551次阅读
    国内首枚!合肥造量子芯片重大突破

    合肥硅臻量子芯片通过商密检测,助力量子芯片商用发展

     据了解,这一成果填补了我国量子随机数发生器芯片在毫米级领域的空白,成为首个攻克量子随机数发生器商用规模化制约因素的重要里程碑。
    的头像 发表于 03-20 15:04 906次阅读

    TC389芯片上HSM的TRNG真随机数功能,如何判断其随机能力呢?

    想咨询一下,TC389芯片上HSM的TRNG真随机数功能,如何判断其随机能力呢?有什么资料或者测试内容吗?
    发表于 03-05 07:20

    请问rt-thread studio如何使用硬件随机数生成器?

    指导一下。 经过查询得知可以使用rt_hw_random_get()函数来获取硬件随机数,请文需要做什么配置才能使用rt_hw_random_get()函数。
    发表于 02-23 08:03

    基于时分复用光学参量振荡器的5比特全光量子随机数发生器

    联合研究团队研制出一种基于时分复用简并点飞秒光学参量振荡器,具备高重复频率飞秒光纤激光器泵浦,通过谐振腔接入多通单元,能高效拓展光路,实现5比特全光量子随机数发生器,并能保持系统高度的紧凑性和稳定性。
    的头像 发表于 01-09 11:13 494次阅读
    基于时分复用光学参量振荡器的5比特全光量子<b class='flag-5'>随机数</b>发生器

    四元工业机器人编程操作的应用

    姿态规划在机械臂控制占有重要地位,在编程操作时需要应用姿态变换平滑性的插值算法确保机械臂工具动作的柔和度。
    的头像 发表于 12-27 17:13 1164次阅读
    四元<b class='flag-5'>数</b><b class='flag-5'>在</b>工业机器人编程操作<b class='flag-5'>中</b>的应用

    什么是后量子密码学?量子计算机vs经典计算机

    后量子密码学(Post-Quantum Cryptography,PQC)是经典计算机上定义和执行算法,研究量子计算机和经典计算机都无法破解的新密码系统。后量子密码学的提出是为了抵抗
    的头像 发表于 12-19 11:42 1630次阅读

    LTC2156-14A4寄存器的位数1位是随机数据输出功能,请问这个随机数据输出模式主要用意是什么呢?

    LTC2156-14有数据校验功能。寄存器A4所罗列的四种测试模式,实际运行均能正常校验通过。A4寄存器的位数 1位是随机数据输出功能。请问这个
    发表于 11-30 08:13