Slide 1

Slide 1 text

1 ◎須藤欧佑, 恩田壮恭, 中村龍矢 株式会社LayerX

Slide 2

Slide 2 text

2 アジェンダ 1. 背景:状態遷移の秘匿性と透明性の両立 2. Anonifyプロトコルの概要 3. Anonifyのプロセス

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4 データの秘匿性と透明性の両立 ● データの秘匿性(プライバシー保護) ○ パーソナルデータや業務データなど機密性の高いデータを処理するシステム自体 もそのようなデータに直接アクセスできないように秘匿化 ● データの透明性(利活用) ○ そのデータに基づいた計算処理がされ、かつ利用者にとって意図した処理がされ ていることを検証可能に ● 具体事例: インターネット投票 ○ 投票内容と投票者の紐付けが運営者含めできてはならない ○ 集計までの一連のプロセスが正しく処理されたことを投票者が検証可能

Slide 5

Slide 5 text

5 Trusted Execution Environment (TEE) の活用 特定のアプリケーションが他のソフトウェア(システムソフトウェア含め)から隔離保護さ れた領域 (Enclave)で実行されることをハードウェアレベルで保証するCPUのセキュリティ 機能 特徴 ● 一般の開発者がEnclaveの アプリケーションを実装可能 ● 汎用CPU上で処理されるので高速 ● Remote Attestationによる完全性 例 Intel SGX, OP-TEE (TrustZone), AMD SEV

Slide 6

Slide 6 text

6 Blockchainの活用 ● 複数主体間で状態遷移命令を共有するストレージレイヤとして利用 ● 状態遷移の自動検証・改ざん耐性・トランザクションの順序保証・ファイナリティ検 証

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8 提案プロトコル:Anonify

Slide 9

Slide 9 text

9 Anonifyで満たすべきセキュリティプロパティ ● Confidentiality ○ 状態データは認証・認可されたユーザのみアクセスできる ● Correct Execution ○ ブロックチェーンに記録されたトランザクションに基づき、各ノードで事前に合意された ルールに沿って状態遷移が実行される ● Consistency ○ ブロックチェーンに記録されたトランザクション列に基づき、各TEEノードにおいて同じ状態 データが最終的に記録される ● Liveness ○ ユーザはシステムが稼働している任意のタイミングで命令を実行でき、実行が完了したこと を検証できる ● Data Recoverability ○ TEEノードに記録されている状態データが全て消失しても、ブロックチェーンから全ての状態 データを復元できる

Slide 10

Slide 10 text

10 Anonifyで満たすべきセキュリティプロパティ ● Confidentiality ○ 状態データは認証・認可されたユーザのみアクセスできる ● ○ ● Consistency ○ ブロックチェーンに記録されたトランザクション列に基づき、各TEEノードにおいて同じ状態 データが最終的に記録される ● Liveness ○ ユーザはシステムが稼働している任意のタイミングで命令を実行でき、実行が完了したこと を検証できる ● Data Recoverability ○ TEEノードに記録されている状態データが全て消失しても、ブロックチェーンから全ての状態 データを復元できる

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12 Anonifyにおけるフェーズ ● セットアップフェーズ ○ 参加するTEEノードが正しいバイナリを実行していることをRemote Attestation により証明(Correct Execution) ○ 暗号化や署名に用いる一連の鍵をセットアップ ● 状態遷移フェーズ ○ 暗号化された状態遷移の命令がブロックチェーンに記録され、そのトランザク ション列に基づきTEEノードで状態遷移する ● 鍵ローテーションフェーズ ○ TEEノード間で共有しているグループ鍵(命令の暗号化に利用)をローテーショ ンするフェーズ

Slide 13

Slide 13 text

13 Anonifyにおけるフェーズ ● セットアップフェーズ ○ ○ 暗号化や署名に用いる一連の鍵をセットアップ ● 状態遷移フェーズ ○ 暗号化された状態遷移の命令がブロックチェーンに記録され、そのトランザク ション列に基づきTEEノードで状態遷移する ● 鍵ローテーションフェーズ ○ TEEノード間で共有しているグループ鍵(命令の暗号化に利用)をローテーション するフェーズ

Slide 14

Slide 14 text

14 Remote Attestationに基づくセットアップの概要 ● Attestation Serviceの公開鍵をスマートコントラクトに事前に登録 ● Quote:SGXが生成するMRENCLAVEを含む構造体 ○ MRENCLAVE:Enclave内実行バイナリや実行環境に依存したハッシュ値 ● オンチェーンで ○ REPORTの署名を検証することでREPORTが改ざんされていないことを保証 ○ MRENCLAVEが一致することの保証

Slide 15

Slide 15 text

15 Remote Attestationに基づくセットアップの概要 ● QUOTEにEnclaveで生成した署名検証鍵・暗号鍵も含める ● 状態遷移時は対応する署名鍵でトランザクションに署名し、オンチェーンで検証する ことでCorrect Executionを保証

Slide 16

Slide 16 text

16 Anonifyにおけるフェーズ ● セットアップフェーズ ○ 参加するTEEノードが正しいバイナリを実行していることをRemote Attestation により証明(Correct Execution) ○ 暗号化や署名に用いる一連の鍵をセットアップ ● ○ ● 鍵ローテーションフェーズ ○ TEEノード間で共有しているグループ鍵(命令の暗号化に利用)をローテーション するフェーズ

Slide 17

Slide 17 text

17 状態遷移フェーズ ※ Consistencyを満たすための イベント検証と順序保証は省略

Slide 18

Slide 18 text

18 送金アプリケーション実験結果 ● ソースコード:https://github.com/LayerXcom/anonify ● Rust SGX SDKを利用 ● Microsoft Azure で SGX が動作可能な VM 環境 Standard DC1s v2 (1 コア Intel XEON E-2288G 3.70 GHz CPU, 4GB RAM, Ubuntu 18.04.4 LTS) を用いて実施 ● Ethereumのトークン規格であるERC20を 状態遷移ロジックとして実装し、 トランザクション生成に要する時間を測定

Slide 19

Slide 19 text

19 まとめ ● 状態遷移を秘匿化しつつ、その検証可能性も保証するAnonifyの提案 ○ TEEにより状態遷移を秘匿化 ○ TEEのRemote Attestationにより完全性の保証 ○ ブロックチェーンにより複数ノード間でトランザクションの順序保証・状態デー タの改ざん耐性・ファイナリティ検証を可能に

Slide 20

Slide 20 text

20

Slide 21

Slide 21 text

21 REPORTのデータ構造

Slide 22

Slide 22 text

22 グループ鍵のセットアップ

Slide 23

Slide 23 text

23 グループ鍵セキュリティプロパティ

Slide 24

Slide 24 text

24 TreeKEM

Slide 25

Slide 25 text

25 TEE4が新たにグループに参加するセットアップ