このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

宣伝

 当サイトにおける暗号に関するページでは、説明が足りなかったり、誤った記述をしていたりするところがあります。今後、少しずつ修正する予定です。

 暗号理論の『暗号技術のすべて』が発売されています。初心者向けの暗号本です。これまで暗号本に何度か挑戦しつつも挫折してしまった方、学校の課題で悩んでいる方、資格試験にて暗号の問題が苦手な方などにお勧めです。

『暗号技術のすべて』宣伝サイト

 興味がある方は宣伝サイトを参照してください。Amazonでも発売中です。

ストリーム暗号

[定義]
平文のビット列M=(b1,b2,…)を、鍵のビット列K=(k1,k2,…)を用いて、c1=b1\oplusk1、c2=b2\oplusk2、…と暗号化する暗号系をストリーム暗号という。

 このとき、暗号文は(c1,c2,…)となる。

ただし、iは1以上の整数。

ストリーム暗号の特徴

 ストリーム暗号の特徴として次が挙げられます。

  • シーザー暗号などの古典暗号、エニグマ暗号機を使う機械的暗号の多くが該当する。
  • ストリーム通信などで使われることもある。
  • 平文のサイズと暗号文のサイズが一致する。つまり、データのサイズが増えない。
  • ソフトウェア実装だと効率が悪いが、ハードウェア実装だと回路規模が小さく処理速度が高い。
  • ブロック暗号と比べてストリーム暗号の研究は遅れていて、安全性の評価手法の研究には長い時間を要する。そのため、ブロック暗号ベースのストリーム暗号(例えば後ほど解説するがCFBやOFBがそう)を利用したほうがよいという考えもある。
  • 疑似乱数列の安全性に根拠を置くことになり、暗号学的に安全な疑似乱数を使用する必要がある。
  • 送信側と受信側の間で鍵系列の同期の取り方により、同期式ストリーム暗号と自己同期式ストリーム暗号に分類できる。

[定理]
Kが真にランダムならば、無限大の能力を有する敵に対しても安全である。

 Kを真にランダムにするには、平文MごとにKを新しく選びなおさなければなりません。これを実現したものがバーナム暗号です。しかし、それでは効率が悪くなります。特にMが長ければ長いほど困難になってきます。

 そこで、疑似乱数生成器を用いて、短い鍵から長い疑似ランダムな鍵系列を生成する方法が提案されています。

 疑似乱数生成器を使うときのランダム値をシード(種)といいます。

 疑似乱数生成器はLFSR型状態遷移型に大別されます。LFSR型には、線形フィードバックシフトレジスタ(Line Feedback Shift Register:LFSR)非線形なFSR(Nonliner Feedback Shift Register:NFSR)があります。

 一方、状態遷移型にはRC4SEALがあります。

 これらの名前は今覚えなくてもいいです。ここで重要なのは完全な乱数列を作ることは困難なので、一部の乱数値を入力として疑似乱数生成器を利用することで疑似乱数列を作られることが多いといことです。

ストリーム暗号の分類

  • 非同期式(自己同期式)
    • NFSR暗号
  • 同期式(外部同期式)

非同期式ストリーム暗号

 非同期式ストリーム暗号(自己同期式ストリーム暗号)とは、暗号のための同期を必要としないストリーム暗号である。必然的にデータに依存した暗号処理となる。

(図)暗号化 (図)復号

 図の「変換」という部分は、1ビットCFBモードのブロック暗号の暗号化アルゴリズムEを利用している。つまり、ブロック暗号から同期式ストリーム暗号を構成できる。

 暗号化の最初に、初期ベクトルIVを暗号化側と復号側のシフトレジスタにセットする。IVは秘密ではないが、毎回変更しなければならない。

特徴

  • 自己同期性
    • もし暗号化側と復号側で暗号の同期がはずれたり、伝送中にエラーが生じて暗号化側と復号側のシフトレジスタの内容が異なってしまったとしても、シフトレジスタ長分のクロックが経過すれば、再び両方のシフトレジスタの内容が一致し、乱数ビットが同一になるために、復号が再開される。
  • 伝送中にエラーが生じると、復号後にそのエラーの影響が拡大する。
    • エラービットが復号側のシフトレジスタに留まる限り乱数は暗号側と一致しないからである。
    • 即ち、変換の出力ビットの0,1のバランス性が保たれていれば、伝送路のビットエラー率をER、復号後のビットエラー率をEDとすると、次の関係になる。ただし、nはシフトレジスタ長である。
      • E_D~=~(\frac{n}{2}~+1~)~E_R

 図における変換部分を工夫することにより特徴ある暗号が構成できる。解読に対して強くするためには、少なくとも非線形にする必要がある。このようなストリーム暗号をNFSR暗号と呼ぶ。