问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

密码学工具:随机数生成器(PRNG与TRNG)设计详解

创作时间:
作者:
@小白创作中心

密码学工具:随机数生成器(PRNG与TRNG)设计详解

引用
CSDN
1.
https://blog.csdn.net/WillsonZ/article/details/141954472

随机数生成器是密码学中的核心组件,广泛应用于密钥生成、初始化向量设置等多个场景。本文将深入探讨随机数的性质、伪随机数生成器(PRNG)和真随机数生成器(TRNG)的设计原理及其硬件实现方式。

随机数应用

随机数与密码学密切相关,在AES算法中多次使用到随机数。具体应用场景包括:

  • 密钥(对称密码和消息认证码)生成
  • 密钥对(公钥密码和数字签名)生成
  • 初始化向量(IV)生成
  • NONCE码(AES-CTR模式中生成计数器初值)生成
  • 盐码(应用于口令密码PBE)生成

随机数性质

随机数具有三个关键性质:

  • 随机性:不存在统计学偏差,数列完全杂乱
  • 不可预测性:无法从过去的数列推测出下一个数
  • 不可重现性:除非保存数列本身,否则无法重现相同的数列

其中,满足随机性和不可预测性的随机数称为强伪随机数,可应用于密码算法;具备不可重现性的随机数称为真随机数,也可应用于密码算法。

随机数生成器

随机数生成器分为两类:

  • 伪随机数生成器(PRNG):通过软件实现,具有内部状态,根据种子生成随机数序列
  • 真随机数生成器(TRNG):通过硬件实现,从物理现象中获取随机性

伪随机数生成器(PRNG)

伪随机数生成器的内部状态是指内存中的数值,根据内部状态计算伪随机数。种子用于初始化内部状态,必须保密。常见的实现方法包括:

  • 线性同余法:算法简单但不适合密码算法
  • 单向散列函数法:基于SHA-1等单向散列函数
  • 密码法:基于AES等对称密码算法
  • ANSI X9.17:使用三重DES或AES,增加了掩码步骤

在芯片硬件中,PRNG模块也称DRNG,需要种子进行伪随机数的生成,种子可以由用户写入或使用TRNG模块的输入写入。

真实随机数生成器(TRNG)

TRNG通过物理现象产生随机数,过程不可预测,因此安全性较高。TRNG模块包含随机源模块、采样模块和数字后处理模块。

随机源设计

核心是环形振荡器,由多个反相器组成(必须是奇数个)。环形振荡器没有稳态,会产生周期性振荡信号。使用D触发器作为采样开关,高频环形震荡器的信号作为输入,低频时钟信号作为采样时钟信号。

数字后处理设计

一般采用线性反馈移位寄存器(LFSR),也称作M序列扰乱模块。LFSR通过将寄存器中的某些位进行异或处理,将结果反馈到最左边作为数据输入。经LSFR数字处理后的随机数列,就是TRNG模块输出的随机数序列。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号