随机数技术

news/2025/10/18 20:28:51/文章来源:https://www.cnblogs.com/luminescence/p/19150124

随机数应用

  • 密钥
  • 加密:不确定算法引入随机数实现
  • 签名
  • 认证:抗重放、假冒
  • 密钥协商

安全要求:

  • 随机性
    • 分布均匀性:0,1频率大致相等
    • 独立性:任何子序列不能有其他子序列推导
  • 不可预测性

随机数生成方法

使用物理源生成非确定性随机数,真随机数生成器\((TRNG)\)或非确定性随机数生成器\((NRBG)\)
使用确定性算法生成的,成为伪随机数生成器\((PRNG)\)或者确定性随机数生成器\((DRBG)\)

\(TRNG\)

使用随机源作为输入,通常被称为熵源
熵源由物理环境抽取:时钟瞬时值、磁盘、电压等
生成随机的二进制输出
给定随机序列无法重现,没有周期
适合少量随机数生成

\(PRNG\)

采用种子作为输入,使用确定性算法生成输出位序列
种子通常由\(TRNG\)生成
算法存在反馈路径,部分结果反馈作为生成其他结果的输入
例如序列密码算法

PRNG的特点:
(1)高效的,可在短时间内生成许多随机数
(2)确定的,若已知序列的起点,则可在此后的重现给定的随机序列
(3)周期的,序列最终会重复自身
适用的场景:
(1)需要许多随机数
(2)需要在以后再次重放相同的随机序列
(3)现代PRNG的周期很长,以至于在大多数实际应用中都可以忽略不计

伪随机数生成器

线性同余生成器

\(X_{n+1} = (aX_{n} + c)modm\)
随机数序列\(\{X\}\)
评价随机数生成器的三个标准:

  1. 函数应是全周期的生成函数,即函数在重复前应生成从\(0\)\(m-1\)之间的所有数
  2. 生成的序列看起来应是随机的
  3. 函数应能使用32位算术运算有效地实现

参数选取
(1)当\(a≡1 (mod4),c≡1 (mod2)\)时,随机数序列\(\{X\}\)为极大线性同余序列
(2)对于m,常用的评价标准之一是m与给定计算机可以表示的最大非负整数的值近似相等,于是对32位机,m 可以选为接近或等于\(2^{31}\)的值

优点:若乘数和模选择得当,则生成的随机数序列统计上几乎与从集合
\(\{0,1,2,…, m-1 \}\)中随机抽取的序列
缺点:

  1. 选定\(X_0\),后续生成序列确定,算法不随机
  2. 敌手根据根据线性同余算法和参数,能得到后续所有序列
  3. 根据序列小部分可计算算法各个参数

\(BBS(Blum Blum Shub)\)生成器

算法过程
\(p = q = 3 mod4\)
\(n = p * q\)
\(gcd(s,n) = 1\)
\(X_0 = s^2modn\)
\(X_{i} = X_{i-1}^2mosn\)
\(B_i = X_i mod 2\)
得到序列\(\{B\}\)

下一位测试
称某个伪随机位生成器可通过下一位测试,如果不存在一个多项式时间算法,对于输出序列的前k 位输入,能够以大于1/2的概率预测出第k+1位。换句话说,给定序列的前k位,没有有效的算法允许你以超过1/2的概率确定下一位是1还是0

通过下一位测试的伪随机位生成器定义为密码安全伪随机位生成器(CSPRBG)
BBS能够通过下一位测试,被称为密码安全伪随机位生成器

BBS安全性基于对n因子分解

基于分组密码生成伪随机数

分组密码算法是一个安全伪随机函数(PRF),对于任意明文分组分组密码产生一个明显随机的分组输出,密文中没有可以用来推导明文的规律性或者模式。将分组密码作为构建伪随机数发生器核心,使用分组密码构建伪随机数生成器是常见的方法。
使用分组密码构建PNRG 的两种方法:
• 分组密码的CTR 模式
• 分组密码的OFB 模式。

CTR模式

密钥K和向量V作为种子

while len(temp) < n : #需要的随机数长度V += 1 mod 2^128output_block = E(K,V)temp = temp || output_block #拼接

NIST SP 800-90A标准

OFB模式

更新向量V为前一个伪随机分组

V = temp

真随机数生成器

生成框架

(1)硬件噪声源生成一个真随机输出,将其数字化后,生成不确定的位源或真位源
(2)这个位源通过一个调节模块,减小偏差并使熵最大化

熵源

将某些真实模拟源转换为数字输入

调节

(1)偏差
TRNG生成的输出可能存在偏差,如1的个数大于0的个数,或0的个数大于1的个数。
例如,电子噪声之类的物理源可能包含叠加的规则结构、如波或其他周期现象。它们看起来是随机的,但使用统计测试可证明它们是确定的。
(2)熵率
熵率:数字噪声源(或熵源)提供熵的速率。
计算方法如下:源输出的位串提供的评估熵量除以位串的总位数(每个输出位产生的熵评估位)。这是介于0(无熵)和1(完全熵)之间的一个值
熵率是对位串的随机性或不可预测性的度量。
另一种表达方式是,对长为 n 位、最小熵为 k 的一个随机源,熵率为k/n

