ブロック暗号 【block cipher】

概要

ブロック暗号(block cipher)とは、暗号の種類の一つで、データを一定の長さごとに区切ってこれを単位として暗号化うもの。共通鍵暗号(共有鍵暗号/秘密鍵暗号)のほとんどが該当し、1ビットあるいは1バイト単位で暗号化ストリーム暗号と対比される。

ブロック暗号は平文暗号化する際、先頭から順に64ビット、128ビットなどのあらかじめ定められた固定長ブロックに分割し、それぞれのブロックを対象に暗号化処理をう。暗号文の長さは平文と同じになる。ブロック長は暗号方式の仕様として決まったを定めている場合(例えばDES64ビット固定)と、いくつかのから暗号化時に選択できるもの(Rijndaelは128~256ビット)がある。

ブロック内ではデータの位置の入れ替え(転置)などがわれるため、復号するにはブロックの全体が揃っていなければならない。データの末尾などでブロック長に足りない場合には、全ビット0のデータを既定の長さまで埋めるといった埋め合わせ(パディング)処理がわれる。

暗号モード (block cipher mode)

ブロック暗号では暗号文のランダム性を高めるため、一つ前のブロック暗号化の結果を暗号化処理に反映させるテクニックが用いられることがある。どのように反映させるかを定めたものを暗号モードという。

最も単純なECBモード(Electronic Codebook Mode)と最も広く用いられるCBCモード(Cipher Block Chaining Mode)が有名だが、他にもCFBモード(Cipher Feedback Mode)やOFBモード(Output Feedback Mode)、CTRモード(Counter Mode)など様々な種類があり、CCMモード(Counter with CBC-MAC)のように認証のために考案されたモードもある。

ECBモード (Electronic Codebook Mode)

前のブロックの結果を利用せず、毎回どのブロックにも同じ暗号化処理をう方式をECBモードという。最も単純な方式で、各ブロック平文暗号鍵のみを用いて暗号文を生成し、同じ平文からは常に同じ暗号文が得られる。

パターンの出現頻度などを解析して解読されやすく、毎回同じ暗号文となるため反射攻撃に悪用可能である。実装が容易で高速に暗号化復号できるが、機密度が低いため実用上はなるべく用いない方がよいとされる。

CBCモード (Cipher Block Chaining Mode)

平文と直前のブロック暗号文の各ビットXOR演算したデータに対して暗号化い、これをそのブロック暗号文とする方式をCBCモードという。様々な暗号方式で最もよく利用されている。

平文の一部が共通するブロックがあっても直前のブロックの結果が反映されて異なる暗号文が生成される。最初のブロックには直前のブロックが無いため、代わりに初期化ベクトルIVInitialization Vector)と呼ばれるダミーデータを用意する。これを毎回ランダムに変更すれば、得られる暗号文全体も規則性なく変化させることができる。

安全性は高いが、前から順番に暗号化しなければならないため処理を並列化できず暗号化に時間がかかる。また、あるブロックに生じた伝送エラーがそのブロックだけでなく直後のブロック復号にも影響する。

(2019.2.2更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる