DESとは
DESの概要を見ていきましょう。
共通鍵暗号方式による暗号化の1つ
DESは「Data Encryption Standard」の略で、共通鍵暗号方式によるデータ暗号化のアルゴリズムの1つです。アメリカ連邦政府標準が公募によって暗号化方式を募集した結果、1977年にDESが採用されました。
DESという名称は旧米国立標準局における標準規格を指す言葉です。そのため、DESのアルゴリズムそのものはDEAと呼んで区別することもあります。
64bit単位で暗号化するアルゴリズム
一定の長さのデータをまとめて暗号化する方法をブロック暗号といいます。DESは64bit単位にデータを区切り、それをまとめて暗号化するブロック暗号です。鍵長は56bitですが、パリティチェック用の8bitを加えて64bitとして扱います。
パリティチェックとは、データの送信が適切に行われたかを確認する仕組みです。DESでは合計64bitの鍵を使い、データを64bit単位で暗号化し出力します。
DESの仕組み
DESでは64bitのデータを半分(LとR)に分割し、同じような処理を繰り返す過程があります。この繰り返しの単位をラウンドと言います。繰り返すと言っても、変換処理に使う鍵は元になる鍵からラウンドごとに算出され、同じものは使いません。
半分に分割したデータは、まずRだけが変換処理されてLと合成されます。そして、その合成結果を新たなRとし、先ほどのRを今度はLとして、同じ処理を行います。データ全体を一度にまとめて処理せず、ラウンドごとの処理の負担が軽いのが特徴です。
このような処理方式をファイステル構造と呼びます。DESの場合はこの繰り返しを16回行います。ファイステル構造は暗号化と復号のアルゴリズムが同じになることから、DES以外の暗号方式でも利用されるようになりました。
DESの種類
DESは安全性の高い暗号化方法として採用されましたが、やがて脆弱性が見つかりました。その脆弱性を補う目的で工夫された方法が2つあります。見ていきましょう。
暗号化処理を2回行う「二重DES」
二重DES(2DES)は、その名のとおりDESの処理を2回行って安全性を高めようとしたものです。
DESの脆弱性の1つは、鍵の長さが56bitと短いことでした。二重に処理すれば56bitの鍵を2つ使うことになるため、合計112bitになり、安全性が高まると考えられたのです。実際、総当たり攻撃に対しては効果がありました。
ところが、中間一致攻撃によって簡単に解読されてしまうことが判明しました。中間一致攻撃とは、2回のDES処理の中間の値を特定する攻撃手法です。この攻撃に弱いことから、二重DESはすぐに姿を消しました。
暗号化と復号を3回行う「トリプルDES」
二重DESに続いて登場したのがトリプルDES(3DES)です。これはDESの処理を3回繰り返す方法です。しかし、暗号化を3回繰り返すのではありません。暗号化→復号→暗号化の順に繰り返すのが特徴です。
普通に上記の順の処理を行うと、初めの暗号化は次の復号で無駄になり、結果的に1回しか暗号化していないのと同じです。そこで、トリプルDESでは、それぞれの処理で異なる鍵を使います。
中間一致攻撃は2回の処理の中間値を特定する方法です。トリプルDESは処理を3回繰り返すため、中間一致攻撃でもその一部しか特定されず、安全性を維持できます。
ただし、同じ処理を繰り返すのはコンピュータにとって大きな負担です。そのため、DESとは異なる仕組みの暗号化アルゴリズムが求められるようになりました。
現在主流となっている「AES」とは
DESは脆弱性があるため、現在は利用が推奨されていません。DESの中でもっとも安全性の高いトリプルDESも、米国立標準技術研究所が2023年以降の使用禁止を提案しています。
どのような暗号化アルゴリズムにも絶対的な安全はありません。コンピュータの性能向上に伴い、古いアルゴリズムでは安全性を維持できなくなります。DESも、やがては使われなくなることを前提に採用された方式です。
現在、DESに代わってアメリカの標準規格となっているのはAES(Advanced Exception Standard)です。共通鍵暗号方式である点はDESと同じですが、具体的な仕組みは異なります。AESの鍵長は128・192・256bitから選択可能で、DESの56bitより長く安全性が高くなっています。
さらに、AESは処理速度も優れていることから現在では広く使われています。
DESよりもセキュリティ強度が高いAESを利用しよう
DESは1977年にアメリカ政府に採用された共通鍵暗号方式の暗号化アルゴリズムです。しかし、DESには鍵が短いという弱点があり、それを克服するために登場したのが二重DESやトリプルDESです。
一方で、時代と共に新しい方法も求められるようになりました。そして登場したのがAESで、現在の主流となっています。
以上を踏まえ、今後の暗号化にはAESを利用しましょう。