Compact Multi-Signatures for Smaller Blockchains Dan Boneh 1 , Manu Drijvers 2 , Gregory Neven 2 1 Stanford University 2 DFINITY
Bitcoin Blockchain and transactions Input 1 Output 1 Witness Input 2 Output 2 Witness Pointer to previous recipient address & Witness data for output with amount all transactions addr in = H(pk) addr out = H(pkโ) pk, ๐ฝ under pk amount in = 1 BTC amount out = 1 BTC
Saving space is important โข Larger transactions mean higher network and storage requirements โข Current Bitcoin blockchain is almost 200 GB โข Block size is limited โข Limits transaction throughput โข Smaller transactions can mean higher throughput โข Goal: minimize total witness size Input 1 Output 1 Witness using multisignatures Input 2 Output 2 Witness
Multi-Signature Schemes ๐ก๐ ( , ๐๐ ( โ KGen(1 = ) ๐ก๐ + , ๐๐ + โ KGen(1 = ) ๐ก๐ * , ๐๐ * โ KGen(1 = ) Sign ๐๐ ( , ๐๐ * , ๐๐ + , ๐ก๐ ( , ๐ โ Sign ๐๐ ( , ๐๐ * , ๐๐ + , ๐ก๐ * , ๐ โ Sign ๐๐ ( , ๐๐ * , ๐๐ + , ๐ก๐ + , ๐ ฯ ฯ ฯ โข Ver {๐๐ ( , ๐๐ * , ๐๐ + }, ฯ, ๐ = 1/0 โข Every signer must agree to signing m โข Key aggregation : ๐๐๐ = KAgg({๐๐ ( , ๐๐ * , ๐๐ + }) โข Ver ๐๐๐, ฯ, ๐ = 1/0
Recap: Boneh-Lynn-Shacham signatures Let ๐ป ( = ๐ ( , ๐ป * = ๐ * , ๐ป C = ๐ C , with bilinear pairing ๐ FG โข KGen : ๐๐ = ๐ * โข Sign(sk, m) : ๐ = ๐ผ ๐ FG โข Verify(pk, ฯ, m) : ๐ ๐, ๐ * = ๐(๐ผ ๐ , ๐๐)
๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ Naรฏve BLS Multi-signatures Let ๐ป ( = ๐ ( , ๐ป * = ๐ * , ๐ป C = ๐ C , with bilinear pairing ๐ FG K โข KGen : ๐๐ J = ๐ * โข KAgg(pk 1 , โฆ, pk n ) : ๐๐๐ = โ ๐๐ J โข Sign(pk 1 , โฆ, pk n , sk i , m) : ๐ก J = ๐ผ ๐ FG K , ๐ = โ ๐ก J โข Verify(apk, ฯ, m) : ๐ ๐, ๐ * = ๐(๐ผ ๐ , ๐๐๐) PQ Rogue-Key Attack: Adversary chooses ๐๐ = N O RG โ , Adversary can sign for {๐๐, ๐๐ โ } by setting ๐ = ๐ผ ๐ FG Can be mitigated using โproofs-of-possessionโ [RY07]
๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ New BLS Multi-signatures without PoPs Let ๐ป ( = ๐ ( , ๐ป * = ๐ * , ๐ป C = ๐ C , with bilinear pairing ๐ FG K โข KGen : ๐๐ J = ๐ * T K โข KAgg(pk 1 , โฆ, pk n ) : ๐๐๐ = โ ๐๐ J , with ๐ J = ๐ผ ( (๐๐ J , {๐๐ ( , โฆ , ๐๐ V }) T K โข Sign(pk 1 , โฆ, pk n , sk i , m) : ๐ก J = ๐ผ W ๐ FG K , ๐ = โ ๐ก J โข Verify(apk, ฯ, m) : ๐ ๐, ๐ * = ๐(๐ผ W ๐ , ๐๐๐) Uses trick from [Maxwell-PSW18] Thm: secure multi-signature scheme under co-CDH in ROM
Bitcoin Multisig address Bitcoin with multiple ECDSA signatures Bitcoin using our BLS multi-signatures Witness Input Output Witness Input Output Pointer to Pointer to addr in = H(apk) addr in = H(pk 1 , โฆ, pk n ) amount in = 1 BTC amount in = 1 BTC apk , ๐ฝ pk 1 , โฆ, pk n, ๐ฝ 1 , ..., ๐ฝ n 2 group elements 3n group elements
๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ Aggregatable Multi-Signatures Extend multi-signature definition with two additional algorithms โข SigAgg({apk i , m i , ฯ i }): Aggregate a set of multi-signatures into a single object โข AggVerify({apk i , m i }, ฮฃ): Verify that the aggregate multi-signature For our BLS multisignature scheme T K โข Sign(pk 1 , โฆ, pk n , sk i , m) : ๐ก J = ๐ผ W ๐๐๐, ๐ FG K , ๐ = โ ๐ก J โข SigAgg({apk i , m i , ฯ i }): ฮฃ = โ ๐ J โข AggVerify({apk i , m i }, ฮฃ): ๐ ฮฃ, ๐ * = โ ๐(๐ผ W ๐ J , ๐๐๐ J ) Thm: secure aggregatable multisignature scheme under ๐ -co-CDH in ROM
Aggregatable Multi-Signatures in Bitcoin Block of m transactions, each spending from an n -multisig address Bitcoin with multiple ECDSA signatures Bitcoin using aggregatable multi-signatures Input Output Input Output Witness Input Output Input Output Witness Witness m m Input Output Input Output Witness โฎ โฎ โฎ โฎ โฎ โฎ Combined witness contains Combined witness contains ๐ โ ๐ public keys ๐ (aggregate) public keys โข โข ๐ โ ๐ signatures 1 aggregate multi-signature โข โข 1296 KB 216 KB
t -out-of- n wallets โข Multi-signatures always require n -out-of- n , what about other policies? โข Typical threshold wallets have addr = ๐ผ(๐๐ ( , โฆ , ๐๐ V , ๐ข) โข Need to reveal n keys and t signatures โข For small V C , use multi-signatures โข Exhaustively list apk of all t-size subsets root apk 1 apk 2 apk 3 apk 4 apk 5 apk 6
Can we handle arbitrary t, n? Yes! Using a new Accountable Subgroup Multi-signature (ASM) โข Aggregate public key ๐๐๐ โ ๐ป * โข Any subset ๐ = [1, 1, 0, โฆ ] can sign in an accountable way โข Signature ๐ โ ๐ป ( ร๐ป * โข Thm : under ๐ -co-CDH in ROM โข t-out-of-n Bitcoin transaction โข Reveal ๐๐๐ , ๐ , ๐ โข Almost constant: 3 group elements + n bits
๏ฟฝ๏ฟฝ ๏ฟฝ Our ASM Scheme Alice Bob Charlie FG f FG O FG g ๐๐ ( = ๐ * ๐๐ * = ๐ * ๐๐ + = ๐ * T K = ๐ * TFG Key aggregation: ๐๐๐ = โ ๐๐ J Membership keys: ๐๐ ( = ๐ผ * ๐๐๐, 1 TFG ๐๐ * = ๐ผ * ๐๐๐, 2 TFG ๐๐ + = ๐ผ * ๐๐๐, 3 TFG Sign: ๐ก ( = ๐ผ W ๐๐๐, ๐ FG f โ ๐๐ ( ๐ก * = ๐ผ W ๐๐๐, ๐ FG O โ ๐๐ * Combine: (๐ = ๐๐ ( โ ๐๐ * , ๐ก = ๐ก ( โ ๐ก * ) 3 pairings Verify(apk, S=[1,1,0], (k, s)) : ๐ ๐ก, ๐ ( = ๐(โ ๐ผ * ๐๐๐, ๐ , ๐๐๐) โ ๐(๐ผ * ๐๐๐, ๐ , ๐) Jโk
Conclusion โข BLS multi-signatures without PoPs โข Support key aggregation โข Support aggregation of multi-signatures โข Accountable Subgroup Multi-signatures โข Key aggregation โข Any subgroup can create constant size accountable multi-signature โข Supports partial aggregation โข Schnorr multi-signatures without PoPs โข All schemes with PoPs
Thanks! ia.cr/2018/483
Can we handle arbitrary t, n? Yes! Using a new Accountable Subgroup Multi-signature (ASM) โข Aggregate public key ๐๐๐ โ ๐ป * โข Any subset ๐ = [1, 1, 0, โฆ ] can sign in an accountable way โข Signature ๐ โ ๐ป ( ร๐ป * โข Thm : under ๐ -co-CDH in ROM Input Output Witness Pointer to apk, t, ๐ฝ , S addr in = H(apk,t) approx. 3 group elements amount in = 1 BTC
Recommend
More recommend