多くのサイトでは、ユーザーがより複雑なパスワードを設定できるようにしています。 これを行うには、通常、少なくとも1つの大文字、1つの小文字、1つの数字などを指定する必要がある基本的なルールを確立します。 通常、ルールは
次のようにプリミティブ
です 。
'password' => [ 'required', 'confirmed', 'min:8', 'regex:/^(?=\S*[az])(?=\S*[AZ])(?=\S*[\d])\S*$/', ];
残念ながら、このような単純なルールは、パスワード
Abcd1234
が
Password1
と同様に良質で高品質として認識されることを意味します。 一方、
mu-icac-of-jaz-doad
は検証に合格しません。
一部の専門家
は 、これは最良の選択肢ではない
と言います。
実際には、
Abcd1234
と
Password1
は悪いパスワードであり、
mu-icac-of-jaz-doad
は良いパスワードです。 これは
簡単に確認できます。
最初の2つのパスワードは次のとおりです。


そして、信頼性チェックに合格しない2つのパスワードがあります。


どうする? たぶん、特殊文字の使用を強制せず、1つではなく2つまたは3つの特殊文字と数字を使用して、複数の文字を連続して禁止するなどの新しいルールを導入し、パスワードの最小長を増やすなどしてください。
これらすべての代わりに、単純なことを行うだけで十分です。パスワードの
エントロピーの最小値に制限を設定するだけです。 これには既製のエバリュエーター
zxcvbnを使用できます。
zxcvbn以外のソリューションもあります。 先週、ACM Computer and Communications Security Security Conferenceで、Symantec Researchとフランスの研究所Eurecomのセキュリティ専門家の
pdfが発表されました。 彼らは、
モンテカルロ法を使用し
て必要なブルートフォース試行のおおよその回数を推定するパスワードの強度をチェックするための新しいプログラムを開発しました。 提案された方法は、サーバー上の最小量のコンピューティングリソースを必要とし、多数の確率モデルに適していると同時に、非常に正確であることを特徴としています。 この方法は
、パブリックドメイン (
Archive.orgのコピー )にある1000万のXatoパスワードのデータベースからのパスワードでテストされました-良い結果を示しました。 確かに、Symantec ResearchとEurecomによるこの研究は本質的に理論的であり、少なくとも彼らのプログラムを受け入れられる形でオープンアクセスにしたわけではありません。 それでも、この作業の意味は明確です。パスワードをチェックするためのヒューリスティックなルールの代わりに、Webサイトでエントロピーチェックを実装することをお勧めします。