DEIM Forum 2019 I6-4

取引額を秘匿したブロックチェーンにおける取引者間合意による資産売買プロトコル
安坂 祐紀†

渡辺知恵美††

天笠俊之†††

北川 博之†††† 筑波大学大学院システム情報工学研究科 〒 305–8573 茨城県つくば市天王台 1–1–1†† 筑波大学図書館情報メディア系 〒 305–8550 茨城県つくば市春日 1–2††† 筑波大学計算科学研究センター 〒 305–8573 茨城県つくば市天王台 1–1–1
E-mail: †yuki@kde.c ー s.tsukuba.ac.jp, ††chiemi@slis.tsukuba.ac.jp,†††{amagasa,kitagawa}@cs.tsukuba.ac.jp
あらまし ブロックチェーンは，複数の参加者間で中央サーバを持たずに取引データを一貫して共有する技術である．
取引額や所持金を秘匿するプライバシー保護プロトコルにおいては，取引者以外の参加者からは取引の正当性のみの確認しかできないため，意図しない取引が承認されてしまう恐れがある．我々は利息を考慮した分割払いの資産売買を想定したが，その実現には資産売買の契約に関する事前合意プロトコルと送金に関する事前合意プロトコルの 2 段階が必要であり，その一貫性を保証する必要がある．そこで本稿では，2 段階の取引者間事前合意を用いて，取引額と所持金を秘匿した安全で一貫性のある資産売買プロトコルの提案を行う．
キーワード ブロックチェーン, プライバシ保護, 電子商取引
匿し，ゼロ知識証明によって取引に関係ない第三者でも検証可

1 はじめに近年，Bitcoin [17] をはじめとする仮想通貨並びに Bitcoin を実現する分散台帳共有技術であるブロックチェーンが注目を集めている．Bitcoin のような不特定多数の Peer が参加することができるパブリックブロックチェーン以外にも，許可されたPeer のみが参加可能なプライベートなネットワークを構築す
る，よりエンタープライズ向けのプライベートブロックチェー
ンも開発が進んでいる. また，仮想通貨以外にも資産売買や金融・証券取引，更には Internet of Things のシステムにおけるユースケースの検討とその実証実験も多く行われている.
ブロックチェーンでは，送金や資産移動などの記録がトランザクションとして台帳に書き込まれる．全参加者が中央サーバを持たない完全な Peer-to-Peer のネットワークに属し，全員が台帳のコピーを持つことで一貫した情報の記録を全ての参加

Peer で共有する．不正な記録がないかは第三者（この場合は，取引に参加していない別の Peer）が監視することができる．またブロックチェーンはアドレスが口座番号の役目を果たしており，そのアドレスが誰のものかという個人情報には結びつかな
いため匿名性を保証する．
しかしながら，全てのトランザクションは全参加 Peer に公開されるため, 資産管理や金融などでの使用を検討する際にはトランザクション内容の秘匿化をする必要がある．例えば不動産の売買において，原則取引価格は非公開である．その際に取引額を明かさなければならない一方で，アプリケーションによっては取引額は第三者の秘匿が必要な場合や, 取引額の推定を防能なブロックチェーンシステムを提案している．しかしこれらのシステムでは，トランザクション内容が秘匿されているために取引者間で事前に取り決められていた取引内容と異なる内容のトランザクションが発行されるケースがある．そのためシス
テム内で事前合意をするプロセスを設ける必要がある．このような事前合意がプロセスに組み込まれていないことにより生じる問題の例として CoinCheck 1 の NEM [4] 流出事件が挙げられる．この事件では約 580 億円分の NEM がダークウェブサイ
トを通じてほぼ全て別の仮想通貨へと換金された．盗難の犯人は不特定多数に対して NEM を送金することで追跡を困難にした．トランザクション発行プロセスに取引者間の事前合意が組み込まれることにより，このような抜け道を防ぐことができる．先行研究 [19] では，取引者間で事前に合意を取った上で，取引額及び所持金を秘匿するプロトコルを提案した．しかし，プロトコルは単純な送金にのみ対応しており，資産の売買や分割払いなどの実世界での使用については考慮されていない．

Narula [15] らの研究や Chain [1] では，資産売買の機密トランザクションを提案しているが，利息を考慮した分割払いなどには対応していない．そこで本稿では，取引者間事前合意を応用
し，資産の売買契約の事前合意に基づいた，分割払いに対応したブロックチェーンの資産売買プロトコルを提案する．資産売買の契約に関する事前合意と送金に関する事前合意の 2 段階合意の一貫性を保ちつつ，取引額と所持金を秘匿し，安全性を保証する．
本稿の構成は以下のようになっている．まず，2 節で関連研止するための各参加 Peer の所持金秘匿の必要も考えられる．

Sasson ら [16] や Kosba ら [14] はトランザクション内容を秘

1：仮想通貨取引所 Coincheck はハッキングされ，約 5 億 NEM [4] を盗難された．

究について述べ，3 節で本稿を説明する上で必要となる前提知

表 1 関連研究との比較
第三者 Peer

