完全に確定的な暗号化アルゴリズムをお持ちの場合は、辞書攻撃に脆弱です。
たとえば、「password」が常に「qbttxpse」に暗号化されている場合、攻撃者は暗号化されたパスワードのリストを調べ、「qbttxpse」が表示されているどこにいても普通のパスワードが「パスワード」であることを知ることができます。
メッセージが暗号化されずに暗号化されて格納されているメッセージングシステムに遭遇しました。ある顧客が同じメッセージを頻繁に送信しました。内容が何であるかを知ることはできませんでしたが、どれくらいのメッセージが同一であるかを知ることができます。攻撃者がこれを悪用する可能性があります。
もちろん、このプロパティを利用することができる微妙な方法がたくさんあります。
これを避けるには、塩を紹介します。
- 暗号化の入力には、平文、鍵、ランダムに生成されたソルト値が含まれています。
- 目的の受信者に送信されたペイロード復号化への入力は、暗号文、だから、キーと塩
が含まれている暗号文と塩
が含まれている、あなたは、ランダムにあなたの16バイトの塩を生成する必要がありますメッセージごとに送信する必要があります。送信プロトコルでは、暗号文とともに通信するためのスペースを確保する必要があります。それを暗号文の前に置くだけで簡単にできます。 固定塩をハードコードして両端で使用すると、暗号化と復号化が同じメッセージで終了するという意味で "動作"しますが、私が説明した脆弱性があります。ところで
- 暗号化アルゴリズムを中心にプロトコルを設計するには、非常に微妙な落とし穴をはらんでいる、そしておそらく最高の本当の専門家に委ねられている(私は、セキュアなインターネットプロトコルとかなり低いレベルで働いて20年以上の経験を持っている - と私は防弾暗号層を設計するために自分自身を信頼しないだろう)。可能な場合は、何かを確立してください(SSLやS/MIMEなど)。
多分https://en.wikipedia.org/wiki/Salt_(cryptography) –
私は塩が一般的であることを知っていますが、私はこのアルゴリズムにどのステップを適用する必要があるのか分かりません。 –
AFAIK GCMは「塩」値を使用しません。私はあなたが "ノンス"を指していると仮定します。 – Robert