Android端末の盗難対策のためのページキャッシュ暗号化

Slides:



Advertisements
Similar presentations
九州工業大学 塩田裕司 光来健一.  仮想マシンは必要なときだけ動かす使い方が一般 的 ◦ 一台の計算機上に複数の計算機を仮想的に作成できる ◦ デスクトップ  異なる OS を使用するため作成 ◦ サーバ  最大負荷に合わせた数の仮想マシンを作成  長期間使わない仮想マシンも存在する VM.
Advertisements

ファイルキャッシュを考慮したディスク監視のオフロード
最新ファイルの提供を保証する代理FTPサーバの開発
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウド上の仮想マシンの安全なリモート監視機構
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
Debian GNU/Linux ー Linuxインストールに必要な基礎知識 ー 三上 彩 鈴木 倫太郎
(original Takagi & Saito, 2007)
Android端末のメモリ暗号化 によるコールドブート攻撃対策
メモリ暗号化による Android端末の盗難対策
仮想計算機を用いたファイルアクセス制御の二重化
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
インターネット社会の脅威 (インターネット社会のセキュリティ) 開始 再生時間:5分20秒.
小型デバイスからのデータアクセス 情報処理系論 第5回.
利用者が守るセキュリティー (パスワードについて)
ファイルシステムキャッシュを 考慮したIDSオフロード
ネストした仮想化を用いた VMの安全な帯域外リモート管理
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
型付きアセンブリ言語を用いた安全なカーネル拡張
SAccessor : デスクトップPCのための安全なファイルアクセス制御システム
KVMにおける仮想マシンの 内部監視機構の実装と性能評価
SAccesor:デスクトップPCのための安全なファイルアクセス制御システム
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
分散IDSの実行環境の分離 による安全性の向上
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
リモートホストの異常を検知するための GPUとの直接通信機構
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構
仮想マシンを用いた 既存IDSのオフロード
Intel SGXを利用するコンテナの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
VPNとホストの実行環境を統合するパーソナルネットワーク
信頼できないクラウドにおける仮想化システムの監視機構
仮想環境を用いた 侵入検知システムの安全な構成法
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
Cell/B.E.のSPE Isolationモードを用いた監視システム
仮想マシンの監視を継続可能なマイグレーション機構
仮想マシンと物理マシンを一元管理するための仮想AMT
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
Virtual Machine Introspectionを可能にするVMCryptの拡張 田所秀和 光来健一 (九州工業大学)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
管理VMへの キーボード入力情報漏洩の防止
Presentation transcript:

Android端末の盗難対策のためのページキャッシュ暗号化 九州工業大学 光来健一 福田直人

Android端末の普及 近年、Android端末が急速に普及 盗難にあった時のリスクが高い 盗難にあうリスクが高い 従来の携帯電話より多くの情報を保持 より重要な情報も格納 クレジットカード情報 盗難にあうリスクが高い ノートPCより小型軽量 古賀研 Android普及率の最新のグラフ

Android端末の盗難対策 Androidはフルディスク暗号化の機能を提供 ディスクのパーティション全体を暗号化することでデータを保護 PIN(四桁の暗証番号)から生成された鍵で暗号化 端末を盗まれてもPINが分からなければディスク上のデータは解読できない PINの説明 攻撃者の端末 フルディスク暗号化 盗まれた端末 盗まれた端末でOSを入れ替え

コールドブート攻撃 端末のリセット後にメモリ上に残されたデータを盗み見る攻撃 OSがメモリ上の機密情報を消去する時間はない メモリを冷却して端末を強制リセット 電源供給が途絶えることによるデータ破壊を防ぐ 攻撃者のOSで起動してメモリ上のデータを取得 OSがメモリ上の機密情報を消去する時間はない 通常のシャットダウンは行なえない

