- A+
公钥YY,如下计算
R^:=r⋅G,R:=r⋅Y,π:=zk{r∣R^=r⋅G,R=r⋅Y},Rx:=f(R)s^:=r−1(hash(m)+Rxx)R^:=r⋅G,R:=r⋅Y,π:=zk{r∣R^=r⋅G,R=r⋅Y},Rx:=f(R)s^:=r−1(hash(m)+Rxx)
则预签名为(R,R^,s^,π)(R,R^,s^,π)。其中,f(R)f(R)是指取RR的横坐标RxRx。预签名表明Alice支付1BTC给Bob。
预签校验: Bob接收该预签名(R,R^,s^,π)(R,R^,s^,π),校验零知识证明。计算Rx=f(R)Rx=f(R),并使用Alice的公钥XX校验预签名
Verify(π,(G,R^)(R,Y))=1,s^⋅R^=hash(m)⋅G+Rx⋅X.Verify(π,(G,R^)(R,Y))=1,s^⋅R^=hash(m)⋅G+Rx⋅X.
一致性原理如下:
s^⋅R^=r−1(hash(m)+Rxx)⋅R^=hash(m)⋅G+Rx⋅Xs^⋅R^=r−1(hash(m)+Rxx)⋅R^=hash(m)⋅G+Rx⋅X
适配签名: Bob基于预签名(R,R^,s^,π)(R,R^,s^,π),输入其私钥yy,如下计算
s:=s^y−1,s:=s^y−1,
则签名为(Rx,s)(Rx,s)。Bob将该签名广播到比特币系统中。
签名校验: 比特币矿工接收签名(Rx,s)(Rx,s),使用Alice的公钥XX,校验以下等式
Rx=f(s−1(hash(m)⋅G+Rx⋅X)).Rx=f(s−1(hash(m)⋅G+Rx⋅X)).
一致性原理如下:
Rx=f(R)=f(r⋅Y)=f(ry⋅G)=f(r(hash(m)+Rxx)−1y(hash(m)+Rxx)⋅G)=f(s−1(hash(m)⋅G+Rx⋅X))Rx=f(R)=f(r⋅Y)=f(ry⋅G)=f(r(hash(m)+Rxx)−1y(hash(m)+Rxx)⋅G)=f(s−1(hash(m)⋅G+Rx⋅X))
因此,Bob在比特币系统中接收到Alice支付的1BTC [Bitcoin交易单2]。
秘密提取: Alice根据预签名(R,R^,s^,π)(R,R^,s^,π)和签名(Rx,s)(Rx,s),如下计算
y′:=s−1s^.y′:=s−1s^.
如果y′⋅G=Yy′⋅G=Y,则令y=y′y=y′;如果−y′⋅G=Y−y′⋅G=Y,则令y=−y′y=−y′。
Alice使用秘密yy生成签名并广播到Bitlayer系统中,提取地址YY中的7wU [Bitlayer交易单2]。
2.2.1 零知识证明zk{r∣R^=r⋅G,R=r⋅Y}zk{r∣R^=r⋅G,R=r⋅Y}
承诺: 证明方选择随机数v←Zpv←Zp,计算承诺
V^:=v⋅G,V:=v⋅Y.V^:=v⋅G,V:=v⋅Y.
挑战: 证明方计算挑战
c:=hash(R^,G,R,Y,V^,V).c:=hash(R^,G,R,Y,V^,V).
响应: 证明方计算响应
z:=v+cr.z:=v+cr.
发送证明π=(R^,G,R,Y,V^,V,z)π=(R^,G,R,Y,V^,V,z)。
验证: 验证方计算挑战c:=hash(R^,G,R,Y,V^,V)c:=hash(R^,G,R,Y,V^,V),然后校验以下2个等式
z⋅G=V^+c⋅R^,z⋅Y=V+c⋅R.z⋅G=V^+c⋅R^,z⋅Y=V+c⋅R.
一致性过程如下:
z⋅G=(v+cr)⋅G=V^+c⋅R^z⋅Y=(v+cr)⋅Y=V+c⋅Rz⋅G=(v+cr)⋅G=V^+c⋅R^z⋅Y=(v+cr)⋅Y=V+c⋅R
3. 问题与解决方案
3.1 随机数问题与解决方案
3.1.1 随机数泄漏问题
Schnorr/ECDSA适配器签名的预签名均对随机数rr进行承诺R^=r⋅GR^=r⋅G。此外,零知识证明中对随机数vv进行承诺V^=v⋅G,V=v⋅YV^=v⋅G,V=v⋅Y。如果随机数泄漏,则会导致私钥泄漏。
具体而言,在Schnorr协议中,如果随机数rr泄漏,则能够根据等式
计算出私钥xx。
同理,在ECDSA协议中,如果随机数rr泄漏,则能够根据等式
计算出私钥xx。
最后,在零知识证明协议中,如果随机数vv泄漏,则能够根据等式
计算出随机数rr,从而进一步根据随机数rr计算出私钥xx。因此,随机数使用完后需立刻删除。
3.1.2 随机数重用问题
对任意两个跨链交易,如果适配器签名协议使用相同的随机数,则会导致私钥泄漏。
具体而言,在Schnorr协议中,如果使用了相同的随机数rr,则以下方程组中仅rr和xx是未知的
因此,可以求解方程组,获得私钥xx。
同理,在ECDSA适配器签名协议中,如果使用相同的随机数rr,则以下方程组中仅rr和xx是未知的
因此,可以求解方程组,获得私钥xx。
最后,在零知识证明协议中,如果使用相同的随机数vv,则以下方程组中仅vv和rr是未知的
因此,可以求解方程组,获得随机数rr,从而进一步解方程组获得私钥xx。
以此类推,不同用户使用相同的随机数,也会泄漏私钥。换言之,使用相同随机数的两个用户,能够求解方程组,获得对方的私钥。因此,应使用RFC 6979解决随机数重用问题。
3.1.3 解决方案:RFC 6979
RFC 6979指定了一种使用DSA和ECDSA生成确定性数字签名的方法,解决了与生成随机值kk相关的安全问题。
传统的DSA和ECDSA签名依赖于每次签名操作随机生成的随机数kk。如果此随机数被重用或生成不当,会危及私钥的安全性。RFC 6979通过从私钥和待签名消息中确定性地导出kk,消除了生成随机数的需求。
这确保了使用相同私钥签署相同消息时,签名总是相同的,从而增强了可重现性和可预测性。
具体而言,确定性的kk是由HMAC生成的。该过程涉及哈希函数(例如SHA256SHA256)对私钥、消息和计数器计算哈希值,
k=SHA256(sk,msg,counter).k=SHA256(sk,msg,counter).
上述等式中,为表达简洁,仅对私钥sksk,消息msgmsg和计数器countercounter计算哈希值,实际RFC 6979中计算过程涉及更多的哈希计算。该等式确保kk对每条消息都是唯一的,同时对于相同的输入具有可重现性,并且减少了与弱或受损的随机数生成器相关的私钥暴露风险。因此,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。虽然一方有公开合约,但是即使使用复杂的链分析工具,也不可能将其追溯到另一条链。
图 1. UTXO与账户模型异构系统跨链原子交换
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签名。
图 2. 相同曲线,不同算法,适配器签名
3.2.3 曲线不同,适配器签名不安全
假设Bitcoin使用Secp256k1曲线和ECDSA签名,而Bitlayer使用ed25519曲线和Schnorr签名。该情况下,不能使用适配器签名。由于曲线不同,导致椭圆曲线群的阶不同,即模系数不同。Bob在Bitcoin系统中将yy适配到ECDSA签名中时,即计算s:=s^+ys:=s^+y。此时,yy的取值空间为Secp256k1椭圆曲线群的标量空间。随后,Alice需要使用yy在ed25519椭圆曲线群上进行Schnorr签名。但是,ed25519曲线余因子为8,且模系数不等于Secp256k1椭圆曲线群的模系数。因此,使用yy在ed25519曲线上进行Schnorr签名是不安全的。
4. 数字资产托管应用
数字资产托管有三个参与方,分别为:买方Alice、卖方Bob和托管方。使用适配器签名能够实现非交互式门限数字资产托管,且在无需交互的情况下实例化门限支出策略的子集。该子集由2种参与者组成:参与初始化的参与者、不参与初始化的参与者,后者称为托管方。托管方不能签署任意交易,而只向支持的其中一方发送秘密。
一方面,托管人只能在几个固定的结算交易中进行选择,而无法与其他参与方之一签署新的交易。因此,这种秘密释放机制使得非交互式门限托管的灵活性不如门限Schnorr签名。另一方面,可以使用门限Schnorr签名设置2-of-3花费策略。但是,门限Schnorr签名协议需要三方运行进行去中心化密钥生成协议。因此,基于适配器签名的资产托管协议具有非交互优势。
4.1 基于适配器签名的非交互式资产托管
图 3. 基于适配器签名的非交互式资产托管
如图4所示,Alice和Bob想要创建一个具有隐形策略的2-of-3交易输出,其中包含一个托管方。取决于条件cc,Alice或Bob可花费该交易输出。如果Alice和Bob之间存在争议,则托管方(公钥为EE,私钥为ee)决定由Alice或Bob获得该资产。
- 创建一个未签名funding交易,将BTC发送给Alice和Bob之间的某2-of-2 MuSig output。
- Alice选择一个随机值tAtA,将某交易的adapator为tA⋅GtA⋅G的Schnorr预签名(R^A,s^A)(R^A,s^A)发送给Bob,该交易为将funding output发送给Bob。Alice同时给Bob发送一个密文,该密文包含对秘密tAtA并将托管公钥EE调整为Ec=E+hash(E,c)GEc=E+hash(E,c)G的\textbf{可验证加密}C=Enc(Ec,tA)C=Enc(Ec,tA)。该过程中,Bob收到Alice的预签名后,加上自己的签名,不满足2-of-2 MuSig,从而无法花费funding output。仅当Bob知道tAtA(由托管方可提供),或Alice另外签署完整签名发送给Bob,才能花费funding output。
- 与之相对应,Bob基于其adaptor secret tBtB,重复步骤(2)。此时Bob所签的交易为将funding output发送给Alice。
- Alice和Bob均验证接收密文的有效性,确认密文是对EcEc对秘密的加密,从而对funding交易签署并广播。可验证加密使得在setup阶段无需托管方参与,且不需要公开合约cc。
- 当有争议时,Alice和Bob可将密文以及条件c发送给托管方,则托管方可实际情况判决,从而使用调整私钥e+hash(E,c)e+hash(E,c)进行解密发送tA/tBtA/tB给Bob/Alice。
如果无争议,则Alice和Bob可按其所想来花费2-of-2 MuSig output。如果存在争议,则任何一方均可联系托管方,并请求其adaptor secret tAtA或tBtB。因此,其中一方在托管方的帮助下,可完成该适配器签名,并广播该结算交易。
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)将离散对数xx切分为多个长为ll的片段xkxk,使得x=∑k2(k−1)lxkx=∑k2(k−1)lxk;
(2)使用公钥YY对片段xk⋅Gxk⋅G进行ElGamal加密{Dk,Ek}={xk⋅G+rk⋅Y,rk⋅G}{Dk,Ek}={xk⋅G+rk⋅Y,rk⋅G};
(3)对每个xk⋅Gxk⋅G创建范围证明,证明DkDk为一个Pedersen承诺xk⋅G+rk⋅Yxk⋅G+rk⋅Y,且其值小于2l2l;
(4)使用sigma协议,证明{sumDk,sumEk}{sumDk,sumEk}是对xk⋅Gxk⋅G的正确加密。
在解密过程中,对{Dk,Ek}{Dk,Ek}解密出每个xk⋅Gxk⋅G,然后穷举搜索出xkxk(取值范围为[0,2l)[0,2l))。
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.
- 我的微信
- 这是我的微信扫一扫
- 我的电报
- 这是我的电报扫一扫