2013-03-06 9 views
12

を行います。は、どのように私は簡単な質問を持っているiOSのデータ保護作業

iOSのセキュリティ文書(http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf)によれば、デバイス(iPhone/iPad)がラップトップとペア設定されている場合、ラップトップはモバイルデバイスからエスクローキーバッグを取得します。 keybagには、デバイスの情報を復号化するために必要なすべてのクラスキーが含まれています。

しかし、デバイスをラップトップとペア設定してiExplorerを使用してファイルシステムを参照すると、sqliteファイルはデバイスがロック解除されている場合にのみ使用できることに気付きました。電話機がロックされている(ペアになっている)と、ファイルは読み込めません。 NSFileProtectionCompleteを使用していないファイルは、デバイスがロックされている間に表示できます。

エスクローキーバッグに情報を復号化するためのすべてのクラスキーが含まれている場合、iExplorerを使用してアクセスするためにデバイスをロック解除する必要があるのはなぜですか?

iPad3でiOS 6.0を使用していて、ios-dataprotectionツール(https://github.com/ciso/ios-dataprotection)を使用してファイルで使用されているデータ保護クラスを判別しています。

のiOSアプリケーション:AccountVault
ファイル:PointMinder.sqlite

すべてのヘルプは理解されるであろう。

ありがとうございました。

+1

iPadがパスワードで保護されていることを忘れてしまった。 – Sec

+0

iExplorerは、エスクローキーバッグとバックアップパスフレーズの場所を知っていますか? –

+0

デバイスがペアでない場合、iExplorerはファイルシステムにアクセスできません。デバイスのペアリング後に変更されるのは、キーバッグが転送されることだけです。だから私はそれが情報を解読し、読むためにiTunesのようなエスクローキーバッグを使用していると推測しています。 – Sec

答えて

6

文書ファイルからリンクされました:

完全な保護(NSFileProtectionComplete):クラスのキーは、ユーザーのパスコードとデバイス UIDから派生キーで保護さ です。ユーザーがデバイスをロックした直後(要求 のパスワード設定が[即時]の場合は10秒後)、解読されたクラスキーは になります。

そのファイルにアクセスするには、デバイスのロックを解除する必要があります。そういうわけでAppleはそれを作った。

編集:「ハッキングやセキュリティ保護のiOSアプリケーション」で発見

保護クラスのキーは、そのアクセスポリシーに基づいてファイルのロックを解除するために使用されるマスター暗号化キーです。 保護クラスは、ファイルのアクセスポリシーを実施するために使用される暗号化メカニズムです。

ファイルの中には、オペレーティングシステムがデバイスのユーザーインターフェイスのロックが解除されている場合にのみ、そのファイルを復号できるようにすることが非常に重要なものがあります。これらのファイルの暗号化キーは、ユーザーがパスコードを入力した後にのみ利用可能なクラスキーでラップされます。デバイスが再びロックされると、キーはメモリから消去され、ファイルは再び使用できなくなります。

プロテクションクラスのマスターキーは、キーバッグと呼ばれるエスクローに格納されます。 keybagには、暗号化保護クラスのマスターキーと、デバイスのシステムファイルへの他のキーが含まれています。システムのキー・バッグは、BAGIという名前の別の暗号化キーを使用して暗号化され、BAGIはNANDの消去可能記憶域にも格納されます。ユーザーが特定のセキュリティ保護ポリシーを満たすために認証するたびに、キーバッグ内の暗号化されたキーを復号化することができます。

したがって、そのファイルのキーは転送されますが、暗号化されます。パスコードを入力すると、OSはその鍵を解読し、それを使って保護されたファイルの解読に使用することができます。

+0

お返事ありがとうございます。 コメントの後に別のテストを試しました: デバイスをiTunesとペア設定してデバイスのロックを解除した後、iExplorerを開いた。この段階で、sqliteファイルは元々はアクセス可能でした。それを実行した後、私はデバイスをロックし、5分以上待って、sqliteファイルがまだアクセス可能であることに気づいた。 この実験は期待通りに行っていませんでした。ここでは、デバイスがすぐにロックを解除するように設定されていることと、sqliteファイルがNSFileProtectionCompleteを使用していることを指摘しておきます。 – Sec

+1

文書によると、 " パスコードロックされたデバイスが最初にiTunesに接続されると、ユーザーはパスコードの入力を求められ、エスクローキーバッグを作成してホストに渡します。デバイスで使用されているのとまったく同じクラスキー " すべてのクラスキーがエスクローキーバッグに存在することを示します。私がすでにすべてのクラスキーを持っている場合、クラスキーのロックを解除するためにパスコードが必要なのはなぜですか? つまり、クラスキーを取得するためにUIDとパスコードの組み合わせが必要ですが、すべてのクラスキーがエスクローキーバッグに既に存在しています。 – Sec

+2

奇妙なことに、5分後にファイルにアクセスできました。たぶん、iExplorerにキャッシュされたバージョンのようなものでした(私はそれを自分で使ったことはありません)?また、ファイルごとのキーは、ファイルがアクセス可能な状況に応じて、いくつかのクラスキーの1つでラップされます。これはおそらく、すべてのクラスキーがペアリングで解読されるわけではないことを意味します。 –

0

これは、自分のアプリケーション内のSQLiteデータベースでのみ動作し、他のリソースでは期待していません。しかし、デバイスをロックしてiExploreを開いてデバイスを接続したまま数分間待機しても、同じ問題がデータベースにアクセスできるようになりました。 iPadを外してすぐに接続すると、iExploreが強制的に更新するように強制して、データベースにアクセスできなくなりました。それで、メモリ内に古い「暗号化されていない」データベース情報があるかどうかは分かりません。