30
© 2013 Toshiba Corporation 暗号プリミティブに基づく機密データフロー解析 ○林 良太郎 中西 福友 橋本 幹生 (株式会社 東芝 研究開発センター)

暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

© 2013 Toshiba Corporation

暗号プリミティブに基づく機密データフロー解析

○林 良太郎 中西 福友 橋本 幹生 (株式会社 東芝 研究開発センター)

Page 2: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

2 © 2013 Toshiba Corporation 2

もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation Technology for Security) • 機密性検証 • まとめ

暗号プリミティブに基づく機密データフロー解析

Page 3: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

3 © 2013 Toshiba Corporation 3

もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation Technology for Security) • 機密性検証 • まとめ

暗号プリミティブに基づく機密データフロー解析

Page 4: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

4 © 2013 Toshiba Corporation 4

ソフトウェア保護技術とは

暗号プリミティブに基づく機密データフロー解析

• ユーザ環境で実行するソフトウェアの内部に,ユーザに秘密とすべき情報が含まれる 例)ブルーレイディスクプレイヤーの場合

– データ(鍵情報,保護コンテンツ) – 自社独自アルゴリズム・ノウハウ

「ソフトウェア保護技術」 – これらの情報を「悪意のある」ユーザから秘匿するための技術 – ただ単に秘匿にするだけでなく、正常実行可能にすることが必須

ユーザ宅

配布:メディア、ネット

ユーザ環境

ユーザ宅 復号処理

ユーザ環境 ベンダー

復号処理

正しいソフトウェア実行

Page 5: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

5 © 2013 Toshiba Corporation 5

• 専用ハードウェア – セキュリティプロセッサ(XOM,

AEGIS, LMSPTM など) • プロセッサチップ内の鍵による

(メモリ上)データの暗号化 – チップ内で復号・実行

• 悪意のあるユーザは,保護され たデータを読み取ったり改ざん したりできない

• ソフトウェア難読化 – ソフトウェアを解析(リバースエンジニアリング)しづらくすることで,以下を

把握することを困難にする • どこで機密情報を処理しているのか? • どのようなアルゴリズムを使っているのか?

– 部分的に難読化することも可能

ユーザ宅

ソフトウェア保護手段の例

暗号プリミティブに基づく機密データフロー解析

ユーザ環境

チップ内の鍵で 暗号化

改ざん保護

セキュリティ プロセッサ

復号処理

Page 6: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

6 © 2013 Toshiba Corporation 6

• How:どうやって保護するか? – ソフトウェア難読化,専用ハードウェアなどの手段あり

• What:何を保護するか?(どれが機密情報なのか?) – 仕様書に記載されている Confidential Information だけでは不十分

• 一時変数もすべて保護しなければならない • 実装まで踏み込まなければならない

– ソフトウェアが持つ情報を何もかも守ればよい? → No • ソフトウェアの情報が一切漏れない=入出力の無いソフトウェア

– 外部との入出力は必須 • 過度に保護しすぎると実行速度が遅くなる

– ソフトウェア保護技術(再掲):機密情報を「悪意のある」ユーザから秘匿する.ただし,ただ単に秘匿にするだけでなく、正常実行可能にすることが必須

⇒ DFITS:Data Flow Isolation Technology for Security

ソフトウェア保護実現に必要なこと:How と What

暗号プリミティブに基づく機密データフロー解析

Page 7: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

7 © 2013 Toshiba Corporation 7

もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation Technology for Security) • 機密性検証 • まとめ

暗号プリミティブに基づく機密データフロー解析

Page 8: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

8 © 2013 Toshiba Corporation 8

DFITSTM (Data Flow Isolation Technology for Security)

暗号プリミティブに基づく機密データフロー解析

• DFITS – 入力:プログラムソースコード – 出力:プログラム中の各変数の保護要件

• どれを守ればよいかがわかる • 非安全なデータフローがあればエラーを出力

– 試作システム • C/C++ ソースコードを(条件付きで)解析可

• 特徴 – 機密性の観点で分類(完全性は今後) – プログラムにおける(機密)データの流れ(データフロー)に注目 – 保護・非保護判定の手がかり:プログラム中の暗号プリミティブ

