区块链网QKLW.COM记者报道:可能你正在阅读本文的时,所使用的浏览器和内容终端之间的通信保密也正在运行中,这一过程得益于核心密码原语实现的身份验证。可能你没听说过类似加密(encryption)、签名(signatures)、消息认证代码(message authentication code)等抽象名词,但端到端的安全也正被这些技术保护着,外部某一方是无法在不被发现的情况下阅读传输的内容亦或改变内容的。在本文中,我们将重点分析数字签名的内部结构以及它们在数字资产和加密货币中的作用。
传统签名
银行支票本质是从发送方到接收方的资金转移指令,而这一指令由发行支票的银行确认。出票人要在支票上指定收款人及金额,随后需要出票人在支票纸上的亲笔签名来验证。在理想状态下,不会出现任何问题,指定接收者去银行,银行验证后进行资金转移。但事实是,每张支票纸上的签名不是唯一的,经常是相同的,这就使支票签名容易被伪造。设想一下,如果你的支票被人篡改,转账金额多了位 0 的损失将是巨大的。
银行支票
数字签名
这个问题如何解决呢?在传统签名中,发送人签发信息的手写签名是唯一的(或同一的),数字签名采取的方式是将需要签名的信息与签名本身绑定,每一个签发信息的电子签名都是一个新的字节流。在这一基础上想伪造电子签名,需要解决的难题以目前已有的工具和知识几乎是不可能的,所以它相对更安全。
发送者可以指定其签名钥匙公开和保密的部分,接收者将发送者的公共信息与它的公共密钥(通常是证书的形式)结合起来,验证签名的正确性。
电子签名
验证机构将发送者的公钥及其元数据签名(可公开识别)进行绑定。协议的安全性不仅依赖于签名的安全保证、整个过程的安全实现、秘钥的安全存储和可靠的通信渠道,还依赖于验证机构本身是否足够安全。攻击者可以执行中间人攻击或冒充相关方,攻击验证机构和发行「虚假」证书的后果是糟糕的,相关例子屡见不鲜,比如 Diginotar、Comodo 和 MonPass。
数字资产中的签名
随着分布式账本技术和在此基础上的金融应用(加密货币)出现,人们提起了对数字签名的兴趣。数字签名是数字资产系统的核心,保证了数字资产所有权,并防止了双花问题(花费的比持有的多)。
在一个加密货币系统中,当史蒂夫想发送特定数量的数字资产(例如比特币)给劳拉时,史蒂夫会在自己的账户签署一个包含支出信息的字节流,然后,拥有公开信息的矿工(验证者)验证签名的有效性,并根据基本的共识机制,将其作为主分布式账本上的一个区块,最终完成交易。
数字签名如果出现缺陷,会对系统的公平性和安全性产生破坏性的影响。攻击者可以通过不安全的私钥存储,或底层算法的潜在缺陷,启动未经授权的交易,造成的损失可能永远无法恢复。在传统金融系统中,卡号和密码就是秘钥,所以金融数字资产的安全就包括秘钥的安全和数字签名的安全。
目前有三种签名管理分布式账本系统:ECDSA、Schnorr 和 EdDSA。这些签名方案都依赖于椭圆曲线组和数学难题。不同的曲线提供不同的效率和安全保证,例如爱德华曲线通常被认为更安全,因为它更容易在恒定的时间内实现,以避免因其通用形式而产生的侧信道攻击。
在下文,我们将把底层的椭圆曲线运算组作为一个「黑匣子」,只强调上面的代数方程。下文的所有签名,都在一个质数阶为 q 的基础组 G 进行算术运算,所有的运算都是 q 的模运算且存在一个散列函数 H,输入任意字节流,输出的是 Zq 中的元素。
ECDSA 签名
比特币网络上线时,中本聪决定将 ECDSA 定为基础签名方案。签名算法的第一步,是对新的随机 k 进行采样,如果不这样,对手可以通过不同信息的两个不同的签名提取密钥(例如 PS3 被黑事件)。如果重复随机性听起来比较极端,那么只要重复 k 中的一部分字节,就足够以良好的概率提取剩余的随机性。
签名的另一个缺点是,它不易与区块链所需的签名副产品兼容,即:多重签名、聚合签名和 MPC 协议。原因是逆元素 k^-1 对计算签名的 s 部分的非线性方程的影响。
最后重要的是,ECDSA 根据定义是可塑的(可延展的):两个不同的签名可以映射同一个信息。这是可行的,因为 (r,s) 和 (r,-s modq) 可以通过对 s 的形式实施限制来缓解(始终考虑较小的 s),验证信息 m。
ECDSA 签名
Schnorr 签名
Schnorr 签名方案,克服了 ECDSA 的一些缺点,它具有线性形式,可以更轻松地实现其 MPC 版本,使聚合和多重签名的工作量变得更少。与 ECDSA 相比,它不具有可塑性,但有更强的理论安全证明分析。然而,对新的随机性的需求仍然存在,这使它容易受到实施错误的影响。
Schnorr 签名
EdDSA 签名
EdDSA 消除了对每个消息的新随机性的需要。如下所述,签名算法从密钥和消息中确定地获取随机性。此外,EdDSA 是在 Edward 曲线上实现的,如 Curve25519 和 Curve448,这使得它们在实施正确的情况下很容易保持恒定,并提供更有效的代数实现。
EdDSA 签名
结论
密码学研究随着区块链生态系统的设计、实施和部署而发展:阈值密码学、零知识证明、聚合签名、VDF、VRF、分布式随机信标等。在过去的几年里,从研究和工程方面投入到数字签名的工作量呈指数级增长,我们见证了从协议描述到 POC 到实现生产的最短时间周期。
我们也将看到替代上述签名的新签名;更快、更安全、更易于实施。从协议描述到 POC 再到生产的每一步都需要进行彻底的审查,一个小缺陷都会造成巨大的损失。早期采用到成为标准需要数年时间的积累,加密协议是每个数字金融系统的核心,确保数字资产的安全,一个最佳选择总是需要权衡取舍。
加密协议在生产环境中不是独立存在的,安全分析仅是第一步,产品所有者、工程师、QA 和 devops 需要与密码学家加强合作,了解部署加密代码的风险,并确保免受恶意用户的影响。完美安全永远不会存在,在 Parfin 我们采取了所有必要的步骤来保护相关基础设施,尽可能地信任并尽量减少潜在的关键信息暴露。