ブロック暗号

ブロック暗号とは



ブロック暗号は、共通鍵暗号の一種で、固定長のデータブロックを単位として暗号化処理を行う方式です。これは、ビット単位やバイト単位で処理を行うストリーム暗号とは対照的です。

概要



ブロック暗号は、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年-: 特定の用途に特化したブロック暗号の研究が進み、サイドチャネル攻撃への対策も重要視されました。

関連項目



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。