算法敏捷?

2021-04-28 11:11:49

发生了什么,我在愚弄零知识证明的想法,需要以文本形式在互联网上发布公共钥匙。我挑选了ED25519键(椭圆形曲线,也称为eddsa)所以我问了互联网“你如何将ED25519键变为短文本字符串?”答案采取了相当多的工作来查找,并且在发布之前,挑起了关于我是否正在做正确的事的讨论。所以今天的问题是:这些事情是否应该用传统的PKIX / PEM序列化编码,或者开发人员只需将钥匙位爆炸到Base64并发货?

旧学校钥匙包装·传统上,如上所述的博客片中所述,可能是非竞争数据结构的公钥序列化为字节BLOB,其不仅包括关键位,而且包括哪个算法适用的元数据,位长度和哈希函数。

当我说“老学校”时,我的意思是真的老了,因为过程中涉及的技术(ASN.1,PKIX,PEM)返回八十年代。他们很复杂,克鲁菲,很难理解,并没有在我听过的任何现代应用中使用过。

已经说出了这一切,有几天的挖掘,然后来自Ycombinator评论员的帮助,上面链接的Go和Java代码短而合理地简单,很快,从我的单元测试中判断,往返于文本的一千次钥匙并回到一小部分的一秒钟。

由于关键序列化包括元数据,这会为您提出“算法敏捷性”,这意味着如果您使用的键的味道(或其支持哈希或其他)变得损害,您可以更改口味,代码仍然可以工作。这听起来像是一个有价值的东西。

毕竟存在量子计算的前景,这假设他们可以让硬件做任何有用的东西,可以明显地破解大量现代加密,包括ED25519。我认识非常聪明的人,他们在拐角处击中量子,其他人,同样聪明,谁认为它永远不会工作。或者,如果它确实,它不会缩放。

更简单的方式·多个评论员指出,ED25519键和签名不是数据结构,只有字节阵列。此外,没有关于位长度或散列算法的选项或其他任何选择。因此,可以说,上面的部分中的所有装置都不会增加任何值。事实上,通过引入所有与PKIX相关的库,您可以增加攻击表面,并可以帮助您损坏您的安全配置文件。

此外,他们争辩,ED25519不太可能快速失败;如果算法开始爬上它,则会有足够的时间来升级软件。我可以证明我了解了在eddsa和nothol的多个飞机项目中。而且,对于泥泞的泥泞,另一个是发明自己的序列化,“一个2-3个字节前缀到未来的证明事物。”

存在证明·我正在研究一个零知识证明,其中有两个或更多不同的公共帖子,不同的annces,相同的公钥和签名。在签名中丢弃私钥并生成帖子后,不允许重复使用keype。在这种特殊情况下,真的很难想象一个人们觉得需要切换算法的情况。

已知算法敏捷性工作,每次任何人设置HTTPS连接时都会发生。它解决了真正的问题。

我们是否认为人们为人们建立一个与特定算法的非敏捷软件有理由,特别是尤其是eDDSA,人们正在做。

我认为某人可以写一个非常简短的三页RFC,这对这些人来说,这可能是有益的,只是做最简单的Base64-Ification。它是互操作性的基础。然而,这将有潜力培养到一个多年的IETF自行​​车噩梦中。

可能有一个案例为当前和未来的基于密钥的应用程序构建有点较少的复杂和Crufty敏捷架构。这可能是基于COSE?这绝对是一个多年的IETF的光驱,但我邓诺,似乎是错误的,让敏捷性我们必须进口很少理解和更少的少数人的技术。

目前的实施·这是两个世界上最糟糕的。由于它使用PKIX Voodoo,它具有原则上的算法敏捷性,但实际上代码拒绝处理未ED25519的任何密钥。有一个论点,要保持一致,我应该以真正的算法敏捷率转到Brute-Force Base64或电线。

说过,如果你需要用ED25519做PKIX舞蹈,那些代码片段可能很有用,因为它们很简单,(我认为)最小。 另一件事。 如果我打算在互联网上发布一些东西,目的是让别人消费它,我认为它应该是由IETF RFC或W3C REC或其他稳定的开放规范描述的格式。 我真的相信这很强烈。 所以现在,我会把它留给它。