新的安全和密码技术/协议如何避免先有鸡还是先有蛋的问题?

信息安全 密码学 协议
2021-08-26 05:47:00

. . . 已经提出了更好的解决方案,一旦它们经受住了时间的考验(即“在该领域工作 5 到 10 年,还没有被打破”),就值得考虑。

-来自 Thomas Pornin关于密码散列的优秀博文。

在我看来,这句话是先有鸡还是先有蛋的案例。新的解决方案需要现场经验,但在他们获得现场经验之前,它们不能被信任,因此不能在现场使用。

AES 的选择过程通过带来大量的学术力量,在一定程度上避免了这个问题五年多来,世界上最好的密码学家仔细检查了提交的算法,结果 Rijndael 被选为安全性、速度和可用性之间的最佳折衷方案。

但 AES 的显着优势在于,它所取代的标准明显弱于现代计算机硬件,迫切需要更换。大多数新协议或算法都没有这个硬性限制来帮助它们取得突出地位。

鉴于“哪种算法”的标准答案?或“哪种方法?” 总是“使用可信”,新的解决方案如何获得他们的现场经验?它是依赖于某人对敏感数据的信心飞跃,还是依赖于对非敏感数据使用新解决方案,然后根据该经验进行推断,还是什么?

(我知道引用的上下文与密码哈希特别相关。如果将其推广到所有安全方法是不公平或不合理的,那么知道为什么会有用。)

2个回答

当人们确实使用新算法时,就实现了引导过程。要获得对算法实力的信任,它必须有曝光度曝光是通过像AES或最近的SHA-3这样的正式比赛来实现的;或者它是通过算法被广泛部署并成为一个有趣的目标来实现的。

公开比赛很棘手:为了获得良好的曝光率,比赛必须在相当长的一段时间内吸引大量研究人员,这并不容易,因为学术研究人员很少为钱而工作,而是为了荣誉(或至少是通过作为学术界的名声)。它需要一个强大的赞助商。NIST 对此有好处,并且对 AES 做得很好;可以说,SHA-3 也是成功的,尽管该过程的结尾有点苦涩的回味(因为 NIST 目前正在决定它将对获胜者算法进行哪些调整,而这些调整会破坏整个信任建立过程)。还有其他“竞争”,例如流密码的eSTREAM它确实获得了相当多的曝光,但“不如 AES 或 SHA-3 多”。对于密码哈希,正在进行的竞赛处于候选人收集阶段(直到 2014 年 1 月 31 日)。

当一些组织决定“提前”部署算法时,就会发生广泛部署,因为新算法提供了决定性的可用性优势(例如,签名算法具有非常短的签名,或者需要非常少的计算能力),或者因为权力--在那个组织中(错误地)觉得“更新更好”,并希望成为新的漂亮密码技术的早期采用者。例如,SSL 被广泛部署是因为它填补了一个未被覆盖的利基市场,尽管当时该协议确实没有达到已知的“良好实践”(SSL 2.0 非常糟糕并导致完全重写为 SSL 3.0不到两年后)。

因此,作为密码学家,我们必须建议人们不要使用“太新”和“审查不足”的算法,但我们也很高兴有些人做了“错误的事情”而不克制;它提供了引导程序所必需的曝光,并确保密码学家不会失业(一篇研究文章破坏了一个规范不明确的协议——WEP,我在看你——仍然是一项已发表的研究文章)。与此同时,我们能做的最好的事情就是做好准备:密码学家可以根据合理的结构设计算法,从而有合理的机会在部署中幸存下来。例如,当bcrypt首次被描述时,它(当然)已经有好几年没有暴露在野外了,但至少作者试图遵循一些合理的理由,结果证明该算法“大部分都很好”。

免责声明:我不是密码学家。有人 *ahem* Bear *ahem* 可能会写出更完整的答案。我只想指出几点

但 AES 的显着优势在于,它所取代的标准明显弱于现代计算机硬件,迫切需要更换。大多数新协议或算法都没有这个硬性限制来帮助它们取得突出地位。

您不需要硬性限制来鼓励研究新算法。例如,NIST 最近结束了一项寻找新 SHA-3 算法的竞赛。事实证明,这在鼓励密码学家提交和研究新算法方面非常成功。但是,根据所有现有措施,SHA-2 仍然是安全的。

鉴于“哪种算法”的标准答案?或“哪种方法?” 总是“使用可信”,新的解决方案如何获得他们的现场经验?它是依赖于某人对敏感数据的信心飞跃,还是依赖于对非敏感数据使用新解决方案,然后根据该经验进行推断,还是什么?

新算法不一定必须部署在关键任务应用程序中才能“研究”。提出新算法的过程通常包括发表关于该算法的论文,并与其他密码学家就其优点进行无休止的争论。(注意:我不是密码学家,我只是假设:P)。一旦发生了足够多的争吵,算法就可以在数学意义上被认为是“安全的”或“损坏的”。

如果一个算法被认为是“安全的”,那么该算法的下一步将是为流行的编程语言编写好的、易于使用的实现。这是至关重要的实施很重要,要做到正确并不容易。只有在这完成之后,才能认为算法值得在该领域使用。可能会有一个发现错误和引入修复的整个过程。SSL/TLS 的历史就是一个很好的例子。

第一部分很简单。在学术意义上经常引入和研究新算法。第二部分不太好,你说得对,在现场测试新的算法和协议是一个先有鸡还是先有蛋的问题。不幸的是,这是生活中的事实。为什么要修复未损坏的(尚未)?