假设给定ECDSA和Schnorr签名预言机,能够构造模拟器S攻破ECDSA,则仅给定ECDSA签名预言机,能够构造模拟器S攻破ECDSA。但是,ECDSA是安全的。同理,假设给定ECDSA和Schnorr签名预言机,能够构造模拟器S攻破Schnorr签名,则仅给定ECDSA签名预言机,能够构造模拟器S攻破Schnorr签名。但是,Schnorr签名是安全的。因此,在跨链场景下,适配器签名使用了相同曲线,但是签名算法不同,则是安全的。换言之,适配器签名允许一端使用ECDSA,而另一端使用Schnorr签名。 图 2. 相同曲线,不同算法,适配器签名 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. 基于适配器签名的非交互式资产托管 如图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. 来源:金色财经lg...