Transcript
Page 1: メモリ暗号化による Android 端末の盗難対策

メモリ暗号化によるAndroid 端末の盗難対策

機械情報工学科光来研究室 学部 4 年10237059  福田直人

1

Page 2: メモリ暗号化による Android 端末の盗難対策

Android 端末の普及• Android 端末が急速に普及– 従来の携帯電話より多くの情報を保持– より重要な情報も格納

• 盗難にあうリスクが高い– ノート PC より小型軽量

2

Page 3: メモリ暗号化による Android 端末の盗難対策

3

フルディスク暗号化• Android はフルディスク暗号化の機能を提供– ディスクのパーティション全体を暗号化することでデータを保護– 端末を盗まれても PIN が分からなければディスク上のデータは解読できない• PIN から生成された鍵で暗号化

攻撃者の端末フルディスク暗号化盗まれた端末 盗まれた端末で OS を入れ替え

Page 4: メモリ暗号化による Android 端末の盗難対策

メモリ上のキャッシュ• Android ではディスク上のデータの一部をメモリ上にキャッシュとして保持– ファイルアクセスの高速化のため

• 盗難時にキャッシュから情報が漏洩する危険は考えられてこなかった– メモリ上のデータを盗み見るのは難しかった

4

OS キャッシュ

低速高速

ディスク

Page 5: メモリ暗号化による Android 端末の盗難対策

コールドブート攻撃• 端末の再起動後にメモリ上に残されたデータを盗み見る攻撃– メモリを冷やして再起動することでデータを保持– Android 端末でも報告 [Muller+ ACNS’13]

• メモリ上のキャッシュ経由でディスク上のデータが漏洩

5

Page 6: メモリ暗号化による Android 端末の盗難対策

OSファイル

ディスク

ページキャッシュ暗号化

Cache-Crypt• OS がメモリ上のページキャッシュを暗号化– ページキャッシュはファイルデータのキャッシュ– ディスク上のファイルをメモリに読み込む際に暗号化– アプリがアクセスする時だけ復号• この瞬間以外はコールドブート攻撃でも盗み見られない

6

アプリ

Page 7: メモリ暗号化による Android 端末の盗難対策

ページキャッシュOSアプリ

バッファ

ディスク

ファイルの読み込み• アプリが OS の read システムコールを発行– ページキャッシュ上のデータを復号• キャッシュがなければディスクから読み込む

– 復号されたデータをアプリのバッファにコピー– ページキャッシュ上のデータを再び暗号化

7

read

Page 8: メモリ暗号化による Android 端末の盗難対策

ファイルへの書き込み• アプリが OS の write システムコールを発行– アプリのバッファのデータをページキャッシュにコピー– ページキャッシュ上のデータを暗号化

• 後で OS がデータをディスクに書き戻す– ファイルの読み込み処理と同様の手順

8

ページキャッシュOSアプリ

バッファ

ディスクwrite

Page 9: メモリ暗号化による Android 端末の盗難対策

ファイルのメモリマップ• メモリマップはアプリが OS を介さずにページキャッシュに直接アクセスする手段– OS が暗号化・復号化できなくなる

• OS は最初のアクセスだけ検出できる– そのページキャッシュを復号したままにする– メモリマップを終了したら暗号化

9OS を介さずにアクセスOS

アプリバッファ

最初のアクセス ページキャッシュ

Page 10: メモリ暗号化による Android 端末の盗難対策

CPU

暗号鍵の保護• メモリ上にページキャッシュを復号する鍵を置くのは危険– コールドブート攻撃で暗号鍵を取り出される

• CPU の特殊なレジスタに暗号鍵を格納 [Götzfried et al. ‘13]– レジスタは端末の起動時に初期化される

10

ページキャッシュメモリ

Page 11: メモリ暗号化による Android 端末の盗難対策

実験• Cache-Crypt を Android OS に実装– Android 4.4 、 Linux 3.4.0

• Cache-Crypt の有効性を確かめる実験を行った– ページキャッシュの暗号化の確認– Cache-Crypt によるオーバヘッドの測定

• 実験環境– Android エミュレータ– Nexus 7 (2013)

11

Page 12: メモリ暗号化による Android 端末の盗難対策

暗号化の確認• エディタアプリで大量の「 A 」の文字からなるファイルを読み込み、キャッシュさせた– Android エミュレータでメモリをファイルにダンプ– 既存の Android OS では大量の「 A 」の文字を発見– Cache-Crypt では暗号化された文字しか見つからなかった

12既存の Android OS Cache-Crypt を実装した Android OS

Page 13: メモリ暗号化による Android 端末の盗難対策

オーバヘッドの測定• Benchmark アプリを用いてファイルアクセス性能を測定– 測定には実機( Nexus 7 )を用いた– 読み書きともに Cache-Crypt を用いることによるオーバヘッドは 10% 程度

13実験に使用した

Benchmark アプリファイルの読み書き (MB/s)Write Read

0

100

200

300

400

500

600

103

504

114

562

Cache-Crypt

標準カーネル

Page 14: メモリ暗号化による Android 端末の盗難対策

関連研究• CryptKeeper [Peterson et al. '10]– アクセスしていないプロセスのメモリを暗号化– ページキャッシュを含む OS のメモリは暗号化しない

• ZIA [Corner et al. ’02]– ハードウェアトークンが近くにあればファイルを復号– ハードウェアトークンが一緒に盗まれる危険

• Keypad [Geambasu et al.'11]– サーバ上の鍵でファイルを復号– ネットワークが使用できない時は復号できない

14

Page 15: メモリ暗号化による Android 端末の盗難対策

まとめ• メモリ上のページキャッシュを暗号化する

Cache-Crypt を提案– アプリがアクセスする時だけ復号– コールドブート攻撃による情報漏洩を防ぐ– Android OS に実装し、有効性を確認

• 今後の課題– 高度な暗号化の実装とそのオーバヘッドの削減– フルディスク暗号化との連携

15


Top Related