事前合意

資産の分割払い

提案手法

無

有

有

zerocash [16]

無

無

無

Hawk [14]有無無Solidus [10]

有

無

無

Ubin [5]有無無Enigma [18]無 (ただし oﬀ-chain) 無無識を，4 節で本稿の問題設定について述べる．次に，5 節で提案手法について述べ，6 節にて安全性評価，7 節で評価実験について述べる．最後に 8 節でまとめと今後の課題について述べる．

2 関連研究代表的なブロックチェーン基盤に Bitcoin [17]，Ethereum [2]，zkLedger [15] 無

無

無

無

無

無

Chain [1]Hyperledger Fabric [3] がある．[17] や [2] は不特定多数が参加可能なパブリックブロックチェーン基盤であるのに対し，[3] はすことにより一貫性を実現している．一方，[1] では，データを許可された参加者（Peer）のみ参加可能なプライベートブロッ

秘匿した UTXO(Unspent Transaction Output) モデルによりクチェーン基盤である．[3] にはプライベートデータを扱うため資産の二重支払いを防いでいる．

の multichannel という仕組みがあり，ネットワークを分ける

表 1 に本稿の提案手法と関連研究の比較を示す．いくつかのことによりプライバシーの保護を実現している．しかし，ネッ

関連研究 [16] [15] [1] では，信頼できる第三者 Peer を必要としトワークに属している他の Peer からはトランザクション内容

ないものもあるが，事前合意には対応していない．また，[15] [1]が見えてしまう．

に関しては資産移動を想定しているが，資産の売買及び利息を

Sasson ら [16] は，仮想通貨 Bitcoin をベースに非対話型ゼロ知識証明の技術である zk-SNARKs を用いて，匿名仮想通考慮した分割払いには対応していない．

貨 zerocash を提案した．現在は Zcash [6] として実用化され3 前提知識ている．また仮想通貨以外のトランザクションデータの秘匿

3. 1 楕円 ElGamal 暗号に関する研究は Kosba ら [14] を筆頭に数多く取り組まれている．Kosba らはトランザクション内のプライベートデータ
を semi-honest [12] な第三者 Peer である Minimally trusted

manager に検証させ，非対話型ゼロ知識証明によりその正当性を示すことでトランザクションの秘匿を実現する Hawk を提案した．また Ceccetti ら [10] は，より現実の金融システムに適応するため，銀行間中継台帳として銀行に属しているユーザ間のトランザクションを完全に秘匿するフレームワークである

Solidus を提案した．シンガポール中央銀行 (MAS) [5] は匿名性のあるリアルタイムグロス決済システムを開発するプロジェ

本稿では，所持金及び取引額の暗号化に楕円 ElGamal 暗号 [13] を利用する．
楕円 ElGamal 暗号は，有限体上の ElGamal 暗号 [11] を楕円
曲線上で表した暗号である．平文を m，有限体 Fp 上の楕円曲線

C のベースポイントを G，秘密鍵を x として公開鍵 P := xGで暗号化する．m の暗号文を E(mG) とすると，暗号化は以下の式で表すことができる．

E(mG) = (mG + rP, rG) = (c1, c2)(1)

クトを進めている．取引を行う二者は個別にプライベートネッ

こ こ で ，秘 密 鍵 x を 求 め る た め に は 楕 円 離 散 対 数 問 題

トワークを作り，その全てのプライベートネットワークに MAS(ECDLP) を解く必要があり，それは非常に難しいという仮が入ることで，決済のネッティングを行う．これらの手法は実定の元で安全である．

用的な構成になっているが，それぞれ信頼できる第三者 Peer

また平文を m1 , m2 ，暗号文をそれぞれ E(m1 G) および（Trusted Third Party）として Minimally trusted manager 及E(m2 G) とすると，以下の式 (2) のように乱数 r1 + r2 を用い

び fully trusted な銀行間を前提としている．Zyskind ら [18] はて m1 + m2 を暗号化した値とみることができる．このように

oﬀ-chain でセキュアマルチパーティ計算を使用することでデー

楕円 ElGamal 暗号は m1 + m2 を暗号化したまま計算すること

タのプライバシー保護を実現する Enigma を開発した．このシができる，加法準同型性を持つ．

ステムでは oﬀ-chain で秘密計算を行なっているが，プライベー
トネットワークでの使用を考えると関係者以外に要配慮情報が渡る事は望ましくない．
一方，[15] らの研究や [1] は信頼できる第三者 Peer や外部資E(m1 G) + E(m2 G)= (m1 G + r1 P, r1 G) + (m2 G + r2 P, r2 G)

源を必要としないシステムモデルを提案している．また，これ= ((m1 + m2 )G + (r1 + r2 )P, (r1 + r2 )G)らの研究では資産を扱うことも想定されている．[15] では，資= E((m1 + m2 )G)

産移動のトランザクション (但し，資産として想定されているのは複数の通貨) に全ての参加 Peer の資産の増減を含め，そのトランザクションの資産の合計額が 0 となること，つまりネッ
トワークでの総資産額が不変であることを，ゼロ知識証明で示(2)

