密码学实践-读书笔记十十一

本文深入探讨密码学中的随机性和素数概念。介绍了真随机数的获取问题、伪随机数生成器(PRNG)的安全性及其攻击模型,特别是Fortuna算法的工作原理。同时,详细阐述了素数的性质,包括生成小素数和模运算,并讨论了GCD算法及大素数在公钥密码学中的应用。
摘要由CSDN通过智能技术生成

第十章 随机性

生成密钥而有了随机数发生器(RNG)。

随机性的量度叫做熵(例如:一个32比特的完全随机的字,它的熵就是32比特),描述一个值有多少的不确定度。

10.1 真随机

真随机数的问题:
第一:真随机数不总是可以得到的
第二:像随机数发生器这样的真随机源可以被攻破
第三:如何判断能从特定的物理事件中获得多少熵

伪随机数据不是完全随机的,通过一定的算法从一个种子生成数据,如果知道了种子,就能预测出伪随机数据来,传统的PRNG对于聪明的敌手来说是不安全的。

使用真随机数做简单的事情:作为伪随机数生成器PRNG的种子。这样就保证了即使以前的种子被攻破,随机数据也是完全不可预测的。

10.2 PRNG的攻击模型

无论何时PRNG都有一个内部的状态,所需的随机数据是通过用密码算法来产生伪随机数据完成的。这个算法也更新了PRNG内部的状态,用以保证下一次请求不会产生同样的随机数据。

防御特定攻击的方法,把包含熵额事件混到一起,不断把足够多的熵手机到内部状态中,直到攻击者不能猜出混合的数据为止。
但是对熵的数量做任何的评估都是相当困难的,取决于攻击者想知道或者能知道多少,但是这对于开发者在设计阶段是不可能获得的。Yarrow试图用熵评估器来测量源的熵值,但是者不可能适应所有的情况。

10.3 Fortuna

是Yarrow的一中改进方案。
有三部分组成
1、发生器采用固定大小的种子来生成任意数量的伪随机数据。
2、累加器收集和混合从各种源产生的熵,又是还给发生器新的种子
3、种子文件管理能保证即便是机器刚刚启动,PRNG也能产生随机数据。

10.4 发生器

功能:把固定大小的状态转换成任意长的输出。
发生器的内部固有状态包含256比特的分组密钥和128比特的计数器,发生器基本上说是在计数器模式下的分组加密。

1、初始化:把密钥和计数器设为0表示发生器还没有种子
Input:g发生器的状态
设密钥K与计数器C为零
K = 0
C = 0
g = (K,C)
return g

2、重新产生种子
Input:g发生器的状态
S 新的或要加入的种子
用Hash函数计算新的密钥
K = SHA256(K||S)
计数器增加使其非零 C = C+1

3、生成分组:生成一些随机输出的分组
Input:g 发生器的状态
k 要产生的分组数目
Output:r 16k 字节的伪随机字符串
Assert C≠0
以一个空串开始
r = 空
For i=1,…,k do
r = r||E(K,C) //每次把新计算的分组加入到r中构成输出值
C = C+1
Return r

4、生成随机数据:在发生器用户的请求下产生随机数据,允许输出最多达到220 字节,保证发生器忘掉产生的结果的任何信息。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值