密码学中的随机数、加密方法与攻击技术
1. 偏差与随机数处理
偏差是指一个过程即使是真正随机的,也更倾向于产生某一种结果而非其他结果的特性。有一些方法可以减少偏差,常见的是将多个比特组合成一个比特,或者将多个随机源相互组合。例如,我们可以对来自不同随机源的多个比特进行异或(XOR)操作,以获得一个新的随机比特。以抛硬币为例,假设反面为 0,正面为 1。如果抛两次硬币,连续两次反面或连续两次正面时结果为 0,其概率为 0.5002,那么结果为 1 的概率就是 1 - 0.5002 = 0.4998。这两个概率都更接近 1/2,使得输出的比特偏差大大减少(因为纯粹随机的抛硬币,正面和反面的概率均为 1/2)。
2. 线性同余随机数生成器
在众多伪随机数生成器中,线性同余随机数生成器是一种不错且流行的选择。它能生成一系列特定形式的数字,这些数字依赖于整数 a、c、m 和种子(初始值 X0)。该系列被称为“线性同余”,是因为下一个数字与前一个数字呈线性关系,并对 m 取模。为了减少该系列的可预测性和偏差,有以下建议:
1. 种子选择 :种子可以任意选择。常见的获取种子的方法有三种,即会话间保存种子、根据当前日期和时间生成种子或让用户输入种子。在其他变量相同的情况下,每次使用相同的种子可以使伪随机源的实验结果具有可重复性。
2. 模数 m :模数 m 应该较大,大于 230。计算机的字长(如 32 位或 64 位)是可以接受的,特别是在考虑速度的情况下。但必须确保不会出现舍入误差(即必须使用整数运算,而非浮点运算)。
3. 参数 a 与模数 m 的关系
超级会员免费看
订阅专栏 解锁全文

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



