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

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

[复制链接]
STMCU小助手 发布时间:2022-7-21 12:54
前言4 \$ d2 k$ e) Y0 U3 W+ U6 O
很多标准都规定了构造要求和参考、随机数发生器 (RNG) 的验证和使用,以便检验其生成的输出是否是真正的随机数。
+ h' f3 N9 [7 N* W本应用笔记中包含的指南用于检验所选 STM32 微控制器中嵌入的随机数发生器外设生成的数字的随机性。本次验证是基于美国国家标准技术局 (NIST) 统计测试套件 (STS) SP 800-22rev1a (2010 年 4 月)进行的。& }+ x) [; S/ R3 E5 P1 V
本文档结构如下:5 B8 p" e4 k, v$ x, H
• STM32 微控制器随机数发生器概述 (请参见第 1 节 ) / [1 S5 t' z! x3 r9 X0 U
• NIST SP800-22b 测试套件 (请参见第 2 节)
: [% B/ ?* V* ]• 运行 NIST SP800-22b 测试和分析需要执行的步骤 (请参见第 3 节)7 j7 a( \1 c& I, w$ ]0 z

% X0 ~2 x3 h) m2 o KQS5P0$KBE`CFO[MN7IO5.png
9 s8 p( p6 s+ K" V% [7 V, K# ~0 D

4 D/ q5 O3 r, Q* Q7 W$ n+ ~4 `; n0 i$ U5 e: }
1 STM32 微控制器随机数发生器
) s" d, C8 m8 `2 K1.1 前言
$ F- t; ?) h/ u% k0 v/ L* c9 ]/ \为加密应用程序使用的随机数发生器 (RNG) 通常会生成由随机的 0 或 1 位组成的序列。/ g8 J8 {, u8 s- `( y
随机数发生器基本上分为两类,分别是:2 ^% l+ i5 a! h6 W
1. 确定性随机数发生器或伪随机数发生器 (PRNG):& I. q4 N8 Y6 ?4 v# q
确定性 RNG 包含的算法会通过名为种子的初始值生成位序列。为确保向前不可预测性,获取种子时必须多加留意。如果已知种子和生成算法, PRNG 生成的数值是完全可预测的。由于很多情况下生成算法是公开可用的,因此种子必须保密,并通过 TRNG来生成。! x* K% C8 h+ v/ v7 W  ~% b
2. 非确定性随机数发生器或真随机数发生器 (TRNG):% l& _! h7 c4 G: A! c
非确定性 RNG 生成的随机性取决于一些不受人为控制的不可预测物理源 (即熵源)。
, }. Z/ ]8 _$ g6 \, M在 STM32 微控制器上采用的 RNG 硬件外设以及在第 1.2.1 节中介绍的 RNG 硬件外设属于真随机数发生器。
# O, S+ ^( y0 u! x
3 n! W. g' W) H  D
1.2 STM32 微控制器实施说明0 m7 z: t- x5 r* a. ^) k! {% ]
1.2.1 真随机数发生器
. S* l5 c/ J7 [* N2 @下表列出的是嵌入了 RNG 硬件外设的 STM32 微控制器线列:  q. l* t* b) p1 i

5 ^3 M$ Q1 }; f5 i; t
6 O: ~3 k# E  s! N6 H
IVA)T1O5WQ9OMJL]~TGV]PA.png
- v; \. b2 K# M/ }3 f! C" d8 e
5 J% a8 X; k2 Z

7 x$ _4 w% `8 A8 J' GSTM32 微控制器上使用的真随机数发生器外设基于模拟电路。该电路生成的连续模拟噪声将用于 RNG 处理,以生成 32 位随机数。
* X+ p/ r( |- G3 B. r9 ~该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算。
& L6 p7 a3 k) h( ?* oRNG 处理由采用恒定频率的专用时钟计时,对于微控制器的子设备,还可以使用频率值不同的时钟来计时。
  D7 D5 ?7 I! e/ `5 Y1 u# a有关 RNG 外设的详细信息,请参见 STM32 微控制器参考手册。% _1 U* S1 h3 J8 z# M1 y
图 1 给出了 STM32 微控制器的 TRNG 框图。
, J! n7 u+ M5 Q1 v& X# z6 }1 }6 C/ z2 W

9 E  C, d  d0 M: P+ }* m O~O4(X848C3WCF]~I(R%AYX.png ; v0 r$ ?: n) b+ q6 J4 z/ D6 m

$ o3 V% l5 [. U4 R5 h% Y: o0 k' K; [" G

, I: m; O% n$ @. z7 U" E2 NIST SP800-22b 测试套件/ X1 _$ a5 x# \( ?
2.1 前言
: J4 @' `" t  C3 SNIST SP800-22b 统计测试套件已使用由国家标准技术局 (NIST) 开发的统计数据测量套件(sts) 实现,可检验用于加密应用的随机数发生器的质量。标题为 “A Statistical Test Suite for ( F. C" O3 w5 y% g0 T
he Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications”” 的文章对该套件进行了全面介绍。
. D5 S/ v' ]* c2 W9 D3 h
+ E) j( Q8 t( I2 O& a3 k0 ~
2.2 NIST SP800-22b 测试套件说明7 x1 O2 G' Y9 }5 i% T2 U
NIST SP800-22b 统计测试套件 “sts-2.1.1” 是由国家标准技术局开发的软件包。
1 f( X3 L0 ~" T$ Z& C8 J4 D6 Y5 x源代码使用 ANSI C 编写。 NIST 统计测试套件由 15 种测试组成,用于测试二进制序列的随机性。这些测试主要针对序列中可能存在的各类非随机性问题。从这一角度,可将测试套件分为以下几类:
9 B) g+ ~  u! y% i3 ~频率测试
- {# t5 U1 I/ j* f, t1 G4 ?• 频率 (单比特)测试:
( ~$ o% m* E% X/ c) {: U衡量 0 和 1 在序列中的分布情况,并检查结果是否与真随机数序列的预期结果相似。
$ e, s. O. ]; g' @" G+ G$ s& \• 块中的频率测试: ) @; [6 s8 r: \' M& A% h
检查 M 位块中 1 的频率是否近似为预期通过随机性原理得到 M/2。
8 @1 `# a# O- \. H- ^# ~7 T% T• 运行测试:
% I" J: `, j9 _评估不同长度的 1 和 0 的预期运行总数是否是随机序列的预期结果。( u2 {& [: B9 T# x' z
• 测试块中运行最长的 “1”:
: u$ Z) D' a1 S, w检查序列中的长运行 “1”:
. K" s0 O% }& F* I! P. C: i9 R& M1 m
* m" k5 T/ [+ @! Q4 L0 |: \
线性测试
1 K) a% o& _$ c, i. _  |• 二进制矩阵秩测试: 6 l. b1 h( p2 Q& Q# C$ ~
评估 32x32 二进制矩阵秩的分布。
( I/ |4 p( D: {6 z5 V• 线性复杂度测试:
3 T, |8 a+ n  _( \确定有限序列的线性复杂度。
+ Y; r* Y  h6 M) j+ ?8 Q) R$ E& ~" C  Y
相关性测试 (通过傅里叶变换)5 x: u) e5 s4 C- R5 |! C0 R
• 离散傅里叶变换 (频谱)测试:
6 r7 d- Q$ H2 }! r" q% X# J" i$ x通过基于离散傅里叶变换的频谱测试评估位串的谱频率。此测试易受序列中的周期性影响。: e1 @; b0 W& `4 Y" G4 k' H

  |3 j$ @. E$ {
查找特殊字符串测试2 y6 l$ O% ], @
• 非重叠模板匹配测试:
8 d7 w: l3 S: I6 C0 S4 u' i评估 m 位非周期性组合的频率。
3 P( I6 n2 v8 T8 L' @• 重叠模板匹配测试:
8 J9 l6 f$ O* y) h# M评估 m 位周期性模板的频率。3 p) w! o0 G! ~: V0 ~7 Z- W: h

) ], Z! J  m8 I4 P
熵测试
+ V4 ?& F. b: Q• Maurer“ 通用统计 ” 测试:
9 m( Z- K2 d8 @& \' N2 W  o. F评估 L 位块二进制序列的压缩率。
/ X! ^* S9 r" x5 a• 连续测试: $ |2 E9 c7 S- Y$ a
评估所有 2m m 位块的分布。
# b% Y: x& Z( F& `. W9 G0 W注: 对于 m = 1 的情况,连续测试相当于第 2.2 节的频率测试。
/ J$ [" J, b2 y• 近似熵测试:
# S! r$ K5 Q1 R  O$ U5 S8 p# D1 g评估位串的熵,将所有 m 位组合的频率与所有 (m+1) 位组合的频率进行对比。
; x$ w" d7 m8 X& p( W- ~- V% i7 u2 o* G  e# v
随机游走测试
5 y- S. j3 _6 y- _! P) f, `% h• 累积和测试:
* R; K, ^- x: ?评估部分序列的和是否过大或过小;用于指示过多的 0 或 1。   J$ I3 @# C6 o5 k% D: I# Y+ X4 u
• 随机偏移测试:
) e4 a; O7 w9 ~" ^评估随机游走周期内的状态分布。' m( q. Z# U* c  \: M, @  x- M3 r
• 随机偏移变化测试:
8 {# p3 t7 E  w! L* p9 q. v检测与达到不同随机游走状态的预期次数的偏差。0 H* X4 r- F8 x* F) g5 c2 G  ^" U$ {
上述测试中,每项测试都基于计算出的测试统计值,而测试统计值是测试序列的函数。测试统计值用于计算 Pvalue,其中:
. o! d' B3 e9 C4 l( k6 ]  xPvalue 是完美随机数发生器生成的序列随机性小于受测试序列的概率。2 H0 i1 Y' [3 {: H, E8 R
有关 NIST 统计测试套件的更多详细信息,请参见 NIST 网站上提供的以下 NIST 文档:
. Q# k5 s3 h9 k' Z特别出版物 “A Statistical Test Suite for Random and Pseudorandom Number Generators for
" V2 z) G3 A9 d$ g. c! g) {$ ICryptographic Applications”, 800-22 版本 1a。
5 x; {7 e. c- N* Z9 r
  Z! I- \# _  X9 T% e  r
# |4 D9 e. v2 O$ F
9 }3 U% Y7 L* x3 Q* z5 v5 G/ v完整版请查看:附件5 Q# _7 V5 d* u9 o- j  w

7 p- y, X) }5 g3 z" ^
' P  y8 c& u  r$ ~

DM00073853_ZHV2.pdf

下载

453.27 KB, 下载次数: 7

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

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版