本文对 Schnorr/ECDSA 适配器签名与跨链原子交换的原理进行了详细描述。
原文:Adaptor Signatures and Its Application to Cross-Chain Atomic Swaps
作者:mutourend,lynndell
出品:Bitlayer 研究组
1. 引言
随着比特币 Layer2 扩容方案的快速发展,比特币与其 Layer2 对应网络之间的跨链资产转移频率显著增加。这一趋势受到 Layer2 技术(如 Bitlayer)所提供的更高可扩展性、更低的交易费和高吞吐量的推动。这些进步促进了更高效、更经济的交易,从而促进比特币在各种应用中的更广泛采用和集成。因此,比特币与 Layer2 网络之间的互操作性正成为加密货币生态系统的关键组成部分,推动创新,并为用户提供更多多样化和强大的金融工具。
如表 1 所示,比特币与 Layer2 之间的跨链交易有三个典型方案,分别为中心化跨链交易、BitVM 跨链桥和跨链原子交换。这三个技术在信任假设、安全性、便捷性、交易额度等方面各不相同,能满足不同的应用需求。
表 1. 跨链交易技术对比
中心化跨链交易:用户首先将比特币支付给中心化机构(如项目方或交易所),则中心化机构在 Layer2 网络上将等值资产支付到用户指定的地址,从而完成跨链资产转移。这种技术的优点在于速度快,撮合过程相对容易,因为中心化机构可以迅速确认并处理交易。然而,这种方法的安全性完全依赖于中心化机构的可靠性和信誉。如果中心化机构遭遇技术故障、恶意攻击、违约,则用户的资金面临较高的风险。此外,中心化跨链交易也可能泄漏用户隐私,需要用户在选择这种方法时慎重考虑。因此,尽管其便捷性和高效性为用户提供了极大的便利,但安全性和信任是中心化跨链交易面临的主要挑战。
BitVM 跨链桥:该技术相对复杂。首先,在 Peg-in 阶段,用户将比特币支付给 BitVM 联盟控制的多签地址,实现比特币锁定。在 Layer2 铸造出对应数量的通证,并用该通证实现 Layer2 交易与应用。当用户销毁 Layer2 通证时,由 Operator 垫付。随后,Operator 到 BitVM 联盟控制的多签池子中报销对应数量的比特币。为防止 Operator 作恶,报销过程采用乐观挑战机制,即任意第三方均可对恶意报销行为发起挑战,挫败作恶行为。该技术引入了乐观挑战机制,所以技术相对复杂。此外,乐观挑战机制涉及大量的挑战与响应交易,交易费较高。因此,BitVM 跨链桥仅适用于超大额交易,类似于 U 的增发,从而使用频率较低。
跨链原子交换:原子交换是一种实现去中心化加密货币交易的合约。在这种情况下,“原子” 意味着一种资产所有权的变更实际上意味着另一种资产所有权的变更。该概念于 2013 年由 TierNolan 在 Bitcointalk 论坛上首次提出。4 年来,原子交换一直停留在理论领域。直到 2017 年,Decred 和 Litecoin 成为第一个成功完成原子交换的区块链系统。原子交换必须涉及两方,而任何第三方不能中断或干扰交换过程。这意味着该技术是去中心化的、不受审查、具有较好的隐私保护、能实现高频跨链交易,从而在去中心化交易所中广泛应用。当前,跨链原子交换需要 4 笔交易,一些方案尝试将交易笔数压缩为 2 笔,但会增加对交换双方的实时在线要求等。最后,跨链原子交换技术主要包括哈希时间锁和适配器签名。
基于哈希时间锁(HTLC)的跨链原子交换:第一个成功实现跨链原子交换的项目是 Decred,利用 “哈希锁” 和 “时间锁”,借助链上脚本(或智能合约)实现了 TierNolan 提出的的原子交换。HTLC 允许两个用户进行有时间限制的加密货币交易,即接收者必须在规定时间内(以区块数量或区块高度确定)向合约提交加密证明(“秘密”),否则资金将退还给发送者。如果接收者确认付款,则交易成功。因此,要求参与的两个区块链都具有 “哈希锁” 和 “时间锁” 功能。
虽然 HTLC 原子交换是去中心化交换技术领域的重大突破,但是存在以下问题。这些原子交换交易以及与它们相关的数据都是在链上进行的,导致用户隐私泄漏。换言之,每次交换时,两个区块链上都会出现相同的哈希值,且仅相隔只有几个区块。这意味着,观察者可以将参与交换的货币联系起来,即在彼此靠近的区块中找到相同的哈希值(TimeStamp-wise)。当跨链追踪货币时,很容易确定来源。尽管这种分析不会揭示任何相关的身份数据,但第三方可以轻而易举地推断出所涉及的参与者的身份。
基于适配器签名的跨链原子交换:BasicSwap 提供的第二种交换被称为 “适配器签名” 原子交换,基于 Monero 开发人员 Joël Gugger 在 2020 年发表的一篇题为"Bitcoin–Monero Cross-chain Atomic Swap}"论文。该论文可以说是 Lloyd Fournier 2019 年论文 One-Time Verifiably Encrypted Signatures, A.K.A. Adaptor Signatures 的一种实现。适配器签名是一种附加签名,其与初始签名相结合以显示秘密数据,使双方能够同时向对方透露两部分数据,并且是使 Monero 原子交换对成为可能的 scriptless 协议的关键组成部分。
与 HTLC 原子交换相比,基于适配器签名的原子交换有 3 个优势:首先,适配器签名交换方案取代了 “秘密哈希” 交换所依赖的链上脚本,包括时间锁和哈希锁。换言之,HTLC 交换中的秘密和秘密哈希在适配器签名交换中无直接对应关系。因此,在比特币研究界被称为 “scriptless scripts 隐形脚本”。此外,由于不涉及这样的脚本,链上占用空间减少,使得基于适配器签名的原子交换更轻量,费用更低。最后,HTLC 要求每条链使用相同的哈希值,而适配器签名的原子交换中涉及的交易无法链接,实现隐私保护。
本文首先介绍 Schnorr/ECDSA 适配器签名与跨链原子交换原理。然后,分析适配器签名中存在的随机数安全问题和跨链场景中的系统异构和算法异构问题,并给出解决方案。最后,对适配器签名进行扩展应用,实现非交互式数字资产托管。
2. 适配器签名与跨链原子交换
2.1 Schnorr 适配器签名与原子交换
2.2 ECDSA 适配器签名与原子交换
2.2.1 零知识证明 zk{v | Ṽ = v ᐧ G, V = v ᐧ Y}
3. 安全问题与解决方案
3.1 随机数问题与解决方案
3.1.1 随机数泄漏问题
Schnorr/ECDSA 适配器签名的预签名均对随机数 $r$进行承诺Ȓ = r ᐧ G。此外,零知识证明中对随机数 $v$进行承诺 $Ṽ=v ᐧ G,V=v ᐧ Y$。如果随机数泄漏,则会导致私钥泄漏。
具体而言,在 Schnorr 协议中,如果随机数 $r$泄漏,则能够根据等式.
$ ŝ = r + c x.$
计算出私钥 $x$。
同理,在 ECDSA 协议中,如果随机数 $r$泄漏,则能够根据等式
$ ŝ = r^{-1}(hash(m)+R_x x).$
计算私钥出 $x$。
最后,在零知识证明协议中,如果随机数 $v$泄漏,则能够根据等式
$ z := v + c r.$
计算出随机数 $r$,从而进一步根据随机数 $r$计算出私钥 $x$。因此,随机数使用完后需立刻删除。
3.1.2 随机数重用问题
对任意两个跨链交易,如果适配器签名协议使用相同的随机数,则会导致私钥泄漏。具体而言,在 Schnorr 协议中,如果使用了相同的随机数 $r$,则以下方程组中仅 $r$和 $x$是未知的
$ ŝ_1 =r + c_1 x, $
$ ŝ_2 = r + c_2 x. $
因此,可以求解方程组,获得私钥 $x$。
同理,在 ECDSA 适配器签名协议中,如果使用相同的随机数 $r$,则以下方程组中仅 $r$和 $x$是未知的
$ ŝ_1 = r^{-1}(hash(m_1)+R_x x),$
$ ŝ_2 = r^{-1}(hash(m_2)+R_x x).$
因此,可以求解方程组,获得私钥 $x$。
最后,在零知识证明协议中,如果使用相同的随机数 $v$,则以下方程组中仅 $v$和 $r$是未知的
$ z_1 = v+c_1 r, $
$ z_2 = v+c_2 r. $
因此,可以求解方程组,获得随机数 $r$,从而进一步解方程组获得私钥 $x$。
以此类推,不同用户使用相同的随机数,也会泄漏私钥。换言之,使用相同随机数的两个用户,能够求解方程组,获得对方的私钥。因此,应使用 RFC 6979 解决随机数重用问题。
3.1.3 解决方案:RFC 6979
RFC 6979 指定了一种使用 DSA 和 ECDSA 生成确定性数字签名的方法,解决了与生成随机值 k 相关的安全问题。传统的 DSA 和 ECDSA 签名依赖于每次签名操作随机生成的随机数 k。如果此随机数被重用或生成不当,会危及私钥的安全性。RFC 6979 通过从私钥和待签名消息中确定性地导出 $k$,消除了生成随机数的需求。这确保了使用相同私钥签署相同消息时,签名总是相同的,从而增强了可重现性和可预测性。具体而言,确定性的 $k$是由 HMAC 生成的。该过程涉及哈希函数(例如 SHA256)对私钥、消息和计数器计算哈希值,
$k = SHA256(sk, msg, counter).$
上述等式中,为表达简洁,仅对私钥 sk,消息 msg 和计数器 counter 计算哈希值,实际 RFC 6979 中计算过程涉及更多的哈希计算。该等式确保 k 对每条消息都是唯一的,同时对于相同的输入具有可重现性,并且减少了与弱或受损的随机数生成器相关的私钥暴露风险。因此,RFC 6979 为使用 DSA 和 ECDSA 的确定性数字签名提供了一个强大的框架,解决了与随机数生成相关的重大安全问题,并增强了数字签名的可靠性和可预测性。这使其成为需要高安全性和符合严格操作要求的应用程序的宝贵标准。Schnorr/ECDSA 签名存在随机数缺陷,需要使用 RFC 6979 进行防范。因此,基于 Schnorr/ECDSA 的适配器签名也存在这些问题,也需要使用 RFC 6979 规范以解决这些问题。
3.2 跨链场景问题与解决方案
3.2.1 UTXO 与账户模型系统异构问题与解决方案
如图 1 所示,比特币采用 UTXO 模型,基于 Secp256k1 曲线实现原生的 ECDSA 签名。Bitlayer 为 EVM 兼容 Bitcoin L2 链,采用 Secp256k1 曲线,支持原生的 ECDSA 签名。适配器签名实现了 BTC 交换所需的逻辑,而 Bitlayer 交换对应方则由以太坊智能合约的强大功能支撑。
基于适配器签名的跨链原子交换,或至少是设计用于 ECDSA 曲线的 semi-scriptless 适配器签名方案,与以太坊不兼容。原因在于以太坊是账户模型的,而不是 UTXO 模型。具体而言,基于适配器签名的原子交换中要求退款交易必须预先签名。但是,在以太坊系统中,如果不知道 nonce,则无法预先签名交易。因此,一方可以在预先签名完成和交易执行之间发送交易 —— 这将使预先签名的交易无效(因为 nonce 已被使用,不能重复使用)。
此外,从隐私角度来看,这意味着 Bitlayer swap 的匿名性比 HTLC 更优(swap 的双方都可找到合约)。但是,由于需要一方有公开合约,使得 Bitlayer swap 的匿名性低于适配器签名的匿名性。在没有合约的一方,swap 交易看起来与任何其他交易都一样。但是,在有 EVM 合约的一方,交易明显是为了资产 swap。虽然一方有公开合约,但是即使使用复杂的链分析工具,也不可能将其追溯到另一条链。
Bitlayer 目前支持原生 ECDSA 签名,也可通过智能合约实现 Schnorr 签名验证。如果使用原生的 Bitlayer 交易,则无法预签原子交换中的退款交易;需要使用 Bitlayer 智能合约交易,才能够实现原子交换。但是,该过程会牺牲隐私性,即 Bitlayer 系统中参与原子交换的交易是可追溯的,但无法追溯到 BTC 系统中的交易。在 Bitlayer 端可设计类似 Tornado Cash 之类的 Dapp 应用,为 BTC 与 Bitlayer 原子交换中 Bitlayer 端的交易提供隐私服务。
3.2.2 相同曲线,不同算法,适配器签名安全
如图 2 所示,假设 Bitcoin 和 Bitlayer 均使用 Secp256k1 曲线,但是 Bitcoin 使用 Schnorr 签名,而 Bitlayer 使用 ECDSA。该情况下,基于 Schnorr 和 ECDSA 的适配器签名,是可证明安全的。假设给定 ECDSA 和 Schnorr 签名预言机,能够构造模拟器 S 攻破 ECDSA,则仅给定 ECDSA 签名预言机,能够构造模拟器 S 攻破 ECDSA。但是,ECDSA 是安全的。同理,假设给定 ECDSA 和 Schnorr 签名预言机,能够构造模拟器 S 攻破 Schnorr 签名,则仅给定 ECDSA 签名预言机,能够构造模拟器 S 攻破 Schnorr 签名。但是,Schnorr 签名是安全的。因此,在跨链场景下,适配器签名使用了相同曲线,但是签名算法不同,则是安全的。换言之,适配器签名允许一端使用 ECDSA,而另一端使用 Schnorr 签名。
3.2.3 不同曲线,适配器签名不安全
假设 Bitcoin 使用 Secp256k1 曲线和 ECDSA 签名,而 Bitlayer 使用 ed25519 曲线和 Schnorr 签名。该情况下,不能使用适配器签名。由于曲线不同,导致椭圆曲线群的阶不同,即模系数不同。Bob 在 Bitcoin 系统中将 $y$适配到 ECDSA 签名中时,即计算 $s:= ŝ+y$。此时,$y$的取值空间为 Secp256k1 椭圆曲线群的标量空间。随后,Alice 需要使用 $y$在 ed25519 椭圆曲线群上进行 Schnorr 签名。但是,ed25519 曲线余因子为 8,且模系数不等于 Secp256k1 椭圆曲线群的模系数。因此,使用 $y$在 ed25519 曲线上进行 Schnorr 签名是不安全的。
4. 数字资产托管应用
数字资产托管有三个参与方,分别为:买方 Alice、卖方 Bob 和托管方。使用适配器签名能够实现非交互式门限数字资产托管,且在无需交互的情况下实例化门限支出策略的子集。该子集由 2 种参与者组成:参与初始化的参与者、不参与初始化的参与者,后者称为托管方。托管方不能签署任意交易,而只向支持的其中一方发送秘密。
一方面,托管人只能在几个固定的结算交易中进行选择,而无法与其他参与方之一签署新的交易。因此,这种秘密释放机制使得非交互式门限托管的灵活性不如门限 Schnorr 签名。另一方面,可以使用门限 Schnorr 签名设置 2-of-3 花费策略。但是,门限 Schnorr 签名协议需要三方运行进行去中心化密钥生成协议。因此,基于适配器签名的资产托管协议具有非交互优势。
4.1 基于适配器签名的非交互式资产托管
如图 3 所示,Alice 和 Bob 想要创建一个具有隐形策略的 2-of-3 交易输出,其中包含一个托管方。取决于条件 $c$,Alice 或 Bob 可花费该交易输出。如果 Alice 和 Bob 之间存在争议,则托管方(公钥为 $E$,私钥为 $e$)决定由 Alice 或 Bob 获得该资产。
- 创建一个未签名 funding 交易,将 BTC 发送给 Alice 和 Bob 之间的某 2-of-2 MuSig output。
- Alice 选择一个随机值 $t_A$,将某交易的 adapator 为 $t_A ᐧ G$的 Schnorr 预签名 $(\hat{R}_A,\hat{s}_A)$发送给 Bob,该交易为将 funding output 发送给 Bob。Alice 同时给 Bob 发送一个密文,该密文包含对秘密 $t_A$并将托管公钥 $E$调整为 $E_c = E + hash(E, c)G$的\textbf{可验证加密}$C = Enc(E_c, t_A)$。该过程中,Bob 收到 Alice 的预签名后,加上自己的签名,不满足 2-of-2 MuSig,从而无法花费 funding output。仅当 Bob 知道 $t_A$(由托管方可提供),或 Alice 另外签署完整签名发送给 Bob,才能花费 funding output。
- 与之相对应,Bob 基于其 adaptor secret $t_B$,重复步骤(2)。此时 Bob 所签的交易为将 funding output 发送给 Alice。
- Alice 和 Bob 均验证接收密文的有效性,确认密文是对 $E_c$对秘密的加密,从而对 funding 交易签署并广播。可验证加密使得在 setup 阶段无需托管方参与,且不需要公开合约 $c$。
- 当有争议时,Alice 和 Bob 可将密文以及条件 c 发送给托管方,则托管方可实际情况判决,从而使用调整私钥 $e+hash(E, c)$进行解密发送 $t_A/t_B$给 Bob/Alice。
如果无争议,则 Alice 和 Bob 可按其所想来花费 2-of-2 MuSig output。如果存在争议,则任何一方均可联系托管方,并请求其 adaptor secret $t_A$或 $t_B$。因此,其中一方在托管方的帮助下,可完成该适配器签名,并广播该结算交易。
4.2 可验证加密
基于离散对数的经典可验证加密方案(Practical Verifiable Encryption and Decryption of Discrete Logarithms)不能用于 Secp256k1 adaptors,因其仅支持验证特殊结构化的 groups。
目前,有 2 种有前景的方式来基于 Secp256k1 离散对数做可验证加密,分别为 Purify 和 Juggling。
Purify 最初是为了创建具有确定性 nonce(DN)的 MuSig 协议而提出的,要求每个签名者使用零知识证明其 nonce 是将伪随机函数(PRF)正确应用于公钥和消息的结果。Purify PRF 可在 Bulletproofs 零知识协议的算术电路中高效实现,用于在 Secp256k1 上的离散对数创建可验证加密方案。换言之,使用 zkSnark 实现可验证加密。
Juggling 加密包括四个步骤:(1)将离散对数 $x$切分为多个长为 $l$的片段 $x_k$,使得 $x = \sum _k 2^{(k-1)l} x_k$;(2)使用公钥 $Y$对片段 $x_k ᐧ G$进行 ElGamal 加密 $\{ D_k, E_k\} = \{ x_k ᐧ G + r_k ᐧ Y, r_k ᐧ G \}$;(3)对每个 $x_k ᐧ G$创建范围证明,证明 $D_k$为一个 Pedersen 承诺 $x_k ᐧ G + r_k ᐧ Y$,且其值小于 $2^l$;(4)使用 sigma 协议,证明 $\{sum D_k, sum E_k\}$是对 $x_k ᐧ G$的正确加密。
在解密过程中,对 $\{D_k, E_k\}$解密出每个 $x_k ᐧ G$,然后穷举搜索出 $x_k$(取值范围为 $[0, 2^l)$)。
Purify 需在 Bulletproofs 内执行一个 PRF,相对复杂,而 Juggling 理论上更简单。此外,二者在 proof size、证明时长和验证时长的差距很小。
5. 总结
本文对 Schnorr/ECDSA 适配器签名与跨链原子交换的原理进行了详细描述。深入分析了适配器签名存在随机数泄漏问题、重复问题,并提出使用 RFC 6979 以解决这些问题。此外,详细分析了跨链应用场景下,不但应考虑区块链的 UTXO 模型与账户模型之间的区别,还应考虑适配器签名是否支持不同算法、不同曲线等问题。最后,对适配器签名进行扩展应用,实现非交互式数字资产托管,并简单介绍了涉及的密码学原语--可验证加密。
参考文献
- Gugger J. Bitcoin-monero cross-chain atomic swap[J]. Cryptology ePrint Archive, 2020.
- Fournier L. One-time verifiably encrypted signatures aka adaptor signatures[J]. 2019, 2019.
- https://crypto-in-action.github.io/ecdsa-blockchain-dangers/190816-secp256k1-ecdsa-dangers.pdf
- Pornin T. Deterministic usage of the digital signature algorithm (DSA) and elliptic curve digital signature algorithm (ECDSA)[R]. 2013.
- Komlo C, Goldberg I. FROST: flexible round-optimized Schnorr threshold signatures[C]//Selected Areas in Cryptography: 27th International Conference, Halifax, NS, Canada (Virtual Event), October 21-23, 2020, Revised Selected Papers 27. Springer International Publishing, 2021: 34-65.
- https://github.com/BlockstreamResearch/scriptless-scripts/blob/master/md/NITE.md
- https://particl.news/the-dex-revolution-basicswap-and-private-ethereum-swaps/
- Camenisch J, Shoup V. Practical verifiable encryption and decryption of discrete logarithms[C]//Annual International Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2003: 126-144.
- Nick J, Ruffing T, Seurin Y, et al. MuSig-DN: Schnorr multi-signatures with verifiably deterministic nonces[C]//Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. 2020: 1717-1731.
- Shlomovits O, Leiba O. Jugglingswap: scriptless atomic cross-chain swaps[J]. arXiv preprint arXiv:2007.14423, 2020.
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。