GCMモードと、CBC間での違いについて詳しく知りたいと思っています。 GCMがメッセージ認証に使用されるMACを提供することはすでに知っています。私が読んだことと、私が見たコードスニペットから、GCMは排他的論理和またはCBCによく似ていますが、排他的論理和が何に反対しているかはわかりません。 CBCモードでは、ランダムIVを使用する最初のブロックを除いて、排他的論理和は前の暗号文ブロックに対する平文です。 GCMは同じことをしますか、それとも排他的論理和を行いますか、それとも他の何かに対してですか?もしそうなら、誰かがGCMがIVをどのように使用し、排他的論理和がどのように行われるかを簡単に説明できますか。

コメント

  • 認証を無視する場合は、 GCMは、CBCモードではなく、CTRモードのように動作します。ウィキペディアでそれらを調べてください。
  • このページで'定義されていないという理由だけで… GCM = Galois / Counter Mode、CBC = Cipher Block Chaining …その他の定義には、MAC(メッセージ認証コード)、IV(初期化ベクトル)、およびCTR(CounTeRモード)が含まれます。

回答

GCMモードとCBCモードの動作は内部的にまったく異なります。どちらもブロック暗号と排他的論理和を含みますが、使用方法は異なります。

CBCモードでは、現在の平文ブロックを取得して排他的論理和を使用することにより、データのブロックを暗号化します。前の暗号文ブロック(またはIV)、そしてその結果をブロック暗号を介して送信します。ブロック暗号の出力は暗号文ブロックです。

GCMモードは、プライバシー(暗号化)と整合性の両方を提供します。暗号化を提供するために、GCMはカウンターを維持します。データのブロックごとに、ブロック暗号を介してカウンターの現在の値を送信します。次に、ブロック暗号の出力を取得し、それを平文と排他的論理和で暗号文を形成します。

2つの重要な違いに注意してください。

  • 何が排他的論理和であるか。CBCモードでは、平文は攻撃者が知っているデータ(IVまたは以前の暗号文ブロック)で排他的論理和されます。したがって、それ自体は固有のセキュリティを提供しません(代わりに、ブロック暗号を介して同じブロックを2回送信する可能性を最小限に抑えるために行います)。 GCMモードでは、平文は排他的論理和でブロック暗号からの出力になります。攻撃者がその出力を推測できないのはセキュリティモデルに固有です(平文と暗号文をすでに知っている場合を除く)。

  • ブロック暗号を介して送信されるもの。 CBCモードでは、平文はブロック暗号を介して送信されます(排他的論理和で「ランダム化」された後)。GCMモードでは、ブロック暗号を介して送信される内容は、実際にはデータに依存しません。暗号化されていますが、代わりに内部状態のみです。

GCMがIVを使用する方法について(私は個人的に、GCMが使用するもののより良い用語を「nonce」と考えています。 GCMでは、同じキーに同じナンスを2回使用することはできないという考えです)、まあ、それはカウンターを初期化するために使用されます。

コメント

  • 非常に興味深い…私が正しく理解している場合、GCMモードでは、ブロックの暗号化テキストは排他的論理和である、または暗号化されたばかりの平文に対して'このブロックが送信されます。これが当てはまる場合、そのブロックはどのように復号化されますか?'データを復号化するためにAES(たとえば)暗号化からの暗号化テキストは必要ですか?それは得られますか?また、oの場合元の暗号化されたテキストが取得されたら、それを排他的に使用できます。または、送信された暗号文は平文を返し、さらに復号化する必要はありません… '何かが足りません。 。
  • いいえ、GCMでは、カウンターを取得し、それをブロック暗号を介して送信してから、排他的論理和、または平文を使用して暗号文を形成します。復号化側では、同じカウンターを維持し、ブロック暗号を介して送信してから、排他的論理和を送信します。または、暗号文を使用して平文を形成します。
  • @ponchoしたがって、GCMでは必要ありません。ブロック暗号の「復号化」部分?両側で「暗号化」を使用しているためです。
  • 同じキーで同じナンスを2回使用すると、…どのような攻撃にさらされることになりますか?
  • @RobertSiemer: 2つの攻撃:a)攻撃者は同じナンスで暗号化された2つのメッセージの大量の情報を取得し(おそらく両方のコンテンツを推測するのに十分)、b)攻撃は検出されずにメッセージを変更できる情報を取得します

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です