頻繁に使用されるパスワード:自分を捕まえてユーザーを救う方法

昨年はソーシャルネットワーク、組織、および大規模プロジェクトのハッキングに関するレポートが豊富で、ほとんどすべてのユーザーが「頻繁に使用されるパスワード」を備えていました。



永続的なハッシュアルゴリズムとパスワードの「塩漬け」の使用は、ブルートフォース推測のタスクを時々複雑にします。そのため、攻撃者にとって次の簡単な標的は、大衆の間で広く普及し、「辞書に従って」簡単に入手できるパスワードです。 このアプローチはよりシンプルで効果的です。ハッシュアルゴリズムの強度に関係なく、一般的なパスワードは盗まれたデータベース全体の大部分を占めます。また、最小限の時間で整理できるため、リークが検出される前にそれらを使用する可能性があります。ユーザーはパスワードを変更します。



これに対処することは可能ですか? -簡単! 彼らはこれに苦労していますか? -会いませんでした。 さあ、始めましょう。



画像



多くのリソースでは、パスワードの複雑さの検証ツールが登録フォームに接続されていますが、残念ながら、計算自体は議論の余地があり主観的です-何らかの理由で、特殊文字、大小のレジスタが必要ですが、パスワードの長さがそれをはるかに保護することを常に考慮しているわけではありません。 一方、長くても簡単なパスワードは頻繁に使用できますが、安全ではありません。 これは記事のメイントピックから少し外れているため、パスワードの長さはネタバレになります。



パスワードの長さ、および興味深い発見
パスワード自体の複雑さを計算する理論については説明しません。これについては、ハブに関する非常に良い記事があり、 ウィキペディアにもかなりまともな説明があるからです。



私が伝えたいアイデアの例とデモのために、いくつかのパスワードを取ります。



  1. KCEvcefv4v(10文字)
  2. 111111111111111111(18文字)
  3. yTp3HHuuCTo9kyTp3HHuuCTo9kyTp3HHuuCTo9k(39文字)


これらのパスワードの徹底的な検索の複雑さは次のとおりです。



  1. 62 ^ 10 = 839E + 15オプション
  2. 10 ^ 18 = 1000E + 15オプション
  3. 62 ^ 39 = ... 8E + 69オプション。


1番目と2番目のパスワードを比較すると、数字の長いパスワードは、異なるレジスタや数字の文字の短いパスワードよりも難しいだけでなく、18単位しかないため覚えやすいこともわかります。 ユニットはハッシュ化され、攻撃者は使用する文字を知らないため、すべての文字オプションを使用してパスワードを選択することを理解することが重要です。 しかし、記事を読んだ後、全員がそのようなパスワードを使用し始めた場合、頻繁に使用されるようになるため、それを破るためのリアルタイムはミリ秒になります。



問題は残っています-なぜこのリストに長くて「侵入できない」パスワードがあるのですか? 突然! 3回繰り返され、39文字の長さに達する「モーニングライザー」(yTp3HHuuCTo9k)は、最初の100万の頻繁に使用されるパスワードに含まれており、その複雑さのために、実際の生活同じように 、リストを1秒でスキャンします。変更することをお勧めします。



しかし、「おい、友よ、このパスワードはそれほど難しくない。頻繁に使用するパスワードの10位にすぎないので、プライバシーに頼らないで」などのヒントはどこにも見当たりません。



特定の欲求と器用さで、インターネット上で、ダウンロード用など、表示用の無料のパスワードコレクションを見つけることができます。 もちろん、コンソールと「 grep 」の魔法に精通しているスペシャリストであれば、パスワードファイルを簡単に確認して自分のものを確認することができます(別の質問です。



しかし、ユーザーはもう少し複雑です。ユーザーはコンソールにほとんど慣れておらず、頻繁に使用するパスワードのリストがなく、おそらくパスワードに何か問題があるとは思わないでしょう。



私は、次の原則に基づいてこの不正を排除することにしました。





リンクでコードを表示するか、バンドルをインストールできます。



https://github.com/Nidhognit/PassSecurityBundle



オンラインモードでパスワードを確認できるデモがあります(UPD:パスワードの確認テストが暗示され、実際のパスワードの使用は推奨されません): https : //demo-pass-security-bundle.herokuapp.com/



UPD: 重要! デモはサービス/サイト/本格的なアプリケーションではなく、コードの動作を実証するためだけに排他的に機能します。リンクは上記のとおりです。 つまり、この記事では、パスワードを検証できるサイトについてではなく、プロジェクトに設定してユーザーがパスワードを検証できるようにするソリューションについて説明しています(コメントから明らかなように、私は明確にすることにしました)。



注:機密性を確保するために、ログを保存せず(ロギングツールも接続しません)、統計を保持せず、送信されたパスワードを保存せず、すべてのコードを確認のために完全に開いています 。 デモのプラットフォームとしてHeroku.comが選択された理由の1つは、最終的にサーバーを強制終了し、すべての中間状態が失われて再びデプロイされるためです(したがって、リンクをクリックすると500が表示されることがありますが、ページを更新すると、数秒後にすべてが表示されます)わかった。 ただし、完全な機密性を保証することはできません-最大の効果を得るには、プロジェクトをローカルに展開します。



バンドルは1つだけを処理します。リストのパスワードを確認し、見つかった番号またはnullを返します。



もちろん、当初は、複雑さと評決の評価を備えた本格的なパスワード検証ツールを作成したいという要望がありましたが、各プロジェクトには独自のセキュリティ要件があるため、ポジションの単純な検索に決めました(ただし、リスト内でパスワードが見つかった場合は、独自に彼の場所から、彼は安全ではありませんが、あなたは異なる意見を持っているかもしれません)。



10万(デフォルトで使用)と100万のパスワードのリストを持つ2つのファイルがバンドルに縫い付けられます。 ちなみに、頻繁に使用するパスワードの興味深いリストがあり、それらを一般の人と共有することを気にしない場合は、感謝します。



使用の経験について少し



バンドルを作成した後、すべてのパスワードをテストしました(そう、私の手はgrepに到達しませんでした)。 驚異的な外観と11文字以上の長さにもかかわらず、ホームパスワードの1つが完全に名誉のないリストに入れられたことに驚いた。



デモを見ていた友人や知人も、パスワードの一部を危険なものとして発見しました。これまでのところ、知人がリードしており、そのパスワードは39位で見つかりました。 誰が彼に先んじることができるか教えてください:)



All Articles