「ストリーム暗号」の版間の差分

削除された内容 追加された内容
TXiKiBoT (会話 | 投稿記録)
m ロボットによる 追加: no:Flytchiffer
内部データの有無が本質的。文を短く。式の挿入。
1行目:
'''ストリーム暗号'''(-あんごう、Streamstream cipher)とは、初期値に依存する内部データをもち、平文を逐次、ビット単位あるいはバイト単位などで逐次、[[暗号化]]する暗号である。
これに対して、内部データをもたず、平文を64ビットや128ビットなどの一定サイズ毎の大きさごとに暗号化する暗号は[[ブロック暗号]]といい、う。ストリーム暗号とブロック暗号とに大別される[[共通鍵暗号]]と[[公開鍵暗号]]とで現代暗号の主要な暗号方式をなす。
 
== 概要 ==
ストリーム暗号は、鍵ストリーム(key stream)を生成する鍵ストリーム生成部と、鍵ストリームと平文を結合する結合部から構成されることが多い暗号で、典型的な方式では、[[秘密鍵]]を[[シード]]として[[擬似乱数]]を生成し、[[平文]]との[[排他的論理和]] (XOR、<math>\oplus</math>) を取ることによって[[暗号文]]を作り、る。復号時には、同じシードから生成した擬似乱数を生成して暗号文とXORすの排他的論理和を取ることによって平文を得るものである。
:<math>(m \oplus k) \oplus k = m \oplus (k \oplus k) = m</math>
 
ブロック暗号はブロック単位で暗号化するためので、ブロックサイズ分のデータがそろうまで暗号化処理開始できない。一方、ストリーム暗号の多くは、疑似乱数を先行して生成することができるためので、待ち時間が少ない。<!-- また、ブロック暗号では、平文がブロックサイズの整数倍ではない場合に必要なパディング処理も、ストリーム暗号では不要であり、常に平文サイズ=暗号文サイズとなる。-->処理遅延が少ないこと<!--、データサイズが増加しないこと-->は通信などに利用する場合にメリットとなりうる。
 
しかしながらOFB, CFB, CTRなどの[[暗号利用モード]]のOFB, CFBやCTRでブロック暗号を利用するとストリーム暗号が構成できるためので、ストリーム暗号専用アルゴリズムは、ブロック暗号と比べて何かしらの点で特徴(長(メリット)がなければ存在する意味がない。
一度の暗号化処理で1bitあるいは1byteしか扱えないストリーム暗号は、ソフトウェア実装するとため性能が悪くなりがちである。そのため、近年では[[MUGI]]の様に64bit単位といった大きいブロック単位で処理するアルゴリズムが提案されている。近年提案されているストリーム暗号は[[AES暗号|AES]]より高速であることをアピールするものが多い。
 
ストリーム暗号の安全性についての研究は、ブロック暗号比べてストリーム暗号の研究は遅れていて、る。安全性の評価手法の研究には長い時間を要するためので、ブロック暗号ベースのに基づくストリーム暗号を利用すべきとの意見もある。ブロック暗号をCTRモードで利用した場合、ブロック暗号が疑似ランダム置換であれば、[[計算量的安全性|計算量的安全]]である。
 
== 構造 ==