「ストリーム暗号」の版間の差分
削除された内容 追加された内容
m →構造 |
いくらか改稿 |
||
1行目:
'''ストリーム暗号'''(-あんごう、Stream cipher)とは、内部状態を更新しながら平文を
== 概要 ==
ストリーム暗号は、鍵ストリーム(key stream)を生成する鍵ストリーム生成部と、鍵ストリームと平文を結合する結合部から
ブロック暗号はブロック単位で暗号化するため、ブロックサイズ分のデータが揃うまで暗号化処理を開始できないが、ストリーム暗号の多くは、
しかしながら、[[暗号利用モード]]のOFB
▲ブロック暗号はブロック単位で暗号化するため、ブロックサイズ分のデータが揃うまで暗号化処理を開始できないが、ストリーム暗号は、1bitあるいは1byteなどの単位で処理を行うため、待ち時間が少ない。また、ブロック暗号では、平文がブロックサイズの整数倍ではない場合に必要なパディング処理も、ストリーム暗号では不要であり、常に平文サイズ=暗号文サイズとなる。処理遅延が少ないこと、データサイズが増加しないことは通信などに利用する場合にメリットとなりうる。
▲しかしながら、[[暗号利用モード]]のOFBやCFBでブロック暗号を利用するとストリーム暗号が構成できるため、ストリーム暗号専用アルゴリズムは、ブロック暗号と比べて何かしらの点で特徴(メリット)がなければ存在する意味がない。
▲この点、ストリーム暗号は、ソフトウェア実装すると一度の暗号化処理で1bitあるいは1byteしか扱えないため性能が悪くなりがちである。ハードウェア実装した場合には、回路規模が小さく、処理速度が高いものがある。しかし、安全性については、ブロック暗号と比べてストリーム暗号の研究は遅れていて、安全性の評価手法の研究には長い時間を要するため、ブロック暗号ベースのストリーム暗号を利用すべきとの意見もある。
== 構造 ==
37 ⟶ 35行目:
RC4やSEALのような、状態変数を逐次更新することで、鍵ストリーム生成する方式もある。stub
=== カオス関数 ===
<!-- 単にリストならば暗号理論のリストに記述すればよいか。
* LFSR型
67 ⟶ 65行目:
ストリーム暗号は、平文がいつ何バイト発生するか不確定なアプリケーションによく採用される。例えば、秘匿通信(秘話)である。
[[ウェブブラウザ]]で使用される暗号化通信[[Secure Socket Layer|SSL]]の暗号方式としてRC4が採用
== 標準 ==
73 ⟶ 71行目:
* OFB,CFB,CTR --- [[ISO/IEC_18033]](asブロック暗号利用モード)
* SNOW 2.0 ------ ISO/IEC_18033
* [[MUGI]] ---------- ISO/IEC_18033, [[CRYPTREC]]
* MULTI-SO1 ----- ISO/IEC_18033(as MOF), CRYPTREC
90 ⟶ 88行目:
安全性の証明については:
* 鍵ストリームとして完全なランダムシーケンスを採用すると、OTP(One Time Pad)となって[[情報理論的安全性]]を持つ。しかし、平文と同じ長さの乱数が必要であり、OTPは広くは採用されていない。
* 鍵ストリーム生成部にブロック暗号を部品として使用し、ストリーム暗号の安全性をブロック暗号の安全性に帰着させるものがある。
*ブロック暗号のCTRモードは、ブロック暗号が疑似ランダム関数と見なせるのならば計算量的安全性を持つが、バースデイパラドックスからブロック長 n に対して <math>2^(n/2)</math> ブロック程度の出力で自然乱数と識別可能である。
== 歴史 ==
|