我对信息安全还很陌生,但我读过一些关于一次性便笺簿的内容。对我来说最突出的一点是它应该是牢不可破的。这种加密方法是否曾被大规模整合到任何互联网 Web 应用程序中?他们将如何传递他们的密钥?
有没有使用一次性垫的系统?
一次性密码的问题在于,它的长度必须等于(或更长)被加密的数据,并且永远不能重复使用。
正如您所指出的那样, how would they send the key?
OTP 必须以安全的方式发送……然而,这通常是留给用户的问题,通常也是 OTP 无用的原因。
如果您有能力安全地发送大型 OTP,那么您可能会认为您可以简单地将要加密的内容通过该安全通道直接发送给收件人。
然而,OTP 的好处是可以通过时间来实现保密。如果您现在有一个安全渠道(例如面对面会议),您可以交换 OTP。你已经为以后保密了。稍后,当您没有安全通道时,您可以用完您的平板电脑的一部分来使您的消息保密。
对 OTP 的改进在于他们制作了一个小种子(密钥)并使用称为 PRNG 的扩展器将该密钥扩展为本质上是流密码的内容。这样,您只需安全地发送少量数据,并且可以使用该扩展密钥加密大量数据。这称为“键拉伸”。
他们将如何传递他们的密钥?
这就涉及到 OTP 的来源,以及它们是如何获得这个名字的。
这是为了在战时与船只或其他类似代理人[*]通信。当船离开港口时,他们带着一堆随机数据出发。当他们通过无线电接收到加密通信时,他们会使用随机键盘上的指示表对其进行解码,然后销毁该表。
那么传输的保密级别是多少?如果 pad 被正确使用和实现,那么消息的保密性与pad的保密性相同。它与无线电传输的保密性无关。相反,无论他们在处理和存储解密板时多么小心,都决定了消息的脆弱性。他们有效地使用 OTP 技术将在某一点交付的对象的保密级别授予稍后交付的消息。
那是该技术的(唯一)用途和目的。如果您现在看到 OTP 用于一般加密,那么用户几乎可以肯定不明白他在做什么。这种技术不能正确地结合到普通的电子通信中,并且完全不适合 Web 应用程序之类的东西。
[*] 不确定这是否真的用于岸对船通信,但特工离开基地一段时间的概念最符合“船”的隐喻。间谍经常使用 OTP。
不是真正的“互联网”,但记录了一次性便笺本已用于红色电话(一个西方偏见的名称;我不知道他们在莫斯科如何称呼它)。这些垫子在磁带上交换,每周由飞机发送。目前的系统可能仍然使用类似的加密方法。
这是有道理的:虽然一次性密码需要与要传输的数据一样大的密钥,但它仍然产生基于时间的优势:您可以提前交换密钥,在批量安全传输可行的时候,然后在时间紧迫时使用它们(例如发射洲际弹道导弹前十分钟,而不是十分钟后)。
Pidgin 即时信使有一个插件,它实现了通过网络发送的消息的 OTP 加密,称为pidgin-paranoia。所以至少有一个 OTP 密码系统。
然而,根据USE OTR在 FOSDEM 2014 上的介绍,Pidgin 绝不是安全软件,因为它有 300,000 多行未经审计的 C 代码,其中很多都在处理解析二进制数据。它应该是相当容易被利用的,一旦被利用,攻击者就可以简单地窃取明文。
即将推出的 Pidgin 3.0 的安全性似乎正在提高,但如果您偏执地使用 OTP,则永远不应该使用 Pidgin(或者甚至是通用操作系统)。
Pidgin 中的 OTP 也没有得到广泛使用,因为有一个称为OTR的良好 IM 密码系统,对于绝大多数用例来说已经绰绰有余了。