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

AN4230:用NIST统计测试套件验证STM32 MCU随机数生成(中文译文)

[复制链接]
zero99 发布时间:2017-10-30 16:01
AN42308 }" p  H: U* x+ R4 w9 ]% @
应用笔记; Y, B! A7 g. m% a: N" U4 `/ I. T5 N
使用 NIST 统计测试套件验证STM32 微控制器随机数生成2 M. [6 s# z+ `
6 n4 P% B: ^& M+ x  D. {1 s+ N& R
2 W) m) w) b+ X: i+ U
前言  B5 u( |7 x9 O# H8 S4 H; H
很多标准都规定了构造要求和参考、随机数发生器 (RNG) 的验证和使用,以便检验其生成的8 ^7 t' s4 r& U/ K) \$ g* ]4 v
输出是否是真正的随机数。4 t" s, n/ T" ]# l! [6 C# @
本应用笔记中包含的指南用于检验所选 STM32 微控制器中嵌入的随机数发生器外设生成的2 M1 I, ?% w4 D% Y% R* l4 |
数字的随机性。本次验证是基于美国国家标准技术局 (NIST) 统计测试套件 (STS) SP 800-) a2 \2 |3 `  e- _' f1 x$ V1 b
22rev1a (2010 年 4 月)进行的。5 W' H( y+ O# w3 U
" x6 ^1 q5 |/ p3 `
: M0 W/ b+ T' l" K1 f! M
1、STM32  微控制器随机数发生器6 F7 m; S' a3 k2 L2 ]: E1 g5 A
1.1 前言; X/ z* G9 _. g& T: W* L
为加密应用程序使用的随机数发生器 (RNG) 通常会生成由随机的 0 或 1 位组成的序列。6 o, C; i( j% p3 B6 e$ y
随机数发生器基本上分为两类,分别是:- I" o& K8 }; x  S
1. 确定性随机数发生器或伪随机数发生器 (PRNG):* w" }* H- d6 z8 E7 v9 U! a; Z
确定性 RNG 包含的算法会通过名为种子的初始值生成位序列。为确保向前不可预测) s7 e9 I) F: c' \( u
性,获取种子时必须多加留意。如果已知种子和生成算法,PRNG 生成的数值是完全可
" X: ~) V$ @! _( U5 b( d预测的。由于很多情况下生成算法是公开可用的,因此种子必须保密,并通过 TRNG& U- ^8 ~6 |! S/ ^! f& C" h- L
来生成。
2 f9 R; a; C3 [3 \2.  非确定性随机数发生器或真随机数发生器 (TRNG):
; R( t, B0 W* f, E4 o非确定性 RNG 生成的随机性取决于一些不受人为控制的不可预测物理源 (即熵源)。
7 u% v0 e: b& ^) d& b: \在 STM32 微控制器上采用的 RNG 硬件外设以及在 第  1.2.1 节 中介绍的 RNG 硬件外设属于
# _. s7 [! x* E真随机数发生器。2 t  x: `. Y8 q* e6 E- @* y
' t" D4 A5 w: t1 a& ~% y* G0 Z
1.2  STM32  微控制器实施说明
$ A' f2 j# [5 s4 q4 C1.2.1  真随机数发生器
/ L0 r8 B7 J9 }) i1 t6 F下表列出的是嵌入了 RNG 硬件外设的 STM32 微控制器线列:9 n- g# H% d  b/ t7 r; l! [
22222.png
# c! w1 K- B) c1 e  W3 {7 k
; Q) c4 ?" ~2 D0 W* DSTM32 微控制器上使用的真随机数发生器外设基于模拟电路。该电路生成的连续模拟噪声
/ K+ ~, p. w& [( j6 S- n5 ^1 @将用于 RNG 处理,以生成 32 位随机数。5 }( s! M  m. s; T- G: w* j  J0 p
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算。( T+ u* S7 E2 k
RNG 处理由采用恒定频率的专用时钟计时,对于微控制器的子设备,还可以使用频率值不
; E! i: e7 P2 g3 i" g( `: {同的时钟来计时。
' l) t9 V* n+ q' s* A' m/ U2 x有关 RNG 外设的详细信息,请参见 STM32 微控制器参考手册。3 M2 H9 X) f# V9 r) F4 D# a$ d
图  1 给出了 STM32 微控制器的 TRNG 框图。
" C7 ?+ [; Z0 ~0 V, V 3333.png ! o3 t! X+ @- u* C

7 F4 z; K* T3 m4 B$ K, f; v
# ^+ A9 i: c& a! W; @5 y0 Q5 ]2  NIST SP800-22b  测试套件! n1 e. u$ _; N3 t: @. h
2.1  前言
( J2 e' o) h  p0 I, m: dNIST SP800-22b 统计测试套件已使用由 国家标准技术局 (NIST) 开发的统计数据测量套件9 U5 D' x- @3 V3 q: C
(sts) 实现,可检验用于加密应用的随机数发生器的质量。标题为 “A Statistical Test Suite for7 B: M: a( f7 @' W' o
the Validation of Random Number Generators and Pseudo Random Number Generators for* C) ]% E% f/ j$ T6 h' n! u3 Q
Cryptographic Applications”” 的文章对该套件进行了全面介绍。
/ S0 D8 J# B# |2 b5 a: x
- u- u6 {& v( R3 a! @( P2 F: _2.2  NIST SP800-22b  测试套件说明. D) ^' A( C) s( Y* `
NIST SP800-22b 统计测试套件 “sts-2.1.1” 是由 国家标准技术局 开发的软件包,可在 NIST
7 X# g; f4 u; ^) [' A. a( U  s网站上下载:请在 http://csrc.nist.gov 上搜索 “NIST Statistical Test Suite download”。! [8 {( K3 Y& B2 X/ }3 D* y
6 u: j) S1 u7 ]1 x' l# i8 v
源代码使用 ANSI C 编写。 NIST 统计测试套件由 15 种测试组成,用于测试二进制序列的随, A( E- I" q! \3 _1 v
机性。这些测试主要针对序列中可能存在的各类非随机性问题。从这一角度,可将测试套件
& ~/ @: U$ e/ b6 i0 M- T/ m分为以下几类:
& s5 |* L; {; Q4 b5 c5 j
3 h9 T& ], J& g5 F频率测试
/ }  u8 J; g- \6 c/ p: t• 频率 (单比特)测试:
3 t/ }4 X2 `7 n* q" V衡量 0 和 1 在序列中的分布情况,并检查结果是否与真随机数序列的预期结果相似。4 Y  `9 ]4 h( |  @, n
• 块中的频率测试:0 [7 {2 m# }* {' ?
检查 M 位块中 1 的频率是否近似为预期通过随机性原理得到 M/2。! y. M2 E7 {9 F$ b
• 运行测试:
( [- u) b3 |/ @' ?评估不同长度的 1 和 0 的预期运行总数是否是随机序列的预期结果。
& Q. t9 P- J5 x& R& q• 测试块中运行最长的 “1”:
9 N" }6 G% m2 P- a4 m* r7 `检查序列中的长运行 “1”:0 V6 E# A* M% Z$ A
( W' r9 g0 t$ X4 y$ z1 R
.... y- f* k+ u" C

* r$ F; q& E) z) T
) l( F' h$ x( b% {6 i/ D/ \3 u阅读更多内容,请下载文档:( U. j/ b9 f, S# D+ d+ F; g
下载地址1>>        下载地址2>>
5 F2 L, K2 Z( t! w
; K+ |, j- J( v
赞 收藏 评论2 发布时间:2017-10-30 16:01

举报

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