削除された内容 追加された内容
Nerara (会話 | 投稿記録)
m →‎安全性: 主にリンクの修正
m編集の要約なし
 
(6人の利用者による、間の7版が非表示)
1行目:
'''ブロック暗号'''(- ブロックあんごう、{{lang-en|Block cipher)cipher}})とは、[[共通鍵暗号]]の一種で、固定長のデータ(ブロックと呼ぶ)を単位として処理する暗号の総称である。これに対して、ビット単位やバイト単位で処理を行う暗号は[[ストリーム暗号]]と呼ばれる。
 
== 概要 ==
ブロック暗号は、N<submath>b</submath> ビットのブロックとN <submath>kn</submath> ビットの鍵を入力として、N<submath>b</submath> ビットのブロックを出力する暗号化 (encryption) ''<math>E''</math> と復号 (decryption) ''E<supmath>E^{-1}</supmath>''2つの[[アルゴリズム]]からなる。任意の鍵'' <math>k''</math> について、復号アルゴリズムは暗号化アルゴリズムの逆関数になっていて、
 
:<math>E_k^{-1}(E_k(m))=m</math>
 
を満たす(''<math>m''</math> は任意のブロック)ようになっている<ref>ただし、[[KASUMI]]のように復号が定義されていないブロック暗号もある。</ref>。暗号化アルゴリズムの入力ブロックおよび復号アルゴリズムの出力ブロックは通信文、暗号化アルゴリズムの出力ブロックおよび復号アルゴリズムの入力ブロックは暗号文という。任意の長さの通信文を扱うために、[[暗号利用モード]]が用意されている。ブロック暗号は確定的暗号であり、鍵を一つ固定すると、同じ平文は必ず同じ暗号文に暗号化される。すなわち、同じ暗号文があった場合、そのブロックの平文は同じであるという情報が漏れてしまう。暗号利用モードでは、このような問題を解決する機能ももつ。
 
ブロック長N<sub>b</sub>は64ビットや128ビットが代表的である。暗号アルゴリズムによっては、ブロック長をパラメータで指定でき、ブロック長を変えられるものもある。[[転置式暗号]]でも、共通鍵を持ちブロック長が数百バイト、数千ビットを超える電子式暗号機がある。
 
鍵長N<sub>k</sub>は 40, 56, 64, 80, 128, 192, 256 ビットなどがある。
 
換字と転置を組み合わせた共通鍵暗号でも、複数の法に基づく大きなブロックの換字式[[ストリーム暗号]]と[[転置式暗号]]を組み合わせることで解読の著しく難しい暗号が構成できる。
21 ⟶ 17行目:
ラウンド関数は置換や転置、論理演算、算術演算などのシンプルな部品で構成されていて、ラウンド関数を複数段、重ねることで十分な強度のスクランブルを行うものである。ラウンド段数は、通常、アルゴリズムの仕様によって指定されているが、セキュリティパラメータとして利用者が選択するものもある。
 
ラウンド関数の主な構成法に[[Feistel構造]]と[[SPN構造]]の2つがある。DES, MISTY1, CamelliaはFeistel構造で、AESはSPN構造の暗号である。
 
== 用途 ==
76 ⟶ 72行目:
* mod n攻撃 [[:en:Mod n cryptanalysis]]
* XSL攻撃 [[:en:XSL attack]]
ショートカット法が存在するアルゴリズムは学術的には「解読可能」と呼ばれるが、その必要な計算量が現実的であるかどうかは考慮されない。すなわち、学術的に解読可能であることが、即必ずしもその暗号を利用したシステムの破綻につながるわけではない。しかしながら、設計者が想定した強度を有していないという事実はその暗号アルゴリズムが[[信頼性の低い暗号アルゴリズム]]であることを意味する。
 
