iPhoneの証明書を使用して、MS Exchange Syncの認証を行います。この証明書を保護するためのセキュリティコンセプトの実装方法はわかりません。
例えばScreenLockが有効になっていない場合、iPhoneで「フル」キーチェーンアクセスを取得できますか? (または、ジェイルブレイクしたiPhoneを使用)。
誰かこれに関するリンクがありますか?
IOSキーチェーンセキュリティに関するフラウンホーファーの研究:
私の知る限り、iOSキーチェーンが使用する暗号化には2つのレベルがあります。最初のレベルでは、ロック画面のパスコードを暗号化キーとして使用します。 2番目のレベルでは、デバイスによって生成され、デバイスに保存されたキーが使用されます。
フラウンホーファーの研究者は、第2レベルを回避する方法を見つけました。暗号化キーはデバイスに保存されるため、これは回避するのが「簡単な」レベルです。そのため、iOS4では、メソッドはkSecAttrAccessibleWhenUnlockedまたはkSecAttrAccessibleWhenUnlockedThisDeviceOnlyを使用しないキーチェーンエントリでのみ機能します。これらのエントリは、電話がロックされている場合でも、第1レベルで復号化されてメモリに存在するためです。
パスワード試行ごとに約50ミリ秒。 →1秒あたり約20回の試行。 →基数36の6桁の英数字コードの正しいパスコードの推測が50%変化した場合、約1.7年。4桁の数字の標準シンプルコードは、9分以内にブルートフォースされます。ハードウェアベースではないため、iOSでの不正な試行のカウンターはバイパスできるという仮定に基づいて
Apple Inc. WWDC 2010、コアOS、セッション209「アプリケーションデータの保護」、スライド24
結論:機密データを保存する必要がある場合は、独自の暗号化を使用してください。また、キーをデバイスに保存しないでください。
編集:多数の ニュース記事 があり、フラウンホーファーの調査を引用し、デバイスが盗まれない限り読者が心配しないように安心させています。この攻撃はデバイスへの物理的アクセスによってのみ可能です。
私はなんとなく疑っています。研究者が電話に物理的にアクセスしてテストを行ったという事実は、制限ではなく、問題を単純化する方法に過ぎなかったようです。これは、キーチェーンエントリを解読するために行った操作の説明です。
ジェイルブレイクツールを使用した後、コマンドシェルにアクセスするには、小さなスクリプトを実行して、キーチェーンにあるパスワードにアクセスして解読します。復号化は、オペレーティングシステム自体が提供する機能を使用して行われます。
Jailbreak.meを使用したことがある人なら誰でも知っているように、ジェイルブレイクはデバイスへのphysicalアクセスを必要としません。理論的には、jailbreak.meコードを変更し、次のことを自動化するのは簡単なはずです。
もう一度、キーチェーンに何を入れるかについて注意してください。
通常、キーチェーンはそのような証明書を保存するための推奨される方法です。ただし、ジェイルブレイクを使用してキーチェーンのセキュリティをバイパスできることが発見されました( article )。
フランホーファーは、iPhoneキーチェーンの安全性に関する調査を行いました。
http://www.sit.fraunhofer.de/Images/sc_iPhone%20Passwords_tcm501-80443.pdf
私はあなたの質問の一部に答えることができますが、他の部分はまだ不明なので、答えを知りたいと思っているので、私は質問を投票しています。
私が答えることができる部分は、「スクリーンロックが有効になっていない場合にアプリが完全なキーチェーンアクセスを取得できるか」です。いいえ、すべてのアプリにはiphoneに独自のキーチェーン領域があります。つまり、アプリは独自のシークレットにのみアクセスできます。これらのシークレットはアプリ自体に対してロックされていないため、キーチェーンエントリをアプリ自体から隠す方法はありません。要約すると、アプリは独自のエントリを読み取ることができ、他のエントリは読み取れません。
しかし、私が知りたいのは、ジェイルブレイクされたデバイスで何が起こるかです。デバイスにジェイルブレイクが発生すると、すべてのアプリのキーチェーンが公開されますか?