【密码学】一文读懂基于加密的随机数生成器

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 咱们接着来说小明的故事,上回说到,小明因为设计的日记本由于用了不安全的随机数生成器,成功的又让小红给看到了日记的内容,这时候,小明决定发奋图强,努力的补习了一下相关知识,这时候,小明刚学了加密的相关知识,然后小明心想,这能不能基于加密的相关知识来设计一个随机数生成器呢,这由于密钥在我手里面,然后我每次自增计数器,没有密钥,其他任何人也没办法拿到原始的计数器内容,这加密出来的东西,感觉随机度也挺高的,于是有了今天的这篇文章,基于加密的随机数生成器。

基于加密的随机数生成器


W1`U`]ON[OKSDYY_1HN$QTX.jpg随机数

咱们接着来说小明的故事,上回说到,小明因为设计的日记本由于用了不安全的随机数生成器,成功的又让小红给看到了日记的内容,这时候,小明决定发奋图强,努力的补习了一下相关知识,这时候,小明刚学了加密的相关知识,然后小明心想,这能不能基于加密的相关知识来设计一个随机数生成器呢,这由于密钥在我手里面,然后我每次自增计数器,没有密钥,其他任何人也没办法拿到原始的计数器内容,这加密出来的东西,感觉随机度也挺高的,于是有了今天的这篇文章,基于加密的随机数生成器。


随机数生成器的结构

W%SP15F)727Q)UE$`E]647W.png

image.gif基于加密的随机数生成器

如上图所示,整个随机数生成器的结构还是类似的,只不过这里多了一点,也就是密钥,具体过程如下:

  • 初始化计数器
  • 用密钥加密计数器的值
  • 将密文作为随机序列的输出
  • 计数器+1
  • 根据需要生成的随机序列的数量,重复上述的步骤

正如小明所设想的一样,如果要想预测下一次的随机数的值,那么就需要对当前值进行解密,因为只有小明手中有密码,其他人是没办法通过密文来反推计数器的内容的,因此也就没办法去预测下一个随机数的值。


ANSI X9.17

接下来,我们来看一个基于加密的伪随机数生成器的一个具体实现 「ANSI X9.17」

先来看一下,这个伪随机数生成器的结构。

]3]OP`RWUYXK%B32O3L)1ZW.pngANSI X9.17

具体步骤如下:

  1. 初始化内部状态
  2. 对当前时间戳进行加密
  3. 对内部状态和第二步生成的密文进行异或运算
  4. 对步骤三的结果进行加密
  5. 将步骤四的结果作为随机序列的输出
  6. 对第四步的结果和第二步输出的结果进行异或运算
  7. 对第六步的结果进行加密,并更新内部状态为加密之后的结果
  8. 重复2-7得到所需长度的随机序列

这个方案,要比我们在文章开头说的结构要复杂,这里执行了三次加密,分别有不同的作用,并且引入的当前时间这个变量,因此呢,个人感觉即使是用了相同的密钥和相同的种子,由于时间不同,所以生成的随机序列也就不同,这个内部状态也是同样的通过密码来保护的,不过从宏观来看,这个结构和文章开头介绍的也是相似的,只是加密操作复杂一点,加一操作并不是普通的加一操作了。


小结

这时候,小明发现自己所用的随机数生成器已经是不错了,这时候小红也没有办法推测出来下一个密码了,小明愉快的笑了,随着小明故事的结束,随机数的介绍也要告一段落了,感谢各位读者的捧场,谢谢大家。

相关文章
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
3351 0
|
2月前
|
安全 网络安全 量子技术
【骇入心灵的暗网迷雾与密码学的绝地反击】——揭秘网络空间中的致命漏洞与加密艺术的生死较量,一段关于光明与黑暗的数字史诗!
【8月更文挑战第7天】互联网是无限可能之地,亦暗藏危机。网络安全漏洞威胁隐私与安全,加密技术如坚盾保护我们。本文探索网络阴影及加密技术如何运作:对称加密快速但密钥易泄,非对称加密安全但速度较慢。通过示例展示两者差异,并展望加密技术未来发展,确保数字世界安全航行。
61 0
|
4月前
|
安全 算法 Java
密码学基础知识与加密算法解析
密码学基础知识与加密算法解析
|
3月前
|
算法 安全 网络安全
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。
|
3月前
|
安全 算法 Java
密码学基础知识与加密算法解析
密码学基础知识与加密算法解析
|
5月前
|
存储 人工智能 安全
|
5月前
|
存储 算法 安全
密码学系列之九:密钥管理
密码学系列之九:密钥管理
436 45
|
5月前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
102 0
|
5月前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
88 0
|
5月前
|
安全 搜索推荐 API
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
288 0