PDFUnlock Blog
GPUパスワードクラッキングの仕組み(平易な言葉で)
GPUベースのパスワードクラッキングの仕組みを非技術的に説明:hashcat、辞書攻撃、ブルートフォース、ルールベースの変更、そして10フェーズの回復システム。
· 著者: PDFUnlockチーム · 7分で読める
ロックされたPDFをパスワード回復サービスにアップロードすると、向こう 側で実際に何が起こるのでしょうか?機械学習なし、魔法なし、秘密の バックドアなし — 数学、大きな辞書、そして非常に高速なハードウェア だけです。仕組みは以下の通りです。
ステップゼロ:ハッシュの抽出
クラッキングが始まる前に、サービスはPDFから暗号化ハッシュを 抽出します。これは小さなデータの断片 — 通常は数百バイト — で、 ファイルが暗号化されたときに元のパスワードから生成されました。
指紋のようなものと考えてください。ハッシュ自体にはパスワードは 含まれていませんが、パスワードを推測してそのハッシュを計算すれば、 結果をファイル内のハッシュと比較できます。一致すれば、パスワードが 見つかったことになります。
この抽出ステップは即座で、GPUの力を必要としません。PDFUnlockでは、 純粋なJavaScriptで実行されるpdf2johnというツールを使用します — 100ミリ秒未満で終わります。
重要: ハッシュのみが抽出されます。PDFの内容を読むことはあり ません。読みたいと思っても、読むことはできません — 内容は暗号化 されています。
なぜCPUではなくGPUなのか?
最新のCPUには8〜16コアがあり、それぞれが複雑な順次タスク用に最適化 されています。最新のGPUには数千のよりシンプルなコアがあり、多くの データポイントで同じ小さな操作を同時に行うように最適化されています。
パスワードクラッキングは大規模に並列な問題です。候補パスワードを 取り、ハッシュ化し、結果をターゲットと比較する必要があります — そして次の候補に対して繰り返します。各テストは独立しています。コア 同士が通信する必要はありません。
これはまさにGPUが作られた目的です。単一のNVIDIA L4(本番で使用する GPU)は、およそ以下をテストできます:
- 250億のMD5ハッシュ/秒
- 2億5000万〜3億5000万のPDF RC4-128ハッシュ/秒
- 13億〜18億のPDF AES-128ハッシュ/秒(AES-NIハードウェア アクセラレーションのおかげでRC4-128より高速)
- 15 kH/s(15,000候補/秒) PDF AES-256 R=6ハッシュ/秒 — RC4-128より約20,000倍遅い
同じ作業を行うCPUは、これらの数字の1/100を管理できるかもしれません。 この100倍の速度優位性こそが、過去10年間でGPUクラッキングがCPU クラッキングに取って代わった理由です。
ツール:hashcat
ほとんどすべての本格的なパスワード回復サービスは、2009年から活発 に開発されているオープンソースツールhashcatを使用しています。 PDFのすべての暗号化バリアントを含む350以上のハッシュタイプをサポート しています。
hashcatは独占的ではありません。秘密兵器ではありません。標準の ツールで、GitHubで無料で利用可能です。サービス間の違いはソフト ウェアではなく、実行されるハードウェア、使用される辞書、適用される ルールセットです。
攻撃タイプ
辞書攻撃
最もシンプルなアプローチ:既知のパスワードのリストを取り、それぞれ を試します。最も有名な辞書はrockyou.txt — 2009年のRockYou 侵害から流出した1430万のパスワードです。17年経過していますが、人々 が同じパターンを選び続けるため、これらのパスワードは壊滅的に効果 的なままです。
PDFに対する辞書攻撃は、暗号化タイプに応じて数秒から数分で実行 されます。
ルールベースの攻撃
人々は今やpasswordをパスワードとして入力することはほとんどあり
ません。P@ssw0rd!またはPassword2026と入力します。ルールベース
の攻撃は、辞書の各単語を取り、一般的な変換を適用します:
- 最初の文字を大文字にする
aを@に、eを3に、iを1に、oを0に置換する- 数字を追加する:
1、123、2026 - 記号を追加する:
!、?、# - 単語を逆にする
- 重複させる
1400万語の単一の辞書と大きなルールセットで、数十億の候補を生成
できます。best64.ruleセット(64ルール)と
OneRuleToRuleThemAll.rule(〜50,000ルール)が最も一般的に
使用されます。
ブルートフォース(マスク)攻撃
辞書とルール攻撃が失敗した場合、最後の手段はすべての可能な組み 合わせを試すことです。hashcatのマスク攻撃では、パターンを定義 できます:
?a?a?a?a?a?a= すべての印刷可能なASCII文字、6桁?d?d?d?d?d?d= すべての数字の組み合わせ、6桁?u?l?l?l?l?d?d= 大文字 + 小文字4つ + 数字2つ
--incrementを使うと、hashcatは1文字から開始して上に進みます。
印刷可能なASCII(95文字)の場合、検索空間は指数関数的に増加します:
| 長さ | 組み合わせ | 時間(AES-256、RTX 4090) |
|---|---|---|
| 4 | 8100万 | < 1分 |
| 5 | 77億 | 〜40分 |
| 6 | 7350億 | 〜2.5日 |
| 7 | 69.8兆 | 〜270日 |
| 8 | 6.6千兆 | 〜70年 |
これが、8文字を超えるランダムパスワードが現在のハードウェアで事実上 解読不可能である理由です。そして私たちがAES-256の成功率について 正直である理由です。
PDFUnlockの10フェーズシステム
パスワードが見つかったらすぐに停止し、速度順に攻撃を実行します:
- フェーズ1 — 約25,000の多言語クイックテストパスワード (秒単位、無料)。最も一般的なパスワードの厳選されたリスト (5Kベース + 言語ごとに2K × 11言語) — ユーザーの言語用に ローカライズされています。実際のジョブの約3分の1がここで終了 し、1セント請求する前に終わります。
- フェーズ2 — rockyou.txt(秒から分単位)。完全な1430万 パスワード辞書。
- フェーズ3 — rockyou + best64.rule(分から1時間)。各 rockyouエントリに64の一般的な変更を加えます。
- フェーズ4 — Combinator(分から時間)。john+2024や love+foreverのような単語+単語の組み合わせ。
- フェーズ5 — Hybrid dict+mask(分から時間)。password1234 やmonkey+4桁のような辞書の単語に数字を追加。
- フェーズ6 — キーボードウォーク(分単位)。qwerty、azerty、 1qaz2wsxのような一般的なキーボードパターン。
- フェーズ7 — rockyou + OneRuleToRuleThemAll(時間単位)。 各エントリに〜52,000の変更。「賢い」パスワードに最も生産的 なフェーズ。
- フェーズ8 — Markovブルートフォース(時間から日単位)。 Markov連鎖を使用した1〜8文字の統計的に最適化されたブルート フォースで、最も可能性の高い文字シーケンスを最初にテストします。
ダッシュボードでリアルタイムに進行状況を追跡できます。各フェーズ 遷移はFirestore経由でライブで報告されます。
私たちが解読できないもの
限界について率直に述べましょう:
- AES-256で8文字を超える真にランダムなパスワード:数学が私たち に不利です。AES-256のランダムな印刷可能ASCII 9文字は、単一の GPUで何年もかかります。
- パスワードマネージャーからのパスワード(
t9^Jq2p@ZrW4など):これらはどの辞書にもなく、ブルートフォースには長すぎます。 - 4+のランダムな単語のパスフレーズ(
correct horse battery stapleなど):単語の組み合わせ空間が大きすぎます。
全体的な成功率を、RC4-128/AES-128で約~45%(Standard)/ ~65%
(Deep)/ 75%(Max)、AES-256で20%(Standard)/ ~30%(Deep)
/ ~38%(Max)と見積もっています。開始する前にこの見積もりを表示
し、パスワードが見つかった場合のみ請求します。
バックドアなし、魔法なし
AESやRC4に秘密のバックドアはありません。パスワードなしで暗号化を 回避する方法はありません。そうでないと主張する「PDFアンロッカー」 は、嘘をついているか、所有者パスワード(まったく異なるもので、 暗号化を含まない)について話しているかのどちらかです。
私たちが行っているのは、よく理解された、何十年も前の暗号解析です。 唯一の変数は時間と計算能力です。パスワードが私たちの辞書にあるか、 ブルートフォースできるほど短い場合、見つけます。そうでない場合、 誰も見つけることはできません — そして私たちはそれを正直にお伝え します。
試す準備はできましたか?PDFをアップロードして、無料の クイックテストの結果を数秒で確認してください。