2016-08-10 9 views
0

セキュリティ上の問題を初めて知りました。私は、テキスト資産を暗号化することによって、アンドロイドアプリで知的財産の基本的な(限定的な)保護を実装しようとしています。これを行うために、私はS.Saurelによってここに記述されたSimpleCryptoクラスを実装しましたhttp://www.ssaurel.com/blog/how-to-use-cryptography-in-android-applications-2/。別のプログラムを使用してデータを暗号化し、暗号化されたデータをアセットファイルとして組み込み、アプリで使用するために復号化する予定です。私の質問は、ファイルの解読に必要なSALT文字列とSEED文字列を扱うためのベストプラクティスは何ですか?実行時に生成されるか、何らかの形で保存されるべきですか?それらは暗号クラスに含まれるか、またはアプリケーションのどこかで生成され、暗号クラスに渡されるべきですか?SALT、SEED、androidのSecretKeyを使用してテキストファイルを解読するためのベストプラクティス

ありがとうございます!

答えて

0

この実装では、「シード」は「パスワード」とみなされます。パスワードを入力するようにユーザーに求めないので、ハードコードするか、ファイルに保存するか、実行時にサーバーから要求するか、その他のものを要求します。賢明な攻撃者は、このパスワードを取得し、それを使用して自分の暗号テキスト用の独自の復号鍵を生成できる可能性が高いことに注意してください。

塩は、暗号化のためにinitialization vectorとして機能する秘密ではない値です。ベストプラクティスでは、クリアテキストごとにランダムな塩を生成し、暗号文と暗号化されていないシードをクライアントに提供するよう指示します。 IVは通常、使用する暗号のブロックサイズに依存しています。この例では、256ビットの鍵を生成しているので、クリアテキストごとにランダムな256ビット(64バイト)の塩を生成し、暗号文

[2 bytes indicating length of salt][salt][ciphertext] 

次に、暗号化のためにシードと暗号文を得ることができます。

関連する問題