隐私与安全
6分钟

什么是一次性密码本?加密原理及其与登录 OTP 的区别

了解一次性密码本如何使用异或运算和全新的随机密钥、完美保密性的含义、密钥复用的风险,以及它与登录 OTP 的区别。

LOCK.PUB
发布日期:
什么是一次性密码本?加密原理及其与登录 OTP 的区别

一次性密码本(one-time pad)使用与消息等长的秘密随机密钥加密消息,每次加密都使用全新的密钥材料。在严格的条件下,攻击者即使看到密文,也无法获得关于消息的额外信息。

缩写 OTP 也可能指登录时使用的一次性口令或验证码。一次性密码本、登录 OTP 和只能打开一次的链接,解决的是不同的问题。

真正的一次性密码本需要哪些条件

在二进制构造中,n 位消息需要 n 位全新且保密的密钥材料:

  • 均匀随机地选择密钥:每个 n 位密钥被选中的概率必须相同。
  • 密钥的生成必须独立于消息和其他密钥材料。
  • 不让观察者获知密钥。
  • 每段密钥只能用于加密一条消息。不能将重叠的密钥片段再次用于其他加密。

这些假设是 Mike Rosulek 的一次性密码本章节中安全性证明的基础。容易记忆的短语或重复使用的密钥并不满足这些条件。

一个四位异或运算示例

异或运算写作 ⊕:两个比特相同时结果为 0,不同时为 1。加密时对消息与密钥进行异或,解密时再次使用同一密钥进行异或。

步骤 运算 结果
加密 1010 ⊕ 0110 1100
解密 1100 ⊕ 0110 1010

这里的消息是 1010,密钥是 0110,密文是 1100。再次异或会抵消密钥的作用。这个例子只说明数学原理;实际通信还需要安全的密钥管理和身份认证。

完美保密性究竟是什么意思

在 Claude Shannon 原始论文的第 10 节中,完美保密性意味着:观察者得知密文后,对各条可能消息的概率判断保持不变。

这不要求所有消息具有相同的概率。如果一条等长消息原本就更可能出现,看到密文后,其出现概率仍可高于其他等长消息。关键在于密文没有提供新的证据。通常使用的固定长度模型也不隐藏通信时间、参与者或消息长度。

为什么复用密钥会破坏保证

如果两条等长消息使用相同的密钥 K,那么 C1 = M1 ⊕ K,C2 = M2 ⊕ K。将两个密文异或,K 就会被抵消:

C1 ⊕ C2 = M1 ⊕ M2

攻击者由此得知两条消息之间的关系。这并不意味着两段完整明文会自动暴露。但如果攻击者已知一段明文,就能推导出对应的密钥片段,以及另一条消息中相同位置的内容。可预测的消息结构也能帮助攻击者验证猜测。

公式之外的实际限制

双方必须事先共享足够的秘密密钥材料,还要保护其存储、同步使用位置,并防止已用片段再次使用。需要分发的密钥量随着发送的信息量增长;异或运算本身无法解决密钥分发问题。

密码本本身既不提供完整性保护,也不认证发送者身份。改变密文中的一个比特,会改变解密结果中对应的比特,而系统本身不会发出警告。仅靠保密性无法确认是谁发送了消息,也无法确认消息是否遭到篡改。

一次性密码本、登录 OTP 与单次查看链接的区别

术语 用途 “一次性”的含义
一次性密码本 加密消息内容 每段密钥材料只用于一次加密
登录 OTP 认证用户持有某个认证器 生成的验证码在有效期内只被接受一次
单次查看链接 限制通过服务访问内容 成功解锁一次后,阻止新的内容解锁

NIST 认证器指南第 3.1.4 节介绍了利用认证器的秘密值以及时间值或计数器生成的登录 OTP。它们用于认证,并不是用来加密消息的密码本。

LOCK.PUB 在其中起什么作用

LOCK.PUB 的密码保护备忘录提供访问控制,并非一次性密码本。服务器会处理备忘录明文,因此它也不是端到端加密或零知识方案。普通备忘录链接默认可以重复打开;若使用单次查看选项,正确输入密码并成功显示内容一次后,才会阻止新的解锁。限制访问不等于立即删除存储的内容,也不能收回下载文件、截图或其他副本。

实际分享方法可参考秘密备忘录指南。文本加密指南介绍了保护文本时需要考虑的事项。

常见问题

一次性密码本真的无法破解吗?

理想方案在满足假设的前提下提供完美保密性。密钥泄露、片段复用、终端被入侵及消息篡改等问题,仍需分别考虑。

用短种子能生成真正的一次性密码本吗?

安全的伪随机生成器可以把短种子扩展为较长的掩码,并在一定假设下提供计算安全性。但它的输出并不均匀覆盖所有更长的比特串,因此无法提供一次性密码本的完美保密性。

“一次性”是否意味着消息会消失?

对于密码本,它描述的是密钥的使用方式;对于链接,它描述的是访问方式。这两个词本身都不能证明内容已被删除,也不能移除别人已经制作的副本。

创建备忘录

创建备忘录

相关关键词

一次性密码本
什么是一次性密码本
一次性密码本与OTP的区别
什么是一次性密码本?加密原理及其与登录 OTP 的区别 | LOCK.PUB Blog