=== サイドチャネル攻撃 ===
ハードウェアやソフトウェアに実装された暗号をアルゴリズムではなく消費電力や実行時間等の情報を用いて攻撃する手法を[[サイドチャネル攻撃]]と呼ぶ。サイドチャネル攻撃は実装とアルゴリズムの両方に影響される。
* [[単純電力解析]] Simple Power Analysis
* 電力差分攻撃 [[:en:Power analysis#Differential_power_analysis|en:Differential power analysis]]
85 ⟶ 81行目:
 
== 歴史 ==
;1971年~1976 - 1976
:1971年頃に[[IBM]]でHorst Feistelにより開発された[[Lucifer (暗号)|Lucifer]]が(民生用として)最初のブロック暗号とされている。Luciferは、[[換字式暗号]]と[[転字式暗号]]を組み合わせた、換字-転字暗号 (Substitution-permutation cipher) である。1977年にLuciferをベースにして、[[Data Encryption Standard|DES]]が制定された。
;1987年~1991 - 1991
 
;1987年~1991年
:1987年に[[日本電信電話|NTT]]の清水明宏<!--(現:[[高知工科大学]])-->と宮口庄司<!--(現:[[芝浦工業大学]])-->により [[FEAL]] が発表された。FEALは8ビットCPU上のソフトウェアで高速に実行することを意図して、算術加算およびシフトを非線形関数として採用していた。1991年にEli Bihamと[[アディ・シャミア]]により[[差分解読法]]が発表され、FEALは差分解読法によって効率的に解読できることが判明した(DESの開発者は設計時には既に差分解読法を知っていて、設計する際に[[Sボックス]]を変更し差分解読法に対処していたことが後に明かされた<ref name="coppersmith">
{{cite journal |last = Coppersmith |first = Don |year = 1994 |month = May |title = The Data Encryption Standard (DES) and its strength against attacks |journal = IBM Journal of Research and Development |volume = 38 |issue = 3 |pages = 243 |url = http://www.research.ibm.com/journal/rd/383/coppersmith.pdf |format = PDF }}</ref>)。
;1992年~1995 - 1995
 
:1992年に[[三菱電機]]の[[松井充]]により[[線形解読法]]が発表され、1993年~1994 - 1994年にかけてDESの解読と実験が行われた。1995年に線形攻撃法と差分攻撃法に対して[[証明可能安全性を持つ暗号|証明可能安全性]]を有する暗号として MISTY1およびMISTY2 が発表された。その後、様々な攻撃方法の開発と線形差分特性などを指標とする安全性評価の研究が進んだ。
;1992年~1995年
;1997年~2001 - 2001
:1992年に[[三菱電機]]の[[松井充]]により[[線形解読法]]が発表され、1993年~1994年にかけてDESの解読と実験が行われた。1995年に線形攻撃法と差分攻撃法に対して[[証明可能安全性を持つ暗号|証明可能安全性]]を有する暗号として MISTY1およびMISTY2 が発表された。その後、様々な攻撃方法の開発と線形差分特性などを指標とする安全性評価の研究が進んだ。
 
;1997年~2001年
:計算機とネットワークの進化を背景に、全数探索によるDESの解読可能性を示すために、1997年に[[RSAセキュリティ|RSAセキュリティ社]]がDESチャレンジを企画、96日後に鍵が発見された。1998年にはハードウェアによる鍵探索専用機 DES cracker が開発され、DESの鍵を56時間で探索した。1997年に次世代暗号 ([[Advanced Encryption Standard|AES]]) の制定準備(公募)が始められると共に、1999年にはAESができるまでの中継ぎとして[[トリプルDES|TripleDES]]が制定された (FIPS PUB 46-3) 。2001年11月にAESが制定された。また、ヨーロッパでは[[NESSIE]]、日本では[[CRYPTREC]]といった標準化プロジェクトが実施された。
;2002年 -
 
;2002~
:AESや、CRYPTREC, NESSIEの標準暗号とは別に、ある種の特殊用途に特化したブロック暗号の設計が研究されている。[[FPGA]]や[[ICチップ]]で実装した際に回路規模や実行速度が最適化されることを意図して設計された[[CLEFIA]]等があげられる。また、実装された[[ハードウェア]]や[[ソフトウェア]]に対する攻撃([[サイドチャネル攻撃]])も活発になった。
 
== 参考文献脚注 ==
{{脚注ヘルプ}}
<references/>
 
== 関連項目==
* [[ストリーム暗号]]
109 ⟶ 103行目:
* [[Feistel構造]]
* [[SPN構造]]
 
 
{{cryptography navbox|block}}
 
{{DEFAULTSORT:ふろつくあんこう}}
[[Category:暗号技術プリミティブ]]
[[Category:ブロック暗号|*]]