推奨されます, 2019

エディターズチョイス

ブロック暗号とストリーム暗号の違い

ブロック暗号とストリーム暗号は、プレーンテキストを直接暗号テキストに変換するために使用される方法であり、対称鍵暗号のファミリーに属します。

ブロック暗号とストリーム暗号の主な違いは、ブロック暗号がテキストのブロックを一度に暗号化および復号化することです。 一方、ストリーム暗号は一度に1バイトのテキストを取得してテキストを暗号化および復号化します。

比較表

比較基準ブロック暗号ストリーム暗号
基本
一度にブロックを取得してプレーンテキストを変換します。
一度に1バイトのプレーンテキストを取得してテキストを変換します。
複雑
シンプルなデザイン
比較的複雑
使用ビット数
64ビット以上
8ビット
混乱と拡散
混乱と拡散の両方を使う混乱だけに頼る
使用されているアルゴリズムモード
ECB(電子コードブック)
CBC(暗号ブロック連鎖)
CFB(暗号フィードバック)
OFB(出力フィードバック)
可逆性
暗号化されたテキストを元に戻すことは困難です。
平文に容易に逆にすることができる暗号化のためにXORを使用します。
実装
Feistel暗号
バーナム暗号

ブロック暗号の定義

Block Cipherはメッセージを受け取り、それを固定サイズのブロックに分割して、瞬時にメッセージの1ブロックを変換します。 たとえば 、平文のメッセージ「STREET_BY_STREET」を暗号化する必要があります。 ブロック暗号を使用して、「STREET」を最初に暗号化し、次に「_BY_」、最後に「STREET」の順に暗号化する必要があります。
実際には、通信はビット単位でのみ行われます。 したがって、STREETは実際にはSTREETのASCII文字に相当する2進数を意味します。 その後、任意のアルゴリズムがこれらを暗号化します。 結果のビットは、それと等価のASCIIに変換されます。

ブロック暗号の使用法に関する明らかな問題は、同じ暗号が生成されるテキストの繰り返しです 。 それゆえ、それは暗号解析者にヒントを与え、それは平文の繰り返し文字列を見つけ出すことをより容易にする。 その結果、メッセージ全体を明らかにすることができます。

この問題を克服するために、 連鎖モードが使用されます。 この技術では、暗号文の前のブロックが現在のブロックと混合され、暗号文があいまいになるため、同じ内容のブロックの繰り返しパターンが回避されます。

ストリーム暗号の定義

Stream Cipherは通常、ブロックを使用する代わりに、その時点でメッセージの1バイトを暗号化します。 例を見てみましょう。元のメッセージ(プレーンテキスト)がASCIIの「青い空」(テキスト形式)であるとします。 これらのASCIIを同等のバイナリ値に変換すると、0と1の形式で出力されます。 それを010111001に翻訳しましょう。

暗号化と復号化には、キーとプレーンテキストがロードされる疑似ランダムビットジェネレータが使用されます。 疑似乱数ビットジェネレータは、 キーストリームとして一見ランダムに知られている8ビット数のストリームを作成します。 入力キーを100101011とします。これで、キーと平文のXORがとられます。 XORロジックは簡単に理解できます。
一方の入力が0、もう一方が1の場合、XORは1の出力を生成します。両方の入力が0の場合、または両方の入力が1の場合、出力は0になります。

混乱は、暗号文が元の平文についての手がかりを与えないことを保証する方法です。
拡散は、プレーンテキストを行と列に分散させることによってプレーンテキストの冗長性を高めるために使用される戦略です。

ブロック暗号とストリーム暗号の主な違い

  1. ブロック暗号化技術は、一度に1ブロックのテキスト、すなわち単独で暗号化することを含む。 同様に、ブロックを次々に取ってテキストを復号化します。 これとは対照的に、ストリーム暗号化技術では、一度に1バイトのテキストを暗号化および復号化します。
  2. ブロック暗号は混乱と拡散の両方を使いますが、ストリーム暗号は混乱だけに依存します。
  3. ブロック暗号の通常のブロックサイズは、64ビットまたは128ビットです。 これに対して、一度に1バイト(8ビット)がストリーム暗号で変換されます。
  4. ブロック暗号は、 ECB(Electronic Code Book)およびCBC(Cipher Block Chaining)アルゴリズムモードを使用します。 逆に、ストリーム暗号はCFB(Cipher Feedback)OFB(Output Feedback)のアルゴリズムモードを使用します。
  5. ストリーム暗号はプレーンテキストを暗号テキストに変換するためにXOR関数を使用します、それがXORされたビットを逆にするのが簡単である理由です。 一方、ブロック暗号はそのためにXORを使用しません。
  6. ブロック暗号は同じキーを使用して各ブロックを暗号化しますが、ストリーム暗号はバイトごとに異なるキーを使用します。

結論:

ブロック暗号とストリーム暗号は、プレーンテキストの暗号化と復号化の方法が異なります。 ブロック暗号の背後にある考え方は、プレーンテキストをブロックに分割してさらにそれらのブロックを暗号化することです。 一方、ストリーム暗号はストリームと同様にプレーンテキストを少しずつ変換します。

Top