3. 2 Hyperledger Fabric
本稿では，プライベートブロックチェーン基盤 Hyperledger

Fabric ver 1.3 [3] を用いる．Hyperledger Fabric は数多くのプ
ロジェクトに採用されており，Go，Java，JavaScript の言語に

位でまとめられる．ブロックはその直前に発行されたブロックのハッシュ値を持つ，チェーン構造になっている．そのため，
仮にブロック内のトランザクションの一部が改竄されても検知することができる．
ワールドステート:WS
全ユーザ ui の取引後の最新の所持金を保存するステート DB．
全 Peer で同じ内容のコピーを持つ．データベースには，⟨ui ,bi ⟩ のように格納される．
チェーンコード
図1

通常のトランザクションの流れも対応していることから拡張性があると考えられる．また，コンセンサスアルゴリズムに PBFT [9] を用いており，Proof ofWork では担保することのできないファイナリティを確保することができるため採用した．本節では，プライベートブロック
チェーン基盤 Hyperledger Fabric v1.3 の概要について送金ト
ランザクションを例に紹介する．

3. 2. 1 トランザクションのデータ構造
Hyperledger Fabric では，チューリング完全なプログラミン
グ言語によって記述された，チェーンコード（スマートコントラスト）によりトランザクションが発行される．本稿では必ず取引額の入力値と出力値の一貫性を保つ，UTXO ライクなデー
タ構造のトランザクションを発行することを想定する．

3. 2. 2 ブロックチェーンの構成要素
ブロックチェーンの構成要素は以下の通りである．
ユーザ
ユーザ ui はクライアントアプリケーションを通じて，ネット
ワークに参加する Peer Pi に接続する．なお，ユーザとアカウ
ントは 1：1 対応であると仮定する．

Peer
Hyperledger Fabric のネットワークは次の二種類の Peer から構成される．
（ 1 ） トランザクションを発行可能な Peer: Pi
ユーザ ui （各個人・機関）の保有するストレージから構成さ

Fabric のスマートコントラクトプログラム．トランザクションと紐づけられ，実行することで WS を更新する．

3. 2. 3 トランザクション処理の流れ
Hyperledger Fabric における資産売買トランザクションの一例の流れについて図 1 に示す．ここで，トランザクションプロ
ポーザル tran-proposal は (Tj , us,j , ur,j , amtj ) を表しており，(T1 , A 社, B 社, 10 億円) の様なトランザクションプロポーザルが発行される．なお，この tran-proposal を発行するのは取引者のいずれかであり，通常は送金者が発行するため，今回は us,jを発行者とする．まず，us,j はネットワーク内の他 Peer にト
ランザクションプロポーザル tran-proposal を送る (図 1 (1))．

tran-proposal を受け取った各 Peer はそれぞれトランザクショ
ンの検証を行う．ここでの検証事項としては，送金者 us,j は取引額の支払いが可能であるかどうか，つまり取引額以上の所持金を保有しているかどうかであり，WS を確認することにより検証することができる．検証できた場合には署名 Sigi を付して tran-proposal の送信者に返す (図 1 (2))．署名が事前に定められた一定数 (例:ネットワークの 2/3) 集められ，エンドー
スメントポリシーに規定された合意を取った後に，トランザ
クション transaction := (Tj ，us,j ，ur,j , amtj ，S) を発行する(Orderer に送る)(図 1 (3))．次に，Orderer は規定の署名 (合意) が集められていることを確認した後，ブロックを生成し (図1 (4))，ネットワーク全体にブロードキャストする (図 1 (5))．
ブロックを受け取った Peer はそれぞれ検証を行い，自身の持つ台帳にブロックを追加，及び取引者 (この場合は，us,j 及びur,j ) の WS を更新する (図 1 (6))．

れる．
（ 2 ） ブロックを生成する特殊な Peer: Orderer
トランザクション

4 問題設定Peer Pi はトランザクションを発行する上で，最初にトランザ先行研究 [19] の事前合意プロトコルは送金にのみ対応しておクションプロポーザルを全体に送り，承認された場合には実際

り，資産の売買やその際の利息を考慮した分割払いには対応しにブロックに書き込まれるトランザクションを発行する．

ていない．そのため既存のプロトコルを拡張した上で，資産売（ 1 ） トランザクションプロポーザル

買契約の合意プロトコルと支払い (送金) プロトコルを紐付け，ユニークな ID を Tj ，送金者を us,j ，受取者を ur,j ，取引額を一貫性を保つ必要がある．本稿で扱う問題をまとめると以下のamtj として，tran-proposal :=(Tj , us,j , ur,j , amtj ) とする．

通りである．

（ 2 ） トランザクション
参加ユーザ ui による署名を Sigi ，その集合を S とすると，ト
ランザクション transaction:=(Tj , us,j , ur,j , amtj , S) とする．
ブロック
複数のトランザクションは Orderer によってブロックという単•取引者間で資産売買の契約内容に合意したことを第三者

Peer は検証可能である．
•

