1

現在、Android アプリのユーザー パスワードに AES-ECB 暗号化を使用していますが、このアプリのデータベースを、ユーザーがモバイル アプリと同じ方法で登録およびログインできる Web サイトに接続する必要があります。

ECB モードが保護されていないことを読んだので、IV を生成して CBC を使用したいと考えました。

サーバー側のphpとアプリの両方で、IVをコードに定数として保存することは安全ですか(私はこの方法で秘密鍵も保存します)?

そうでない場合、ウェブサイトとモバイルアプリが IV を共有してユーザーパスワードを暗号化/復号化する方法はありますか?

または、間違った暗号化アルゴリズムを選択した可能性があります。自分のニーズにより適したものがある可能性があります

4

2 に答える 2

4

ベスト プラクティスは、暗号化ごとに新しいランダム IV を作成することです。IV は基本的に、最初のブロックで使用される暗号化呼び出しのシードです。

各 IV は暗号文とともにクリア テキストで安全に保存できるため、暗号文を復号化するときに使用できます (暗号化に使用される IV は、復号化に使用される IV と同じである必要があります)。

于 2012-12-11T11:28:25.047 に答える
1

このアルゴリズムに慣れている場合は、IVを暗号化から復号化まで共有しないことをお勧めします。

ダミー ブロック 16 バイトの実際のメッセージ ブロックの前に、16 バイトの初期ダミー ブロックを追加します。そのため、IV を Decrypting End に共有していなくても、AES-CBC は連鎖モードであるため、Decrypting end の最初のブロック (ダミー ブロック) が破損し、残りのブロックは影響を受けません。

暗号化の終了 AES の CBC モードと同様に、CBC モードでは、平文の各ブロックは、暗号化される前に前の暗号文ブロックと XOR されます。各メッセージを一意にするには、最初のブロックで初期化ベクトルを使用する必要があります。参照: http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29

復号化終了 不正な IV で復号化すると、平文の最初のブロックが破損しますが、後続の平文ブロックは正しくなります。これは、隣接する 2 つの暗号文ブロックから平文ブロックを復元できるためです。

于 2015-04-27T12:33:22.280 に答える