Feistel構造のソースを表示
←
Feistel構造
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2017-06-10}} '''ファイステル構造'''(ファイステルこうぞう、{{Lang-en|Feistel structure}})は、[[ブロック暗号]]の構成法の一種である。ほとんどのブロック暗号は、実装コストを効率化するために同一のラウンド関数を繰り返す繰り返し暗号になっており、ファイステル構造は繰り返し暗号の代表的な構成法である。他の構成としては[[SPN構造]]がある。 == 概要 == 1977年に[[IBM]]の[[ホルスト・ファイステル]]が開発した[[Data Encryption Standard|DES]]の構造から、ファイステル構造と呼ばれる。[[暗号]]に求められる性質の1つに暗号文から平文を復号できること(復号可能性)があるが、ファイステル構造は逆変換が自分自身と同じ形になる性質がある(インボルーション)ため、ラウンド関数に任意の関数を用いても復号可能性が保証できるという特徴がある。 DES以降、[[FEAL]]、[[MISTY1]]、[[Camellia]]など、多くのブロック暗号でファイステル構造は採用されている。 == 構造 == === 基本的な構造 === [[ファイル:Feistel.png|thumb|ファイステル構造]] DESで採用された構造は、2つのラウンド変数<math>L_r</math>, <math>R_r</math>(初期入力を<math>L_0</math>, <math>R_0</math>とする)とラウンド鍵<math>k_r</math>およびラウンド関数<math>F</math>から以下の計算を繰り返し施す。 暗号化 <math>R_{r+1}=L_r\oplus{}F(R_r,k_r)</math> <math>L_{r+1}=R_r</math> 復号 <math>L_{r}=R_{r+1}\oplus{}F(L_{r+1},k_r)</math> <math>R_{r}=L_{r+1}</math> 暗号化と復号で使用するラウンド関数<math>F</math>は、暗号化の出力を復号の入力に代入して式変形すれば容易に確認できるが、任意の関数を用いても復号可能性が保証される。暗号化と復号の違いは、ラウンド鍵<math>k_r</math>の順番が逆になるだけである。 言うまでもないが、安全なブロック暗号を任意の関数で保障できるわけではない。 === 入れ子型構造 === MISTYでは、ラウンド関数<math>F</math>の内部にさらにファイステル構造を組み込んでいる。これを入れ子型構造と呼ぶ。MISTYでは3段階の入れ子構造をとっている。入れ子構造は差分攻撃および線形攻撃に対する[[証明可能安全性を持つ暗号|証明可能安全性]]を実現するとともに、回路規模の削減に効果がある。 === 変形ファイステル構造 === MARSでは、入力を4つに分割しそれぞれの間で計算を行うような構造で構成されている。一般に<math>n (n>2)</math>分割する場合を変形ファイステル構造と呼ぶ。ブロック暗号全体のブロック長が大きい場合にラウンド関数のビット幅を小さくすることができる。 == 利点・欠点 == ファイステル構造以外に広く知られている構造に[[SPN構造]]がある。SPN構造と比較した場合の利点および欠点を述べる。 === 利点 === * 解析実績が多い * ラウンド関数の選択の自由度が大きい * 暗号化と復号のルーチンを共通化でき(ラウンド鍵の順番だけを入れ替えればよい)、コードサイズ・回路規模などの点で、ソフトウェアおよびハードウェアでの実装性に優れる * 一度に処理するデータ長がブロック長の半分(変形ファイステル構造の場合は半分以下)になるため、ラウンド関数のビット幅を小さくすることができる。これは[[Sボックス]]の個数を少なく出来る等を意味し、回路規模や消費電力など点で、ハードウェアでの実装性に優れる === 欠点 === * 1ラウンドあたり攪拌されるのはブロックのうち一部のみである * SPN構造と同様の攪拌性を得るためにはラウンド数を増やす必要がある == 関連項目 == * [[SPN構造]] * [[ブロック暗号]] * [[共通鍵暗号]] * [[暗号理論]] * [[ホルスト・ファイステル]] {{cryptography navbox|block}} {{DEFAULTSORT:Feistelこうそう}} [[Category:暗号技術]]
このページで使用されているテンプレート:
テンプレート:Cryptography navbox
(
ソースを閲覧
)
テンプレート:Lang-en
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
Feistel構造
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報