事前合意が成立した資産売買契約トランザクション及び送金トランザクションについて，取引に関係しない第三者 Peerはトランザクションの内容を知ることなく，それが正当なトラワールドステート

ンザクションであることを検証可能である．

全ユーザ ui の暗号化された最新の所持金を保存する．データ•

取引に関係しない第三者 Peer は買い手による滞納を検ベースには，⟨ui , Encpk (bi )⟩ のように格納される．

証可能であり，ペナルティなどの適切な処理を行うことができ

トランザクションる．

取引額 amtj を暗号化に使用する乱数を rj ，取引額 amtj が 0以上であることを示すゼロ知識証明の署名を σamtj ，取引後のus,j の所持金 bs,j − amtj >= 0 のゼロ知識証明の署名を σbs,j と5 提案手法
本稿では 2 段階の取引者間事前合意を用いて，取引額と所持金を秘匿した，安全で一貫性のある資産売買プロトコルの提案

して，（Tj , us,j , ur,j , Encpk (amtj ), Sigs,j (Encpk (amtj )), σamtj ,σbs,j , S ）と表される．

を行う．まず，資産売買契約フェーズにて，メタ的な合意として資産売買契約に関する合意を取引者間で行い，全体に対してトランザクションを発行する．トランザクションが参加者間で検証されたら，支払いフェーズへ移行する．支払いフェーズでは，資産売買契約フェーズにて合意された所定の分割回数で支払いを行う．また，先行研究である取引者間事前合意プロトコ
ル [19] を用いることで，安全に送金を行う．まず，先行研究の説明を行い，先行研究からの拡張点を挙げて，提案プロトコルの説明を行う．

5. 1 取引者間事前合意プロトコル
取引者間事前合意プロトコル [19] は取引者間で事前に合意を

図 2 事前合意のプロセス取った上で，全参加者の所持金と送金トランザクションの取引額を秘匿しつつ，信頼できる第三者を必要とせずにトランザク

5. 1. 2 プロトコルの流れ

ションを検証可能にするブロックチェーンのプロトコルである．

本プロトコルは事前合意と全体へのトランザクション発行の以降で，3. 2. 2 節からの変更点及び，プロトコルの処理の流れ

2 フェーズに分かれている．事前合意プロトコルの流れを Algo-について説明する．

rithm 1 と図 2 に示す．受取者の ur,j が事前トランザクション

5. 1. 1 変 更 点

プロポーザル Pre-tran-proposal（Tj , us,j , ur,j , amtj , rj ) を送Peer

金者 us,j に送る (1-3 行目)．us,j は Pre-tran-proposal を受け

全参加 Peer Pi は共通の楕円 ElGamal 暗号の公開鍵 pk を保持取ったら，P Ss,j から直前に自身の所持金を暗号化するのに利用する．ここで，鍵管理は公開鍵基盤 (PKI: Public Key Infras-

した乱数 ri を参照し，乱数 ri − rj で取引後の所持金の平文であtructure) などの信頼されている組織が行うこととし，秘密鍵

る bs,j −amtj を暗号化する（4-7 行目）．次に，取引後の us,j のは参加 Peer は持つことはできない．

所持金 bs,j − amtj が 0 以上であることを示す範囲証明 (Range

プライベートステート

Proof) σbs,j を生成する (8 行目)．更に，取引額 amtj を rj をPeer Pi のローカルステート DB をプライベートステート P Si

