ストリーム暗号とは
ストリーム暗号の概要を見ていきましょう。
1ビット・1バイト単位で暗号化する方式
ストリーム暗号は共通鍵暗号方式の1つです。データを1ビットあるいは1バイト単位で暗号化します。この特徴から、ストリーム暗号が施されたデータは受信後すぐに復号できます。SSLや無線LANなどのネットワークを暗号化するために使われています。
ストリーム暗号の代表格はRC4です。ロナルド・リベスト氏によって考案され、1994年に公開されました。WEPやWPA、SSL/TLSなどの暗号化プロトコルとして採用されています。
ブロック暗号との違い:処理する単位が異なる
1ビット・1バイト単位でデータを処理するストリーム暗号とは対照的に、ブロック単位で処理するブロック暗号があります。64ビットや128ビットなど、ある程度まとまったデータを一括処理します。
ストリーム暗号よりも幅広く使われており、有名なDESや3DES、AESなどもブロック暗号です。
素早く復号する必要がある場合に使われる
ストリーム暗号はブロック暗号と比較し、復号に要する時間が短いのが特徴です。ブロック暗号は一定量のデータをまとめて復号する特性上、受信データが一定量に満たなければ復号できません。
それに対し、ストリーム暗号は1ビットあるいは1バイト単位で復号できるため、受信したデータから逐次復号することが可能です。
この特徴から、ストリーム暗号は小規模での実装に適しています。また、送受信するデータのサイズが変動しやすい場合にも向いているアルゴリズムです。具体的には、SSL通信やBluetoothの無線通信区間暗号として使われています。
ストリーム暗号の仕組み
暗号化は一定のルールに基づいて行われます。
たとえば、「ABCDE」という文章を暗号化する場合を考えましょう。これを「アルファベット順で2文字後ろにずらす」というルールで暗号化すると「CDEFG」となります。逆の作業を行えば復号可能です。しかし、このようにルールが単純だと簡単に第三者に解読されるでしょう。
そこで、ストリーム暗号では乱数を使います。上述の例では、それぞれの文字を乱数の分だけずらせば、より解読困難な暗号が実現します。
一方で、完全にランダムな数字を利用していたのでは復号も困難です。ストリーム暗号では乱数を生み出すのに擬似乱数発生器とシードを使います。シードは乱数を発生させるためのルールで、同じシードを疑似乱数生成器に適用すると常に同じ乱数が発生するのです。
シードを送受信者が共有することで、暗号化と復号が実現します。
ストリーム暗号の分類
続いて、ストリーム暗号の分類を見ていきましょう。
常に送受信者間で同期する「外部同期式」
外部同期式は、その名のとおり送信者と受信者が常に同期した状態でデータをやり取りする方式です。
そのため、送信途中で第三者がデータの削除や挿入を行った場合、同期にエラーが生じ、即座にそれを検知できます。また、ビット誤りの影響がほかのビットに及ばないのも特長です。
ただし、ビット反転などの操作は防げず、第三者に平文を容易に変更されてしまうおそれもあります。また、同期がずれることもあるため、その際に正しく再同期できる仕組みが必要です。
自動的に再同期できる「自己同期式」
自己同期式は非同期式とも呼ばれ、同期がずれた際に自動的に修復できる方式です。この方式には、1ビットの誤りがほかのビットに伝播するという弱点があります。
しかし、送受信側がともに外部レジスタを保持することでその弱点を克服しています。外部レジスタとは暗号文を保存するための記憶装置です。レジスタ長分の暗号文を正しく送信できれば、送受信者が自動で同期する仕組みになっています。
そのため、ビット誤りが生じても、それが伝播する範囲はレジスタ長分までに抑えられるのです。
ストリーム暗号の安全性
ストリーム暗号には以下の攻撃が想定されています。
- 総当たり攻撃
- すべての秘密鍵を候補に総当たりする
- 識別攻撃
- 乱数が疑似乱数であることの不完全性を評価する
- 出力予測攻撃
- 一部の情報から全体を予測する
- 内部状態復元攻撃
- 疑似乱数生成器の内部構造を復元する
- 鍵回復攻撃
- 疑似乱数から鍵を復元する
しかし、ストリーム暗号が上記の攻撃に対してどのくらい安全なのかは明らかにされていません。一方、ブロック暗号はストリーム暗号よりも安全性の研究が進んでいます。安全性を重視するのであればブロック暗号を使ったほうが良いでしょう。
ストリーム暗号を理解して適切な対策を行おう!
ストリーム暗号とは、1ビットや1バイト単位でデータを暗号化する共通鍵暗号方式です。疑似乱数生成器によって得た乱数を鍵として暗号化・復号を行います。
まとまった量のデータを復号するブロック暗号と違い、受信したデータを逐次復元できるため、速度に優れています。ただし、ストリーム暗号は安全性があまり研究されていないのが難点です。
以上を参考に、暗号化への理解を深めてください。