《深入浅出HTTPS》读书笔记(5):随机数

密码学中随机数的用途非常大,其他密码学算法内部都会用到随机数。

1)效率

在软件或者密码学应用中需要大量的随机数,必须在很短的时间内生成随机数。

2)随机性

生成的随机数只要不存在统计学偏差,那么这个随机数就具备随机性(randomness)。

3)不可预测性

密码学中的随机数必须具备不可预测性,否则就会存在安全问题,当然非密码学应用使用具备随机性的随机数就足够了。

4)不可重现性

所谓不可重现性(unrepeat)就是不管经过多长时间,不会产生完全相同的随机数。

在软件层面不可能生成完全不一样的随机数,在一定周期内,密码学随机数算法最终会生成两个完全相同的随机数。

在密码学中应该尽量使用周期相对长的随机数。

【随机数的工作原理】

真正的随机数生成器TRNG(True Random Number Generator),伪随机数生成器PRNG(Preudo Random Number Generator),还是密码学伪随机数生成器CPRNG(Cryptography secure Preudo Random Number Generator),内部工作原理是一样的

随机数生成器内部会维护一个状态(internal state):

(1)对于TRNG来说,内部状态的数值来自外部设备,称为熵(entrory),比如动态的时间、变化的温度、声音的变化、鼠标位置。

(2)对于PRNG来说,内部状态的数值来自于模拟的数值,称为种子(seed)。

一个优秀的随机数生成器就在于寻找尽可能多的熵和种子,一旦熵和种子不够,随机数生成器就会停止运行。

相关推荐
爱学习的程序媛2 小时前
ICMP协议详解
网络·网络协议·网络安全·通信协议·icmp·网络运维
隐擎fox2 小时前
解构无感人机验证底层机制:行为生物轨迹采样、环境评分模型与自动化对抗实战
自动化测试·python·网络协议·tcp/ip·网络爬虫
Lsetea2 小时前
CDN换了SSL证书仍显示旧证书?按边缘节点、SNI和缓存逐层排查
https·cdn·ssl证书·openssl·tls
小林ixn4 小时前
跨域、SSE 与 WebSocket:从一次「请求被拦截」说起
websocket·http
00后程序员张8 小时前
怎么用 Egret(白鹭引擎)打包 iOS 应用并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
captain3769 小时前
网络原理(4)-TCP ▲▲▲
java·服务器·网络·网络协议·tcp/ip
代码中介商9 小时前
C++ 预约系统实战(二):TCP + JSON 自定义协议设计
c++·网络协议
小此方9 小时前
Linux网络(十一):HTTP重定向与请求方法详解:从301/302状态码到GET/POST,再认识Fiddler抓包
linux·网络·http
一个心烑10 小时前
配置项目git的 SSL 证书
git·网络协议·ssl
发光小北18 小时前
西门子 PLC 串口转网口模块现场应用有哪些问题?
网络协议