ストリーム暗号 (ストリームアンゴウ) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

ストリーム暗号 (ストリームアンゴウ) の読み方

日本語表記

ストリーム暗号 (ストリームアンゴウ)

英語表記

stream cipher (ストリームサイファー)

ストリーム暗号 (ストリームアンゴウ) の意味や用語解説

ストリーム暗号は、データを逐次的に、つまり1ビットまたは1バイトといった非常に小さな単位で暗号化・復号する暗号方式である。これは、データを固定長のブロックに分割してまとめて処理するブロック暗号とは根本的に異なるアプローチを取る。ストリーム暗号の基本的な考え方は、平文(暗号化されていない元のデータ)の各ビットと、あらかじめ生成された「鍵ストリーム」と呼ばれる擬似乱数のビット列を、排他的論理和(XOR)という論理演算で組み合わせることで暗号文を生成するというものである。 まず概要として、ストリーム暗号は、非常に高速な処理が可能で、リソースが限られた環境や、リアルタイム性が求められる通信において特に有用である。例えば、音声や動画のストリーミング配信、無線LANの通信、携帯電話の通信などで利用されることが多い。その構造は比較的シンプルであり、計算資源の少ないハードウェアでの実装も容易である点が大きな特徴だ。 次に、ストリーム暗号の詳細な動作原理について解説する。ストリーム暗号の核となるのは「鍵ストリーム」の生成である。送信側と受信側は、事前に共有された共通鍵と、各暗号化セッションごとに異なる「初期ベクトル(IV)」や「ナンス(Nonce)」と呼ばれる公開される値を入力として、暗号学的に安全な擬似乱数生成器(CSPRNG: Cryptographically Secure Pseudo Random Number Generator)を動作させる。このCSPRNGは、共通鍵とIV/Nonceから、あたかも真の乱数であるかのように見える予測不能なビット列(鍵ストリーム)を生成し続ける。重要なのは、同じ共通鍵とIV/Nonceの組み合わせからは常に同じ鍵ストリームが生成されるという決定論的な性質を持つことである。 暗号化のプロセスでは、平文の最初のビットと鍵ストリームの最初のビットをXOR演算する。次に、平文の2番目のビットと鍵ストリームの2番目のビットをXOR演算する、といった具合に、平文の最後までこの操作を繰り返す。XOR演算は、二つの入力ビットが同じ値(両方0または両方1)であれば出力は0、異なる値(片方が0でもう片方が1)であれば出力は1となる論理演算である。この演算は可逆性を持つため、復号も同様にシンプルである。暗号文の各ビットと、復号側で同じ共通鍵とIV/Nonceから生成された鍵ストリームの対応するビットをXOR演算することで、元の平文が正確に復元される。これは、「A XOR B = C」という関係が成立していれば、「C XOR B = A」という性質が常に成り立つためである。 ストリーム暗号の主な利点としては、まずその**高速性**が挙げられる。データをビット単位で逐次処理するため、大きなブロックを処理するためのバッファリングが不要であり、非常に効率的で高速なデータ処理が可能となる。これにより、リアルタイムな通信が要求される音声通話や動画配信などの場面で特に性能を発揮する。次に、**省リソース**である点が特徴である。ストリーム暗号の構造は比較的シンプルであるため、必要な計算資源やメモリが少なく、マイクロコントローラやIoTデバイスのような計算能力やメモリ容量が限られた環境でも実装しやすい。また、暗号文の転送中に一部にエラーが生じても、そのエラーは特定のビットに限定され、他の部分に影響が及ぶ**誤り伝播が少ない**という特性も持つ。これは、個々のビットが独立して処理されるためである。 しかし、ストリーム暗号にはいくつかの重要な注意点がある。最も重要なのは、**鍵ストリームの再利用が厳禁**であるという点だ。もし同じ共通鍵とIV/Nonceの組み合わせを使い、結果として同じ鍵ストリームを異なる二つ以上の平文の暗号化に再利用してしまうと、「Two-time Pad攻撃」と呼ばれる深刻な脆弱な状況が生じる。この場合、二つの異なる暗号文同士をXOR演算するだけで、元の平文に関する重要な情報が漏洩してしまう可能性があるため、絶対に避ける必要がある。このため、各メッセージやセッションごとに必ずユニークなIV/Nonceを使用し、結果として異なる鍵ストリームが生成されるように細心の注意を払わなければならない。 また、送信側と受信側で鍵ストリームが完全に**同期している**必要がある。もし何らかの理由でどちらか一方の鍵ストリーム生成シーケンスがずれてしまうと、XOR演算の結果が元の平文とは異なるものになり、正しく復号できなくなるため、通信が途絶える可能性がある。この同期を維持するためのメカニズムが必要になる場合もある。さらに、ストリーム暗号の**セキュリティは、鍵ストリームを生成する擬似乱数生成器の品質に全面的に依存する**。もしCSPRNGが予測可能なパターンを生成したり、統計的に偏りのある乱数を生成したりするような欠陥があれば、鍵ストリームを推測され、暗号が容易に破られてしまう危険性がある。そのため、暗号学的に安全性が証明された強力な擬似乱数生成器を使用することが不可欠である。 具体的な利用例としては、Web通信を安全にするHTTPSの基盤となるTLS/SSLプロトコルにおいて、ChaCha20のようなストリーム暗号が使われることがある。また、Wi-FiのWPA2/3における暗号化モードの一部や、携帯電話の無線通信の暗号化、IPsec VPNなど、幅広いネットワークプロトコルやデバイスでその軽量性と高速性が活用されている。かつてはRC4というストリーム暗号が広く使われたが、既知の脆弱性が多いため、現在はほとんどの用途で非推奨とされている。代わりにChaCha20や、ブロック暗号であるAESをストリーム暗号のように動作させるAES-GCM(これは認証機能も兼ね備えているため、現代のシステムで最も推奨される暗号方式の一つである)などが主流となっている。ストリーム暗号は、その特性から、特定の要件を持つシステムにおいて、今なお重要な役割を果たしている暗号技術である。

ストリーム暗号 (ストリームアンゴウ) とは | 意味や読み方など丁寧でわかりやすい用語解説