web-dev-qa-db-ja.com

暗号は、DESまたはAESなどの暗号アルゴリズムとどのように関連していますか?

ここで用語の問題が発生しているようです。暗号化では、ストリーム暗号とブロック暗号があります。私は彼らの違いを理解しています。また、AES(Rijndael)のような暗号化アルゴリズムもあります。

私の混乱点は、暗号アルゴリズムと暗号がどのように相互に接続するかです。基本的に、彼らは同じようなことをしているように見えます(暗号化と復号化)。

AESなどはブロック暗号の「特殊なケース」ですか?ブロック暗号は、それらの1つがAESであるアルゴリズムのファミリーですか?

4
py_script

暗号は暗号化アルゴリズムです。

ストリーム暗号は、平文をx-orで暗号化してキーストリームを生成します。それらはブロック暗号と比較して非常に高速です。ベンチマークの比較は WolfSSL Webサイト で確認できます。AES-128とChaChaを比較してください。

Advanced Encryption Standard(AES)は128ビットのブロックサイズであるため、ブロック暗号はブロックに対して機能します。

AESは、NISTによる現在の標準としてのブロック暗号の1つです(AESの前は、以前の標準としてデータ暗号化標準(DES)がありました)。 Twofish、Speck、Simon(NSAの最後の2つ)などもブロック暗号のメンバーです。

ブロック暗号とストリーム暗号の間には興味深い関係があります。あれは; OFBおよびCTRとして適切な ブロック暗号化操作モード を使用して、ブロック暗号をストリーム暗号に変換できます。動作のCTRモードのAESは AES-GCM モードで使用され、現在TLS 1.3の 標準暗号スイート で使用されています。

  • {0x13,0x01}-TLS_AES_256 _[〜#〜] gcm [〜#〜]_ SHA384
  • {0x13,0x02}-TLS_CHACHA20_POLY1305_SHA256
  • {0x13,0x03}-TLS_AES_128 _[〜#〜] gcm [〜#〜]_ SHA256
  • {0x13,0x04}-TLS_AES_128 _[〜#〜] ccm [〜#〜]_ 8_SHA256
  • {0x13,0x05}-TLS_AES_128 _[〜#〜] ccm [〜#〜]_ SHA256
7
kelalaka

暗号化アルゴリズムは、暗号化に関連する特定の数学的記述(アルゴリズム)です。ハッシュアルゴリズム、ブロック暗号、ストリーム暗号、署名アルゴリズム、疑似乱数ジェネレータなど、特定のタイプのアルゴリズムがあります。

暗号化アルゴリズムを使用して暗号化/復号化を実行できます。その場合、アルゴリズムは暗号と呼ばれます。これは、ストリーム暗号、ブロック暗号、またはRSAなどの非対称暗号である可能性があります。通常、ブロック暗号は、安全な動作モードで使用する必要があります。つまり、通常は完全な暗号に関連付けるプロパティに準拠する必要があります。動作モードには、CBCモードとGCMモードがあります。

AESブロック暗号であり、はい、それは確かにブロック暗号のファミリーにあります。これは、DESの後継として、米国で使用される主要な暗号としてNISTによって標準化されているという意味で特別です。元の名前は、作者のVincent RijmenおよびJoan DaemenにちなんでRijndaelです(ただし、AESはRijndael仕様の特定のサブセットのみを使用しています)。

Rijndaelは、AESコンテストで優勝した後、Advanced Encryption Standardになりました。別の暗号が勝った場合、その暗号はAESになり、Serpentなどのアルゴリズムはより安全であると考えられます。ただし、Rijndaelは、ハードウェアとソフトウェアの両方で実装するのに効率的でもあります。少なくとも、当時の競合他社の他のアルゴリズムと比較すると、.


ブロック暗号は、暗号化/復号化に使用されるだけではないことに注意してください。ハッシュアルゴリズムと同様に、他の関数を構築するためにprimitiveとしてよく使用されます。たとえば、ブロック暗号を使用して認証モードを構築できます。例は、Poly1305のAES-CMAC、AES-GMAC、およびAESです。これは、より限定されたストリーム暗号よりも優れている点です。ブロック暗号は(キー付き)疑似ランダム順列であり、このようなスキームに必要な特定のプロパティがあります。

ストリーム暗号は一般にソフトウェアではかなり効率的です。ただし、多くの場合、より大きな状態(より多くのメモリ)も必要になります。ブロック暗号は、カウンター(CTR)モードなどのストリーム操作モード、AES-GCMで使用される基本モード、およびその他の多くの認証済み暗号化モードで使用できます。このように、各バイトを個別に暗号化できるなど、ストリーム暗号と同様のプロパティがあります(したがって、パディングモードの操作は必要ありません)。

8
Maarten Bodewes