ファイルをまとめて送る時にzipファイルで圧縮して送る方も多いと思います。
zipファイルにパスワードを付けて重要なファイルを送る方もいますよね。
しかし、実はzipファイルのパスワードは簡単に解読できてしまいます。
パスワード付きだから大丈夫と思っているととんでもない事故につながる可能性があります。
この記事で、実際にどうzipファイルパスワードを解読するのかを見ていきましょう。
目次
zipファイルの4文字パスワード解読
早速ですが、まず4文字のパスワードを設定されたzipファイルを解読することにします。
まずパスワードが付いたzipファイルを用意します。
パスワードが設定されたzipファイルは、当然ですがパスワードを知らなければ見ることはできません。
zipファイルのパスワードを解読する方法はいくつかありますが、今回はJohn the Ripperというツールを使っていきます。
John the Ripperは一言で言えば無料でパスワードを解析することができるツールです。
John the Ripperをダウンロードし、設定をした後
john hash.txt
というコマンドを実行すると、なんと数秒たらずでzipの中身とパスワードが表示されます。
表示された1234というパスワード解析結果を実際に入力してみると、zipファイルを開くことができ、中身もしっかりと確認することができます。
このようにzipファイルのパスワードは簡単に解読ができてしまうのです。
なぜパスワードが解読できたのか
John the Ripperを使うとなぜパスワードを解読できてしまうのかを簡単に解説していきます。
John the Ripperには2つの機能が搭載されています。
- ハッシュ化されたパスワードを取得
- 英数字のランダムな文字列と総当たりで比較
以下で1つずつ解説します。
①ハッシュ化されたパスワードを取得
John the Ripperは、まず、該当ファイルのハッシュ化されたパスワード(ハッシュ値)を取得します。
ちなみにハッシュ化とは一定の計算方法によって別の値に置き換えることを指します。
例えば今回のzipファイルのパスワードは1234でしたが、実際にはランダムな文字列に置き換えられています。
また、ハッシュ化された値からは元の値に戻すことができないという特徴もあるため、内容を外部から読み取れないようにできるというメリットがあります。
したがって、パスワードなどの機密情報の保存にはこのハッシュ化という技術がよく用いられています。
②ハッシュ値を英数字のランダムな文字列と総当たり比較
John the Ripperはハッシュ化されたパスワードを取得した後に、同じようにハッシュ化したランダムな英数字の文字列と比較し、総当たりでパスワードを探しに行きます。
非常に難しそうに見えますが、簡単に言えば、スマホの暗証番号をひたすら入力していくのと同じイメージです。
John the Ripperでは同様のことを瞬時に何千、何万というパターンを繰り返しているのです。
6文字(簡単な文字列)で再度解読
John the Ripperの理屈がわかった所で、もう一度パスワード解読をやってみましょう。
先ほどは4桁の数字でしたが、6文字で英語と数字を混ぜてパスワードを設定してみます。
zipファイルにパスワードを設定します。
はじめに、パスワードのハッシュ値を取得します。
これでパスワードのハッシュ値がhash.txtというファイルに保存されます。
次にjohnコマンドを使ってhash.txtと同じハッシュ値の文字列を検索します。
4桁の数字は一瞬だったので6文字はどれくらいかかるのか気になるところですが。。。
残念ながら、6桁でも一瞬でした。
表示されたパスワードは123abcです。
このように簡単な並び順の文字列は、初めから予想のつくパスワードとしてJohn the Ripperに登録されているため、一瞬で解読されてしまうのです。
別の6文字パターンも解読してみる
ということで別のパスワードのパターンで6桁、再チャレンジさせました。
先ほどのような予測のつきやすい文字列ではなく、複雑に並べたパスワード6文字を設定して、解析スタート!
結果、解読にかかった時間は1時間11秒でした。
(解読されたパスワードはk31m1f、時間は0:01:00:11)
PCのスペックで多少変わりますが、6桁程度であればすぐに解読ができてしまうことがわかるかと思います。
8桁以上のパスワードは?
最後に8桁の英数字のランダムな文字列で試してみます。
パスワードを設定し、検証開始!
パスワードを設定し、検証開始!
しかし、…1日が経過しても、パスワードが解読されることはありませんでした。
このままだと解読に時間がかかってしまいそうなので、ランダムな文字列の場合は測定不能という結果にさせて頂きます…。
少ない桁数のパスワードが解読される理由
なぜ買得の時間にここまでの差が出たかというと、非常に簡単です。
理由は桁数が増えることでパスワードの組み合わせの数が膨大に増えていくからです。
今回のように数字とアルファベットを組み合わせた時のそれぞれの桁数におけるパターン数は4桁→167万9616、6桁→21億7678万2336、8桁→2兆8211億99万7456、となります。
パスワードの解読ではこのパターンをすべて検証していくため、パターン数が増えるほど、解読に時間がかかるのです。
6桁から8桁では2桁増えただけですが、組み合わせの数は2桁増えるだけで1,000倍にもなります。
今回の検証結果で6桁のランダムパスワードの解析時間は約1時間だったので、この結果に基づくと8桁の場合1,000時間( 約40日)かかることになります。
1日で解析が終わらなかったのもの当然の結果だったのが、この数字からも見て取れます。
まとめ
桁数を増やしたとしてもパスワード付きzipファイルはパスワードを解析出来てしまうことは紛れもない事実で危険性は高いです。
パスワード付きzipファイルは、なんと政府でも外部にファイルを送信する方法として利用されていました。
政府は、漏洩を防ぐためにPPAPと言われるzipファイルとパスワードを別々のメールで送信し、誤送信によるファイルの閲覧を防止するという方法を取っていました。
しかし、zipファイルさえ手に入れば、パスワードを解読できてしまうため、これは全く意味のない対策でした。
政府でさえこうしたミスを犯していた過去があります…
このような背景から、パスワード付きzipファイルを撤廃し、外部ストレージサービスを活用して、ファイル送信する取り組みが起きています。
パスワード付きzip、内閣府と内閣官房で26日から廃止へ 外部ストレージサービス活用 平井デジタル相
また、漏洩リスクが心配な方は、Microsoftが提供するストレージサービスであるOneDriveもおすすめです。
OneDriveは、一定の期間しかそのパスワードが利用できない、ワンタイムパスワードという機能を搭載しており、より安全にファイルを共有することが可能です。
漏洩するリスクをできるだけ小さくしたいという方はぜひそういったサービスを検討してみてはいかがでしょうか。
以上、zipファイルのパスワードを解読してみたという検証記事でした。
zipファイルのパスワードはどれだけ長くても、(時間さえかければ)必ず解読されてしまうということを頭に入れておきましょう。