現在、かなりエンタープライズ向けのアプリに取り組んでおり、すべてのデータをローカル ディスクで暗号化することが義務付けられています。現在、これを行う方法は、ログイン時に入力されたユーザー名/パスワードを使用して暗号化キーを作成することです。これらの値は常にメモリに保持されるため、誰かがそれをハッキングするのはかなり困難です (不可能ではありませんが、困難です)。
ここで、アプリは SSO を使用してログインする必要があります。プロバイダーによって実装は異なりますが、サーバーによって生成されるか、AccountManager から利用可能な値を使用するか、またはよりエキゾチックなものを使用して、一意の値が生成されると想像できます。 . ただし、これが完了しても、ディスクに保持されていないソース値から暗号化キーを作成する方法が必要です。上記のように、それらは現在ユーザー名/パスワードであり、SSO の場合、おそらく別の方法で生成されたものになります。
常にオンラインであれば、サーバーに依存してその値をデータベースに保持し、ログイン時に返すことができます。ただし、このアプリはオフラインでも機能する必要があります (もちろん、最初のログインを行った後)。
何かご意見は?ディスク全体を暗号化することだけを検討しましたが、ユーザーにそれを強制することはできません。すでに十分な量のデータがある場合、長い時間がかかります。
これらの値を、root を使用しても簡単に読み取れない OS のどこかに保持する方法はありますか? たとえば、ロック画面がある場合、ロック画面のパスワードを使用して暗号化されたデータを保持する方法はありますか? それがディスク暗号化に使用される方法であり、iOSにも同様の方法があることを理解しています。私は多くの場所で、4 桁のコードは信じられないほど安全ではないことを読みましたが、それはかなり良いものであり、現在のものよりもはるかに優れています.
他の考えはありますか?明らかな何かが欠けているように感じます。
前もって感謝します。