勉強前イメージ
どっちもわからんし、違いはもちろんわからん
調査
ブロック暗号 とは
共通鍵暗号の一種でブロックと呼ばれる固定長のデータ単位で暗号化を行います。
平文のデータをある特定の長さに区切ってその単位で暗号化するアルゴリズムになり、暗号文の長さは平文と同じになります。
ブロック内でデータの位置の入れ替えなどが行われるので、復号するためにはブロック全体のデータが必要です。
ブロック暗号には以下のようにいくつかのモードがあります。
- ECBモード
Electronic Codebook Mode の略で、
前のブロックの結果を利用しないで、どのブロックにも同じ暗号化処理を行う方式です。
一番単純で平文と暗号鍵のみ用いて暗号文を作成します。
このことから解読されやすく実用上はあまり使わないような良いとされています。
- CBCモード
Cipher Block Chaining Mode の略で、
直前のブロックの暗号文の各ビットのXOR演算したデータと平文に対して暗号化を行う方式です。
よく使用される暗号方式です。
最初のブロックには直前のブロックがないためダミーデータが用意されます。
安全性は高いが並列化できず時間がかかったり、伝搬エラーがその後のブロックにも影響が生じるなどあります。
ストリーム暗号 とは
共通鍵暗号の一種で、データを1ビットまたは1バイト単位で暗号化を行います。
SSLや無線LANなどのネットワークを暗号化するために使われています。
データを1ビットまたは1バイト単位で暗号化できることから、復号に要する時間が短いのが特徴です。
ブロック暗号は一定のデータを纏めて復号することから一定量満たないといけないですが、ストリーム暗号は受信したものからすぐに復号可能です。
ストリーム暗号にもいくつかの方式があります。
- 外部同期式
送信者と受信者が同期した状態でデータのやり取りを行う方式で、
第三者から途中でデータの削除などが行われた際に、
同期にエラーが生じるのですぐに検知、他のビットへ誤りの影響が及ばないのが特徴です。
- 自己同期式
外部同期式と比べて非同期式とも呼ばれますが、同期がずれた際に自動的に修復できる方式です。
しかし、弱点としては1ビットの誤りが他のビットに伝搬してしまうということがあります。
勉強後イメージ
ブロックごとに暗号化するのがブロック暗号。
すぐに(1ビット1バイト)暗号化するのがストリーム暗号。
早く復号化したいときはストリーム暗号。