调节一般是使用密码算法“置乱”随机位以消除偏差并且增大熵来进行的。两种最常见的方法是使用哈希函数或分组密码

不使用哈希函数时,可以使用诸如AES之类的分组密码置乱TRNG位。使用AES时 ,一种简单的方法是获取128位分组的TRNG位,并用AES 和任意密钥加密每个分组

英特尔数字随机数生成器

DRNG硬件架构

逻辑框架

随机性检测

单比特频数检测

检测0和1个数是否接近
\(\varepsilon \sim B(1,\frac{1}{2})\)
根据中心极限定理:
\(n \rightarrow \infty\)\(\frac{1}{n}sum^{n}_{k=1}\xi_{k}\) 近似服从正态分布 \(N(\mu,\frac{\sigma ^2}{n})\),均值1/2,方差1/4

\(\lim_{n \to \infty} P\{\frac{2\sum_{k=1}^{n}\xi_k - n}{\sqrt{n}} < x\}\) = \(\int_{-\infty}^{x} \frac{1}{\sqrt{2\pi}} e^{-\frac{t^2}{2}} dt\)
\(X = 2\varepsilon - 1, \quad S_n = X_1 + X_2 + \cdots + X_n = 2(\varepsilon_1 + \varepsilon_2 + \cdots + \varepsilon_n) - n\)
\(S_n / \sqrt{n}\) 服从标准正态分布
\(\lim_{n \to \infty} P\left(\frac{S_n}{\sqrt{n}} \leq z\right)\) = \(\Phi(z)\) = \(\int_{-\infty}^{z} \frac{1}{\sqrt{2\pi}} e^{-\frac{t^2}{2}} dt\)
\(P\left(\frac{|S_n|}{\sqrt{n}} \leq z\right) = 2\Phi(z) - 1\)
\(|s(obs)| = \frac{|X_1 + X_2 + \cdots + X_n|}{\sqrt{n}}\)
\(2[1 - \Phi(|s(obs)|)] = \operatorname{erfc}\left(\frac{|s(obs)|}{\sqrt{2}}\right)\)

将待检序列\(\varepsilon\)中的0和1分别转换成-1和1,计算\(𝑋_𝑖\)= 2\(\varepsilon_𝑖 − 1(1 ≤ 𝑖 ≤ 𝑛)\)

对其累加求和得\(𝑆_𝑛= \sum 𝑋_i\)
计算统计值\(𝑉 = \frac{S_n}{\sqrt{n}}\)
计算\(𝑃 − 𝑣𝑎𝑙𝑢𝑒 = 𝑒𝑟𝑓𝑐( \frac{V}{\sqrt{2}})\)
如果\(𝑃 − 𝑣𝑎𝑙𝑢𝑒 ≥ 𝛼\),则认为待检序列通过单比特频数检测。

扑克检测

子序列划分:将待检序列\(\varepsilon\) 划分为 \(N = \left\lfloor \frac{n}{m} \right\rfloor\) 个长度为 m 的非重叠子序列(多余比特舍弃),统计第\(i\) 种子序列模式出现的频数\(n_i 1 \leq i \leq 2^m )\)
计算统计值:给出统计量公式 \(V = \frac{2^m}{N} \sum_{i=1}^{2^m} n_i^2 - N\)
计算P-value:定义 \(P\text{-value} = \text{igamc}\left( \frac{2^m - 1}{2}, \frac{V}{2} \right)\)其中 \(\text{igamc}\) 为补不完全伽马函数。
检测结果判定:若 \(P\text{-value} \geq \alpha\),则认为待检序列通过扑克检测。

国密标准和国际标准

国密

GMT 0103-2021《随机数发生器总体框架》
GM/T 0105《软件随机数发生器设计指南》
GMT 0005-2021 《随机性检测技术规范》
GM/T 0062《密码产品随机数检测要求》

NIST

(1) SP 800-90A(Recommendation for Random Number Generation UsingDeterministic Random Bit Generators,2015年6月):确定性随机数生成方法DRNG

(2) SP800-90B(Recommendation for the Entropy Sources Used for RandomBit Generation,2018年 1 月):涵盖熵源 (ES)的设计原理和要求,非确定随机数生成方法NRNG

(3) SP800-90C(Recommendation for Random Bit Generator(RBG)Constructions,2016年 4 月 ) : 讨论结合90B中的熵源与90A中的DRNG的方式,生成随机数

(4) SP800-22(A Satistical Test Suie for Random and Pseudorandom NumberGenerators for CryptographicApplications,2010 年4月):随机性检测方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我做 AI 算法 10 年,见过最可惜的事:技术再牛,说不明白也是白搭

我做 AI 算法 10 年,见过最可惜的事:技术再牛,说不明白也是白搭大家好,我是李老师。过去 5 年在互联网大厂做 AI 落地时,我见过不少 “技术大牛”—— 有人能把自然语言处理模型调得比行业均值精准 10%,有人能在…

第六周作业---定时器

