密码学基础-为什么使用真随机数(True Random Number Generators)

news2024/9/22 9:43:49

密码学基础-为什么使用真随机数(True Random Number Generators)

概述

随机的意义很重要,就像你的银行密码如果是亲朋好友的生日,结婚纪念日(可预测的),那么就容易被人测试出来;而如果是与上述信息毫无关系的随机数,那么破解的难度就增大了。
加密、签名算法中经常添加随机数,以增强算法的安全性。
在这里插入图片描述

随机数生成器是保证保证生成的随机数足够“随机”(不可预测)的一种安全组件。对这种随机性的具体描述可以表达为:

  1. 前向保密保证了对设备过去输出和内部状态的了解不应使攻击者能够预测未来的数据;
  2. 向后保密保护“相反的方向”:对未来输出和内部状态的了解不应泄露先前的数据。

按照原理,将随机数生成器分为:

  • 伪随机数生成器(Pseudo Random Number Generators,PRNG)

也称为 确定性随机数。软件生成的随机数只是伪随机数。它们不是真正的随机的,因为计算机使用基于分布的算法,并且不安全,因为它们依赖于确定性的、可预测的算法。
即只要对算法输入相同、相似的数据,就可以大致猜测出该算法生成的随机数的范围。
Python 和 Excel 等日常工具中的伪随机数生成基于 Mersenne Twister 算法。但是,它们不适用于安全加密的方案。

  • 真随机数生成器(True Random Number Generators,TRNG)

TRNG是基于不可预测的物理现象(称为熵源,随机性越高,熵源值越大)的功能或设备,旨在生成非确定性数据(例如,一系列数字)。真随机数必须是不可预测的、统计上独立的(与任何先前生成的随机数无关、并且与之后生成的随机数也无关)、均匀分布(生成任何数字的概率相等)和受保护的。
对于真正的随机数,计算机必须使用一些不可预测的外部物理变量来生成,例如同位素的放射性衰变或电波静电,而不是通过软件算法。一些亚原子粒子具有完全随机的行为,使它们成为生成真随机数的一种方案。

两种随机数生成机制应用场景

真随机性和伪随机性根据其特征都有自己的实际应用。

真随机性的实际应用

1.密码学:

  • 密钥生成: 真随机数对于生成加密密钥、会话令牌和其他安全参数至关重要,以确保它们的不可预测性和安全性。在加密协议中使用真随机值来防止重放攻击、侧信道攻击并确保加密操作的唯一性。各种算法(对称、非对称加密、MAC、身份验证签名)和协议(SSL/TLH、SSH、WIFI、LTE、IPsec 等)生成密钥时建议使用真随机数。

2. 赌博和彩票:

  • 彩票抽奖: 通过使用真正的随机数来选择获胜者来确保公平竞争。

3. 科研:

  • 随机抽样: 真正的随机抽样在实验设计和统计研究中是必不可少的,以消除偏差并确保结果的有效性。

伪随机数的实际应用

1. 计算机模拟与建模:

  • 游戏开发: 伪随机数用于在游戏中生成各种元素(例如,地形、敌人行为),这些元素看起来是随机的,但可以复制以进行调试。

  • 模拟: 科学和工程仿真通常使用伪随机数来模拟复杂的系统和过程。

2. 算法和数据结构:

  • 哈希算法: 伪随机数用于在哈希表之间均匀分布数据。

  • 随机算法: 依靠随机性(例如,快速排序、随机选择)来提高平均性能的算法。

3. 程序内容生成:

  • 赌博: 生成广阔而多样的游戏世界(例如,Minecraft),这些世界是伪随机创建的,每次都提供不同的体验,同时允许可重复性。

4. 网络安全:

  • 代币生成: 会话令牌和非关键加密操作,其中完美的不可预测性不是必需的。

  • 验证码系统: 生成伪随机但足够不可预测的挑战,以阻止自动化机器人。

5. 机器学习:

  • 数据洗牌: 以伪随机方式随机洗牌数据,以确保训练集和测试集正确随机化。

  • 参数初始化: 使用伪随机数初始化神经网络中的权重和偏差,以确保训练期间的收敛性。

主要区别

  • 真随机数源自物理过程(例如放射性衰变、大气噪声),本质上是不可预测的。它的实现成本通常较高,消耗的时间更多,并且会随着物理器件的使用寿命增加而存在损坏风险。
  • 伪随机数由算法(例如,线性同余生成器)生成,是确定性的,但设计为随机的。它的实现成本通常较低,执行较快。

在不可预测性和安全性至关重要的场景中,真正的随机性是必不可少的,而在可重复性和效率很重要的应用中,伪随机性是首选。
对于大多数应用来说,伪随机数就足够了。例如,如果你想对一大组数据进行随机抽样,你需要将数字输入程序,以便样本或多或少均匀分布。在这种情况下,使用伪随机数是完全可以接受的,因为在随机性程度上真随机数没有数量优势。大部分情况下,可以使用伪 RNG 来满足你所有的随机数需求,直到你遇到真正需要真正随机的东西的情况,请从他们的区别出发,再评估下你的需求。

