セキュリティの幻想は、その欠如を認識するよりも悪いです。なぜなら、それが誤った前提に基づいた決定を導くからです。「あなたの個人データを保護します」という公共機関からの情報は、しばしばこのようなセキュリティの幻想に過ぎません。パスワード付きPDFの例を使って、この二つのケースを見てみましょう。
- PZUから保険の提案が含まれたメールを受け取りました。その内容には「個人データを保護します」と強調されていました:
2. 添付ファイルには、パスワードで保護されたPDFファイルが含まれていました:
3. そのパスワードを知らないと仮定しましょう。しかし、メールの内容からパスワードが4桁の数字で構成されていることがわかります。それでは、現代の家庭用コンピュータを使用して、そのパスワードを解読するのにどれだけの時間がかかるか見てみましょう。
4. PDFをテキストモードで開いて、(例えばメモ帳を使って)ファイルのヘッダーを読み取ります。これにより、どのバージョンの標準で作成されたかを特定できます:
5. 次のステップは、解読したいパスワードのハッシュを抽出することです。ここで役立つのが、pdf2john.py ツールです。
6. 取得したハッシュを解読するために、hashcatのブルートフォースモードを使用します。10500は、PDFバージョン1.4-1.6のハッシュを解読するモードを示しています:
以下に示すように、4桁の数字からなるパスワードの解読には10秒かかりました:
したがって、4桁のパスワードは幻想的な保護の一種であり、個人データを保護するものではないと断言できます。
次に、NN Investment Partnersからの「保護された」PDFを検討してみましょう。
- ここでは、より長い文字列、つまりPESEL番号(11桁の数字)で保護されています。
2. 添付ファイルのヘッダー “%PDF-1.2” は、1996年の標準を使用して作成されたことを示しています:
3. 抽出したハッシュも同じことを示しています:
4. hashcatを使って「無作法な」ブルートフォースを行います。無作法とは、11桁の数字以外の仮定をせず、可能な組み合わせの数を減らさないことを意味します:
どうすればよいのか?
データの暗号化には、12文字以上の大文字、小文字、数字、特殊文字を含むパスワードを使用する必要があります。このようなパスワードは、SMSなど別の通信手段で顧客に送信されるべきです。また、ブルートフォース攻撃を大幅に遅らせる強力な暗号化アルゴリズムを使用する必要があります。例えば、AES-256アルゴリズムを使用した7zipアーカイブなどです。