1.定义LED引脚2.定义全局变量3.声明需要调用的函数4.设计简单的延时函数5.配置GPIO 编写一个GPIO的配置函数,其中包含使能GPIO时钟,配置LED引脚以及配置USART1引脚。6.配置USART1 编写一个USART1的配置函数,其中包含…

『普及』浅谈图的基础

基础知识 图是一种网状数据结构,用于描述对象的集合以及对象之间的关系。其中,对象用顶点表示,也称为节点,简称点。对象之间的关系用连接顶点的边表示。若图中的每条边是单向的,则该图称为有向图;若图中的每条边…

运筹学在供应链优化中的实际应用

本文介绍了两位博士后研究员在某中心供应链优化技术团队的研究工作,重点探讨了运筹学在库存优化、路径规划和需求预测等实际业务问题中的应用,包括算法建模和系统优化方法。运筹学在现实问题中的应用:某中心博士后研…

P6715 [CCO 2018] Fun Palace 题解

Description 有一个含 \(n\) 个点的链,每个点有一个权值。 对于任何 \(1\le i\le n-1\),都有一条边连接 \((i,i+1)\)。 您可以在链中的任意一些节点放置一些生物。 对于第 \(i\) 条边,若点 \(i\) 至少有 \(a_i\) 个…

被C语言链表折磨的一天 Σ( △ |||)︴

OIer竟沦落到这个地步——>C语言课要免修就要拿C语言来写一个链表,而且不能拿数组模拟 ( ̄△ ̄;),为了免修,OIer只好学习一手小小指针。 首先需要知道指针是什么: int *a char *a[] double *a 以上三个都是指针…

WebGL学习及项目实战(第03期:绘制多个点,线,面)

@目录目标WebGL原理示意图着色器代码顶点着色器代码解析片元着色器代码解析js代码初始化WebGL代码初始化shaders代码创建着色器对象创建程序对象初始化buffers代码绘制代码代码总结绘制多个点完整代码初始化缓冲区绘制…

ozon定制尺寸和重量

ozon定制尺寸和重量VVV---A888---KKK

CF 359D. Pair of Numbers

D.Pair of Numbers原题链接 题意简述西蒙有一个数组 \(a_1, a_2, ..., a_n\) ,由 n 个正整数组成。今天,西蒙要求你找出一对整数 $l, r (1 \leq l \leq r \leq n) $,使得下列条件成立: 有整数 \(j ( l …

2025多校CSP模拟赛6

T1:最长不下降子序列 (sequence) 思路: 依据做传统最长不下降子序列的的经验,这题用 \(dp\) 。 因为 \(a\) 的值只有 \(1,2\) ,并且翻转操作只进行一次,所以我们考虑什么样的情况一次翻转能产生最长不下降子序列呢…

Java基础——类型转换,变量、常亮、作用域,基本运算符

Java基础——类型转换,变量、常亮、作用域,基本运算符类型转换 从低到高--------------> byte,short,char-->int-->long-->float-->double (小数优先级高于整数) 运算过程中需要将不同类型的值转换…

洛谷 LGR-246 S 模拟赛

100 + 0 + 44 + 24 = 168, Rank 469/3708.下次再也不在过掉了一个题的情况下试图去想第二个题的正解了 /ll【LGR-246】SCP 2025 第二轮(复赛 S 组)模拟 链接:link 题解:题目题解区内 时间:4h (2025.10.18 14:30~1…

godot3D节点本身的偏转数值错误竟会导致空间移动穿模??!

在Godot引擎中,当RigidBody3D节点被施加一个异常扭矩值apply_torque((-inf,inf,-inf))时,即使不会导致物体实际旋转,也会引发异常物理行为:物体在空间线性力或自由落体作用下会匀速穿模。测试表明,RigidBody3D的姿…

Kafka面试精讲 Day 24:Spring Kafka构建实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

重新安装trea cn

重新安装trea cnhttps://blog.csdn.net/weixin_45417754/article/details/149644689

题解:qoj7938 Graph Race

简单题。 题意:给出一张图,边权为 \(1\),每个点有属性 \(a,b\),定义一个点 \(u\) 的权值 \(f(u)\) 为 \(\max _{u\not=v}a_v-b_v\operatorname{dis}(u,v)\),按从小到大的顺序输出与 \(1\) 相连的的点的 \(f\) 值。…

java中的初等函数

java中的初等函数一、函数 基本初等函数:基本初等函数是指常值函数、幂函数、指数函数,对数函数、三角函数、反三角函数这六类函数。 初等函数:将由基本初等函数经过有限次加、减、乘、除四则运算和有限次复合运算所…

【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程

【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程2025-10-18 19:28 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

Dr. Jane Goodall

Dr. Jane Goodallwhen I was in gomi particularly I felt very very close to a great spiritual [Music] power if we think of the Bible it would be in which we live and move and have our being and I felt th…

专用硬件神经网络优化技术解析

本文深入探讨了针对专用硬件优化神经网络架构的技术方案,通过优化搜索空间设计和结合专家经验,在多个实际应用中实现了高达55%的延迟降低,涵盖了检测模型、分类模型和语义分割等具体应用场景。专用硬件神经网络优化…