第1回ブロックチェーンセキュリティワークショップ(BWS2021)
暗号通貨とゼロ知識証明

株式会社日立製作所
長沼健© Hitachi, Ltd. 2021. All rights reserved.

目次• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

2

目次• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

3

ゼロ知識証明とは？
ゼロ知識証明（zero-knowledge proof）とは、証明者(Prover)が検証者(Verifier)に、自分の持っている命題が真であることを伝えるのに、真であること以外、何の知識も伝えることなく証明できるような対話(非対話)知識証明プロトコルである。

命題P:
私は二十歳以上だ

命題P:
私はある暗号の秘密鍵を知っている

Alice (Prover)は命題Pが真(True)である事を誰かに証明したい© Hitachi, Ltd. 2021. All rights reserved.

4

ゼロ知識証明とは？
Alice (Prover)は命題Pが真(True)である事をBob(Verifier)にゼロ知識証明したい

命題P:
私は二十歳以上だ
命題Pの証明(真である証拠)出せ
運転免許証提示
AliceBob

運転免許証提示でAlice (Prover)は命題Pが真(True)である事をBobに証明できるがゼロ知識ではない。生年月日から年齢などが漏れている。
どんなものがゼロ知識証明と言えるのか？
© Hitachi, Ltd. 2021. All rights reserved.

5

ゼロ知識証明とは？
Alice (Prover)は命題Pが真(True)である事をBob(Verifier)にゼロ知識証明したい
命題P:
私は公開鍵[pk]に対する秘密鍵を知っている乱数[r]を生成Enc(pk, r)r

秘密鍵を知っているのでEnc(pk, r)を復号化して平文[r]を計算可能

Bob(Verifier)は自分で生成した乱数[r]を貰うだけなので、対話終了後に秘密鍵に関する知識を得ていない⇒ゼロ知識© Hitachi, Ltd. 2021. All rights reserved.

6

目次• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

7

プラバシー vs 透明性
Public Blockchainの台帳データはネットワーク上の誰でも参照可能⇒透明性が高いがプライバシーは無い
Blockchain data
Tx Data
ID:100のbitcoinはTomが持っています

Tx Data
ID:101のbitcoinはAliceが持っています

参照可能

透明性

Tx Data
ID:101のbitcoinはAliceからBobに送金されました
Aliceの署名

参照可能

Tx Data
ID:101のbitcoinはBobからTomに送金されました
Bobの署名

参照可能

プライバシ

トランザクションデータを暗号化(or hash)したら、プライバシーは保たれるが、マイナーがトランザクションの正当性を確認不能になる© Hitachi, Ltd. 2021. All rights reserved.

8

もしトランザクションが暗号化されていると・・・
プライバシ保護のためUTXOで送金額が暗号化されたとすると・・・[inputの金額の合計]=[outputの金額の合計] (手数料は0とする)
また、送金額は0以上の値

不正が確認できない

TX data[input]100coinfrom: Tom
to: Alice[output]
Enc(80coin)from: Alice
to: Bob[output]
Enc(50coin)from: Alice
to: Alice

悪いAliceMiner

BCネットワーク

Miner

Aliceは100coin分のunspent transactionのうち80をBobに送金、20をAliceに送金(おつり)するが、送金額が暗号化されている事をいいことに、おつりを50に不正に変更。
マイナーは復号化鍵をもっていないので金額の不正に気付かない！
© Hitachi, Ltd. 2021. All rights reserved.

9暗号通貨とゼロ知識証明の関係
一般的なゼロ知識証明の使い方
トランザクション内のプライバシ情報を秘匿化した際に正当性をゼロ知識で与える
ZCashのイメージ

Tx Data
ID:100のbitcoinはTomが持っています

Tx Data
ID:101のbitcoinはAliceが持っています

Tx Data
From: ???
To: ???
Amount: ???

