ストリーム暗号(-あんごう、stream cipher)とは、平文をビット単位あるいはバイト単位などで逐次、暗号化する暗号である。これに対して、平文を64ビットや128ビットなどの固定長のブロックに分割して暗号化する暗号はブロック暗号という。ストリーム暗号とブロック暗号とが、現代の主要な共通鍵暗号である。ストリーム暗号は、鍵ストリーム(key stream)を生成する鍵ストリーム生成部と、鍵ストリームと平文を結合する結合部から構成されることが多い。典型的な方式では、秘密鍵を初期値として擬似乱数列を生成し、平文との排他的論理和 (XOR、formula_1) によって暗号文を作る。復号時には、同じ初期値から生成した擬似乱数と暗号文との排他的論理和によって平文を得る。ブロック暗号はブロック単位で暗号化するので、ブロックサイズ分のデータがそろうまで暗号化処理が開始できない。一方、ストリーム暗号の多くは、擬似乱数を先行して生成できるので、待ち時間が少ない。また、ブロック暗号では平文がブロックサイズの整数倍ではない場合に必要なパディング処理も、ストリーム暗号では不要であり、常に平文サイズ=暗号文サイズとなる。処理遅延が少ないこと、データサイズが増加しないことは通信などに利用する場合にメリットとなりうる。しかし、暗号利用モードのOFB, CFB, CTRなどでブロック暗号を利用するとストリーム暗号が構成できるので、ストリーム暗号専用アルゴリズムは、ブロック暗号と比べて何かしらの点で特長(メリット)がなければ存在する意味がない。一度の暗号化処理で1ビットまたは1バイトしか扱わないストリーム暗号は、ソフトウェアで実装すると性能が悪くなりがちである。そのため、近年ではMUGIの様に一度の処理で64ビットといったサイズの鍵ストリームを出力し、まとめて暗号化処理できるアルゴリズムも提案されている。近年提案されているストリーム暗号はAESより高速であることをアピールするものが多い。ストリーム暗号の安全性についての研究は、ブロック暗号に比べて遅れている。安全性の評価手法の研究には長い時間を要するので、ブロック暗号に基づくストリーム暗号を利用すべきとの意見もある。ブロック暗号をCTRモードで利用した場合、ブロック暗号が擬似ランダム置換であれば、計算量的に安全である。鍵ストリーム生成部は、128ビット程度の秘密鍵を用いて擬似乱数を生成する。通常、共通鍵方式であるが、公開鍵暗号方式のストリーム暗号も提案されている。擬似乱数ではなく、真の乱数を利用する場合もある。また、一度使用した鍵ストリームは、再使用しないように制御する必要があるので、平文ごとに異なる初期値 (初期化ベクトル, IV) を使用する。IVは乱数かカウンタで作る。鍵ストリーム生成の方法には、専用のアルゴリズムによるものと、ブロック暗号を元にした生成方法とがある。専用アルゴリズムによる鍵ストリーム生成は、フィードバックシフトレジスタに基づくものが多い。シフトレジスタとフィードバック関数から構成される。フィードバックの構成方法に、暗号文を鍵ストリームにフィードバックする方式(同期式、外部同期)と、フィードバックしない方式(非同期式、自己同期)がある。暗号文がビットスリップしたときのエラーの伝播が異なる。結合部は、典型的にはXORなどで平文と鍵ストリームを結合する。XOR以外に、加算や特別な表を用いた方式もある。鍵ストリーム生成部と結合部を別の装置にした場合、前者は安全に保管運用する必要があるが、後者は通信装置に組込み可能になる。暗号装置を通信装置と結合する際には注意が必要なので、メリットとなる。鍵ストリーム生成の方式として、線形帰還シフトレジスタ (LFSR; Linear Feedback Shift Register) を用いた方法が知られている。LFSRはハードウェアを用いて容易に実装することができる。しかし、LFSRは数学的に容易に解析可能であるため、そのまま暗号に使用することは推奨されない。相関攻撃 (Correlation attack) の餌食となる。非線形なFSRを使うものもある(NFSR; Nonlinear Feedback Shift Register)。RC4やSEALのような、状態変数を逐次更新することによって鍵ストリーム生成する方式もある。カオス暗号として知られている暗号もある。過去に多くの提案があったがその多くの安全性は厳密に評価されていないものが多い。カオス自体は周期をもたないなど優れた性質があるが、デジタルで実装する場合はそのような性質をもたない。近年の研究では、単純な実装の場合、極端に短い周期をもつ可能性があることが指摘されている。ストリーム暗号は、平文がいつ何バイト発生するか不確定なアプリケーションによく採用される。例えば、音声暗号化(秘話)などの秘匿通信である。ウェブブラウザで使用される暗号化通信SSLの暗号方式としてRC4が (オプションとして) 採用されている。無線LAN (WEP,WPA) でもRC4が使用される。他に、携帯電話用に A5/1, A5/2 などがある。暗号標準として採用(または推奨)されているストリーム暗号には次のものがある。ストリーム暗号の安全性の条件として、次の5項目があげられる。鍵ストリーム生成部は、通常、内部状態を記憶するレジスタがあり、レジスタ長が安全性の上限の一つとなる。レジスタの初期値を決める秘密鍵の長さも安全性の上限を決める。(これらの長さは安全性の上限を決めるのであって下限ではない。)安全性の根拠:排他的論理和(XOR)をとる、という構造はバーナム暗号そのものと言えるが、バーナム暗号は情報理論の発達以前ということもあり(一般にバーナム暗号の原文献とされる特許明細では)乱数列の生成法について、明確に定義されていない。自己同期式のストリーム暗号は、ブレーズ・ド・ヴィジュネルが考案している。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。