ZIPパスワードを忘れて30年、30分弱で破ったまさかの解凍法とは?:803rd Lap
ある人物から受け取った30年前のZIPファイル。暗号化方式は当時のもので、解凍パスワードは忘れてしまったらしい。それを30分もかからないうちに解凍できた。一体どうやったのか。そして、その中身とは。
パスワードの使い回しは避けるべし、というのはセキュリティの鉄則だ。今はパスワードマネジャーなどで管理できるが、30年前に設定したパスワードをあなたは思い出せるだろうか。
30年前に設定したZIPファイルのパスワードを忘れてしまったけどもある方法を使って30分ほどで解凍できた、というエピソードが話題になっている。しかも、30年前の暗号化方式を使ってZIP化されたものだという。一体、どんな方法でパスワードを取り戻せたのか。そして、そこまでして取り出したかったZIPファイルの中身とは……?
30年前のZIPファイルの解凍を試みたのは、CloudflareのCTOであるジョン・グラハム=カミング氏だ。そのZIPファイルは、かつてティム・ジェンキン氏が圧縮したものだという。ジェンキン氏とはアフリカ出身の政治活動家および作家で、元反アパルトヘイト活動家だ。アパルトヘイト体制下の南アフリカで積極的に活動し、脱獄エピソードで知られている。
今になってそのZIPファイルを解凍しなければならなかった理由について、カミング氏は自身のブログにまとめている。
1980年代の終盤、アパルトヘイト時代の南アフリカで「Operation Vula」なる作戦が決行された。これはANC(アフリカ民族会議)によって秘密裏に展開された地下活動で、アパルトヘイト体制を打倒した重要な作戦だったという。
作戦遂行のためには暗号化された安全な通信システムが必要だった。そこでジェンキン氏は開発に協力した。8ビットコンピュータや音響カプラを使って音声電話回線上で通信を暗号化し、安全な環境でメッセージ交換を可能にする通信システムの構築に成功した。「PowerBASIC」でプログラミングされたもので、当時としては画期的なシステムだった。この暗号通信システムが功を奏したのかどうかは定かではないが、作戦は無事成功した。
作戦が終了して約30年。ジェンキン氏は、このプログラムをオープンソースとして公開しようと考えた。だが、ジェンキン氏は1991年にソースコード一式をZIP圧縮ファイルにした時の解答パスワードを失念してしまったという。そこで、その解読をカミング氏に依頼した、というのが今回の件のいきさつだ。
カミング氏はジェンキン氏から「ALLBAS.ZIP」と「CODMAY93.ZIP」というファイルを受けとった。両ファイルとも「PKZIP」の初期バージョンで圧縮されていて、当然ながらパスワードが設定されていた。当時のPKZIPの暗号化方式として「ZipCrypto」が使われていた。ZipCryptoはセキュリティ強度がそれほど高くなく、「Known Plaintext Attack」(KPA、既知平文攻撃)が可能になる。
KPA攻撃とは、平文(暗号化されていないオリジナルのデータ)と、その平文が暗号化された暗号文(暗号化されたデータ)のペアを知った攻撃者が暗号解読を試みる手法だ。ペアの情報を活用して暗号化の規則性や鍵を解析し、他の暗号文を解読するための手掛かりにする。
カミング氏は、ジェンキン氏が持っていた圧縮されていない一部のファイルや、ZIPファイルに含まれている「Store」状態のデータから暗号解読を試みた。そして「COMKEY.BAS」というファイルが攻撃のキーになることが判明した。ZIPファイルのヘッダ部分に同ファイルと一致する部分を発見した。
カミング氏はツール「bkcrack」とPerlプログラムを使ってパスワード解析した。すると23分ほどで暗号化キーが判明し、ALLBAS.ZIPが解凍されたという。これで作戦で使われた、前時代的ながら画期的な暗号通信システムのソースコードがオープンソース化されたというわけだ。なおソースコードは「GitHub」のジェンキン氏のリポジトリで公開されている。
またカミング氏はブログで、PowerBASICコンパイラを使って実際に暗号通信システムを動かしている様子も報告した。いずれ詳細なレポートを紹介するかも、としている。
それにしても、南米のアパルトヘイト体制の崩落に一役買ったかもしれない暗号通信システムが30年の時を経て復活するとはなかなか胸アツな展開ではないか。もちろん現代では、ほぼ役に立たないが……。
上司X: 30年前にZIP圧縮したファイルのパスワードの解読に成功した、という話だよ。
ブラックピット: ほう。ありそうな話ではありますが。
上司X: いやいや、依頼者があのジェンキン氏だっていうしさ、ZIPファイルの中身がOperation Vulaで使われた暗号通信システムっていうんだし。ある意味で歴史に残るべき「お宝」だよ。
ブラックピット: ジェンキンさんは有名なんですか?
上司X: おいおい。有名だろ? ほんの何年か前には脱獄のエピソードが映画にもなってたぞ。Operation Vulaだって知ってる人は少なくないぞ。
ブラックピット: ググってみましたが、確かに2020年公開の映画がありますね。ヒットしたようですね。まだまだ知らないことって多いもんですねえ。
上司X: そりゃそうだ。知ってること以外は知らないもんだ。失念されたパスを解読したカミング氏だって、KPA攻撃が有効ってことを知っていたからこそ、パスワードの解析に成功したんだ。
ブラックピット: とにかく今回の件はパスが解読できてよかったよかった、ということですね。僕もパスを忘れて開けないモノがたくさんあるんですけどね。どうしましょうかね……。
上司X: キミの過去のZIPファイルはちょっと遠慮したいかな。今回の暗号化通信システムぐらいのお宝が出てくればいいけれど。まあ、キミも知っていることを総動員して努力してみたらきっとパスワードも判明すると思うよ。頑張ってみたら?
ブラックピット(本名非公開)
年齢:36歳(独身)
所属:某企業SE(入社6年目)
昔レーサーに憧れ、夢見ていたが断念した経歴を持つ(中学生の時にゲームセンターのレーシングゲームで全国1位を取り、なんとなく自分ならイケる気がしてしまった)。愛車は黒のスカイライン。憧れはGTR。車とF1観戦が趣味。笑いはもっぱらシュールなネタが好き。
上司X(本名なぜか非公開)
年齢:46歳
所属:某企業システム部長(かなりのITベテラン)
中学生のときに秋葉原のBit-INN(ビットイン)で見たTK-80に魅せられITの世界に入る。以来ITひと筋。もともと車が趣味だったが、ブラックピットの影響で、つい最近F1にはまる。愛車はGTR(でも中古らしい)。人懐っこく、面倒見が良い性格。
Copyright © ITmedia, Inc. All Rights Reserved.