• 例)秘密鍵は機密性必須,公開鍵や暗号文は機密性保護不要・・・ – シンプルな手法

ソースコード

DFITS による変数の 保護・非保護自動分類

各変数の保護要件

分類結果に対応した保護手段適用

保護されたソフトウェア

Page 9: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

9 © 2013 Toshiba Corporation 9

保護属性 推論

ソースコード (プロトコル)

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

イメージ

暗号プリミティブに基づく機密データフロー解析

Protocol K := Keygen(); (pk,sk) := Keygen(); C := Enc(K;pk);

DFITS

Page 10: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

10 © 2013 Toshiba Corporation 10

保護属性 推論

ソースコード (プロトコル)

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

イメージ

暗号プリミティブに基づく機密データフロー解析

Protocol K := Keygen(); (pk,sk) := Keygen(); C := Enc(K;pk);

Keygen

K

Keygen sk

pk Enc

C

DFITS

Page 11: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

11 © 2013 Toshiba Corporation 11

保護属性 推論

ソースコード (プロトコル)

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

イメージ

暗号プリミティブに基づく機密データフロー解析

Protocol K := Keygen(); (pk,sk) := Keygen(); C := Enc(K;pk);

秘密鍵:保護 暗号文:非保護 ・・・

Keygen

K

Keygen sk

pk Enc

C

DFITS

Page 12: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

12 © 2013 Toshiba Corporation 12

保護属性 推論

ソースコード (プロトコル)

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

イメージ

暗号プリミティブに基づく機密データフロー解析

Protocol K := Keygen(); (pk,sk) := Keygen(); C := Enc(K;pk);

秘密鍵:保護 暗号文:非保護 ・・・

Keygen

K

Keygen sk

pk Enc

C

Keygen

K

Keygen sk

pk Enc

C

保護 非保護 DFITS

Page 13: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

13 © 2013 Toshiba Corporation 13

保護属性(機密性限定) • 機密性の2つの観点

– データを保護するかどうか? – データの機密性が保証できるかどうか?

暗号プリミティブに基づく機密データフロー解析

A B :保護属性が A の変数を,保護属性が B の 変数に変換可能

機密性保護 なし あり

機密性保証

なし

あり

Hidden Exposed

Confidential

・機密性があるもの ・機密性がないもの が混在 (DFITSでは分類不可)

DFITS で保証したいこと: Exposed なデータを見ても, Confidential なデータを推測できない

Page 14: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

14 © 2013 Toshiba Corporation 14

公開鍵暗号 鍵生成

暗号化

復号

分類規則:公開鍵暗号

暗号プリミティブに基づく機密データフロー解析

秘密鍵

公開鍵 鍵生成

平文 暗号文 暗号化

復号 暗号文 平文

秘密鍵

公開鍵

Exposed (非保護)

Confidential (保護・保証有)

Hidden (保護・保証無)

Page 15: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

15 © 2013 Toshiba Corporation 15

鍵生成

生成

検証

分類規則:署名

暗号プリミティブに基づく機密データフロー解析

秘密鍵

公開鍵 鍵生成

文書 署名 署名生成

秘密鍵

文書 署名 署名生成

秘密鍵

文書 文書 署名 検証

公開鍵

署名

文書 文書 署名 検証

公開鍵

署名

検証成功なら入力文書,失敗なら special symbol

Exposed (非保護)

Confidential (保護・保証有)

Hidden (保護・保証無)

多重定義

Page 16: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

16 © 2013 Toshiba Corporation 16

入出力 四則演算等

分類規則:暗号以外

暗号プリミティブに基づく機密データフロー解析

減算 X

0

X

乗算 X

0

0

乗算 X

X

1

Exposed (非保護)

Confidential (保護・保証有)

Hidden (保護・保証無)

入出力

Page 17: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

17 © 2013 Toshiba Corporation 17

もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation Technology for Security) • 機密性検証 • まとめ

暗号プリミティブに基づく機密データフロー解析

Page 18: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

18 © 2013 Toshiba Corporation 18

DFITS

