コンテンツにスキップ

「ブロック暗号」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Eskimbot (会話 | 投稿記録)
m robot Adding: vi:Mã hóa khối
Sina (会話 | 投稿記録)
m →‎標準: - リンク追加
34行目: 34行目:
* Hierocrypt-L1 --- CRYPTREC
* Hierocrypt-L1 --- CRYPTREC
(128bit)
(128bit)
* AES ------------- ISO/IEC_18033, CRYPTREC, NESSIE
* [[AES暗号|AES]] ------------- ISO/IEC_18033, CRYPTREC, NESSIE
* Camellia -------- ISO/IEC_18033, CRYPTREC, NESSIE
* [[Camellia]] -------- ISO/IEC_18033, CRYPTREC, NESSIE
* SEED ------------ ISO/IEC_18033
* [[SEED_(暗号)|SEED]] ------------ ISO/IEC_18033
* CIPHERUNICORN-A - CRYPTREC
* [[CIPHERUNICORN-A]] - CRYPTREC
* Hierocrypt-3 ---- CRYPTREC
* [[Hierocrypt-3]] ---- CRYPTREC
* SC2000 ---------- CRYPTREC
* [[SC2000]] ---------- CRYPTREC
(256bit)
(256bit)
* SHACAL-2 -------- NESSIE
* SHACAL-2 -------- NESSIE

2006年9月10日 (日) 05:19時点における版

ブロック暗号(- あんごう、Block cipher)とは、共通鍵暗号の一種で、ブロックと呼ばれる固定長のデータを単位として暗号化復号を行う暗号である。これに対して、ビット単位やバイト単位で暗号化を行う暗号はストリーム暗号と呼ばれる。

概要

ブロック暗号は、NbビットのブロックとNkビットの鍵を入力として、Nbビットのブロックを出力する、暗号化(encryption) E と復号(decryption) E-1 の2つのアルゴリズムからなる。任意の鍵kについて、復号アルゴリズムは暗号化アルゴリズムの逆関数になっていて、

を満たす(mは任意のブロック)ようになっている。暗号化アルゴリズムの入力ブロック、復号アルゴリズムの出力ブロックは平文、暗号化アルゴリズムの出力ブロック、復号アルゴリズムの入力ブロックは暗号文という。任意サイズの平文を扱うために、暗号利用モードが用意されている。

ブロック長Nbは64bitや128bitが代表的である。暗号アルゴリズムによっては、ブロック長をパラメータで指定でき、ブロック長を変えられるものもある。

鍵長Nkは 40/56/64/80/128/192/256bit などがある。

代表的なブロック暗号として、米NISTが制定したDES (Data Encryption Standard, FIPS PUB 46)やAES (Advanced Encryption Standard, FIPS PUB 197)がある。日本産のブロック暗号として、MISTY1Camelliaなどが知られている。

構造

ブロック暗号は、メインのスクランブラと拡大鍵を生成する鍵スケジューラから構成されているものが多い。さらに、鍵スケジューラは鍵を入力として複数個の拡大鍵を出力し、スクランブラは複数のラウンドからなり、個々のラウンドで拡大鍵を使って入力の置換・転置等を行う構成になっているものが多い。この構成の暗号をProduct cipher(積暗号)という。また、ラウンドが同じ関数の繰り返しになっている場合にはIterated cipher(繰返し暗号)という。

ラウンド関数は置換や転置、論理演算、算術演算などのシンプルな部品で構成されていて、ラウンド関数を複数段、重ねることで十分な強度のスクランブルを行うものである。ラウンド段数は、通常、アルゴリズムの仕様によって指定されているが、セキュリティパラメータとして利用者が選択するものもある。

ラウンド関数の主な構成法に、Feistel NetworkとSubstitution-Permutation Network(SPN)の2つがある。DES, MISTY1, CamelliaはFeistelで、AESはSPNの暗号である。

用途

(stub)

標準

暗号標準として採用(or推奨)されているブロック暗号には次のものがある。

(64bit)

  • TDEA ------------ ISO/IEC_18033, CRYPTREC
  • MISTY1 ---------- ISO/IEC_18033, CRYPTREC, NESSIE
  • CAST-128 -------- ISO/IEC_18033
  • CIPHERUNICORN-E - CRYPTREC
  • Hierocrypt-L1 --- CRYPTREC

(128bit)

(256bit)

  • SHACAL-2 -------- NESSIE

安全性

(stub)

歴史

(1971~1976) 1971年頃にIBMでHorst Feistelにより開発されたLuciferが(民生用として)最初のブロック暗号とされている。Luciferは、換字式暗号転字式暗号を組み合わせた、換字-転字暗号(Substitution-permutation cipher)である。1977年にLuciferをベースにして、DESが制定された。

(1987~1991) 1987年にNTTの清水明宏と宮口庄司により FEAL が発表された。1991年にEli BihamとAdi Shamirにより差分解読が発表され、FEALは差分解読によって効率的に解読できることが判明した(DESは設計時に差分解読に対処していたことが後に明かされた)。

(1992~1995) 1992年に三菱電機の松井充により線形解読が発表され、1993年~1994年にかけてDESの解読と実験が行われた。1995年に線形攻撃と差分攻撃に対して証明可能な安全性を有する暗号として MISTY1 が発表された。その後、様々な攻撃方法の開発と線形差分特性などを指標とする安全性評価の研究が進んだ。

(1997~2001) 計算機とネットワークの進化を背景に、全数探索によるDESの解読可能性を示すために、1997年にRSAセキュリティ社がDESチャレンジを企画、96日後に鍵が発見された。1998年にはハードウェアによる鍵探索専用機 DES cracker が開発され、DESの鍵を56時間で探索した。1997年に次世代暗号(AES)の制定準備(公募)が始められると共に、1999年にはAESができるまでの中継ぎとしてTripleDESが制定された(FIPS PUB 46-3)。2001年11月にAESが制定された。

関連項目