Pseudo Random Number Generation Lab
本次实验将会学习:
伪随机数生成
生成随机数时的错误
生成加密密钥
/dev/random和/dev/urandom设备文件
Task 1错误的方式生成加密密钥
伪随机数的生成事实上是可以预测的
比如下面的代码使用当前时间用作伪随机数生成的种子

Time()会返回从1970-01-01 00:00:00开始以来的秒数
编译后运行几次可以看到

将srand那一句注释后

从结果可以看到,注释了srand后,光用rand是非常危险的
Task2 猜测key
根据描述场景,暴力破解即可
Task3 测量内核的熵
单单使用软件是很难生成真随机数的。大多数系统会从物理世界获得随机性,linux从以下获得随机性:

第一个是用两次按键之前的计时,第二个是用鼠标的移动以及中断的计时,第三个是使用中断计时收集随机数(当然,也不是所有中断都是好的随机数,比如,计时器中断就不是好选择,因为这是可预测的,而磁盘中断是一个更好的选择),最后一个是测量块设备请求的完成时间。

本文探讨了Linux系统中伪随机数生成的原理,包括使用时间作为种子的不安全性,以及/dev/random和/dev/urandom设备在生成加密密钥时的区别。/dev/random会因熵值耗尽而阻塞,而/dev/urandom则能持续生成但可能随机性较低。实验展示了通过观察熵值变化和设备输出来理解随机数质量的方法,并指出在实际应用中推荐使用/dev/urandom以避免阻塞问题。
最低0.47元/天 解锁文章
312

被折叠的 条评论
为什么被折叠?