用いて暗号化し，署名を付す（Sigs,j (Encpk (amtj )）．これはとして，以下を保存する．

後に ur,j が全体にトランザクションプロポーザル tran-proposal（ 1 ） 所持金 bi （平文）を送る際に，us,j が取引に合意したことを示すために用いる (9（ 2 ） bi の暗号化に使用した直前の乱数 ri

行目)．そして us,j は（σbs,j , Sigs,j (Encpk (amtj )）を ur,j へ

データベースには，⟨ui , bi , ri ⟩ のように格納される．

送る (10-11 行目)．受取者 ur,j は事前トランザクションプロポー

ri に関しては取引を行う度に，更新されていく．例えば ui がザル pre-tran-proposal を送った後に WS から Encpk (bs,j ) を参送金する際には，加法準同型性を用いて Encpk (bi − amtj ) を計照し，乱数 rj を用いて amtj を暗号化する (12-14 行目)．続い算する．ここで，Encpk (bi ) と Encpk (amtj ) はそれぞれ，乱数て，Encpk (bs,j )⊖Encpk (amtj ) を計算し，Encpk (bs,j −amtj )ri , rj を用いて暗号化された値である．そのため，計算後の最新と Encpk (bs,j ) ⊖ Encpk (amtj ) が等しくなることを，式 3 にての ui の所持金は，3. 1 で紹介する楕円 ElGamal 暗号の性質よ検証する (15-17 行目)．等しくならなかった場合は，σbs,j が有り，乱数 ri − rj を用いて暗号化された値となる．同様に ui が受効な証明でなかったことを意味し，トランザクションは abort

取する際には，同様に加法準同型性を用いて Encpk (bi + amtj )される (18-22 行目)．

の計算を行い，この暗号文に使用された乱数は ri + rj へと更新される．本稿ではこの楕円 ElGamal 暗号の特性を利用して，乱数を取引の度に更新されていく秘密鍵のように使う．

Enc(bs,j − amtj )∼= Enc(bs,j ) ⊖ Enc(amtj )σbs,k ) とする．
(3)

WS
ユーザ ui の暗号化された最新の所持金と併せて，各資産の前 Owner，現 Owner，利息も含めた総支払額を暗号化した値，既に支払い済みの金額を暗号化した値，WS の最新更Algorithm 1 事前合意

新日 ⟨asset, preOwner, curtOwner, price, payed, date⟩ を記録

Input: Tj , us,j , ur,j , amtj , rj

する．

Output: consensus
1: procedure at the ur,j
2: sends pre-tran-proposal := (Tj , us,j , ur,j , amtj , rj )3: end procedure
4: procedure at the us,j
5: retrieves (Tj , us,j , ur,j , amtj , rj ) from pre-tran-proposal
6: executes query (bs,j , rs,j ) from P Ss,j5. 3 資産売買契約フェーズ
資産売買契約フェーズの処理を Algorithm2 に，概要図を図3 に示す．まず，買い手である ub,j から売り手 us,j に対して，
事前資産売買トランザクションプロポーザル pre con-tran-

proposal :=(Tj , us,j , ub,j , pricej , assetj , installmentj , rj ) を

7: encrypts (bs,j − amtj ) with random number (rs,j − rj )送 る (1-3 行 目)．こ こ で ，pricej は 資 産 の 価 格 ，rj は 暗 号

8: σbs,j ← RangeProof ((bs,j − amtj ) >= 0)

化 に 用 い る 乱 数 と す る ．売 り 手 us,j は 受 け 取 り 後 に 検 証

9: signs Encpk (amtj ) with us,j ’s secret key

を行い，契約内容に合意する場合は利息及び，利息 irj を

10: sends Sigs,j (Encpk (amtj )), σbs,j

用 い て 計 算 し た 総 支 払 額 を 署 名 と 共 に 買 い 手 ub,j へ 返 す

11: end procedure(Tj , irj , Sigs,j (Enc(t-price)), Sigs,j (assetj ))(4-10 行目)．これ

12: procedure at the ur,j
13: executes query Encpk (bs,j ) from WS
14: encrypts amtj with rj

をもって，売り手 us,j の資産売買契約への合意とする．尚，利息を考慮した総支払額は式 4 によって求める [7]．

15: computes Encpk (bs,j ) ⊖ Encpk (amtj )16: retrieves Encpk (bs,j − amtj ) from σbs,j
17: if Encpk (bs,j ) == Encpk (amtj ) then18:

consensus = true

19: else
20:

t-price=pricej × irj × (1 + irj )installmentj × installmentj(1 + irj )installmentj − 1(4)consensus = false

21: end if
22: end procedure

5. 2 先行研究からの拡張
先行研究 [19] の単純な送金における事前合意プロトコルから利息を考慮した資産売買プロトコルへの拡張に伴って，下記の項目を拡張する．
トランザクション
取引者間の合意のためのトランザクションプロポーザルはそれ
ぞれ 5. 3 節，5. 4 節で説明する．ここでは，全体に対して発行される資産売買トランザクションプロポーザル及び，事前トラ
ンザクションプロポーザルについて述べる．
（ 1 ） 資産売買トランザクションプロポーザル

図 3 資産売買契約フェーズの概要

ユニークな ID を Tj ，売り手を us,j ，買い手を ub,j ，資産をassetj , 総支払額を t-price ，支払い回数を installment として，

買 い 手 ub,j は 売 り 手 us,j か ら 利 息 を 考 慮 し た 総 支

con-tran-proposal :=(Tj , us,j , ub,j , Sigs,j (Enc(t-price)),

払 額 及 び 署 名 を 受 取 り，検 証 を 行 う．問 題 が な け れ

Sigs,j (assetj ), installment) とする．

ば 資 産 売 買 ト ラ ン ザ ク ション プ ロ ポ ー ザ ル con-tran-（ 2 ） 支払いトランザクションプロポーザル

proposal :=(Tj , us,j , ub,j , Sigs,j (Enc(t-price)),

ユ ニ ー ク な ID を Tk ，総 支 払 額 を 支 払 い 回 数 で 割った

Sigs,j (assetj ), installmentj ) をネットワーク全体へと発行すも の t-price/installment を amtk と し ，そ の amtk の 値

る．この con-tran-proposal を受け取った全ユーザ ui は，それが 0 以 上 で あ る こ と を 示 す 範 囲 証 明 と ，支 払 後 の 送

ぞれ内容を検証し，署名 Sigi を付して ub,j に送り返す．ub,j

金 者 (買 い 手)us,k の 所 持 金 が 0 以 上 で あ る こ と を 示 すは受け取った署名の集合 S がエンドースメントポリシーを満た

範 囲 証 明 を そ れ ぞ れ ，σamtk ，σbs,k と し て ，tran-proposal

していることを確認し，transaction として (tran-proposal, S):= (Tk , us,k , ur,k , Sigs,k (Enc(amtk )), Sigs,k (assetk ), σamtk ，を Orderer へ送る．Orderer からトランザクションが発行される際に，併せて WS 内の asset も更新される．

ため，暗号文と平文のルックアップテーブルも生成される恐れはない．暗号の詳細な秘匿性分析は本稿では割愛する．

Algorithm 2 事前資産売買契約
Input: Tj , us,j , ub,j , pricej , assetj , installmentj , rj
Output: con-tran-proposal
1: procedure at the ub,j
2: sends pre con-tran-proposal :=(Tj , us,j , ub,j , pricej , assetj , installmentj , rj )3: end procedure
4: procedure at the us,j
5: retrieves (Tj , us,j , ub,j , pricej , assetj , installmentj , rj ) frompre con-tran-proposal
6: calculates t-price with pricej , installmentj , irj
7: encrypts t-price with rj
8: signs Encpk (t-price) and assetj with us,j ’s secret key
9: sends Sigs,j (Enc(t-price)), Sigs,j (assetj ))6. 2 安 全 性
本節では，意図しないトランザクションや悪意のあるトランザクションをどのように防ぐのかについて示す．下記の 4 点を証明することで，取引者の合意通りのトランザクションの安全性を保証する．
（ 1 ） 資産売買契約の事前合意がない勝手なトランザクショ
ンを防げる（ 2 ） 資産売買契約の事前合意と異なるトランザクションを防げる（ 3 ） 支払いフェーズにおける，事前合意の虚偽申告を防げる（ 4 ） 支払いの滞納を防げる

10: end procedure
11: procedure at the ub,j
12: broadcasts con-tran-proposal :=(Tj , us,j , ub,j , Sigs,j (Enc(t-price)), Sigs,j (assetj ), installmentj )13: end procedure（ 1 ） 資産売買契約の事前合意がない勝手なトランザクショ
ンを防げる(1-1) 買い手 ub,j の不正の場合
資 産 売 買 契 約 ト ラ ン ザ ク ション プ ロ ポ ー ザ ル con-tran-

proposal :=(Tj , us,j , ub,j , Sigs,j (Enc(t-price)), Sigs,j (assetj )′ ,5. 4 支払いフェーズ
資産売買契約フェーズでは，買い手が売り手の合意の元にinstallmentj ) の署名 Sig が us,j の秘密鍵によるものでないことを，全体で検証することで検知することができる．

(1-2) 売り手 us,j の不正の場合

全体へのトランザクションプロポーザル con-tran-proposal を資産売買トランザクションプロポーザル con-tran-proposal に発行するが，支払いフェーズでは売り手が買い手の合意のは，買い手と売り手の情報が含まれているため，トランザク

元にトランザクションプロポーザル tran-proposal を発行すション発行者と売り手 us,j が等しいことから検知することがでる．[19] と同様に受取者 (請求者，本稿では売り手) が送金者

きる．

(買い手) に送金のトランザクションプロポーザル pre-tranproposal := (Tk , us,k , ur,k , assetk , amtk ，rk ) を送り，送金者は（ 2 ） 資産売買契約の事前合意と異なるトランザクションを検証を行う．ここで乱数は，rj = rk,1 +rk,2 +· · ·+rk,installmentj

防げると な る よ う に 帳 尻 を 合 わ せ る 必 要 が あ る ．検 証 で 問 題 がな かった 場 合 ，送 金 者 は 範 囲 証 明 の 生 成 及 び 署 名 を 行 い ，(Sigs,k (assetk ), Sigs,k (Enc(amtk )), σamtk , σbs,k ) を返す．受

事前に取引者間で合意を取った取引をする資産や取引額，支払い回数の改ざんを防げることを示す．

(2-1) 買い手 ub,j の不正の場合

け取った受取者はネットワーク全体に対して，tran-proposal :=資 産 売 買 ト ラ ン ザ ク ション プ ロ ポ ー ザ ル con-tran-proposal(Tk , us,k , ur,k , Sigs,k (assetk ), Sigs,k (Enc(amtk )), σamtk , σbs,k ,の 発 行 の 際 に ，(1-1) と 同 様 に ，買 い 手 ub,j が 発 行 す るdate) を発行する．後のトランザクション発行プロセスは 5. 3

資 産 売 買 ト ラ ン ザ ク ション プ ロ ポ ー ザ ル con-tran-proposal

節の資産売買契約フェーズと同様なので割愛する．

:= (Tj , us,j , ub,j , Sigs,j (Enc(t-price)), Sigs,j (assetj )′ ,installmentj ) の署名 Sig が us,j のものでないことを，全体で検証する際に検知することができる．

6 安全性評価
本節では，提案プロトコルの 1) 価格，取引額，所持金の秘匿性と 2) 取引の安全性の観点から考察する．

