Feistel構造

暗号学では、Feistel 暗号はブロック暗号の構築に使用される対称構造であり、ドイツの IBM 暗号学者ホルスト・フェイステルにちなんで命名されました。データ暗号化標準規格

Feistel 構造には、暗号化復号化の操作が非常に似ており、場合によっては同じでさえあり、鍵のスケジュールを反転させるだけで済むという利点があります。そのため、このような暗号を実装するために必要なコードや回路のサイズはほぼ半分になります。

Feistelの構築は反復的な性質を持っているため、ハードウェアへの暗号システムの実装が容易になります。

Feistel ネットワークや類似の構造は積暗号であるため、次のような複数のラウンドの繰り返し演算を組み合わせています。

  • ビットシャッフリング(しばしば順列ボックスまたはPボックスと呼ばれる
  • 単純な非線形関数(置換ボックスやSボックスと呼ばれることが多い
  • 線形混合(モジュラー代数の意味での)XORを使用して、クロード・シャノンが「混乱と拡散」と表現したものを大量に含む関数を生成すること。

ビットシャッフルは拡散効果を生み出し、置換は混乱のために使用されます。

理論作業

現代の対称ブロック暗号の多くは、Feistel ネットワークを使用しており、Feistel 暗号の構造と性質は暗号学者によって広く研究されてきました。具体的には、Michael LubyとCharles RackoffがFeistelブロック暗号の構造を分析し、もしラウンド関数がKiをシードとする暗号的に安全な擬似乱数関数であるならば、ブロック暗号を擬似乱数順列にするには3ラウンドで十分であり、4ラウンドで「強い」擬似乱数順列にするには十分であることを証明しました(つまり、逆順列へのオラクルアクセスを得た敵対者に対しても擬似乱数のままであることを意味します)。LubyとRackoffのこの非常に重要な結果のため、Feistel暗号はLuby-Rackoffブロック暗号と呼ばれることもあります。さらなる理論研究により、この構造が一般化され、安全性のためのより正確な限界が定義されました。

建設

Let F {F {\displaystyle {F}}} {\rm F}is the round function and let K 1 , K 2 , ... , K n {\displaystyle K_{1},K_{2},\ldots ,K_{n}}K_1,K_2,\ldots,K_{n} be sub-keys for the round 1 , 2 , ... , n {\displaystyle 1,2,\ldots ,n} } are 1,2,\ldots,nrespective respective.

そうすると、基本的な動作は以下のようになります。

平文ブロックを2等分に分割して ( L 1 {\displaystyle L_{1}} , L_1R 1 {\displaystyle R_{1R_1}} )

For each round i = 1 , 2 , ... , n {For each round i = 1 , 2 , ... ... , n} {\displaystyle i=1,2,i =1,2,\dots,nを計算する

L i + 1 = R i {displaystyle L_{i+1}=R_{i},}。} L_{i+1} = R_i\,

R i + 1 = L i F ( R i , K i ) {\displaystyle R_{i+1}=L_{i}oplus {\rm {F}}}(R_{i},K_{i})} .R_{i+1}= L_i \oplus {\rm F}(R_i, K_i)

とすると、暗号文は ( R n + 1 , L n + 1 ) {\displaystyle (R_{n+1},L_{n+1})}(R_{n+1}, L_{n+1}) なる。(共通して、R n {\displaystyle R_{n}}R_nL n {\displaystyle L_{n}}L_n2つは、最後のラウンドでは入れ替わらない)

暗号文( R n , L n )の復号化は(R_n, L_n)i = n , n - 1 , ... , 1 {displaystyle i=n,n-1,忘却の日 ,1}を計算することで達成される。 i=n,n-1,\ldots,1

R i = L i + 1 {displaystyle R_{i}=L_{i+1},}。} R_{i} = L_{i+1}\,