真正的随机性很难实现

真正的随机性很难实现(一个真正的随机生成器当然是可能的)。正确构造的TRNG需要从某种形式的随机过程(如晶体管中流动的电流产生的噪声或放射性衰变事件之间的时间)中收集熵,然后调节熵信号以消除偏置并白化产生的输出序列的频谱。此外,还必须根据工作温度、老化、对电子噪声和扰动的敏感性、电压变化和工作频率范围等因素来控制此过程。如果不控制这些因素,TRNG电路可能会被试图影响其运行的外部人员修改。
真随机数发生器基本上由三个主要组件组成:基于物理不可控现象的噪声发生器、随机性提取器(用于确保生成的位均匀分布)和随机性测试电池。下图是 STM32 上的真随机数生成器的结构,它基于电噪声来实现:
在这里插入图片描述

普通笔记本电脑等个人计算机可用的随机性来源包括:

  • 周围的光线和场景
  • 周围的声音或噪音
  • 网络的 TCP 信息
  • 特定网络的 RTT,取决于网络的拥塞情况
  • 系统时间
  • 内核或多核调度延迟

一些标准

弱随机数或可预测的随机数可能会破坏加密密钥、拦截数据以及提供入侵设备的通道。真正的随机性对于密钥生成、芯片制造、加密算法的初始值、挑战和侧信道对抗解决方案至关重要。
一些标准和认证协会正在推动TRNG的规范和验证方法,以定义真正的随机数解决方案的认证指南。
美国国家标准与技术研究院 (NIST) 机构开发了一套 NIST SP 800-90A/B/C 标准。德国标准机构 (BSI) 长期以来一直有一套单独的 RNG 标准 (AIS 20/31)。
在这里插入图片描述
• GM/T 0005-2012 和 GM/T 0062-2018 是中国标准,描述了 TRNG 和随机位序列的性能要求
• OSCCA是针对中国市场的认证计划。它需要基于其更高级别的不同原理的多个不同的熵源。
不同的标准描述了TRNG的要求,并适用到不同的地理区域。

总结

  • 随机数生成器是保证保证生成的随机数足够“随机”(不可预测)的一种安全组件
  • 真随机数生成器(True Random Number Generators,TRNG)生成不可预测的、统计上独立的(与任何先前生成的随机数无关、并且与之后生成的随机数也无关)、均匀分布(生成任何数字的概率相等)和受保护的随机数据。
  • 真随机数与为随机数在生成原理、实现成本、执行速率上存在差别。可以 TRNG/PRNG 组合一起使用,从而使随机数生成更加有效。
  • 真正的随机数很难生成,并且需要一定的硬件成本。
  • 真随机数目前有NIST、AIS、GM/T 的一些标准。
    (感谢收藏和点赞)

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

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

相关文章

Centos 7配置问题

在VMWare12上面安装Centos 7 Linux虚拟机,在切换到命令界面时,需要登录用户名和密码,但发现输入用户后有字符显示,但是密码没有。 经过一系列查看后,发现这个是Linux的一种机制,即当你输入密码时不显示&…

Python批量移除Word文档水印

Word文档被广泛用于各种正式与非正式的沟通场合。有时候这些文档中可能包含着不再需要的水印,比如早期的草稿标记、保密声明或是仅供预览的信息等。这些水印的存在可能会干扰文档的阅读体验,甚至在某些情况下导致信息传达的不准确或产生误解。移除Word文…

QT:多版本同时使用(5.15.2在线安装教程)

前言 根据不同项目的需要有时候不得不安装多个版本的QT,新版本的QT都需要在线安装,以下为QT5.15.2的在线安装办法(5.15.2为LTS版本相对更稳定),老版本可参考之前的离线安装, 版本选择 比如 5.15.2 是完整的…

昇思25天学习打卡营第XX天|Diffusion扩散模型

扩散模型自DDPM论文提出后,在图像生成领域取得了显著进展,特别是在文本条件图像生成方面。重要发展包括改进的去噪模型,级联扩散模型以提高图像分辨率,以及无需分类器的扩散模型指导。DALL-E 2和ImageGen等模型展示了结合语言模型…

7.29 Day11 LVM逻辑卷管理

