ストリーム暗号とブロック暗号の違いを徹底解説!情報セキュリティの基礎知識
情報セキュリティの分野において、共通鍵暗号方式は大きく「ストリーム暗号」と「ブロック暗号」の2つに分類されます。両者は平文をどのような単位で処理するかという点で根本的に異なり、それぞれに適した用途があります。本記事では、それぞれの仕組みと特徴、そして主な違いについて詳しく解説します。
ストリーム暗号(Stream Cipher)とは
ストリーム暗号とは、デジタルデータの流れを1ビットまたは1バイトずつ順番に暗号化していく方式です。データを固定サイズのブロックに分割するのではなく、メッセージの1バイトをその都度処理していく点が大きな特徴です。
古典的なストリーム暗号の例としては、自動鍵ヴィジュネル暗号やヴァーナム暗号が挙げられます。特に理想的なケースとして、ヴァーナム暗号の「ワンタイムパッド」と呼ばれる形式があります。これは、鍵ストリームを平文のビット列そのものとして扱う方式です。
もし暗号化に用いる鍵ストリームが完全にランダムであれば、この暗号は鍵ストリームそのものを入手しない限り解読不可能となります。ただし、そのためには鍵ストリームを、通信を行う双方の利用者が事前に独立した安全な経路で共有しておく必要があります。
しかし、扱うデータ量が非常に多い場合には、この方法は現実的に対応が困難な運用上の課題をもたらします。そこで実際には、ビットストリーム生成器をアルゴリズムとして実装し、両利用者が同じ鍵ストリームを生成できるようにします。
この場合、ビットストリーム生成器は鍵によって制御されるアルゴリズムであり、暗号的に強度の高いビット列を生成できなければなりません。こうすることで、利用者同士が共有すべきものは生成用の鍵だけで済み、各自が同じ鍵ストリームを作り出せるようになります。
ブロック暗号(Block Cipher)とは
ブロック暗号とは、平文を一定の長さを持つブロック全体として受け取り、それと同じ長さの暗号文ブロックへと変換する方式です。一般的なブロックサイズは64ビットまたは128ビットで、メッセージを固定サイズのブロックに分割し、一度に1つのブロックずつ変換していきます。
ブロック暗号は、nビットの平文ブロックを入力として受け取り、nビットの暗号文ブロックを出力します。平文ブロックの組み合わせは多数存在するため、復号が可能である(つまり暗号化が可逆的である)ためには、各平文ブロックが必ず一意の暗号文ブロックに対応していなければなりません。このような変換は「可逆変換」または「非特異変換」とも呼ばれます。
ブロック暗号の理論的な基盤となっているのは、「擬似ランダム置換(PRP:Pseudo Random Permutation)」と呼ばれる数学的対象です。PRPは、nビットの値mと秘密鍵kを入力とし、nビットの値cを出力する可逆関数です。
あるPRPが安全であるとみなされるのは、鍵kを固定したときに得られる関数が、nビット値上のランダムな全単射関数と区別がつかない場合です。ブロック暗号は、このような安全なPRPを実現する仕組みといえます。
具体的には、ブロック暗号は以下の2つの機能から構成されています。
- 暗号化関数: 秘密鍵を用いて平文ブロックを暗号文ブロックへ変換する
- 復号関数: 暗号化の逆操作を実行し、暗号文から元の平文ブロックを復元する
ストリーム暗号とブロック暗号の主な違い
両者の最も大きな違いは、1回の暗号化処理で扱うデータのサイズにあります。ストリーム暗号はビットストリームから一度に1ビットずつ暗号化を行うため、暗号化されたメッセージは平文メッセージとビット単位で一対一に対応することになります。
一方、ブロック暗号は複数ビットからなるブロック単位で処理を行うため、高速なハードウェア実装や標準化されたプロトコル(AESなど)との親和性が高く、多くのシステムで採用されています。用途や要件に応じて、これら2つの方式を使い分けることが、堅牢な情報セキュリティ設計の第一歩となるでしょう。
-
現代ブロック暗号の構成要素とは?Dボックス・Sボックス・循環シフトを徹底解説
現代ブロック暗号とは現代のブロック暗号とは、mビットの平文ブロックを暗号化し、mビットの暗号文ブロックを復号する暗号方式です。暗号化および復号の処理にはKビットの鍵が使用され、復号アルゴリズムは暗号化アルゴリズムの逆操作として機能します。また、暗号化と復号の両方で同じ鍵が用いられます。ブロック暗号は、nビットの平文ブロックを入力としてnビットの暗号文ブロックを出力します。取り得る平文ブロックの組み合わせは複数存在するため、暗号化を可逆(=復号が可能)にするためには、それぞれの平文ブロックが一意の暗号文ブロックへ対応しなければなりません。このような変換は「可逆変換」または「非特異変換」と呼ばれま
-
ブロック暗号とストリーム暗号の違いを徹底解説!仕組みと使い分けのポイント
ブロック暗号とストリーム暗号の概要ブロック暗号とストリーム暗号は、どちらも平文を暗号文へ変換するための暗号化技術であり、同一の鍵で暗号化と復号を行う「共通鍵(対称鍵)暗号」の一種です。両者は目的こそ似ていますが、データを扱う単位や内部で用いる設計原理が大きく異なります。以下では、それぞれの特徴を解説した上で、主な違いを比較表で確認していきます。ブロック暗号とはブロック暗号は、平文をあらかじめ決められた固定長のブロック(一般的には64ビット以上)ごとに区切り、ブロック単位で暗号化を行う方式です。AESやDESなど、多くの標準的な暗号アルゴリズムがこの方式を採用しています。ストリーム暗号とはストリ