定理(証明したこと) • 仮定(後述)をみたす任意のプロトコルPと,DFITS が決定した保護属性について,任意の攻撃者は Exposed なデータを見ても,Confidential なデータを推測できない(一方向性) – Hidden, Confidential が理想的に保護されているというセッティング – Hidden は機密性保証の対象外 – 攻撃者は passive (データの改ざんをしない)

暗号プリミティブに基づく機密データフロー解析

保護属性 推論

プロトコル P

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

Hidden

Exposed

Confidential 保護& 機密性保証有

非保護

保護& 機密性保証なし

Page 19: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

19 © 2013 Toshiba Corporation 19

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

Page 20: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

20 © 2013 Toshiba Corporation 20

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

暗号化 平文

鍵生成

共通鍵

Page 21: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

21 © 2013 Toshiba Corporation 21

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

暗号文 暗号化

秘密鍵

暗号文 暗号化

秘密鍵

暗号文 暗号化

秘密鍵

Page 22: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

22 © 2013 Toshiba Corporation 22

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

Page 23: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

23 © 2013 Toshiba Corporation 23

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

平文 暗号化 復号 暗号文 平文

秘密鍵 公開鍵

Page 24: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

24 © 2013 Toshiba Corporation 24

証明に用いる仮定 • 使っている暗号プリミティブの安全性

– 暗号:機密性(IND-CCA) – 署名:偽造不可能性(UF-CMA) – ハッシュ:理想的なハッシュ(ランダムオラクル)

• 上記安全性を保証するための仮定 – 正しい鍵を使う – Key cycle がない – ハッシュ関数の独立性

• プロトコルの正当性を保証するための仮定 – 暗号化関数で暗号化したものしか復号しない

暗号プリミティブに基づく機密データフロー解析

Page 25: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

25 © 2013 Toshiba Corporation 25

を見ても はわからない

証明の方法:ゲーム法

暗号プリミティブに基づく機密データフロー解析

・・・

と は 見分けがつかない

と は 見分けがつかない

を見ても はわからない

を見ても はわからない

示したいこと

DFITS が保護属性を 決定した任意のデータ フロー

Page 26: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

26 © 2013 Toshiba Corporation 26

証明のポイント • データフローをプリミティブ単位に分割

– 秘密鍵を入力とする関数について,その入力を乱数に置き換える – 置き換えたとしても,exposed 変数の分布は見分けがつかない – Key cycle がないという仮定より,分割が可能となる

• 分割により,安全性が各プリミティブの安全性に帰着できる – プリミティブの安全性に帰着するために,Key cycle がない,鍵を正しく使

っている,ハッシュが独立などの仮定が必要

暗号プリミティブに基づく機密データフロー解析

・・・

Page 27: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

27 © 2013 Toshiba Corporation 27

暗号プリミティブの分離

暗号プリミティブに基づく機密データフロー解析

暗号文 暗号化

共通鍵

MAC MAC生成

共通鍵 出力 ハッシュ

文書

暗号文 暗号化

共通鍵

MAC MAC生成

共通鍵 出力 ハッシュ

文書

乱数

MAC と暗号・ハッシュが 依存

MAC と暗号・ハッシュが 非依存

と の 見分けがつかない事を 証明できる

Page 28: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

28 © 2013 Toshiba Corporation 28

もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation Technology for Security) • 機密性検証 • まとめ

暗号プリミティブに基づく機密データフロー解析

Page 29: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation

29 © 2013 Toshiba Corporation 29

DFITS

まとめ • DFITS (Data Flow Isolation Technology for Security)

– セキュリティプリミティブに注目したデータフロー解析 – データを confidential,hidden,exposed に分類

• 機密性 – passive な攻撃者は,exposed データを見ても,confidential データを予

測できない

• 今後の課題 – 完全性の検討 – より強い機密性

• 識別不可能性

暗号プリミティブに基づく機密データフロー解析

保護属性 推論

プロトコル P

データフロー グラフ

保護属性つき データフローグラフ

抽出

関数毎の 保護属性 分類制約

Page 30: 暗号プリミティブに基づく機密データフロー解析 - …fais.jsiam.org/doc/20130315-hayashi.pdf3 もくじ • ソフトウェア保護技術 • DFITS (Data Flow Isolation