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

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

[复制链接]
STMCU小助手 发布时间:2022-7-25 16:54
引言
: B) R+ |0 Y4 Q6 {  @/ B. m: E很多标准都规定了构造要求和参考、随机数发生器(RNG)的验证和使用,以便检验其生成的输出是否是真正的随机数。
1 e9 D! i  p# W5 r  S本应用笔记中包含的一些指南用于检验下表列出的所选STM32微控制器(MCU)中嵌入的RNG外设生成的数字的随机性。该检验基于NIST(国家技术标准委员会)的统计测试集(STS)SP 800-22rev1a(2010年4月)或SP 800-90b(2018年1月)进行。
) _, o* `1 R4 ?4 p* E# r5 W本文档结构如下:
3 Q( h* E/ z8 r' u  n5 ^9 Y% Y• STM32微控制器随机数发生器概述 (参见第 1节) 1 f) p( Q" I+ s( r" u
• NIST SP800-22b测试集(请参见第 2节)
7 O* u# q7 `  S  p4 w' z, f• 运行NIST SP800-22b测试和分析需要执行的步骤(请参见第 3节)
8 E7 e9 q; y, M% ~( q• NIST SP800-90b测试集(请参见第 4节) 5 B. p) J. H3 W: V& l
• 运行NIST SP800-90b测试和分析需要执行的步骤(请参见第 5节)
# g3 j& `$ `5 }; p; O# ]* H4 z* `5 d9 `
@}4]0()D{Q7GP07MP7{I[QE.png
1 j0 b' }9 x! C! r0 F! v' S1 c
' ]( ~7 m; i) U5 _
1 STM32 MCU RNG ' z5 M; ]! @. q" _3 E
1.1 引言
9 S& h0 @6 {7 k为加密应用程序使用的随机数发生器(RNG)通常会生成由随机的0或1位组成的序列。随机数发生器基本上分为两类,分别是:
7 g6 z0 S1 s! h. r; B0 E" `7 e• 确定性RNG或伪RNG(PRNG)
, U/ c! A5 C7 M! f* l4 A4 c" [5 J确定性RNG包含的算法会通过名为种子的初始值生成位序列。为确保向前不可预测性,获取种子时必须多加留意。如果已知种子和生成算法,PRNG生成的数值是完全可预测的。由于很多情况下生成算法是公开可用的,因此种子必须保密,并通过TRNG来生成。$ o8 M, Z/ r2 i- ]* }7 v
• 非确定性RNG或真RNG(TRNG)
/ Q5 ], L* F: i2 w% o/ ~非确定性RNG生成的随机性取决于一些不受人为控制的不可预测物理源(熵源)。9 Y% f7 I5 R* L0 T& V, n+ m( f, [
在一些STM32微控制器上实施的RNG硬件外设属于真随机数发生器。5 Y. w) w4 @9 T* k0 a
3 J2 E8 M0 u( e) r) ]1 N
1.2 STM32 MCU实施说明  L* ^( F2 A" ?: X
下表列出了嵌入了RNG外设的基于STM32 Arm®(a)内核的微控制器。
# `9 v, o  q. u' o6 S9 w6 H 7 K: u, O1 S+ @1 K9 U
ER~M22U@1JP(1@AY3E(2.png
+ F" N# |3 ?( N. q9 T: Y: `8 l# Y+ `/ y3 A* ~$ z0 w4 q
STM32 MCU中实施的真RNG基于模拟电路。该电路生成的连续模拟噪声用于RNG处理,以生成32位随机数。. W" z! V. u4 w2 @: W4 H, ?
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算。
- ^# F. L0 P7 ~7 J' KRNG处理由采用恒定频率的专用时钟计时,对于微控制器的子设备,还可以使用RNG外设内部的分频器简化RNG专用时钟。
+ p/ }2 V8 O2 S" ~0 ?7 s# Y有关RNG外设的详细信息,参见STM32参考手册。: r' P' U! {1 k. M+ r7 `
下图为STM32微控制器中真RNG的简化图。
) I% e3 z# o- m  z  \/ N( s7 `0 |  K
6 G& D1 `8 a3 [: S
) i+ ?* r$ C# T/ f; f0 H# I0 T+ j
OO1K%7{]D5GX32I3]ZF7$LG.png + Y1 ^2 V* w! r( g) r5 F

! h; w7 L/ W6 c$ G  G

5 X- h, s) E" S$ I, u/ i3 x* H2 NIST SP800-22b测试集
& N) `/ W- @2 g2.1 引言
3 k  H/ W6 r. t! dNIST SP800-22b统计测试集用于检验用于加密应用的随机数发生器的质量。NIST一篇标题为“A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications”的文章对该测试集进行了全面介绍。5 i% k* Y1 F: X

9 n7 q' _# R# U2 ^9 k! T
2.2 NIST SP800-22b测试集说明# I  L: b5 q. v% \, Q( q
NIST SP800-22b统计测试集“sts-2.1.1”是由NSIT开发的软件包,可在NIST网站上下载(请在csrc.nist.gov上搜索download the NIST Statistical Test Suite )。6 C0 o3 {: E, T2 g7 A, i* B
源代码使用ANSI C编写。NIST统计测试集由15种测试组成,用于验证二进制序列的随机性。这些测试主要针对序列中可能存在的各类非随机性问题。
/ D' c/ ]/ t1 ~* Q这些测试可以如下分类:
  Q/ l3 K0 P+ Q# v& \! \• 频率测试
' `: p& f0 E6 N1 o% p– 频率(单比特)测试
" |# P& i2 A. B7 c, {测量0和1在序列中的分布情况,并检查结果是否与真随机数序列的预期结果相似。
$ \$ w) z" r4 b8 |% u! e– 块中的频率测试" T: Z; _$ @+ C+ A6 ~" s% m
检查M位块中1的频率是否近似为通过预期随机性原理得到的M/2。 8 m- \- Z* {' V$ e
– 运行测试+ W8 U# _# Z+ E# v- E
评估不同长度的1和0的预期运行总数是否是随机序列的预期结果。% Y4 x' Z5 {' y' R+ P0 @
– 测试块中运行最长的“1”
( J0 l# ~5 r5 l' |8 S0 J9 v/ y/ ]6 p检查序列中的长运行“1”:
( L. R0 j, L; Q• 线性测试
8 v* x! f9 f+ F( S  V3 M– 二进制矩阵秩测试
3 J! x' Y( e, z  a% S4 T评估32x32二进制矩阵秩的分布。$ d! A! ^9 [) f8 ~: K) d# _
– 线性复杂度测试% d% A1 K+ ]* Z, u$ m
确定有限序列的线性复杂度。0 U& e, m/ g. _0 u& g* W
• 相关性测试(通过傅里叶变换)
" m5 |4 s4 S0 L' e2 c( G– 离散傅里叶变换(频谱)测试( ?! m& q( q$ G3 A
通过基于离散傅里叶变换的频谱测试评估位串的谱频率。此测试易受序列中的周期性影响。2 Z7 R% u3 `" G
• 查找特殊字符串测试
  U6 ~) V2 x% U: B" P) ^1 k/ V+ ]– 非重叠模板匹配测试$ A' H' q: G! o& u7 P4 S
评估m位非周期性组合的频率。
: u9 n4 S3 s. m' I5 R1 g5 m– 重叠模板匹配测试
, h# Z* G' y) l评估m位周期性模板的频率。- M6 K3 I! m$ K# C) d& z: \
• 熵测试
: Q2 Q7 T& @1 P6 g– Maurer“通用统计”测试; H! }( \, Z  m- P
评估L位块二进制序列的压缩率。
0 j+ L7 V  y: g1 p1 K– 连续测试
+ |, n) k2 F* f1 w( I' z) Q2 z评估所有2m m位块的分布。
0 t7 }0 D* Y8 e: o注: 对于m = 1的情况,连续测试相当于第 2.2节的频率测试。9 `2 g6 k4 e' `: i: A
– 近似熵测试
  L2 x) |: L( \- y( J, @- F评估位串的熵,将所有m位组合的频率与所有(m+1)位组合的频率进行对比。
! O9 n% \+ ?) N0 M• 随机游走测试
$ F0 a- T. z( N# \– 累积和测试, K! k* U; j2 f* q
评估部分序列的和是否过大或过小;用于指示过多的 0 或 1。 1 j% e2 r4 }) o1 J  m
– 随机偏移测试
5 I) ]- U) F- i7 K$ f& u1 a评估随机游走周期内的状态分布。
' o( ^0 N# j8 G  f– 随机偏移变化测试4 o# j9 ~& ], o- S5 H- r+ j
检测与达到不同随机游走状态的预期次数的偏差。
( r. ?% ]: m+ l( X6 \1 h2 X0 g. z- |上述测试中,每项测试都基于计算出的测试统计值,而测试统计值是测试序列的函数。+ z7 s# |' X3 Q3 x
统计测试用于计算Pvalue,该值是完美随机数发生器生成的序列随机性小于被测序列的概率。# }8 l; ^: G2 x. S0 o+ K
更多关于NIST统计测试集的详细信息,请参见以下NIST文章A Statistical Test Suite for
+ E& x- O$ v% @' F: YRandom and Pseudorandom Number Generators for Cryptographic Applications” Special Publication 800-225 ^' Q! {0 }8 L5 N9 U8 L
Revision 1a,该文章可从NIST网站中获取。
* r* g2 H; {' s. ]9 k7 `: a! S! U3 B7 A$ V' a9 n
  \8 y% {& e+ h
完整版请查看:附件
4 G/ S8 E- K7 r6 `$ ]% `; u. i6 w7 [4 D

DM00073853_ZHV1.pdf

下载

514.23 KB, 下载次数: 3

赞 收藏 评论0 发布时间:2022-7-25 16:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

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