Workflow
Intel810芯片组
icon
搜索文档
TRNG随机数学习和验证笔记
新浪财经· 2026-01-18 14:06
随机数生成器(RNG)技术发展历程 - 首个真随机数生成器由Rand公司于1955年创造,并出版了一本包含100万个随机数字的书籍[1] - Intel于1999年在Intel810芯片组中集成了硬件随机数生成器,其原理是利用电阻和振荡器产生的热噪声[1] - 目前,大部分芯片都已集成硬件随机数生成器,使用非常方便[1] 随机数生成器的主要类型与原理 - 常见的随机数生成器有三种:真随机数生成器(TRNG)、伪随机数生成器(PRNG)以及随机数表法[2] - 真随机数生成器(TRNG)通过物理方法模拟自然界中的随机过程,其生成的随机数无周期性、不可预测且分布均匀,但技术要求高且生成速度低[2][5] - 伪随机数生成器(PRNG)通过数学方法生成与真随机数具有相似统计特征的伪随机数,若能通过统计检验则可当作真随机数使用[5] - 为提高数据产生率,常将TRNG的结果作为PRNG的种子值,用以生成伪随机的输出序列[3] 伪随机数生成算法 - 基于二进制字段上的矩阵线性递归算法,可快速产生高质量的伪随机数,随机数范围在[0, 2^k),其中k可为19937、32、64等,是计算机各种语言常用的算法[4] - 线性同余法:公式为 N[i+1] = (A * N[i] + B) mod M,需满足B与M互质、M的所有质因数都能整除(A-1)等特定条件[5] - 梅森旋转法(Mersenne Twister):其参数选择与梅森素数有关,梅森素数的形式为2^n - 1[5] 真随机数生成技术实现方式 - 振荡器采样:如Intel810 RNG芯片,利用热噪声放大后影响电压控制振荡器,再通过高频振荡器收集数据得到随机数[5] - 直接放大电路噪声:直接以热噪声等电路噪声为随机源,通过运放放大,统计一定时间内达到阈值的信号数以得到随机数[5] - 电路亚稳态:2010年德国研究团队利用计算机内存双态触发器在0和1状态切换前的不可预测亚稳态,使内存内容为完全随机值[5] - 混沌电路:其输出对初始条件敏感、不可预测,且易于在集成电路中集成,可产生效果不错的真随机数[5] 随机数检测标准与方法 - 中国标准为GB/T 32915-2016《信息安全技术 二元序列随机性检测方法》[5] - 美国标准为NIST SP800-22r1a[5] - 德国标准为A1S31[5] - 检测方法包括:比特分布检测(检测n个比特内0和1的个数)、跟随分布检测(检测00、01、10、11的概率是否相等)、游程检测(游程数目为序列长度一半时随机性较好)以及碰撞检测[5] - 其他检测方法还包括扑克检测、相关性检测、线性复杂度检测以及长游程检测等[6] 随机数生成器的特性验证与输出 - 熵源可采用四路独立熵源,每一路有8路RO环,由一个独立时钟进行采样[9] - 后处理可采用密码AES算法[9] - 健康度检测可遵循NIST SP800-90B标准中的重复计数测试和自适应比例测试[9] - 输出可一次输出4*32-bit的数据[9] - 熵源质量验证方法:生成1000*1Mb数据,使用NIST工具进行熵源质量分析,若测试结果有问题,报告中的P-VALUE和PROPORTION旁会出现*号[9] 随机数生成器的应用场景 - 密码学:用于生成加密密钥,确保加密安全性[9] - 数学模拟:用于模拟具有不确定性的系统,如随机运动、随机行为等[9] - 游戏开发:用于生成游戏中的随机事件,如游戏难度、随机道具等[9] - 计算机图形学:用于生成随机的图形,如随机分布的点、随机生成的纹理[9] - 统计学:用于统计学的模拟和分析,如随机化试验、随机抽样等[9]