《深入浅出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)。

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

相关推荐
利刃大大1 小时前
【高并发服务器:HTTP应用】十六、HttpContext上下文模块 && HttpServer服务器模块&& 服务器测试
运维·服务器·http·高并发·项目
是专家不是砖家2 小时前
rk3562 udp发送带宽500Mbps出现丢包问题
网络·网络协议·udp·rk3562·udp丢包·t507
xiaoxiongip6663 小时前
假设两个设备在不同网段,网关怎么设置才能通呢
网络·爬虫·python·https·智能路由器
Full Stack Developme3 小时前
java.net.http 包详解
java·http·.net
墨香幽梦客3 小时前
HTTPS/SSL证书全生命周期管理:从申请到续期的运维要点
运维·https·ssl
q***23573 小时前
使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南
运维·nginx·https
q***42823 小时前
在 Windows 上生成本地 SSL 证书并使用 HTTPS 访问本地 Nginx 服务器
windows·https·ssl
Li zlun4 小时前
TCP/IP协议:互联网的基石与通信灵魂
网络·网络协议·tcp/ip
SSL店小二4 小时前
IP SSL证书申请全过程及注意事项
服务器·网络·网络协议·https·ssl
天花板之恋7 小时前
Android http网络请求的那些事儿
http·okhttp