Androidにおけるコールドブート攻撃 FROST [Muller+ ACNS'13] バッテリを抜き差ししてリセット USB経由で攻撃用リカバリイメージをインストール・起動 ブートローダをアンロックする必要がある場合でも、メモリ上のデータは消去されない 画像、ディスク暗号化の鍵などを取得可能 ブートローダ 漏洩がすべてキャッシュからではない

キャッシュからの情報漏洩 Android 多くのOSと同様にディスク上のデータをメモリ上にキャッシュとして保持 ファイルアクセスの高速化のため コールドブート攻撃によりキャッシュを盗み見られる フルディスク暗号化を行っていてもディスクの一部のデータが漏洩 メモリ容量の増大により漏洩するデータも増大する傾向 図を大きくする 字が見えない ページキャッシュを横に並べる ディスク Android

Cache-Crypt OSがメモリ上のページキャッシュを暗号化 コールドブート攻撃による情報漏洩の対象を限定 ディスク Android ディスク上のファイルデータのキャッシュ アプリがアクセスする時だけ復号 コールドブート攻撃による情報漏洩の対象を限定 アプリがアクセス中のページキャッシュのみ メモリ上のページキャッシュを暗号化することでコールドブート攻撃によるページキャッシュからの情報漏洩を防ぐシステムCache-Crypt を提案 ページキャッシュ というのは ディスク上のファイルデータのキャッシュ 外からの攻撃に cpuの数分、アプリがアクセスしている 連続 アクセスしている瞬間の 〜〜〜というのは 暗号化までのアニメーションにする Android ディスク ファイル

暗号鍵の保護 ページキャッシュを暗号化する鍵が盗まれるとCache-Cryptを無効化される メモリ上に保持するとコールドブート攻撃で盗まれる 暗号鍵をCPUのデバッグレジスタに保持 [Götzfried+ ARES'13] 暗号鍵の漏洩を防ぐ 端末のリセット時には初期化される メモリ

脅威モデル 端末を盗まれ、コールドブート攻撃によりページキャッシュや暗号鍵を盗み見られる攻撃を想定 アプリのメモリからの情報漏洩は対象外 cf. Cryptkeeper [Peterson HST'10] ディスクからの情報漏洩は起こらない フルディスク暗号化 端末に不正ログインされない 復号された後のディスクのデータを直接取得されない アクセスが多い所は、ずっと複合されている -> crypt-keeper 暗号化が弱い

システム構成 ページキャッシュの暗号化・復号化は主にVFS層で実装 フルディスク暗号化にはdm-cryptを用いる 書き戻し処理についてのみ個別のファイルシステム(ext4)に実装 フルディスク暗号化にはdm-cryptを用いる VFS ext4 FAT32 ページキャッシュ dm-crypt

ファイルの読み込み アプリがOSのreadシステムコールを発行 ページキャッシュ上のデータが暗号化されていれば復号 キャッシュがなければディスクから読み込む データをアプリのバッファに書き込み ページキャッシュ上のデータを再び暗号化 メモリマップされていない時かつメタデータでない時 カーネル内での処理でメタデータが使用されるため ファイルの中身に比べるとメタデータは漏洩しても問題ない アニメーション

ファイルへの書き込み アプリがOSのwriteシステムコールを発行 アプリのバッファのデータをページキャッシュに書き込み キャッシュがなければ必要に応じてディスクから読み込む ページキャッシュ上のデータを暗号化 メモリマップされておらず、メタデータでない時のみ 後でOSがディスクに書き戻す

ファイルの書き戻し OSが適切なタイミングで更新されたページキャッシュ上のデータをディスクに書き戻す 書き戻し開始時にページキャッシュ上のデータを復号 dm-cryptが暗号化してディスクに書き戻す 書き戻し完了時に再び暗号化 コールバック関数が呼ばれる メモリマップされておらず、 メタデータでない時のみ ext4の場合、ファイルシステム 依存の処理 ext4使っていない、のもは別途に対応していく vfsのみで書き戻しを行なっているのファイルシステムもある

ファイルのメモリマップの問題 アプリはmmapシステムコールでファイルをメモリマップできる OSがページキャッシュへのアクセスを検知できない ページキャッシュがプロセスのアドレス空間に直接マップされる OSを介さずページキャッシュにアクセスできる OSがページキャッシュへのアクセスを検知できない 復号が行えない ここで情報漏洩のリスクが高まる 横向き

ファイルのメモリマップへの対応 メモリマップされたページキャッシュにアプリが初めてアクセスした時に復号 初回アクセス時に発生するページフォールトを利用 メモリマップ中はページキャッシュは復号されたまま この期間は情報漏洩の可能性あり アンマップされた時に再び暗号化 Android メモリ ページ キャッシュ Linux カーネル ページフォールトが発生 メモリマップを行なっているのはおもにライブラリくらい ? ( javaから使う時は、メモリマップはしないかも )

暗号化フラグ ページキャッシュの状態を管理するためにページ構造体に暗号化フラグを追加 ページ構造体 各メモリページを管理するためのカーネルデータ構造 Cache-Cryptは暗号化フラグを用いてページキャッシュを暗号化すべきか、復号すべきかを判断 暗号化フラグ 状態 ENCRYPT 暗号化されている DECRYPT 暗号化されていない MEMORY_MAP メモリマップされている

dm-cryptとの連携 Cache-Cryptとdm-cryptの一方でのみ暗号化・復号化することでオーバヘッド削減 ファイルデータ 暗号化ディスクから直接ページキャッシュに読み込む ページキャッシュから直接暗号化ディスクに書き戻す メタデータ dm-cryptで暗号化・復号化 タイミングじゃない やらない dm-cryptがないとメタデータが漏洩 メタデータはdm 図を書く  メタデータについて書いておく ファイルデータに関しては、 ファイルとメタデータは対で存在 ディレクトリのデータはinodeが0なのでcache-cryptでは暗号化しない Cache-Crypt ファイルデータ メモリ ページ キャッシュ dm-crypt メタデータ

安全な暗号処理 ARMORED [Götzfried+ ARES'13] を用いる デバック時以外に使用されない ARMのSIMD拡張命令セットが提供するレジスタを用いて暗号処理 メモリを用いずにAESの暗号処理を行う 暗号処理の途中結果が漏洩しない カーネルパッチとして提供されているが、Cache-Cryptには未適用 暗号化は難しい

実験 Cache-CryptをAndroid OSに実装 Cache-Cryptの有効性を確かめる実験を行った 実験環境 Android 4.4, Linux 3.4.0 Cache-Cryptの有効性を確かめる実験を行った ページキャッシュの暗号化の確認 Cache-Cryptによるオーバヘッドの測定 実験環境 Androidエミュレータ Nexus 7 (2013)

Cache-Cryptを実装したAndroid OS 暗号化の確認 Androidエミュレータでメモリの内容をダンプ エディタアプリで巨大なテキストファイルを読み込み、キャッシュさせておく 結果 既存のAndroid OSではテキストファイルの文字列を発見 Cache-Cryptでは暗号化された文字しか見つからなかった 写真 既存のAndroid OS Cache-Cryptを実装したAndroid OS

オーバヘッドの測定 Benchmarkアプリを用いてNexus 7におけるファイルアクセス性能を測定 暗号化・復号化には暗号鍵との単純なXORを使用 Cache-Cryptを用いることによるオーバヘッドは10%程度 AESを用いるとオーバヘッドは 増大 ARMOREDを用いるとさらに 増大 ファイルの読み込み (MB/s)

関連研究 TransCrypt [Sharma '06] Keypad [Geambasu+ EuroSys'11] 暗号化ファイルシステム ページキャッシュ暗号化の記述もあるが、詳細は不明 Keypad [Geambasu+ EuroSys'11] ファイル単位の暗号鍵をサーバに保存 ネットワークが使用できない時は復号できない Cryptkeeper [Peterson HST'10] プロセスのワーキングセット以外のメモリを暗号化 ページキャッシュを含むOSのメモリは暗号化しない

まとめ メモリ上のページキャッシュを暗号化する Cache-Cryptを提案 今後の課題 アプリがアクセスする時だけ復号 コールドブート攻撃による情報漏洩を防ぐ Android OSに実装し、有効性を確認 今後の課題 ARMOREDを利用した暗号処理の実装 dm-cryptとの連携によるオーバヘッド削減 暗号化・復号化の頻度を減らすことでオーバヘッド削減 今後の課題を、なにをするかをそれぞれ一つずつ言う