到目前为止,每个需要加密原始图的比特币改进建议(BIP)都必须重新发明轮子。每个人都捆绑了自己的自定义Python实现SECP256K1椭圆曲线和相关算法,每个算法彼此微妙。这些不一致引入了安静的责任,并使BIP不必要地复杂化。最近突出了这个问题 比特币Optech通讯#348,它至少是比特币开发社区中的少数开发人员长期以来的感觉:应该有一个统一的,可重复使用的标准,用于加密BIP参考SECP256K1代码。
上周,Blockstream Research和Sebastian Falbesoner的Jonas Nick和Tim Ruffing在这方面取得了长足的进步。作为他们现有的一部分 Chilldkg提案,团队释放 SECP256K1LAB。一个新的, 故意不安全 用于原型,实验和BIP规范的Python库。它不是用于生产使用(因为它不是恒定的,因此很容易受到侧向通道攻击的影响),但它填补了一个关键的空白:它为SECP256K1功能提供了干净,一致的参考,包括BIP-340风格的Schnorr Signatures,ECDH,ECDH,ECDH,以及低级场/组/组算术。目标很简单:通过避免冗余的一次性实现来使未来的BIP更容易,更安全。对于BIP作者,这意味着:较少的自定义代码,更少的规格问题以及从原型到建议的更清晰的路径。
> 为什么不使用真正的SECP256K1库?
比特币核心已经在SECP256K1密码学中包括一个快速,恒定的C库。那么,为什么BIP作者不只是使用它呢?
当BIP作者提交提案时,预计他们将包括参考实施,以解释该想法的工作原理。这些实现不必用Python编写,但是C通常对于原型制作而言太低。 Python更易于阅读,更容易修改,并使作者试图表达的内容更清晰。这些素质使其特别适合编写规格。
当引入新的加密思想时,有助于进行一些清晰,简洁和安全的尝试。原则上,工具像 HACSPEC 是正式规格的好选择,因为HACSPEC代码也是有效的生锈。但是实际上,HACSPEC可能很难使用和阅读,尤其是对于不熟悉Rust的Bip读者而言。
Python的可读性继续使其成为许多作者需要解释某件事的工作时返回的语言。
为什么BIP作者一次又一次地重新播放SECP256K1
这始于 BIP 340 Schnorr签名当Bip作者以Python编写原始参考代码时,很容易遵循数学。他们精确地定义了如何使用SECP256K1的曲线参数进行Schnorr风格的签名和验证。他们必须从头开始构建所有内容:字段算术,小组操作,确定性的非CE生成和编码规则。 Python代码清晰且具有教育意义。但是它是专门针对这个单个BIP量身定制的,并不是为了将来的重复使用。
相似地, BIP 324加密P2P传输,加密对比特币节点应如何相互交谈,并使用了一种称为噪声的协议,该协议依赖于密钥交换,共享的秘密和对称加密。虽然它以BIP 340中使用的SECP256K1曲线为基础,但并未重复使用任何实际实施代码。在Python中从头开始重新启动所有加密逻辑,例如ECDH,序列化和握手模式。即使基础数学是相同的,每个BIP最终都会编写自己的逻辑版本。这导致了重复的努力,并引入了细微矛盾的潜力。
SECP256K1LAB实际是什么
SECP256K1LAB 是为一个目的而构建的Python库:更容易为比特币编写加密规格。 Python已经是BIPS中最流行和广泛使用的语言,用于参考实现和测试向量,因此拥有共享的可重复使用库是有道理的。它不是为生产使用而设计的。它是专为原型制作而不是性能而设计的。它为Core Secp256K1功能提供了干净的统一接口,具有可读的代码和最少的设置。每当您想测试一个想法或演示应该如何工作时,就不再有自己的滚动。
现实世界用例:chilldkg
SECP256K1LAB 首先是作为工作的一部分开发的 Chilldkg,一个新的BIP提案,用于分布式关键发电。作者不仅为此规范编写了SECP256K1的另一个自定义Python实现,而是使用SECP256K1LAB来处理所有加密构建块,以其其他人可以利用它。通过重复使用共享的,可读的代码库,他们希望将来的加密BIP不必从头开始。借助SECP256K1LAB,最终建立了一个基础,新建议可以共同建立并改进。
它可以去哪里
仍然有一个悬而未决的问题: SECP256K1LAB应该生活在BIPS存储库中吗? 它已经被证明是加密建议的共享参考,但是关于它真正属于更广泛的比特币开发过程中的讨论正在进行中。无论是作为独立库还是与BIP工作流程更加紧密地集成在一起,很明显,它填补了已经存在多年的空白。如果您是BIP作者,Spec Reviewer,或者只是对改善比特币周围的加密工具感到好奇,那么我们会喜欢您的投入。您可以在比特币-DEV邮件列表上加入讨论,也可以直接贡献 SECP256K1LAB GITHUB存储库。
这是Kiara Bickers的来宾帖子。表达的意见完全是他们自己的,不一定反映了BTC Inc或比特币杂志的观点。