秘匿化されたTx+ゼロ知識証明
プライバシ情報(誰が誰にいくら送金)は秘匿化されているが、その正当性を示すゼロ知識証明が付いている

Miner© Hitachi, Ltd. 2021. All rights reserved.

10暗号通貨でのゼロ知識証明の利用方法
ブロックチェーンの台帳情報は誰でも閲覧可能
なのでプライバシの観点で問題ありプライバシ情報は暗号化しましょう

暗号化したらマイナーが正当性を確認できません

正当性を証明するゼロ知識証明を付けましょう！
プライバシーと透明性の良いトレードオフ© Hitachi, Ltd. 2021. All rights reserved.

11

目次

• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

12

zk-SNARKとは？
zk-SNARK・・・
zero-knowledge Succinct Non-interactive ARgument of Knowledge
ゼロ知識証明：[私はF(x)=yとなる入力値：xを知ってる]

OK!!

Data 1
Data 2・・・

Data N

パブリックな関数:F(-)とその出力値:yに対してAliceは命題P:私はF(x)=yとなる入力値:xを知っているをマイナーに証明できる。
© Hitachi, Ltd. 2021. All rights reserved.

13

zk-SNARKとは？
zk-SNARK・・・
zero-knowledge Succinct Non-interactive ARgument of Knowledge
ゼロ知識証明：[私はF(x)=yとなる入力値：xを知ってる]

OK!!

Data 1
Data 2・・・

Data N

入力値:x に関する情報は得られない

パブリックな関数:F(-)とその出力値:yに対してAliceは命題P:私はF(x)=yとなる入力値:xを知っているをマイナーに証明できる。
© Hitachi, Ltd. 2021. All rights reserved.

14

zk-SNARKとは？
zk-SNARK・・・
zero-knowledge Succinct Non-interactive ARgument of Knowledge
ゼロ知識証明：[私はF(x)=yとなる入力値：xを知ってる]

OK!!

Data 1

マイナーからのデータ送信はない

入力値:x に関する情報は得られない

パブリックな関数:F(-)とその出力値:yに対してAliceは命題P:私はF(x)=yとなる入力値:xを知っているをマイナーに証明できる。
© Hitachi, Ltd. 2021. All rights reserved.

15

zk-SNARKとは？
zk-SNARK・・・
zero-knowledge Succinct Non-interactive ARgument of Knowledge
ゼロ知識証明：[私はF(x)=yとなる入力値：xを知ってる]

OK!!

Data 1

マイナーからの データサイズが定数
データ送信はない(Fのサイズによらない)
入力値:x に関する情報は得られない

パブリックな関数:F(-)とその出力値:yに対してAliceは命題P:私はF(x)=yとなる入力値:xを知っているをマイナーに証明できる。
© Hitachi, Ltd. 2021. All rights reserved.

16

zk-SNARKの既存方式と課題
様々なzk-SNARKがブロックチェーンで利用されている。
古い世代のzk-SNARKs(関数Fが固定)
Pinocchio方式、Groth16方式・・・Zcashなどで利用新しい世代のzk-SNARKs(関数Fが任意)
PLONK方式、Marlin方式・・・Ethereum 2.0で利用予定
既存方式の課題1
量子計算機耐性を有していない

既存方式の課題2
Setup時に信頼できる第3者(TTP) or Ceremonyを必要とする
日立製作所での研究活動
量子計算機耐性, TTP or Ceremony less Marlin方式を作成© Hitachi, Ltd. 2021. All rights reserved.

17

目次

• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

18暗号通貨の課題とゼロ知識証明
暗号通貨が実際に通貨として利用されるためには、まだまだ技術課題も多い
暗号通貨が抱える課題
・スループットに関する課題(スケーラビリティ)・安定性に関する課題

Miner

BCネットワーク

Miner© Hitachi, Ltd. 2021. All rights reserved.

