【问题标题】:What is the best nuclear missile crypto system?什么是最好的核导弹加密系统?
【发布时间】:2011-02-15 20:09:27
【问题描述】:

你在一艘潜艇上,有一条你想阅读的加密信息。两个人必须同时使用他们的密钥才能获得纯文本。什么是最好的加密原语?以下两种实现是否合适?

plain_text=decrypt(Key1 XOR key2,ciper_text,IV)

plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)

(如果对您很重要,假设 AES-256-CBC 带有 CMAC 块。)

【问题讨论】:

  • 好问题,但标题可能会让人们认为这并不严重。
  • 除非你真的在核潜艇上,否则这听起来很像家庭作业。而且,如果您在在核潜艇上,您的雇主有为他们工作的人可以为您回答这个问题。
  • @paxdiablo 我可以做梦!
  • 阅读了 The Rook 关于密码学的其他几个问题和答案后,我们可以确定这不是家庭作业。我宁愿认为他对这个主题很感兴趣,喜欢了解更多。
  • @Konrad 实际上,我发现标题比“如何需要 2 个密钥来解密消息”变体更具挑战性。

标签: security encryption cryptography


【解决方案1】:

对两个随机生成的密钥进行异或运算以获得最终秘密当然是安全的。它的一般形式称为“secret sharing”,有一些安全算法允许您生成“m of n”方案,您可以在其中生成 n 个共享,并且任何 m 都足以推断出原始密钥。

最著名的方案是Shamir's Secret Sharing,它涉及以密钥为常数生成一个随机的 m-1 次多项式,然后在 n 个位置对其进行采样,并将这些作为密钥份额提供给个人。

【讨论】:

  • 有时被称为“k of n”问题(看看 Shamir 算法中的术语,我敢打赌你可以猜到原因)
  • 很好的答案!这正是我想要的。
【解决方案2】:

通过对密钥进行异或运算,您可以保证 Key1 中的每一位都可能被 Key2 中的每一位修改(反之亦然)。这意味着 Key1 的持有者无法计算 Key2 或 XORing Key1/Key2 的结果。

另一种表述方式是,Key1 的持有者必须暴力破解每个可能的位组合,以耗尽可用的密钥空间。他已经掌握了其中一把钥匙这一事实对他一点帮助都没有。

还有其他方法可以将两个键组合在一起,但是当键的长度相同时,只需要一个简单的 XOR。

【讨论】:

  • 这可能很明显,但值得一提的是两个键的长度必须相同:)
  • 同意,密钥长度相同。
【解决方案3】:

在考虑解决方案之前,您可能需要考虑需求。在给定的场景中,如果您有两个人都需要解密消息,那么要求这样做是合理的

  • 每个人都看不到对方的钥匙。

毕竟你想避免一个人只是选择一个随机密文,假装这是刚刚进来的,看到另一个人的密钥,然后注意到密文一定是一个骗局。 此要求使选项 1 的解密变得困难。 由于您使用的是 MAC,因此您可能也需要它

  • 双方都确信解密后的消息是合法的。

这似乎排除了选项 2。毕竟 Key2 的持有者如何知道 Key1 的持有者解密正确,并且不只是用他选择的一个替换合法的明文。

我必须承认,对于您描述的场景,我不知道一个好的解决方案。一个潜在的方案可能如下所示:密文是元组 c1, c2, d1, d2,其中

c1 = EncryptAndMAC(Key1, Share1)

d1 = MAC(Key2, hash(Share1))

c2 = EncryptAndMAC(Key2, Share2)

d2 = MAC(Key1, Share2)

消息 = Share1 XOR Share2

现在需要两个密钥来查找消息,双方可以独立解密他们的共享而不必共享他们的密钥,并且双方可以验证对方是否正确解密。当然,这是一个 ad-hoc 协议,所以我很可能遗漏了什么。