LVM逻辑卷管理: 优点:将多个磁盘进行统一管理,易于扩容 缺点:不支持容错(任意一个磁盘坏了,整个磁盘都会坏) 实现步骤: 对磁盘进行分区--改为8e--PV(物理卷&#xff0…

pythonGame-实现羊了个羊简易字母版

通过python简单复现羊了个羊游戏。 使用到的库函数: import pygame import random 游戏源码: import pygame import random# 初始化pygame pygame.init()# 设置窗口大小 WIDTH 800 HEIGHT 600 screen pygame.display.set_mode((WIDTH, HEIGHT)) p…

基于N32L406MB EasyFlash参数(key-value)记录库移植

EasyFlash 感谢作者的分享https://github.com/armink/EasyFlash EasyFlash是一款开源的轻量级嵌入式Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发 三大实用功能 ENV快速保存产品参数(key-value),支持 写平衡(磨…

文心智能体零代码开发实践,创建一个智能体:从理论到实践AI技术落地

文心智能体引领零代码智能体开发新风尚,诚邀您一同探索这前沿科技的魅力!以下为实践创建一个叫”从理论到实践AI技术落地“智能体的步骤。 首先登录官网:文心智能体平台AgentBuilder | 想象即现实 登录后点击:创建智能体 输入“…

《660》+《880》强化带刷计划‼️45天吃透所有核心知识点

如果把660吃透再去做880,肯定会轻松一些! 因为660题对于基础的考查很深入,每一道题都有难度,都需要认真思考才能做出来,所以,660建议在基础结束之后再开始做,因为基础阶段本身对基础知识的理解…

240731-一图解释LM-Studio如何设置模型的国内下载

感谢微信公众号作者数翼分享的文章 — 本地 LLM 可视化工具 LM Studio 突破国内网络限制使用 A. 图文指南 B. 具体步骤 Step 1. 安装软件并通过VSCode等编辑打开软件所在目录 官网下载并安装。随后找到软件的安装路径,并通过VSCode打开。 Step 2. 全局替换 被替…

2024年8月1日 十二生肖 今日运势

小运播报:2024年8月1日,星期四,农历六月廿七 (甲辰年辛未月丁酉日),法定工作日。今天建军节,祝保家卫国、英勇无畏的解放军战士们节日快乐! 红榜生肖:龙、牛、猪 需要注…

JavaSE基础 (认识String类)

一,什么是String类 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提 供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想&…

vue中scoped详解以及样式穿透>>>、/deep/、::v-deep

1、scoped scoped属性用于限制样式仅应用于当前组件。当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染。 原理:当样式中加了scoped属性时候,编译的…

解决 Python 中 AttributeError: module ‘typing‘ has no attribute ‘_ClassVar‘

启动 Flask 的时候遇到: AttributeError: module typing has no attribute _ClassVar 卸载 dataclasses pip uninstall dataclasses 启动 Flask 正常

jenkins pipeline 发布 jar并运行

废话不多说,上教程 一,配置publish ssh 二,配置 ssh server 记住Name 三 设置发布选项 1 设置模块多选(请安装多选插件:Active Choices Plug-in) ​ ​ 四 编写pipeline 说明: 1 module…

vue项目实战 vueCropper 仿微信头像任意区域截取图片,上传到腾讯云保存

在package.json中添加 "vue-cropperjs": "4", 后在控制台执行&#xff1a;npm install ImageCropper.vue <template><div v-if"src"><!-- Vue Cropper区域 --><el-row class"cropper-wrapper" v-if"src…

stm32_按键消抖_代码与流程分析

stm32按键消抖 一 问题背景二 解决思路三 代码实现 一 问题背景 开关按钮&#xff1a;按下信号为0&#xff0c;正常信号为1 在按下时&#xff0c;表面上看我们只按了一下&#xff0c;但信号的传递并不是单纯的由1直接变为0。这是由于机械触点断开/闭合时会有抖动&#xff0c;…

北京大学:利用好不确定性,8B小模型也能超越GPT-4

大模型有一个显著的特点&#xff0c;那就是不确定性——对于特定输入&#xff0c;相同的LLM在不同解码配置下可能生成显著不同的输出。 比如问一问chatgpt“今天开心吗&#xff1f;”&#xff0c;可以得到两种不同的回答。 常用的解码策略有两种&#xff0c;一个是贪婪解码&am…

好展位,抢先订!2025浙江(玉环)机械展

2025第18届浙江&#xff08;玉环&#xff09;机械工业展览会 时间地点&#xff1a;2025年4月25-28日 玉环会展中心 近年来&#xff0c;随着玉环工业经济的蓬勃发展&#xff0c;汽摩配件、阀门水暖五金产业、铜加工、眼镜配件、金属加工生产等行业&#xff0c;如同贪婪的巨人&…

React Native初次使用遇到的问题

Write By Monkeyfly 以下内容均为原创&#xff0c;如需转载请注明出处。 前提&#xff1a;距离上次写博文已经过去了5年之久&#xff0c;诸多原因导致的&#xff0c;写一篇优质博文确实费时费力&#xff0c;中间有其他更感兴趣的事要做&#xff08;打游戏、旅游、逛街、看电影…