19スループットに関する課題
Bitcoinのトランザクションは約4tps (理論上は7tps)
Ethereumのトランザクションは約15tps
取引が活発になるとトランザクション詰まりが発生する(手数料増加)

1ブロックのデータ容量は1MB、約10分に1ブロック生成されるBitcoinのブロックtx
Alice⇒Bob30tx
Charlie⇒Tom10tx
Bob⇒Tom10・・・

解決方法：
トランザクションはオフチェーンで検証処理し、ブロックチェーンには記載しない最終結果だけをブロックチェーンに記載する⇒ゼロ知識証明を使ったRollup© Hitachi, Ltd. 2021. All rights reserved.

20

ゼロ知識証明を使ったRollup
Rollupのイメージ
tx
Alice⇒Bob30tx
Charlie⇒Tom10tx
Bob⇒Tom
10Merkle root

分散台帳root:
0x1a04d8

0x1a04d8

Alice
80

Bob20

Charlie30

Tom0© Hitachi, Ltd. 2021. All rights reserved.

21

ゼロ知識証明を使ったRollup
Rollupのイメージ
tx
Alice⇒Bob30tx
Charlie⇒Tom
10tx
Bob⇒Tom10

Merkle rootの更新処理をMinerが行う(オフチェーン)
その際に正しく更新が行われた事を示す
ゼロ知識証明を付ける

Merkle root

分散台帳
root:
0x1a04d8

0x947c3b

Alice50

Bob40

Charlie20

Tom20© Hitachi, Ltd. 2021. All rights reserved.

22暗号通貨の課題とゼロ知識証明
暗号通貨が実際に通貨として利用されるためには、まだまだ技術課題も多い
暗号通貨が抱える課題
・スループットに関する課題(スケーラビリティ)・安定性に関する課題

Miner

BCネットワーク

Miner© Hitachi, Ltd. 2021. All rights reserved.

23安定性に関する課題
2021年初頭からElon Musk氏の動向によりBitcoinの価格は乱高下した※twitterでの発言、暗号通貨の投機ブームなどの複合的な要因もある⇒通貨として利用するためには不安定

2.7億ドルのビットコイン売却が判明
Elon Musk氏が15億ドルのビットコイン購入© Hitachi, Ltd. 2021. All rights reserved.

24安定性に関する課題
ゼロ知識証明を使った解決方法⇒匿名送金(誰がいくら持っているか秘匿)にすることで、誰が誰にいくら送金しているか、誰がいくら持っているか分からない⇒投機的な動きが見えづらくなる

Blockchain data
Tx Datafrom: ???
to: ???
amount: ???
ZKP: 0x93e01？

Tx Datafrom: ???
to: ???
amount: ???
ZKP: 0x2a40a5

Tx Datafrom: ???
to: ???
amount: ???
ZKP: 0xa032c6？

・・・？

© Hitachi, Ltd. 2021. All rights reserved.

25

目次

• ゼロ知識証明とは？
• 暗号通貨でどうやってゼロ知識証明を使うのか？
• zk-SNARK方式の紹介• さらなる応用：プライバシーを超えて• まとめ© Hitachi, Ltd. 2021. All rights reserved.

26

まとめ
ゼロ知識証明では、情報を秘匿したまま、その情報の正当性を証明できる⇒プライバシーと透明性のちょうど良いトレードオフを与える⇒暗号通貨では匿名送金等に利用されているゼロ知識証明のプライバシー以外のユースケース1
暗号通貨のスループット向上(スケーラビリティ)⇒オフチェーンバッチ処理を実行、その際正しく実行されたことを証明する
ゼロ知識証明のプライバシー以外のユースケース2
暗号通貨の安定性向上⇒送金、ウォレット情報を秘匿することで、投機的な動きを抑制する

技術課題
信頼できる第3者が必要、量子計算機耐性、ゼロ知識証明生成の処理性能© Hitachi, Ltd. 2021. All rights reserved.

27