(2-2) 売り手 us,j の不正の場合
最初に買い手 ur,j が発行した資産売買トランザクションプロ
ポーザル con-tran-proposal に含まれる支払い額と，実際に支払った総額が等しくなることを第三者でも検証可能にするこ

6. 1 秘 匿 性とで不正を検知可能とする．加法準同型暗号の性質を用い，トランザクション発行の際，取引者の情報は開示されるもWS に支払った金額を更新していく (足していく) ことで，最のの，WS の所持金，資産の価格及び送金額は秘匿されてお初に WS に記録した総支払額 t-price と同じ値になること確り，その増減も推測することはできない．これらの情報は楕円認することができる．支払いフェーズにおける取引額の暗号

ElGamal 暗号 [13] により保証されている．また，本プロトコ化に使用する乱数 rj は，事前資産売買トランザクションプロ

ルでは，暗号化に使用する乱数を第三者は知ることができない

ポーザル pre con-tran-proposal で売り手に送る rj を利用して，

rj = rj,1 + rj,2 + · · · + rj,installment となるように設定するの円曲線のスカラーは，32Byte で表される．各桁の範囲証明の
署名は σi := {e0 , s0 , s1 , . . . , sn }(n = 10) なので，それぞれ計で，式 5 のようになる．

11 のスカラーで構成される．よって，1 桁分の範囲証明のサイズは 352Byte となり，桁数を増加させると証明サイズも線形に

