WordPressのパスワードセキュリティとハッシュ
公開: 2017-11-10パスワードは、ユーザーまたはプロセスに関連付けられた認証の形式です。 これらは、コンピューターシステムまたはリソースに対してユーザーまたはプロセスのIDを検証するために使用されます。 IoTデバイスとモバイルの超接続性の今日の最新のウェブでは、パスワードセキュリティはこれまで以上に深刻なトピックです。 パスワードデータベースのリークは常に発生しており、LinkedIn、Tumblr、Yahooなどの大手企業が影響を受けています。 MacKeeperSecurityのBobDiachenkoは、今年初めに、インターネット上を自由に飛び回っていることが判明した5億6000万通の巨大な電子メール/パスワードリストについて書いています。
したがって、この記事では、パスワードとWordPressに関連する3つのことについて説明します。
- 強力なパスワードの生成と管理。
- WordPressがパスワードハッシュを行う方法。
- 独自のパスワードハッシュを実装します。
弱くて強いパスワード
ブルートフォースの複雑さの観点から見たパスワードの強度は、多くの議論の的となっています。パスワードの強度の概念は、より強力なコンピューティングリソースが個人にすぐに利用できるようになるにつれて、数十年にわたって大幅に再定義されてきました。 世界的に有名なセキュリティの専門家であるBruceSchneierが、パスワードのセキュリティと安全なパスワードの選択方法について説明した優れた投稿を書いています。
パスワード強度について話すときは、コンテキストと脅威レベルを含める必要があります。
攻撃者がWordPressのパスワードを推測しようとする場合は、セキュリティが侵害されてハッシュ化されたパスワードリスト全体にアクセスできる場合とは異なり、はるかに困難です。
最初の状況では、短期間のログイン試行回数が多すぎるため、攻撃者は認証サービスによってすぐにブロックされます。 通常、攻撃者は、フィッシングやマルウェアなどのブルートフォースとは異なる他の手段でパスワードを発見します。 ただし、ターゲットが日付、名前/名前などの比較的公開された情報を使用してパスワードを選択した場合、攻撃者はパスワードを簡単に推測できます。
2番目の状況では、攻撃者がパスワードファイルにアクセスできる場合、特に使用されるハッシュ関数がMD5である場合は、時間の問題である可能性があります。 それは壊れていて、ずっと前に安全でないことが証明されました。 攻撃者は、事前に計算された「レインボー」テーブルと組み合わせた最新のハードウェア(GPUボードなど)を使用して、パスワードファイル全体を非常に短時間で復号化できます。 さらに、極端な場合には、すべてのユーザーのパスワードがデータベースの「plaintext」に保存されます。 どちらの場合も、パスワードの「強度」は無効になります。
強力なパスワードを生成して保存する方法
強力なパスワードを定期的に考えようとするのではなく、パスワードの生成と管理を信頼できるコンピューターに任せるのが最善です。 あなたは人間であり、必然的にあなたは間違いを犯し、コンピュータが弱い選択と見なす何かを選ぶでしょう。
パスワードマネージャーを使用してすべてのサービスのパスワードを生成および保存すると、効率的で脅威が最小限に抑えられます。 すべてのパスワードを1つの場所に保持するという考えは不安になる可能性がありますが、実際にはプラスです。すべてのパスワードが1つの場所にあることを知っていると、パスワードをより簡単に保護できます。 簡単に覚えることができるが、簡単に推測できる、ランダムな紙片や弱いパスワードの順列を使用する必要はもうありません。 また、パスワードマネージャーを使用すると、手間をかけずに強力なパスワードを生成できます。
最も人気のある(そして高価な)選択肢は1Passwordですが、オペレーティングシステムで提供されているもの(AppleのiCloud KeyChainなど)を試して使用するか、KeePassなどのオープンソースのマルチプラットフォームソリューションを使用できます。
WordPressのパスワードハッシュ
パスワードハッシュは、プレーンテキストのパスワードがハッシュ関数に渡され、長い英数字の値に変換される手法です。 WordPressはこれを使用してデータベースに保存し、詮索好きな目がWordPressのパスワードを直接読み取らないようにします。 WordPressにログインしてパスワードを送信すると、ハッシュが計算され、データベース内のハッシュと比較されます。 同じ場合はアクセスが許可され、そうでない場合は拒否されます。 この方法が機能するのは、特定のテキスト文字列(この場合はWordPressパスワード)が常に同じハッシュ値を生成するためです。 ハッシュ値を元のテキストに戻すことはできないため、WordPressは、指定したパスワードのハッシュ値とデータベースに保存されているパスワードのハッシュ値が同じである場合にのみ、正しいパスワードを入力したことを認識できます。
デフォルトでは、WordPressのwp_hash_password()
関数は8パスのMD5アルゴリズムを使用してハッシュを生成します。 ただし、 MD5は、最新のハードウェアと、事前に計算された大量の値を保持するレインボーテーブルと呼ばれる手法を組み合わせて使用することで正常に機能しました。 これらは、攻撃者が1つの最新のGPUで、1秒あたり数十億の組み合わせを試すのに役立ちます。
独自のWordPressパスワードハッシュを実装する
インスタンス化でタプル(16、FALSE)をPasswordHashオブジェクトに渡すことにより、Bcryptなどの別の実装を選択できます(選択する必要があります)。 関数wp_hash_password()
とwp_set_password()
はどちらもプラグイン可能であるため、独自の実装を提供できます。 それらはwp-includes/pluggable.phpの下にあります。
Roots.io(Trellis、Bedrock、SageボイラープレートWordPressシステムの背後にいる人々)も、デフォルトのWordPressハッシュ関数のbcrypt機能を実装するWordPressプラグインをリリースしました。
結論
強力なパスワードを確実に使用し、頻繁に変更するには、パスワードマネージャーを使用することをお勧めします。 これにより、すべてのパスワードを1か所にまとめて、パスワードを変更するときに通知することができます。 パスワードハッシュに関しては、WordPressのデフォルトにフォールバックするのではなく、SHA-2やBcryptなどの暗号的に安全なアルゴリズムを使用するのが最善です。 1つの間違いがセキュリティの問題を引き起こす可能性があるため、独自のハッシュ関数をロールすることは避けるのが最善です。