最近、パスワードで大文字と小文字が区別されないサービスを発見しました。暗号化とハッシュの基本原則を理解しているので少し心配ですが、このサービスはパスワードをプレーンテキストで保存していますか?
Caps Lockでログインできないのに、パスワードが大文字になっていないのになぜ悪いのか説明してください。そして、私は心配する必要がありますか?
さらにテストを行った結果、「HAPPY」、「HaPpY」、「hAPPY」など、すべての形式のパスワードが受け入れられたことが判明しました。
心配する必要があるかどうかは、保護する対象の感度に依存します。私の税金や医療情報を保管している私のファイリングキャビネットを保護するロックは、それほど安全である必要はありません。また、ロックが安価に設計されていることを心配していません。しかし、私は私のお金を保護するロックが非常に安全であることを望みます。これは、システムを設計するときにセキュリティについて明確に考えていない可能性があることを示しています。
パスワードで大文字と小文字を区別しないようにすると、可能性の数が大幅に減少します。 6文字の大文字と小文字を区別しないアルファベットのみのパスワードには、2 ^ 28の可能なパスワードがありますが、6文字の大文字と小文字を区別するパスワードには、2 ^ 34の可能なパスワードがあります。この検索スペースの削減により、リークされたハッシュデータベースへの攻撃がより実行可能になります。
Jeff Ferlandが以下に指摘するように、大文字をロックしても、サイトで大文字と小文字が区別されないわけではありません。 「パスワード」と入力してからCapsLockを押すと、パスワードが表示されます。大文字小文字が逆になっているだけです。サイトがこれを行っている場合でも、パスワードは大文字と小文字を区別しますが、元の反転したパスワードを試すだけです。これは検索スペースを半分にするだけです。人々は一般に大文字をロックしてそれを知らないので、それは単にユーザビリティとセキュリティのトレードオフであり、(少なくともIMO)良いものです。
この1つの事実から、サービスがパスワードをプレーンテキストで保存しているかどうかを判断することは不可能です。ハッシュが行われる前にすべてを1つのケースに変更するのは簡単です。
パスワードシステムがパスワードをプレーンテキストで保存するかどうかは、大文字と小文字を区別するかどうかに関係ありません。多くの不適切に設計されたシステムでは、大文字と小文字を区別するパスワードが必要ですが、プレーンテキストで保存します。
心配する必要があるかどうかについては、大文字と小文字を区別するパスワードを必要としないシステムでは、一意のパスワードの量が半分以下に大幅に削減されました。ユーザーにとっては便利な場合がありますが、たとえば、大文字と小文字を区別しない8文字のパスワードには、208,827,064,576(208億)のバリエーションがあります。大文字と小文字を区別? 53,459,728,531,456(53兆)の組み合わせ。 Caseが問題でない場合、パスワードを見つけるためにブルートフォースクラッカーが実行する必要がある時間は非常に短くなります。数字(0〜9)を追加すると、その数は4倍の213兆になります。
もちろん、ユーザーは、強力な混合文字パスワードを使用する、パスワードを再利用しない、定期的に変更する、辞書の単語を使用しないなど、優れたパスワードセキュリティ機能を無視する傾向があるため、複雑なパスワードを必要としない決定を下した可能性があります。
Caps Lockに関する動作は、サーバー側で使用されるハッシュアルゴリズムについては何も通知しません。
サーバー上のハッシュは、入力したとおりのパスワードを使用して実際に計算されたものである可能性があります。ただし、無効なパスワードでは、サーバーは入力したすべての文字の大文字と小文字を逆にして、それを使用して再試行する可能性があります。このようなアプローチは実質的にセキュリティに影響を与えませんが、ユーザーがCaps Lockがオンになっていることを忘れがちな場合、サポートケースの数を大幅に減らすことができます。
また、パスワードで大文字と小文字がまったく区別されない可能性もあります。繰り返しになりますが、ハッシュについては何もわかりません。ハッシュする前に、単にパスワード全体を小文字(または大文字)に変換している可能性があります。これにより、可能なエントロピーの量が減少するため、このようなシステムでは、同じ強度を得るためにパスワードを約15%長くする必要があります。
Caps-lockを使用してログインできることは、パスワードがプレーンテキストで保存されることを必ずしも意味しません。サービスはすべてのパスワードに大文字を適用してから、それらをハッシュしてデータベースに保存し、ユーザーがログインするときに同じことを行うためです。に。
パスワードを推測しにくくするために、パスワードに大文字と小文字の両方を使用することをお勧めします。