ブロック暗号とは
ブロック
暗号は、
共通鍵暗号の一種で、固定長のデータブロックを単位として
暗号化処理を行う方式です。これは、ビット単位やバイト単位で処理を行う
ストリーム暗号とは対照的です。
概要
ブロック
暗号は、bビットのブロックとnビットの鍵を入力とし、bビットの
暗号化されたブロックを出力します。
暗号化
アルゴリズムEと復号
アルゴリズムE⁻¹の2つで構成され、任意の鍵kに対して、復号
アルゴリズムは
暗号化
アルゴリズムの逆関数となります。つまり、Eₖ⁻¹(Eₖ(m))=mが成り立ちます(mは任意のブロック)。
暗号化
アルゴリズムの入力ブロックと復号
アルゴリズムの出力ブロックは平文、
暗号化
アルゴリズムの出力ブロックと復号
アルゴリズムの入力ブロックは
暗号文です。任意の長さの平文を扱うためには、
暗号利用モードが用いられます。
ブロック
暗号は確定的
暗号であり、同じ鍵を使用すると、同じ平文は常に同じ
暗号文に
暗号化されます。このため、
暗号利用モードでは、この性質による情報の漏洩を防ぐための機能も備えています。
共通鍵暗号では、換字と転置を組み合わせることで、解読が非常に困難な
暗号を作成できます。大きなブロックに対して換字と転置を組み合わせることで、より強力な
暗号化が実現されます。
代表的なブロック
暗号には、DES、トリプルDES、AESなどがあります。また、日本製のブロック
暗号としては、MISTY1やCamelliaなどが知られています。
構造
多くのブロック
暗号は、メインのスクランブラと拡大鍵を生成する鍵スケジューラから構成されています。鍵スケジューラは入力された鍵に基づいて複数の拡大鍵を生成し、スクランブラは複数のラウンドで構成され、各ラウンドで拡大鍵を使用して置換や転置などの処理を行います。このような構成は、積
暗号(Product cipher)と呼ばれます。また、ラウンドが同じ関数の繰り返しである場合は、繰返し
暗号(Iterated cipher)と呼ばれます。
ラウンド関数は、置換、転置、論理演算、算術演算などのシンプルな部品で構成されており、これらを複数回繰り返すことで十分な強度が得られます。ラウンド段数は、通常、
アルゴリズムによって指定されていますが、セキュリティパラメータとして利用者が選択できるものもあります。
ラウンド関数の主な構成法には、Feistel構造とSPN構造の2つがあります。DES、MISTY1、CamelliaはFeistel構造を採用しており、AESはSPN構造を採用しています。
用途
ブロック
暗号は、
公開鍵暗号よりも高速であるため、ハイブリッド
暗号では、
公開鍵暗号で
暗号化されたセッション鍵を用いて、本文の
暗号化と復号に使用されます。また、パスワードの保存やメッセージ認証コード(MAC)、擬似乱数生成にも利用されます。
標準
暗号標準として採用または推奨されているブロック
暗号には、以下のようなものがあります。
- - 64ビット: TDEA, MISTY1, CAST-128, CIPHERUNICORN-E, Hierocrypt-L1, MULTI2, KASUMI
- - 128ビット: AES, Camellia, SEED, CIPHERUNICORN-A, Hierocrypt-3, SC2000
- - 256ビット: SHACAL-2
安全性
ブロック
暗号の安全性は、鍵長nビットに対して2ⁿの計算量以上の安全性は持ちません。これは、鍵の全数探索で解読可能であることを意味します。DESが推奨されない理由の一つは、その鍵長が56ビットと短いことです。
ただし、ブロック長bが鍵長nよりも短い場合、ある平文と
暗号文のペアに対して、2ⁿ⁻ᵇ個の鍵候補が存在します。複数の平文と
暗号文のペアを使用することで、真の鍵を特定できる可能性があります。
ショートカット法
ショートカット法は、ブロック
暗号アルゴリズムの弱点を利用して、鍵の全数探索よりも少ない計算量で鍵を求める手法です。代表的な手法には、差分解読法、線形解読法などがあります。これらの手法は、
アルゴリズムの安全性を評価する上で重要です。
サイドチャネル攻撃は、
暗号の実装時の消費電力や実行時間などの情報を利用して攻撃する手法です。これらの攻撃は、
ハードウェアや
ソフトウェアの実装に依存するため、実装時の対策が重要となります。
歴史
- - 1971-1976年: IBMのHorst FeistelによってLuciferが開発されました。これが最初のブロック暗号とされています。Luciferは、換字と転字を組み合わせた暗号でした。
- - 1977年: LuciferをベースにDESが制定されました。
- - 1987-1991年: NTTの清水明宏と宮口庄司によりFEALが発表されました。その後、差分解読法により解読可能であることが判明しました。
- - 1992-1995年: 三菱電機の松井充により線形解読法が発表されました。1995年には、線形攻撃と差分攻撃に対して安全なMISTY1とMISTY2が発表されました。
- - 1997-2001年: DESの解読可能性が現実的になり、AESが制定されました。ヨーロッパと日本では、それぞれNESSIEとCRYPTRECが実施されました。
- - 2002年-: 特定の用途に特化したブロック暗号の研究が進み、サイドチャネル攻撃への対策も重要視されました。
関連項目