密码学进阶主题:从伪随机数生成到可证明安全性
1. 伪随机数生成器(PRNG)
伪随机数生成器是密码学中的重要工具,有一种构建 PRNG 的方法已被作为公共标准接受。其步骤如下:
- 起始时,选取一个随机种子 S 和用于密码系统的密钥 K,设 EK 为相关的加密函数。
- 每次需要随机数时,利用一些系统参数(如计算机 CPU 返回的日期和时间)形成一个数字 D,并用密钥 K 对 D 进行加密,即 C = EK(D)。
- 输出“随机”数 R = EK(C xor S),然后用 EK(R xor C) 替换 S。
PRNG 还可作为对称密码使用。种子值 S 是 Alice 和 Bob 的私钥。为发送消息 M,Alice 将 M 拆分为 M = M0 ∥M1 ∥M2 ∥···,并将第 i 块消息加密为 Ci = Mi xor Ri。由于 Bob 知道种子值 S,他能计算出与 Alice 加密时相同的伪随机字符串 R0∥R1∥R2∥···,从而通过 Mi = Ci xor Ri 恢复消息。
基于哈希函数(如 SHA)或对称密码(如 DES 或 AES)的 PRNG 速度快且已知具有密码学安全性,但这种安全性并非基于对著名数学问题的归约。而有些 PRNG 的安全性可归约为解决诸如因式分解等难题,但速度慢,实际中较少使用。
2. 零知识证明
零知识证明涉及两个角色:证明者 Peggy 和验证者 Victor。非正式地说,零知识证明是一种让 Peggy 能使 Victor 相信某事实为真,同时不向 Victor 提供能让他向他人证明该事实的信息的过程。
在实践中,交互式零知识证明通常包含 Peggy
超级会员免费看
订阅专栏 解锁全文
1万+

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



