ネットワークセキュリティのストリーム暗号とは?仕組み・種類・具体例を徹底解説
ストリーム暗号とは
ストリーム暗号とは、平文(元のメッセージ)を1ビットまたは1バイト単位で順次暗号化していく共通鍵暗号方式の一つです。擬似乱数から生成された「鍵ストリーム」と呼ばれるビット列を平文と組み合わせることで、暗号文を作り出します。
ストリーム暗号には、暗号化するデータの長さに関する最小値や最大値の制約がありません。この点は、データを固定長のブロックに分割して処理するブロック暗号との大きな違いです。
ワンタイムパッドとの関係
最も理想的なストリーム暗号の例として知られるのが「ワンタイムパッド」です。ワンタイムパッドでは、平文と同じ長さの鍵を使用し、一度使った部分の鍵は二度と再利用しません。理論上は完全な秘匿性が得られる一方、平文と同じ長さの鍵を事前に安全に共有する必要があるため、実運用での利用は限られています。
ストリーム暗号の仕組みと用途
ストリーム暗号では、暗号アルゴリズムが擬似乱数列(鍵ストリーム)を生成し、その各ビットを平文の各ビットと一つずつ組み合わせて暗号化します。一般的にはXOR(排他的論理和)演算が用いられます。
この方式は、処理速度と実装のシンプルさが両方とも重要な場面で特に有効です。リアルタイム通信や音声・映像データなど、連続的に流れるデータを高速に暗号化したいケースに適しています。
ブロック暗号との違い
ブロック暗号は、平文を64ビットや128ビットといった固定サイズのブロックに分割し、鍵を使って各ブロックごとに暗号化する方式です。これに対してストリーム暗号は、データをビット単位で個別に処理します。
連続的なデータの暗号化においては、ストリーム暗号の方がブロック暗号よりも高速に動作する傾向があります。ただし、セキュリティの優劣は方式の設計や運用方法に依存するため、一概にどちらが安全であるとは言えません。
ストリーム暗号の種類
ストリーム暗号は、大きく分けて「同期式」と「自己同期式」の2種類に分類されます。
- 同期式ストリーム暗号:鍵ストリームの生成が平文や暗号文に依存せず、送受信者間で鍵ストリームの同期を保つ必要があります。多くの同期式ストリーム暗号には再同期機構が備わっており、その影響で自己同期式は現在ではほとんど使われなくなっています。
- 自己同期式ストリーム暗号:過去の暗号文ビットに基づいて鍵ストリームを生成する方式です。
ストリーム暗号の安全性
ストリーム暗号は、予測不可能な擬似乱数ビット列を無限に生成し、それを鍵として1バイトずつ暗号化していきます。AESで採用されているような強力な暗号技術と同等の機能を持たせることも可能です。
安全性を維持するためには、次の2つの条件が不可欠です。
- 擬似乱数生成器が外部から予測できないものであること
- 同じ鍵ストリームを絶対に再利用しないこと
鍵ストリームの再利用は、複数の暗号文同士の関係から平文の情報が推測される重大な脆弱性につながるため、厳格な運用管理が求められます。
ストリーム暗号の具体例
RC4
RC4は、RSA公開鍵暗号の開発者の一人であるロン・リベスト(Ron Rivest)氏が1987年に開発した現代的な対称鍵ストリーム暗号です。ARCFOURやARC4という別名でも知られています。
RC4はLFSR(線形帰還シフトレジスタ)を使用せず、バイト長の平文に対してストリームの組み合わせ処理を行うのが特徴です。かつてはSSL/TLSや無線LANのWEPなどで広く利用されましたが、現在では脆弱性が指摘されており、新規システムでの採用は避けるべきとされています。
AES-CTRモード
AES-CTR(カウンターモード)は、カウンターの値を暗号化することで鍵ストリームを導出する方式のストリーム暗号です。ブロック暗号であるAESを、ストリーム暗号のように活用できる代表的な手法として広く知られています。
よくある質問
AESはストリーム暗号ですか?
AES自体は128ビットを基本とするブロック暗号ですが、CTRモードのようなストリーム系の動作モードで運用することで、ストリーム暗号と同様に機能させることができます。
ブロック暗号とストリーム暗号、どちらを選ぶべき?
どちらも適切に設計・実装されていれば高いセキュリティを提供できます。速度重視の連続データ処理にはストリーム暗号が、汎用性や標準化の観点ではブロック暗号が選ばれることが多い傾向にあります。用途に応じた使い分けが重要です。
-
ネットワークセキュリティにおける「暗号(サイファー)」とは?仕組み・種類・解読方法を徹底解説
ネットワークセキュリティの中核を担う技術のひとつが「暗号(サイファー)」です。本記事では、暗号の基本的な意味や仕組みから、対称暗号と非対称暗号の違い、シーザー暗号などの代表的な具体例、さらには解読方法まで、初心者にもわかりやすく解説します。 暗号(サイファー)とは何か? 「cipher(サイファー)」とは、平文(誰でも読める状態のテキスト)を読み取れない形に変換したり、その逆に元のテキストへ戻したりするための手法です。この変換処理によって、第三者に通信内容を見られても意味が分からない状態を作り出せます。 暗号方式には大きく分けて2種類あります。ひとつは共通鍵を使う対称暗号で、暗号化と復号に同
-
情報セキュリティにおけるストリーム暗号とは?仕組みと特徴を徹底解説
ストリーム暗号(Stream Cipher)は、平文情報に対して時間的に変化する変換を適用することで、連続的なビット列を暗号化する方式です。この暗号化はビット単位で処理が行われ、鍵ストリーム(keystream)を利用することで、任意の長さの平文メッセージから暗号文を生成します。ストリーム暗号の基本的な仕組みストリーム暗号では、秘密鍵(128ビットまたは256ビット)とノンス(nonce:64〜128ビット)を組み合わせて鍵ストリームを生成します。そして、この擬似乱数的な鍵ストリームと平文をXOR演算することで、暗号文が作り出されます。鍵とノンス自体は再利用が可能ですが、セキュリティを確保する