Enc(t-price)= Enc(price1 ) ⊕ Enc(price2 )⊕· · · ⊕ Enc(priceinstallment )

増加する．本研究では，範囲証明の桁数を 10 桁まで実装した(5)

ため，0 ∼ 10, 000, 000, 000(100 億) までの値が非負であることを示すことができた．証明の生成及び検証の実行時間自体はボトルネックになり得ないと考えられる．
表 2 証明サイズと実行時間（ 3 ） 支払いフェーズにおける，事前合意の虚偽申告を防げ

証明生成

証明検証

サイズ

Schnorr 署名 0.18ms

0.43ms

224Byte範囲証明

14.65ms

3520Byte

る
送金者 us,k が支払い能力を偽り，事前合意トランザクショ
ンプロポーザル pre-tran-proposal において，虚偽の範囲証

22.76ms

明 を 送った 際 に は ，ネット ワ ー ク 全 体 へ の ト ラ ン ザ ク ショ
ンプロポーザル tran-proposal の発行の際に全員で範囲証明を検証するので，検知することができる．なお，範囲証明

σbs,k := (Encpk (bs,j − amtj ), Dj , σs,j ) に含まれる Dj は式 6のように Encpk (bs,j − amtj ) の c1 を表すことができるので，虚偽の範囲証明が生成された場合には検知可能である．

7. 3 実 験 結 果
本節では，送金トランザクションの発行の処理時間について評価を行う．送金を行うためには，事前トランザクションプロ
ポーザル pre-tran-proposal とネットワーク全体に対するトラ
ンザクションプロポーザル tran-proposal を発行する必要がある．そのため，2 つのトランザクションの処理時間の和を送金

D = {d1 , d2 , ..., dk }
9
∑

dk ∼
= c1 of Encpk (bs,j − amtj )トランザクションの処理時間とする．図 4 に，通常の送金トラ(6)

ンザクションと提案プロトコルによるトランザクションの発行に要した処理時間を示す．

k=0（ 4 ） 支払いの滞納を防げる
送金者 us,k が nヶ月以上滞納した場合は，受取者 ur,k からペナ

1.2

ルティトランザクション penalty-tx を発行することができる．

1

取引に関わらない第三者 Peer は WS の最新の支払い日を参照

0.8

することで，送金者 us,k が滞納していることを検知することが7 評価実験
本節では，提案手法の有効性を示すために行った評価実験について述べる．

0.6

(s)

できる．

0.4
0.2
0

















7. 1 実 験 設 定
本実験では，macOS Mojave (version 10.14), Intel Core i7

図 4 トランザクション発行の処理時間@3.1GHz, 16GB RAM で構成されるマシンを用いた．マシン
上では，Docker を起動して，Orderer と 4 つの Peer をそれぞ

通常のトランザクションの処理時間と比較すると，約 3 倍

れ docker コンテナで生成して P2P ネットワークを構成した．

の処理時間が必要となることがわかった．全体へのトランザク

ブロックチェーン基盤は，Hyperledger Fabric ver 1.3 [3] を用

ションの時間だけみると，約 40ms 遅くなっており，これは範い，チェーンコード (スマートコントラクト) の開発は Go 言

囲証明の検証によるものと考えられる．トランザクションの発語で行った．また，暗号化及び署名，証明生成の楕円曲線には

行に約 10 分かかる仮想通貨ビットコイン [17] と比べると高速

Curve25519 [8] を利用した．

なものの，数 ms 単位で処理が必要な送金には適していない．
しかしながら，本研究では資産売買などのユースケースを想定

