DES対称暗号は、64ビットブロックの32ビットの半分で繰り返されるFeistelネットワークに基づいています。Feistelの使用は、使用される「マングラー」関数が可逆。
「マングラー」機能は、単純なアルゴリズムによって32ビットのワードを48ビットに拡張することによって機能します。この48ビットはキーと組み合わされ、Sボックスを介して32ビットに変換されます。 S-boxは明らかに6ビットの入力を受け取り、4ビットの出力を生成するため、反転可能ではありません。
しかし、構造全体が反転可能です。キーが固定されていると仮定すると、「マングラー」関数への各32ビット入力は、個別の32ビット出力にマップされますか?または、一部の32ビット出力はマングラー関数によって生成されないため、それを反転不可能にしますか?
いいえ、元に戻すことはできません。 DES "mangler"関数に入力すると、同じ32ビット出力を生成する2つの32ビット入力を見つけることができます。これは、Feistel構造の利点の1つです。 :「マングラー」関数は可逆である必要はありませんが、最終的には可逆ブロック暗号になります。
実際、Biham and Shamirの有名なDESに対する差分解読攻撃は、この事実を重要に利用しています。32ビットの入力のペアが特定の関係を満たすと、 「マングラー」機能を適用した後、同じ出力を生成することがよくあります。これにより、比較的高い確率で微分特性を見つけることができるため、DESを攻撃できます。DESに対する微分暗号解析攻撃は、本当に実用的ですが、暗号解読とブロック暗号設計の科学においては、これは途方もない進歩でした。
追伸ちなみに、暗号学者がこの関数を「マングラ」関数と呼ぶのを聞いたことがありません。 Feistel F関数と呼ばれるものをよく耳にします。したがって、暗号技術者に近づいてDES "mangler"関数について尋ねると、おかしな外観になるかもしれません。これで、言語を話す方法がわかりました。