L i = R i + 1 F ( L i + 1 , K i ) {\displaystyle L_{i}=R_{i+1}oplus {\rm {F}}}(L_{i+1},K_{i})} .L_{i} = R_{i+1} \oplus {\rm F}(L_{i+1}, K_{i})

すると、( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})}が(L_1,R_1)再び平文となる。

このモデルの利点の一つは、円形関数F {\displaystyle {\rm {F}}}{\rm F}反転可能である必要がなく、非常に複雑になり得ることである。

この図は、暗号化処理を示している。復号化は、サブキー K n , K n - 1 , ... , K 1 {\displaystyle K_{n},K_{n-1},\ldots ,K_{1K_{n},K_{n-1},\ldots,K_1}}の順序を逆にするだけで、同じ処理を行う。

不均衡Feistel暗号は、L 1 {\displaystyle L_{1}}L_1R 1 {\displaystyle R_{1R_1}}の長さが等しくないように修正した構造を用いている。マックガフィン暗号はそのような暗号の実験的な例である。

このFeistel構造は、ブロック暗号以外の暗号アルゴリズムにも利用されている。例えば、Optimal Asymmetric Encryption Padding (OAEP) スキームは、ある種の非対称鍵暗号化スキームにおいて、単純なFeistelネットワークを使用して暗号文をランダム化します。

ブロック暗号におけるファイステルネットワーク演算、ここでPは平文、Cは暗号文である。Zoom
ブロック暗号におけるファイステルネットワーク演算、ここでPは平文、Cは暗号文である。

ファイステル暗号の一覧

フェイステルまたは改造フェイステル:フグ、ツバキ、CAST-128、DES、FEAL、ICE、カスミ、LOKI97、ルシファー、MARS、MAGENTA、MISTY1、RC5、TEA、トリプルDESツバキ、XTEA、GOST 28147-89

一般化されたフェイステル:CAST-256、マクガフィン、RC2RC6、スキップジャック

質問と回答

Q:ファイステル暗号とは何ですか?


A:ファイステル暗号とは、ブロック暗号の構築に用いられる対称構造で、ドイツIBMの暗号学者ホルスト・ファイステルにちなんで名づけられました。一般にファイステルネットワークとも呼ばれます。

Q:Feistel構造を使用する利点は何ですか?


A:Feistel構造を用いる最大のメリットは、暗号化と復号の動作が非常に似ており、場合によっては同一で、鍵のスケジュールを逆転させるだけで済むことです。このため、このような暗号を実装するのに必要なコードや回路の規模を半分近くに減らすことができます。さらに、反復的な性質があるため、ハードウェアでの暗号システムの実装が容易になります。

Q:クロード・シャノンは「混乱と拡散」をどのように表現したのですか?


A:クロード・シャノンは「混乱と拡散」について、攻撃者が暗号化されたメッセージを解読することを困難にするために、両方の要素が大量に存在することと表現しています。

Q:混乱と拡散を起こすには、どのような技術が必要ですか?


A:混乱と拡散は、ビットシャッフリング(しばしばパーミュテーションボックスまたはPボックスと呼ばれる)、単純な非線形関数(しばしば置換ボックスまたはSボックスと呼ばれる)、およびXORを用いた線形混合(モジュラー代数の意味)により生成されます。ビットシャフリングは拡散効果を生み、置換は混乱に利用されます。

Q: Feistel Networkとはどのような暗号ですか?


A: Feistel Networkは、データを安全に暗号化するために、複数ラウンドの繰り返し演算を組み合わせた積和算暗号の一種である。

Q: 誰がこの暗号を開発したのですか?


A: Feistel構造は、ドイツIBMの暗号学者であるHorst Feistelによって開発されました。

Q: Data Encryption Standardはこの暗号をベースにしているのですか?


A: はい、Data Encryption Standardはこのタイプの暗号を使用しており、暗号化されたメッセージの中に混乱と拡散を作り出すために上記と同じ原則を利用しています。

AlegsaOnline.com - 2020 / 2023 - License CC3