7. 2 評 価 手 順
表 2 に 提 案 手 法 の ト ラ ン ザ ク ション に お い て 使 用 し た ，Schnorr 署名と範囲証明の証明サイズ，証明 (署名) 及び検証の実行時間を示す．尚，この実行結果は docker コンテナ上ではなく，マシン上で実行したものである．有限体 Fp 上の楕しており，そのようなトランザクションであれば発行に要する
時間が数秒単位でも実用的であると考えられる．

8 結

論

[13]

本稿では，取引額と所持金を秘匿したブロックチェーンにおける，取引者間事前合意を用いた資産売買プロトコルを提案し[14]た．プロトコルでは，取引者間でのメタ的な契約に関する合意をした後に，所定の支払いを行っていく 2 フェーズで構成し，その一貫性を保証した．また，利息を考慮した分割払いにも対[15]応した．安全性評価では，ケースごとにプロトコルの安全性を示した．評価実験では，範囲証明の実行時間及び証明サイズを計測し，処理時間に関してはボトルネックとなり得ないことを[16]示した．これに加えて，送金トランザクション発行の処理速度
が 1.0 秒以内であることを測定し，実用的であることを検証した．仮想通貨のような数 ms のようなリアルタイムトランザク
ションへの対応は難しいが，不動産の資産売買など数秒単位の[17]

リアルタイムなトランザクションであれば十分に実現可能であ[18]ると考える．今後の課題としては，範囲の証明の生成及び検証の最適化が挙げられる．実行時間は実用的な範囲であると考えられるが，サイズが大きいので通信のボトルネックとなる可能性がある．最適化を行い，証明サイズの圧縮を検討する必要がある．また，本稿では，同一マシン上のブロックチェーンネット
ワークの構築しかできなかったが，実際のシステムにおいては遅延が発生する．複数のマシンを跨いだブロックチェーンネッ
トワークを構築し，通信速度が遅い環境においても，実用的であることを検証する必要がある．

謝

辞本研究の一部は，JSPS 科研費 JP16K00149 の助成を受けたものである．
文
[1]
[2]
[3]
[4]
[5]

[6]
[7]
[8]

[9]

[10]

[11]

[12]

献

Chain, https://blog.chain.com/.
Ethereum, https://www.ethereum.org.
HyperledgerFabric, https://github.com/hyperledger/fabric.
NEM - Distributed Ledger Technology, https://nem.io/.
Monetary Authority of Singapore(MAS), Project Ubin,
http://www.mas.gov.sg/Singapore-Financial-Centre/SmartFinancial-Centre/Project-Ubin.aspx, 2017.
Zcash, https://z.cash/.
Stan Brown, Loan or Investment Formulas,
https://brownmath.com/bsci/loan.htm.
Bernstein, Daniel J, Curve25519: new Diﬃe-Hellman speedrecords, International Workshop on Public Key Cryptography, pp. 207–228, 2006.
Castro, M., Liskov, B., Practical Byzantine fault tolerance,
In Proceedings of the Symposium on Operating Systems Design and Implementation(OSDI), 1999.
Cecchetti, E., Zhang, F., Ji, Y., Kosba, A., Juels, A.
and Shi, E., Solidus: Confidential distributed ledger transactions via PVORM, In Proceedings of the 2017 ACM
SIGSAC Conference on Computer and Communications
Security, pp. 701–717, 2017.
El Gamal, T., A public key cryptosystem and a signaturescheme based on discrete logarithms. IEEE Trans. Information Theory, Vol. 31, No. 4, pp. 469–472, 1985.
Goldreich, O., Foundations of Cryptography: Volume 2,[19]

Basic Applications, Vol. 2. Cambridge University Press,
2004.
Koblitz, N., Elliptic Curves Cryptosystems, In Mathematics
of Computation, 48(1987), pp. 203-209, 1987.
Kosba, A., Miller, A., Shi, E., Wen, Z. and Papamanthou, C., Hawk: The blockchain model of cryptography
and privacy-preserving smart contracts, In Proceedings ofthe 2016 IEEE Symposium on Security and Privacy (SP),pp. 839–858, 2016.
Narula, N., Vasquez, W. and Virza, M., zkLedger: PrivacyPreserving Auditing for Distributed Ledgers, In 15th
USENIX Symposium on Networked Systems Design and
Implementation(NSDI), 2018.
Sasson, E., Chiesa, A., Garman, C., Green, M., Miers, I.,
Tromer, E. and Virza, M., Zerocash: Decentralized Anonymous Payments from Bitcoin, In Proceedings of the 2014
IEEE Symposium on Security and Privacy (SP), pp. 459–
474, 2014.
Satoshi Nakamoto, Bitcoin: A peer-to-peer electronic cash
system, 2008.
Zyskind, G., Nathan, O. and Pentland, A., Enigma: Decentralized computation platform with guaranteed privacy,
arXiv preprint arXiv:1506.03471, 2015.
安坂 祐紀, 渡辺 知恵美, 天笠 俊之, 北川 博之, プライバシーを考慮したブロックチェーンの取引者間事前合意プロトコル,
コンピュータセキュリティシンポジウム 2018 論文集, pp.850856(2018).