0

デバイス自体にできるだけ安全に保存したいSharedPreferencesがいくつかあります。セキュリティについては何も知りませんが、少し調べてみると、「難読化ツール」と呼ばれるものが欲しいことがわかりました。そうですか?それは「暗号化」とは違うのですか、それとも両方やりたいですか?また、 AESObfuscatorまたはProGuardを使用できることもわかりました。違いは何ですか?さらに多くのオプションがありますか?どちらを使うべきですか?

私は明らかにセキュリティに非常に慣れていないので、チュートリアルやその他のリファレンスが役に立ちます。

4

4 に答える 4

4

難読化ツールは、基本的に変数の名前を人間が読めない名前に変更するだけなので、この状況では何もしません。

あなたがしたいのは、データがあなたに保存されるときにデータを暗号SharedPreferences化し、それらからデータを読み取るときに暗号化を解除することです。

このアイデアの例暗号化されたSharedPrefs、これまで使用したことがないほど効果的であるとは言えません。

于 2012-10-01T18:12:24.907 に答える
2

リンクされたAESObfuscatorは、静的キーを使用して文字列を暗号化します。これにより、文字列を共有設定に保存でき、文字列が何であるかがすぐにはわかりません。これは、コード内のメソッド名と変数名をマングルしてリバースエンジニアリングを困難にするProGuardなどのコード難読化ツールとは異なります。キーがアプリ内にあるため、「暗号化」ではなく「難読化」と呼ばれ、(キーを抽出して復号化することで)元に戻すのはかなり簡単です。共有設定の難読化により、文字列の読み取りと変更が困難になりますが、不可能ではありません。そのレベルの保護に問題がない場合は、この方法を使用してください。コードの難読化を使用することも良い考えなので、両方を使用することをお勧めします。

文字列を「不可能」にする唯一のサポートされている方法は、ユーザーがアプリを使用するたびにパスワードを入力し、そこから暗号化キーを取得することです。これは機能しますが、言うまでもなく、あまりユーザーフレンドリーではありません。興味のある方は、ここにいくつかの詳細があります。

于 2012-10-02T03:12:04.097 に答える
0

Javaファイルの一部のURLを「非表示」にする必要があるときに、この問題について調査しました。あなたの場合、文字列を暗号化するのはある種の秘密鍵になります。Java / Androidのコード全体は、ある種のリバースエンジニアリングを使用している人なら誰でも読み取れるという問題があります。時にはそれは非常に簡単で、ProGuardのような難読化ツールはそれを少し難しくします。したがって、暗号化キーは誰にでも表示されます。Javaファイル内の文字列さえも隠すことができる(有料の)難読化ツールがいくつかありますが、それらがどれほど堅固であるかはわかりません。
つまり、文字列をデバイスの外部のサーバーに保存し、デバイスとサーバー(SSL)の間で何らかの安全な接続を使用します。または、サーバーに暗号化して返送するように依頼することもできます。秘密鍵をデバイスに保存すると、誰かがリバースエンジニアリングを使用してそれを読み取るかどうかを確信できなくなります。

于 2012-10-01T18:02:24.477 に答える
0

唯一の安全な方法は、機密情報をデバイスに保持しないことです-機密情報があれば、その価値が仕事をしている人の時間よりも長い場合に抽出されます(そして第三世界の国の熟練した子供たちは本当に安いです、お金の条件と時間通りに豊富)。これがOAuthでどのように行われるかを見ることができます-このテクノロジーにより、セキュリティクレデンシャル(またはアプリに表示されること)を損なうことなく、サードパーティのアプリ(たとえば)をTwitterにログインできます

優れたライブラリの1つは、 http ://code.google.com/p/oauth-signpost/です。

于 2012-10-01T18:20:58.757 に答える