9

どういうわけか、HMAC を取得できません。

公開鍵署名があるのに、なぜHMAC が必要なのですか? 、そして私はこれを手に入れたと思います。計算が簡単など...

しかし、私が得られないのは、なぜ HMAC が必要なのか、それぞれがどのような問題を解決しているのかということです。

私の理解では、HMAC は ...

  • メッセージが改ざんされていないことを確認する方法を提供する
  • 秘密鍵によって「保護」されていますが、対称鍵です。

したがって、HMAC を計算するには (最初に、または検証のために) 秘密鍵を知る必要があります。

さて、この鍵を改ざんされずに秘密裏に交換できれば、メッセージも改ざんされずに秘密裏に交換できるのではないでしょうか?

さて、キーを 1 回だけ交換する必要があると主張することができますが、複数のメッセージがある可能性があります。それはいいです。

しかし、すべての関係者が秘密にしておく必要がある秘密鍵がある場合は、同じ秘密鍵を使用して対称暗号化を直接使用してメッセージを暗号化することもできますよね?

もちろん、HMAC は改ざんに対する解決策を提供しますが、秘密鍵と適切な暗号化アルゴリズムのない暗号化されたメッセージしかない場合、a) 復号化が機能し、b) 暗号化されたメッセージを変更することはできません。意味のある復号化されたメッセージが表示されます。

では、実際には何のために HMAC が必要なのでしょうか? または - 私が見逃しているポイントはどこですか?

4

1 に答える 1

13

暗号化に使用されるキーを知らずに、暗号化されたメッセージを改ざんすることは不可能であると想定しています。これは事実ではなく、危険な仮定です。暗号文にしかアクセスできない場合でも、いくつかの可能性があります。

  • メッセージのサフィックスの破損: これにより、エラー メッセージ、タイミング、およびその他の方法でコンテンツに関する情報が漏えいする可能性があります。
  • 一部のモード (ECB、CFB、およびその他のモード) でのメッセージの範囲の破損: 上記と同じですが、攻撃者には、必要な動作をトリガーする方法が他にもあります。
  • 単一ブロック内の任意のビットの反転 (初期値は不明) と次のブロック (CFB) の破損: 攻撃者が一部のビットを知っている場合、攻撃者はそれらを必要な値に設定できます。
  • ストリーム暗号のメッセージ全体の任意のビットの反転、またはブロック暗号のストリーム暗号と同等のモード: これにより、破損を完全に回避できます。

したがって、復号化されたコンテンツを 1 バイトでも処理する前に、攻撃者がメッセージを改ざんしていないことを確認することが非常に重要です。アドホック検証または単純なハッシュを使用してこれを行うにはいくつかの落とし穴があるため、HMAC がその一例である MAC が必要です。

于 2013-02-10T09:50:45.763 に答える