【讨论】:

    【解决方案4】:

    第二个选项:

    plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)
    

    不遵循双方必须同时使用其密钥的要求。 Key2 必须在 Key1 之前使用,但是一旦发生这种情况,第一方(Key1 的拥有者)可以等待解密,直到她选择的时间,让第二方脱离循环。这对于应用程序可能是也可能不是问题。

    正如 Cocowalla 的 Schneier 引用所暗示的,XOR 有效,除非其中一方可以获得组合密钥(解密器可能能够保守此秘密)并且另一方密钥有其他用途。如果密钥在统计上不是独立的,则 XOR 的速度意味着密钥组合步骤容易受到引导式暴力破解(decrypt 仍然是一个瓶颈)。如果密钥是独立的,那么就不需要找出任何一个部分密钥,知道一个部分密钥也不能帮助找出组合密钥,因此暴力攻击也可以针对组合密钥并忽略部分。正如 caf 提到的,计算另一个部分密钥是没有意义的,因为它需要组合密钥;此外,您只能发射一次核武器。如果一个密钥只与另一个密钥结合使用(并且我们不会为不同的系统重复使用密码,对吗?),XOR 是安全的。

    有几个加密系统允许同时使用 k-out-of-n 密钥来解密消息,但我不记得它们的术语了,还有我的 @ 副本987654327@ 不在手边。

    编辑:感谢 Cocowalla,该方案的名称是“(m,n) 阈值方案”。有关视觉示例,请阅读 Daniel Stoleru 的“Visual Cryptography and Bit-Plane Complexity Segmentation”,发表于 Dr. Dobbs。 Visual cryptography 由 Naor 和 Shamir 创建,并在 EUROCRYPT '94 上展示(根据 Doug Stinson)。

    Wikipedia 列出了更多k-out-of-n secret sharing 的示例:使用 n 个点,其中秘密是 k-1 次多项式;使用 k k-超平面,其中秘密是交点。

    【讨论】:

    • 'XOR 的速度使暴力破解更加可行'。为何如此?你仍然会暴力破解每一个可能的位组合。
    • 我认为您正在寻找的术语是 (m,n) threshold scheme(我可以访问我的 Applied Cryptography 副本;))
    • @PaulG:decrypt 仍然是一个潜在的瓶颈,但不是组合键(因此“更可行”而不是“可行”)。我应该把关于独立/依赖键的内容放回去。@Cocowalla:听起来像那个。 AC 是否有使用看起来像静态的叠加图像的示例?
    【解决方案5】:

    有了这个,我看不出你如何实现任何两个足够级别的人 - 一起 - 将能够阅读消息的要求......

    除此之外:根据底层加密算法,拥有经过异或运算的密钥的一半可能会派生出完整密钥的一部分,从而大大削弱了保护。

    然后,IANAC :)

    【讨论】:

    • 拥有 XORd 密钥的一半不会为您提供有关另一半密钥的信息,因此也不会提供有关完整密钥的信息。看我的回答。
    【解决方案6】:

    异或键虽然是最简单的方法,但可能不是最好的。我认为生成的密钥不够随机 - 如果拥有密钥 1 的人能够拿到生成的密钥,他们也许能够派生密钥 2。

    为了进一步增加复杂性,也许某种一次性便笺簿将是一个不错的计划。在这种系统中重复使用密钥可能不是一个好主意:)

    以下是重复使用密钥导致问题的示例:

    http://en.wikipedia.org/wiki/Venona_project

    更新

    我刚刚吹掉了我的 Bruce Schneier 出色的 Applied Cryptography 副本,并查看了第 3.6 节秘密拆分。这是一个不同的场景,但他建议简单地将密钥与消息进行异或运算是安全的:

    这是 Trent 可以在 Alice 和 Bob 之间拆分消息的协议:

    (1) Trent 生成一个随机位串 R,与消息 M 的长度相同。

    (2) Trent XOR M 与 R 生成 S.

    M ⊕ R = S

    (3) 特伦特给出 R 发给 Alice,S 发给 Bob。

    请注意,他没有说明这是否适用于保护导弹发射系统;)

    【讨论】:

    • 在 either 方法中,key1 和 key2 之间应该没有相关性 - 例如,它们都可以简单地从真实随机位的安全源生成.无论哪种情况都是如此。
    • @caf 我的意思是(即使两个密钥都是完全随机的)如果一个人拥有其中一个密钥,以及由此产生的 XOR'd 密钥,如果有可能那么确定其他键 - 还是我还是弄错了?
    • 如果一个人有一个子键和结果键,那么他们可以肯定确定另一个子键。但是,由于他们已经拥有生成的密钥,因此这并没有给他们带来任何好处。
    • 哦,我想我明白你现在在说什么了,但我会避免在这里提及 OTP。 OTP(根据定义)只能使用一次。这种组合键的方法不会自动使其成为 OTP,事实上,如果多条消息使用该键组合,则根据定义 NOT 是 OTP。此外,它可能会令人困惑,因为典型的 OTP 可能就像对相同长度的密钥对加密消息进行异或一样简单。我们在这里讨论的是 XORing keys。
    • 我明白你的意思。但是:由于问题是关于“核导弹加密系统”的,OTP 很可能是保密密钥的候选者。 2 个负责人中的每个人都持有 XOR-ed 密钥的一部分。结合起来,他们拥有访问系统所需的密钥。由于这是“核导弹系统”级别的安全性,所有密钥仅供一次性使用。
    猜你喜欢
    • 2010-11-01
    • 2010-12-28
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多