2016-04-27 72 views
6

AndroidでKeyStoreを使用すると分かりやすい例はありますか?安全な文字列をAndroidに保存する方法は?

ROOTEDデバイスのAndroidアプリケーションのパスワード/トークン/ anything_elseを、デバイスに物理的にアクセスできるハッカーが使用するのを防ぐにはどうすればわかりません。

私はKeyPairをいくつかのALIASで生成でき、その秘密鍵をデータベースのパスワードとして使用することができると理解していますが、私は関心を持っています。同じALIASを使ってAndroid KeyStoreからprivateKeyを取得する別のアプリをビルドしますか?

すべてのソリューションはありますか?

+0

今のところ私が見つけた解決策は、SqlCipherによって暗号化されたデータをデータベースに保存することだけです。 ormLiteでアクセスし、パスワードをNDKメソッドに定数として格納します。 私のDbHelperはOrmLiteOpenHelperを拡張しています。私はNDKからメソッドを返すパスワードでDBを初期化しています。 NDKメソッドでは、これは単に "secretpassword"を返します。 防弾のAndroidブックでは、NDKからこの定数を取得することは難しいと言います。なぜなら、Javaコードのように逆コンパイルするだけでなく、逆アセンブルする必要があるからです。 これについてのご意見はありますか? –

答えて

2

私は本当に私は、デバイスに物理的にアクセスを持っているハッカーによって使用されているから根ざしデバイスでAndroidアプリケーションで自分のパスワード/トークン/ anything_elseを保護しなければならないのかを理解することはできません。

できません。 Client Authenticity is Not the Server's Problem

値を直接格納するのではなく、暗号化された値をアプリに保存するとします。この値を解読する鍵はどこにありますか?アプリはこの値を必ず復号化する必要があります。今すぐハッカーが行う必要があるのは、.apkをダウンロードしてLobotomyに差し込むだけで、何が起きているのかをすぐに把握できます。

ソフトウェアを実行しているユーザーから機密情報を隠す場合は、機密情報をデバイス自体に置かないほうがよいでしょう。

0

キーをアプリに保存する必要はありますか?

パスワードを設定するようにユーザーに依頼すると、SQLCipher DBがそのキーで暗号化されている可能性があります(あまりにもハッシュかもしれません)。その後、ユーザーがアプリを起動するたびにパスワードを尋ねます。

関連する問題