ZIPファイルを暗号化する「AES-256」とは何か?

「AES-256」とは何か?

ZIPファイルに暗証番号を掛ける際に選択することができる「AES-256」とはなんでしょうか。「AES-256」は、「7-zip」でZIPファイルにパスワードを掛ける際に選択できる暗号化方式の一つといえます。「AES-256」は、「AESアルゴリズム」(後述)の一種と考えていいでしょう。



zippassword.net.150422.1

ZIPファイルにパスワードを設定する際、確かに、このような形でAES-256を選択することができますよね。



AES256について更に調べると、IT用語辞典が「AES-256」をこのように定義をしていることがわかります。



zippassword.net.150422.2



このなかに、「DES(data encryption standard)」という単語を見つけることができます。実は、「AES」はDESアルゴリズムの発展系なのです。つまり、AESアルゴリズムの先祖が「DES」なのです。


DESアルゴリズムとは?


「DESアルゴリズム」による暗号化の仕組みをなるべく判りやすく簡単に説明したいところですが、残念ながら最終的には下図ような概念図をお見せするハメになります(笑)。



zippassword.net.150422.04

DESアルゴリズムは、暗号化するまえの元データ(これを「平文」と呼びます)をビットレベル(二進数の数列「0」「1」)として解釈し、その数列に対し一定の規則で論理演算(論理和『OR』、排他的論理和『XOR』)を加えて最終的に暗号化された「0」と「1」の数列を出力する暗号化方式です。


「規則」と書きましたが、具体的にはどのような規則かご説明しましょう。


例えば、上の図でいえば、DESでは入力の32ビットのデータ(平文)と鍵用の48ビットのデータ(暗号化用の鍵)を論理演算し、さらに「S1」から「S8」のデータの配列に6ビットごとに分割し、再び32ビットのデータを出力させます。このとき、既に平文の元の「32ビット」のデータとは違うビット列が出力されているはずです。



DESアルゴリズムは、このような処理を更に複雑なルールで何度も繰り返して最終的に暗号文を出力します。


zippassword.net.150422.3



アルゴリズムを何度もループさせて原型(元データの「0」「1」のビット列)が判らなくなるくらいランダムに「0」「1」を分散させたビット列を作る。これがDESアルゴリズムの目的です。

ちなみに、この暗号化されたデータを復号するためには、DESの逆のビット操作をします。

DESアルゴリズムは、C言語やC++を少しかじっている人であれば誰でも簡単にプログラミングすることができますよ。プログラミングのソースを公開しているサイトもあります。

zippassword.net.150422.5



DESアルゴリズムについて詳しく知りたい方は以下のサイトがとても参考になります。上記についてもっと詳しいことがわかります。


参考サイト
DES暗号のアルゴリズムについて


DESアルゴリズムは、米国が軍事技術として利用するために1970年頃に採用されたもので、当時では画期的な暗号化プロセスのアイデアでした。ですが、ハードウェアと暗号解析技術の進歩により、DESの暗号の強度(暗号が破られるリスク等)が危ぶまれるようになりました。


そして、DESの強化バージョンとして最終的に考え出されたのがAESです。AESの他にも3DESやトリプルDESなどの派生系の暗号方式も存在します。



今、あなたの圧縮ファイルに掛けた暗号化のパスワード。その暗号化技術のルーツが、実は米国の軍事技術だったとは意外でしょう?


ZIPパス解析部に戻る