無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

DES(Data Encryption Standard)の概要

DES(Data Encryption Standard)

64ビットの平文を64ビットの暗号文に暗号化する対称暗号アルゴリズム

鍵のビット長は64ビット(実質は56ビット、7ビットに1ビットエラー検出のためのビットがある)

DESでは、64ビットの平文単位でまとめて、暗号化する。

  • このまとまりのことをブロックと呼び、ブロック毎に暗号化する暗号をブロック暗号と呼ぶ。
  • 64ビットよりも長い平文は、DESによる暗号化を繰り返す必要がある。
  • この繰り返しの方法をモードと呼ぶ。

    ファイステルネットワーク構造

  • ラウンドと呼ばれる暗号化の1ステップを何度も繰り返す。
  • 1ラウンドの手順 (1)ラウンドへの入力を左と右に分ける (2)右をそのまま右とする (3)右をラウンド関数fに送る (4)ラウンド関数fは右とサブ鍵を使って、ランダムに見えるビット列を計算する (5)得られたビット列と、左とのXORを計算した結果を暗号化された左とする。
  • 上記の手順だけでは、右は暗号化されない。
  • 次のラウンドに入る前に、左右を入れ替える
  • ラウンド関数fとサブ鍵が暗号化の中核要素。
  • 複合は、ラウンドの手順を逆にすることで、XORの性質より元の平文を得ることができる

    どんなラウンド関数fでも復号化が保証されている。

    暗号化と復号化が同じ手順で実現できるのも特徴。ハードウェアを作るときに、同じ構造が使える。

解読方法

差分解読法
  • 平文の一部を変更すると暗号文がどう変化するかを調べる方法。
線形解読法
  • 平文と暗号文ビットをXORして0になる確率を調べる方法。
  • 暗号文が十分にランダムであれば、平文と暗号文をXORして0になる確立は1/2のはず。
  • 1/2からのずれが大きいビットの箇所を調べて、鍵に関する情報を得ようとする方法
  • これらの方法は、暗号解読者が任意の平文を暗号化できるという仮定を置いている
  • このことを選択平文攻撃(Chosen Plaintext Attack: CPA)と呼ぶ。
  • 1999年のDES Challenge 3で、DESは22時間15分でDESの鍵が発見されている。