暗号解読とコンピュータセキュリティにおいて、パスワードクラッキングとは、コンピュータシステムを保護するパスワードを推測するプロセスです[ 1 ]。一般的なアプローチ(ブルートフォース攻撃)は、パスワードの推測を繰り返し試み、利用可能なパスワードの暗号学的ハッシュと照合することです[ 2 ] 。別のアプローチとして、パスワードスプレー攻撃があります。これは多くの場合自動化されており、一般的なパスワードのリストを使用して、検出されないように時間をかけてゆっくりと実行されます[ 3 ] 。
パスワードクラッキングの目的は、ユーザーが忘れたパスワードを復元するのを支援すること(新しいパスワードを設定するにはシステム管理者権限が必要となるため)、システムへの不正アクセスを取得すること、またはシステム管理者が容易に解読可能なパスワードをチェックする予防措置として機能することなどが考えられます。ファイル単位では、特定のファイルのアクセス権限が制限されている場合に、裁判官がアクセスを許可したデジタル証拠にアクセスするためにパスワードクラッキングが利用されます。
オンラインシステムに対する総当たり攻撃によるパスワード推測は、通常効果がありません。なぜなら、システムは一定回数のログイン失敗後にアカウントをロックするように設計されているからです。しかし、パスワードの暗号化ハッシュを取得すれば、オフラインで無制限に推測することが可能になります。ハッシュファイルは、裁判所の命令によるアクセス、または違法なデータ漏洩の一環として、第三者によって取得される可能性があります。複数のウェブサイトでパスワードが使い回されている場合、あるウェブサイトから取得したハッシュファイルを使ってパスワードを解読し、発見したパスワードを他のウェブサイトの同じメールアドレスに対して試行することができます。
パスワードスプレー攻撃は、複数のアカウントで同じパスワードを推測することでアカウントロックアウト対策を回避します。同じアカウントへの試行の間隔を空けることで、正当なログインも可能になります。この手法は特定のアカウントを標的とするものではありません。
パスワードを解読するのにかかる時間は、パスワードのエントロピーの尺度であるビット強度と、パスワードの保存方法の詳細に関係しています。ほとんどのパスワード解読方法では、コンピュータが多数の候補パスワードを生成し、それぞれをチェックする必要があります。1つの例として、ブルートフォース解読があります。これは、コンピュータが成功するまで考えられるすべてのキーまたはパスワードを試す方法です。複数のプロセッサを使用すると、最後の可能な記号のグループと最初のグループを同時に検索し、他のプロセッサを指定されたパスワードの選択肢を検索するように配置することで、この時間を最適化できます。[ 4 ]辞書攻撃、パターンチェック、一般的な単語のバリエーションなど、より一般的なパスワード解読方法は、推測の回数を最適化することを目的としており、通常はブルートフォース攻撃の前に試されます。パスワードのビット強度が高いほど、平均してパスワードを復元するためにチェックする必要のある候補パスワードの数が指数関数的に増加し、パスワードが解読辞書で見つかる可能性が低くなります。[ 5 ]
コンピュータプログラムを使用してパスワードを解読する能力は、1秒間にチェックできるパスワードの数にも左右されます。攻撃者がターゲットパスワードのハッシュ値を持っている場合、オフライン攻撃が可能であるため、この数は1秒間に数十億または数兆にも達する可能性があります。そうでない場合、認証ソフトウェアがパスワードの試行回数を制限しているかどうかによって、試行回数は異なります。制限方法は、時間遅延、CAPTCHA、または一定回数の試行失敗後の強制ロックアウトなどです。パスワードが暗号鍵の生成に使用されている場合も、迅速な推測が可能です。このような場合、攻撃者は推測したパスワードで暗号化されたデータが正しく復号できるかどうかを迅速に確認できます。
パスワードハッシュの種類によっては、一般的なデスクトップコンピュータは、汎用CPU上で動作するパスワードクラッキングツールを使用して毎秒1億個以上のパスワードをテストでき、GPUベースのパスワードクラッキングツールを使用して毎秒数十億個のパスワードをテストできます[ 1 ] [ 6 ] [ 7 ] [ 8 ]。パスワード推測の速度は、システムがパスワードハッシュを生成するために使用する暗号化関数に大きく依存します。bcryptなどの適切なパスワードハッシュ関数は、単純なMD5やSHAのようなナイーブな関数よりも桁違いに優れています。NISTによると、数字、大文字小文字の混在、記号を含むユーザーが選択した8文字のパスワードは、よく使用されるパスワードやその他の辞書一致を除外すると、推定30ビットの強度に達します。2 30は10億通りの順列にすぎません[ 9 ] 。ハッシュ関数がナイーブであれば、数秒で解読されてしまいます。ボットネットのように、通常のデスクトップコンピュータを組み合わせてクラッキングを行うと、パスワードクラッキングの能力が大幅に拡張されます。 2002年、distributed.netは4年間かけて64ビットRC5キーの発見に成功した。この取り組みには、様々な時期に30万台以上の異なるコンピュータが参加し、平均で毎秒120億個以上のキーが生成された。[ 10 ]
グラフィックス処理ユニットは、特定のハッシュアルゴリズムの場合、汎用コンピュータよりも 50 ~ 100 倍高速にパスワードクラッキングを実行できます。たとえば、2011 年に市販されていた製品は、ハイエンドのグラフィックスプロセッサを使用して標準的なデスクトップコンピュータで 1 秒間に最大 2,800,000,000 個のNTLMパスワードをテストできると主張していました。 [ 11 ]このようなデバイスは、1 日で 10 文字の単一ケースのパスワードを解読できます。この作業は、同等の GPU を搭載した利用可能なコンピュータの数に比例して、多くのコンピュータに分散して実行できます。ただし、一部のアルゴリズムは GPU 上では実行が遅いか、または意図的に実行が遅くなるように設計されているものもあります。例としては、 DES、Triple DES、bcrypt、scrypt、およびArgon2 があります。
GPUのハードウェアアクセラレーションにより、ほとんどのハッシュアルゴリズムで総当たり攻撃の効率と速度を向上させるためにリソースを利用できるようになりました。2012年、Stricture Consulting Groupは、NTLMパスワードを毎秒3500億回推測する総当たり攻撃速度を達成した25個のGPUクラスターを発表しました。5.5 時間でパスワードの組み合わせを解読し、企業環境で一般的に使用されている 8 文字の英数字特殊文字パスワードをすべて解読するのに十分です。仮想OpenCLクラスタ プラットフォーム上の ocl- Hashcat Plus を使用して、[ 12 ] Linux ベースのGPU クラスタを使用して、「 LinkedInユーザーの 650 万個のパスワード ハッシュの 90 パーセントを解読」しました。[ 13 ]
特定のハッシュアルゴリズムの場合、CPU と GPU は相性が良くありません。高速で動作させるには専用のハードウェアが必要です。カスタム ハードウェアはFPGAまたはASIC技術を使用して作成できます。どちらの技術の開発も複雑で、(非常に)高価です。一般的に、FPGA は少量生産に適しており、ASIC は(非常に)大量生産に適しており、エネルギー効率が高く、高速です。1998 年、電子フロンティア財団(EFF) は ASIC を使用して専用のパスワード クラッカーを構築しました。彼らのマシンDeep Crack は、毎秒 900 億個以上のキーをテストし、56 時間で DES 56 ビット キーを解読しました。[ 14 ] 2017 年、流出した文書により、ASIC が、暗号化が弱いインターネット通信の多くの部分を解読する可能性のある軍事プロジェクトに使用されていたことが明らかになりました。[ 15 ] 2019 年以降、John the Ripper は FPGA を使用して限られた数のハッシュアルゴリズムのパスワード クラッキングをサポートしています。[ 16 ]商用企業は現在、パスワードクラッキングにFPGAベースのシステムを使用している。[ 17 ]
覚えにくいパスワードは、システムのセキュリティを低下させる。その理由は以下のとおりである。
同様に、パスワードの強度に関する要件が厳格であればあるほど、例えば「大文字と小文字、数字を組み合わせる」や「毎月変更する」といった要件が厳格であればあるほど、ユーザーがシステムを悪用する度合いは高くなる。[ 18 ]
「パスワードの記憶しやすさとセキュリティ」[ 19 ]の中で、ジェフ・ヤンらは、ユーザーに適切なパスワードの選択についてアドバイスを与えることの効果を検証しています。彼らは、フレーズを考えて各単語の最初の文字を取ることに基づくパスワードは、素直に選択したパスワードと同じくらい記憶しやすく、ランダムに生成されたパスワードと同じくらい解読しにくいことを発見しました。無関係な2つの単語を組み合わせることも、もう1つの良い方法です。難解なパスワードを生成するための個人的に設計した「アルゴリズム」を持つことも、もう1つの良い方法です。
しかし、ユーザーに「大文字と小文字を組み合わせた」パスワードを覚えてもらうのは、ビット列を覚えてもらうのと似ています。覚えにくく、解読も少し難しくなるだけです(例えば、7文字のパスワードの場合、解読は128倍難しくなるだけで、ユーザーが1文字だけ大文字にすればさらに難しくなります)。ユーザーに「文字と数字の両方」を使うように求めると、「E」→「3」や「I」→「1」など、攻撃者によく知られているような、簡単に推測できる置換につながることがよくあります。同様に、パスワードをキーボードの1段上に入力するのも、攻撃者によく知られている手口です。
カーネギーメロン大学の複数の教授が2015年4月に発表した論文で詳述されている研究によると、パスワードの構造の選択は、いくつかの既知のパターンに従うことが多い。たとえば、パスワードの要件が16文字などの長い最小長を要求する場合、人々はパスワード内で文字や単語全体を繰り返す傾向がある。[ 20 ]その結果、パスワードは数学的な確率が示すよりもはるかに簡単に解読される可能性がある。たとえば、1桁の数字を含むパスワードは、その数字がパスワードの末尾に偏って含まれる傾向がある。[ 20 ]
1998年7月16日、CERTは、攻撃者が186,126個の暗号化されたパスワードを発見した事件を報告した。侵害が発覚した時点で、すでに47,642個のパスワードが解読されていた。[ 21 ]
2009年12月、 Rockyou.comで大規模なパスワード侵害が発生し、3200万件のパスワードが流出しました。攻撃者はその後、3200万件のパスワードの全リスト(他の識別可能な情報は一切なし)をインターネット上に漏洩しました。パスワードはデータベースに平文で保存されており、 SQLインジェクションの脆弱性を利用して抽出されました。Impervaアプリケーション防御センター(ADC)はパスワードの強度を分析しました。[ 22 ]主な調査結果は以下のとおりです。
2011年6月、NATO(北大西洋条約機構)はセキュリティ侵害を受け、電子書籍ショップの登録ユーザー11,000人以上の氏名、ユーザー名、パスワードが公開された。このデータは、Anonymous、LulzSec、その他のハッキンググループや個人を含むOperation AntiSecの一環として漏洩した。 [ 23 ]
2011年7月11日、ペンタゴン向けに相当量の業務を行っている大手アメリカコンサルティング会社であるブーズ・アレン・ハミルトンのサーバーがアノニマスによってハッキングされ、同日中に情報が漏洩した。「『ミリタリー・メルトダウン・マンデー』と名付けられたこの漏洩には、USCENTCOM、SOCOM、海兵隊、さまざまな空軍施設、国土安全保障省、国務省職員、そして民間企業の請負業者と思われる人々の9万件のログイン情報が含まれている。」[ 24 ]漏洩したこれらのパスワードは、ソルトなしのSHA-1でハッシュ化されていることが判明し、後にImpervaのADCチームによって分析され、一部の軍人でさえ「1234」のような弱いパスワードを使用していたことが明らかになった。[ 25 ]
2011年7月18日、Microsoft Hotmailはパスワード「123456」を禁止した。[ 26 ]
2015年7月、「The Impact Team」と名乗るグループがAshley Madisonのユーザーデータを盗みました。[ 27 ]多くのパスワードは、比較的強力なbcryptアルゴリズムと、より弱いMD5ハッシュの両方を使用してハッシュ化されていました。後者のアルゴリズムを攻撃することで、パスワードクラッキンググループのCynoSure Primeによって約1100万個の平文パスワードが復元されました。[ 28 ]
パスワードが解読されるのを防ぐ方法の 1 つは、攻撃者がハッシュ化されたパスワードにもアクセスできないようにすることです。たとえば、Unixオペレーティングシステムでは、ハッシュ化されたパスワードは元々公開アクセス可能なファイルに保存されていました/etc/passwd。一方、最新の Unix (および同様の) システムでは、ハッシュ化されたパスワードはシャドウ パスワードファイルに保存され/etc/shadow、拡張権限 (つまり、「システム」権限) で実行されているプログラムのみがアクセスできます。これにより、悪意のあるユーザーが最初にハッシュ化されたパスワードを取得することが難しくなります。このような保護にもかかわらず、多くのパスワード ハッシュのコレクションが盗まれています。また、一部の一般的なネットワーク プロトコルでは、パスワードを平文で送信したり、脆弱なチャレンジ / レスポンス スキームを使用したりします。[ 29 ] [ 30 ]
ハッシュ化に組み込まれる、各パスワードに固有のランダムな値であるソルトを使用することで、複数のハッシュが同時に攻撃されることを防ぎ、レインボーテーブルなどの事前に計算された辞書の作成も防ぐことができます。
別のアプローチとしては、サイト固有の秘密鍵をパスワードハッシュと組み合わせる方法があります。これにより、ハッシュ値が盗まれた場合でも、平文でのパスワード復元を防ぐことができます。ただし、保護されたハッシュファイルを盗み出すことができる権限昇格攻撃によって、サイトの秘密鍵が漏洩する可能性もあります。3つ目のアプローチは、パスワードの推測率を低下させる鍵導出関数を使用することです。 [ 31 ]: 5.1.1.2
現代の Unix システムでは、従来のDESベースのパスワードハッシュ関数crypt() が、 crypt-SHA、bcrypt、scryptなどのより強力な方法に置き換えられています。[ 32 ]他のシステムもこれらの方法を採用し始めています。たとえば、Cisco IOS は当初、可逆的なVigenère 暗号を使用してパスワードを暗号化していましたが、現在では「enable secret」コマンドが使用されると、24 ビットのソルトを使用した md5-crypt を使用しています。[ 33 ]これらの新しい方法は大きなソルト値を使用するため、攻撃者が複数のユーザー アカウントに対して同時に効率的にオフライン攻撃を実行することを防止します。また、アルゴリズムの実行速度がはるかに遅いため、オフライン攻撃を成功させるのに必要な時間が大幅に増加します。[ 34 ]
MD5やSHAファミリーなど、パスワードの保存に使用されるハッシュの多くは、メモリ要件が少なく、ハードウェアでの実装が効率的な高速計算を目的として設計されています。これらのアルゴリズムの複数のインスタンスをグラフィックス処理ユニット(GPU)上で並列実行することで、クラッキングを高速化できます。そのため、高速ハッシュは、ソルトを使用してもパスワードクラッキングを防ぐ効果がありません。PBKDF2やcrypt-SHAなどのキーストレッチングアルゴリズムは、パスワードハッシュを繰り返し計算し、反復回数が十分に多ければ、パスワードのテスト速度を大幅に低下させることができます。scryptなどの他のアルゴリズムはメモリハードであり、時間のかかる計算に加えて比較的多くのメモリを必要とするため、GPUやカスタム集積回路を使用してもクラッキングがより困難です。
2013年に、パスワードハッシュの新しい標準アルゴリズムを選択するための長期パスワードハッシュコンペティションが発表され、 [ 35 ] 2015年にArgon2が勝者に選ばれました。別のアルゴリズムであるBalloonはNISTによって推奨されています。[ 36 ]どちらのアルゴリズムもメモリハードです。
セキュリティトークンなどのソリューションは、パスワードを継続的に変更することで形式的な証明を提供します。これらのソリューションは、総当たり攻撃に利用できる時間を大幅に短縮し(攻撃者は1回の変更以内にパスワードを解読して使用する必要がある)、パスワードの有効期間が短いため、盗まれたパスワードの価値を低下させます。
パスワードクラッキングソフトウェアツールは多数存在するが、最も人気のあるもの[ 37 ]はAircrack-ng、Cain & Abel、John the Ripper、Hashcat、Hydra、DaveGrohl、ElcomSoftである。多くの訴訟支援ソフトウェアパッケージにもパスワードクラッキング機能が含まれている。これらのパッケージのほとんどは、総当たり攻撃と辞書攻撃が最も効果的であることが証明されているアルゴリズムなど、クラッキング戦略の組み合わせを採用している[ 38 ] 。
コンピューティング能力の向上と、多くの保護スキームに対応した初心者向けの自動パスワードクラッキングソフトウェアの普及により、スクリプトキディがこの活動に参入することが可能になった。[ 39 ]
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ){{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)