你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 NIST 统计测试套件验证STM32 微控制器随机数生成

[复制链接]
STMCU小助手 发布时间:2022-7-21 12:54
前言
很多标准都规定了构造要求和参考、随机数发生器 (RNG) 的验证和使用,以便检验其生成的输出是否是真正的随机数。
本应用笔记中包含的指南用于检验所选 STM32 微控制器中嵌入的随机数发生器外设生成的数字的随机性。本次验证是基于美国国家标准技术局 (NIST) 统计测试套件 (STS) SP 800-22rev1a (2010 年 4 月)进行的。
本文档结构如下:
• STM32 微控制器随机数发生器概述 (请参见1 )
• NIST SP800-22b 测试套件 (请参见2
• 运行 NIST SP800-22b 测试和分析需要执行的步骤 (请参见3

KQS5P0$KBE`CFO[MN7IO5.png


1 STM32 微控制器随机数发生器
1.1 前言
为加密应用程序使用的随机数发生器 (RNG) 通常会生成由随机的 0 或 1 位组成的序列。
随机数发生器基本上分为两类,分别是:
1. 确定性随机数发生器或伪随机数发生器 (PRNG):
确定性 RNG 包含的算法会通过名为种子的初始值生成位序列。为确保向前不可预测性,获取种子时必须多加留意。如果已知种子和生成算法, PRNG 生成的数值是完全可预测的。由于很多情况下生成算法是公开可用的,因此种子必须保密,并通过 TRNG来生成。
2. 非确定性随机数发生器或真随机数发生器 (TRNG):
非确定性 RNG 生成的随机性取决于一些不受人为控制的不可预测物理源 (即熵源)。
在 STM32 微控制器上采用的 RNG 硬件外设以及在1.2.1 中介绍的 RNG 硬件外设属于真随机数发生器。

1.2 STM32 微控制器实施说明
1.2.1 真随机数发生器
下表列出的是嵌入了 RNG 硬件外设的 STM32 微控制器线列:


IVA)T1O5WQ9OMJL]~TGV]PA.png


STM32 微控制器上使用的真随机数发生器外设基于模拟电路。该电路生成的连续模拟噪声将用于 RNG 处理,以生成 32 位随机数。
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算。
RNG 处理由采用恒定频率的专用时钟计时,对于微控制器的子设备,还可以使用频率值不同的时钟来计时。
有关 RNG 外设的详细信息,请参见 STM32 微控制器参考手册。
1 给出了 STM32 微控制器的 TRNG 框图。


O~O4(X848C3WCF]~I(R%AYX.png


2 NIST SP800-22b 测试套件
2.1 前言
NIST SP800-22b 统计测试套件已使用由国家标准技术局 (NIST) 开发的统计数据测量套件(sts) 实现,可检验用于加密应用的随机数发生器的质量。标题为 “A Statistical Test Suite for
he Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications”” 的文章对该套件进行了全面介绍。

2.2 NIST SP800-22b 测试套件说明
NIST SP800-22b 统计测试套件 “sts-2.1.1” 是由国家标准技术局开发的软件包
源代码使用 ANSI C 编写。 NIST 统计测试套件由 15 种测试组成,用于测试二进制序列的随机性。这些测试主要针对序列中可能存在的各类非随机性问题。从这一角度,可将测试套件分为以下几类:
频率测试
• 频率 (单比特)测试:
衡量 0 和 1 在序列中的分布情况,并检查结果是否与真随机数序列的预期结果相似。
• 块中的频率测试:
检查 M 位块中 1 的频率是否近似为预期通过随机性原理得到 M/2。
• 运行测试:
评估不同长度的 1 和 0 的预期运行总数是否是随机序列的预期结果。
• 测试块中运行最长的 “1”:
检查序列中的长运行 “1”:

线性测试
• 二进制矩阵秩测试:
评估 32x32 二进制矩阵秩的分布。
• 线性复杂度测试:
确定有限序列的线性复杂度。

相关性测试 (通过傅里叶变换)
• 离散傅里叶变换 (频谱)测试:
通过基于离散傅里叶变换的频谱测试评估位串的谱频率。此测试易受序列中的周期性影响。

查找特殊字符串测试
• 非重叠模板匹配测试:
评估 m 位非周期性组合的频率。
• 重叠模板匹配测试:
评估 m 位周期性模板的频率。

熵测试
• Maurer“ 通用统计 ” 测试:
评估 L 位块二进制序列的压缩率。
• 连续测试:
评估所有 2m m 位块的分布。
注: 对于 m = 1 的情况,连续测试相当于2.2 的频率测试。
• 近似熵测试:
评估位串的熵,将所有 m 位组合的频率与所有 (m+1) 位组合的频率进行对比。

随机游走测试
• 累积和测试:
评估部分序列的和是否过大或过小;用于指示过多的 0 或 1。
• 随机偏移测试:
评估随机游走周期内的状态分布。
• 随机偏移变化测试:
检测与达到不同随机游走状态的预期次数的偏差。
上述测试中,每项测试都基于计算出的测试统计值,而测试统计值是测试序列的函数。测试统计值用于计算 Pvalue,其中:
Pvalue 是完美随机数发生器生成的序列随机性小于受测试序列的概率。
有关 NIST 统计测试套件的更多详细信息,请参见 NIST 网站上提供的以下 NIST 文档:
特别出版物 “A Statistical Test Suite for Random and Pseudorandom Number Generators for
Cryptographic Applications”800-22 版本 1a



完整版请查看:附件


DM00073853_ZHV2.pdf

下载

453.27 KB, 下载次数: 5

收藏 评论0 发布时间:2022-7-21 12:54

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版