私のiOSアプリは、ユーザーの秘密鍵の保存を処理する必要があります。通常は、パスワードと同じように Keychain Services を使用しますが、ユーザーのデバイス間でキーを同期できると便利です。
Appleの iCloudドキュメント は、パスワードにiCloudを使用しないと書いていますが、秘密鍵に使用しても安全ですか? どうやら 、iCloudデータは転送中およびサーバー上で暗号化されます。
ICloud Key-Valueストアを介して秘密鍵を同期する際にセキュリティ上のリスクはありますか?
私は直接同期オプションを破棄し、ユーザーが自分の秘密鍵を好きな場所にエクスポートできるようにします。暗号化された形式のiCloud、DropBox、内部ストレージなど。
エクスポート時には、次のようにします。
インポート時:
これにより、ユーザーは、iCloud、DropBox、メールなど、必要な通信サービスを介して、適切なレベルのセキュリティで秘密鍵をすばやく簡単に同期できます。アカウントが侵入された場合でも、攻撃者はパスワードを解読する必要があります。彼らがまともなものを使用した場合、PBKDF2はクラッキングの試行を実行不可能にする適切な仕事をする必要があります。
秘密鍵は本質的にパスワードと同じです。効果的なセキュリティデバイスになるためには、秘密にしておく必要があります。そのため、ドキュメントにパスワード用ではないことが記載されている場合は、秘密鍵にも使用するのに十分安全ではないことが理にかなっています。
多項式の提案とは対照的に、ほとんどのエンドユーザーはリンクされたアプリを使用してデータストア全体 にアクセスできるサードパーティアプリケーションを使用するため、DropBoxやメールへのエクスポートは好きではありません。
特にDropBoxを使用すると、アプリがストレージ全体(キーとすべて)に完全にアクセスするのが非常に簡単になります。
現在、私は iCloud に傾いています。この場合、他のアプリケーションは、プライベートストレージに保存したデータを読み取ることができません。各iOSアプリケーションが独自のコンテナーを取得するこのテクノロジーを理解するのに1分かかりました。
per-applicationコンテナは、
一般的に言って、アプリケーションごとに1つのコンテナーしかありません。つまり、各iOSアプリケーションは互いに分離されています。
さらに、開発者はユーザーのiCloudデータベースの内容を直接読み取ることはできません。これはDropBox OAuthや他の商品ストレージにはない機能です。
(言うまでもなく、それは ほぼ無料です )
そうは言っても、Polynomialが示唆するように、どこに行っても暗号化します。