Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scriptless Scriptの仕組みとポテンシャル

Scriptless Scriptの仕組みとポテンシャル

HashHub Conference 2018で発表したScriptless Scriptの仕組みとポテンシャルのスライドです。

shigeyuki azuchi

July 21, 2018
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. Copyright ©2018 HAW International Inc. all rights reserved. HashHub Conference

    2018 Scriptless Scriptの仕組みとポテンシャル 2018/07/21 株式会社ハウインターナショナル 安土 茂亨
  2. Copyright ©2018 HAW International Inc. all rights reserved. 自己紹介 •

    株式会社ハウインターナショナル CTO • 株式会社chaintope CTO • BitcoinプロトコルのRuby実装「bitcoinrb」 • Open Assets ProtocolのRuby実装 「openassets-ruby」 • Bech32のRuby実装「bech32rb」 • 共著 「ブロックチェーン・プログラミング 仮想通貨入門」 • ブログ「Develop with pleasure!」 https://techmedia-think.hatenablog.com/
  3. Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Scriptとは?

    Script(スマートコントラクト)を書くことなく、 署名技術のみでコントラクトを実現するコンセプト • 2016年 Tom Elvis JedusorがIRCにmimblewimbleというコンセプトを投稿 ◦ Txにインプットとアウトプットを持つがScriptは持たず、署名のみでコント ロールされる新しいブロックチェーンの設計 https://scalingbitcoin.org/papers/mimblewimble.txt ◦ Scriptを持たないままScriptの機能をどう持たせるか? • 2017年 Andrew PoelstraがScriptless Scriptというコンセプトを発表 https://download.wpsoftware.net/bitcoin/wizardry/mw-slides/2017-03-mit-bi tcoin-expo/slides.pdf ◦ スマートコントラクトをデジタル署名にエンコード ▪ マルチシグ ▪ クロスチェーンAtomic Swap ▪ Lightning Networkのコントラクト
  4. Copyright ©2018 HAW International Inc. all rights reserved. Bitcoin Scriptを使ったマルチシグ

    Bitcoinを使用する際に複数個の署名を必要とする仕組み 3人のうち2人の署名があればBitcoinを使用できる アリス ボブ キャロル 2 <アリスの公開鍵> <ボブの公開鍵> <キャロルの公開鍵> 3 CHECKMULTISIG 2-of-3のマルチシグスクリプト scriptPubKey 0 <アリスの署名> <キャロルの署名> scriptSig
  5. Copyright ©2018 HAW International Inc. all rights reserved. 前提となるSchnorr 署名

    公開鍵と署名の集約特性を持つデジタル署名方式 • 楕円曲線のジェネレータ: G • 秘密鍵: x • 公開鍵: P = xG • ハッシュ関数: H() • メッセージ: m 【署名の生成】 1. ランダムなnonce k を選択 2. kを秘密鍵として楕円曲線上の点R = kGを計算 3. s = k + H(P, R, m)x を計算 4. (R, s)が署名データ 【署名の検証】 sG = R + H(P, R, m)P が成立するか検証 Bitcoinへの導入の提案もスタート https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki
  6. Copyright ©2018 HAW International Inc. all rights reserved. Schnorr でマルチシグ

    • 鍵ペア P1 = x1G • nonce R1 = k1G • 鍵ペア P2 = x2G • nonce R2 = k1G マルチシグの公開鍵 P = P1 + P2 にコインをロック ※Pに対応する秘密鍵は誰も知らない Pにロックされたコインをアンロックする際の署名 (署名に使用する R = R1 + R2) ① s1 = k1 + H(P, R, m)x1 を計 算 ① s2 = k2 + H(P, R, m)x2 を計 算 ② s = s1 + s2 = k1 + k2 + H(P, R, m)(x1 + x2)を計算 署名データは(R, s) ※ 署名は各ユーザーが計算した各 s値の加算することで計算できる ③ sG = R + H(P, R, m)P を検証
  7. Copyright ©2018 HAW International Inc. all rights reserved. Scriptlessマルチシグのメリット •

    母数が巨大なマルチシグであっても、ロックスクリプトは 単一の公開鍵になる。 • アンロックする際に必要な署名は、署名者数分の署名は 必要なく、単一の署名のみ。 • ブロックチェーン上のトランザクションを見ても通常の公開 鍵宛の支払いトランザクションに見え、マルチシグを使っ ているかどうかは当事者以外分からない。 ※ Rogue-key攻撃への対応は必要
  8. Copyright ©2018 HAW International Inc. all rights reserved. Bitcoin Scriptを使ったAtomic

    Swap HTLC(Hashed Time Lock Contract) シークレットとタイムロックを利用したAtomic Swapプロトコル アリスはLitecoin上でシークレットAを公開してLTCを入手し、 ボブは公開されたAを使ってBTCを入手する。 ※コインを入手する際にスクリプトは公開されブロックチェーンに記録されるため、 HTLCを行ったことは誰もが知ることになる アリスはBitcoinを以下のアンロック条件のスクリプトに送る。 • H(A)のプリイメージ=シークレットAが分かればボブは BTCを入手できる。 • 10日経過したらアリスはBTCを入手できる。 Secret A H(A) ボブはLTCを以下のアンロック条件のコントラクトに送る。 • H(A)のプリイメージ=シークレットAが 分かればアリスはLTCを入手できる。 • 5日経過したらボブはLTCを入手できる。 BTC/LTCを交換
  9. Copyright ©2018 HAW International Inc. all rights reserved. Adaptor Signature

    Atomic Swapで必要なハッシュのプリイメージの交換を 代替するのがAdaptor Signature • 通常のSchnorr署名 (R, s) : s = k + H(P, R, m)x • Adaptor Signature (R, s’, T): s’ = k + t + H(P, R, m)x ※いずれもRは同じ値 Adaptor Signature s’ と 署名 s が揃うと t が計算できる s’ - s = t T = tG → tがプリイメージ、Tがハッシュの代替
  10. Copyright ©2018 HAW International Inc. all rights reserved. ③ アリスはランダムなシークレットt

    (T = tG)を生成し、マルチシグの 署名を作成するヒントが入ったAdapter Signatureを作ってボブに送る。 ※ 両方のチェーンでそれぞれのPとRを使って同様のことを行う。  このとき同じ t を使用する。 s’ = k1 + t + H(P, R, m)x1 Adaptor Signatureを使ったAtomic Swap BTC/LTCを交換 (R, s', T) ②各チェーンで相手に送金する未署名のTxを作成 T = tG ④ ボブはマルチシグの署名データの一部をアリスに渡す sB = k2 + H(P, R, m)x2 ⑥ ボブはアリスの署名 s を使って t の値を知る。 t = s’ + sB - s t が分かるとマルチシグをアンロックするのに必要な アリス側の署名を計算できる。 sA = s’’ - t これでもう1方のチェーンのコインを入手する。 ⑤アリスはボブから受け取ったsBを使って、マルチシグの署名を完成させる。 s = s’ + sB - t = k1 + k2 + H(P, R, m)(x1 + x2)   署名(R, s)を完成させコインを入手するTxをブロードキャストする。 鍵ペア P1 = x1G nonce R1 = k1G 鍵ペア P2 = x2G nonce R2 = k2G マルチシグ公開鍵 P = P1 + P2 nonce R = R1 + R2 (※ P, R は各チェーンで異なる) ① P 宛にBTCをロック ① P’ 宛にLTCをロック Tx Tx’ sB Tx’ (R, s) t
  11. Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Atomic

    Swapのメリット • 各チェーンでAtomic Swapを行うトランザクションは通常 の公開鍵宛の支払いトランザクションにしか見えず、 Atomic Swapが行われたかどうか当事者以外は分から ない。 • スクリプトが無い分トランザクションサイズが若干減少 ※ Rogue-key攻撃への対応は必要 ※ OP_CLTVを使ったタイムロックの制限はできないので、 予めnLocktimeをセットした払い戻しTxの準備が必要。
  12. Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Script

    with ECDSA • 2017年にYehuda Lindellが発表した論文 Fast Secure Two-Party ECDSA Signing https://eprint.iacr.org/2017/552.pdf • ↑をベースに2018年にPedro Moreno-Sanchezが ECDSAでScriptless Scriptを実現する論文を発表 Scriptless Scripts with ECDSA https://lists.linuxfoundation.org/pipermail/lightning-dev/a ttachments/20180426/fe978423/attachment-0001.pdf
  13. Copyright ©2018 HAW International Inc. all rights reserved. ECDSA署名 •

    秘密鍵: x • 公開鍵: P = xG • メッセージ: m • ハッシュ関数: H() 【署名の生成】 1. ランダムなnonce k を選択。 2. kを秘密鍵とした楕円曲線上の点 R = kGを計算。 3. 点Rのx座標をrとする。 4.         を計算 5. 生成した (r, s)がECDSAの署名データ。 【署名の検証】
  14. Copyright ©2018 HAW International Inc. all rights reserved. ECDSAでマルチシグを構成するポイント 署名(r,

    s)の内、秘密鍵を使った計算をするのはsの計算↓ 秘密鍵xを2者の秘密鍵から計算する値にすると、署名は単一 だが、有効な署名を生成するためには2者の秘密鍵を必要とす るマルチシグを構成することができる。 x = アリスの秘密鍵 × ボブの秘密鍵 ※両者がお互い自分の秘密鍵を明らかにすることなく、 sを計算できる必要がある
  15. Copyright ©2018 HAW International Inc. all rights reserved. Pにロックされたコインをアンロックするすためには が計算できればいい

    ECDSAマルチシグのロック 鍵ペア P1 = x1G nonce R1 = k1G 鍵ペア P2 = x2G nonce R2 = k2G P1, R1, P2, R2を共有 P = x1 ・ P2 を計算 R = k1 ・R2 を計算 P = x2 ・ P1 を計算 R = k2 ・R1 を計算 PとRは同じ点になる P宛にコインを送金するとマルチシグへのロックとなる
  16. Copyright ©2018 HAW International Inc. all rights reserved. 秘密計算で署名値を算出 ①アリスは、Paillier暗号用の鍵ペアを生成(

    priv, pub)  ※Paillier暗号は加法準同型性がある暗号スキーム ②pubを使ってアリスの秘密鍵 x1を暗号化Enc(x1)し、 pubと一緒にボブに送信 Enc(x1) pub ③ ボブは、以下の計算をして pubで暗号化  Enx(x1)を使って以下を計算    c3 = c1⊕c2を計算して、アリスに送る。 ④ アリスはc3を復号して s’ を計算 ⑤ s’をk1^-1 するとアンロックに必要な署名値 s が手に入る 両者ともに秘密鍵 x1, x2を明らかにすることなく、 マルチシグのアンロックに必要な署名値を計算できる。 1
  17. Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Script

    with ECDSA • ECDSA自体にSchnorrのような鍵・署名の集約特性は ないが、準同型性のある暗号を利用した秘密計算を することで、両者の秘密情報を必要とする署名を生成 • マルチシグ以外に、Schnorrと同様、 Adaptor Signatureを使ったAtomic Swapが可能。 • Lightning Networkへの適用も 「Multi-Hop Locks for Secure, Privacy-Preserving and Interoperable Payment-Channel Networks」 https://eprint.iacr.org/2018/472.pdf
  18. Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Scriptのメリット

    • Privacy/Fungibility コントラクトの中身が公開されることはなく、ブロックチェーン 上では通常の支払いと区別できない • (ちょっとした)Scalability ◦ トランザクションサイズの削減 ◦ スクリプト評価のコスト削減 • 適用性/互換性 デジタル署名技術をベースにした技術なので、ECDSAや Schnorrが利用可能なブロックチェーンであれば適用可能 (※ ECDSA版であれば各チェーンで今すぐ利用可能)