パスワードに最大長を課す必要がありますか?


162

パスワードに最小の長さを課すことは(ユーザーを自分自身から保護するために)意味があると理解できますが、私の銀行ではパスワードの長さが6〜8文字である必要があるため、疑問に思い始めました...

  • これはブルートフォース攻撃を簡単にするだけではないでしょうか?(悪い)
  • これは私のパスワードが暗号化されずに保存されていることを意味しますか?(悪い)

(うまくいけば)彼らのために働いている優れたITセキュリティ専門家がいる誰かがパスワードの最大長を課している場合、私は同様のことを考えるべきですか?これの長所/短所は何ですか?


16
ほぼ確実に、「3回のストライキであなたは不在」というポリシーがあり、ブルートフォース攻撃の脅威を排除します。
Stu Thompson、

23
現代のウェブサイトのような非レガシーシステムの場合、これに言い訳はありません。
mparaz 2009

7
答えは純粋にITではないと思います。最小サイズ(6)と最大試行回数は、ワイルドな推測を排除するために「可能性が高い」ものです。私の推測では、最大サイズ(8)は、「おっと、mycodeを忘れた」、「コードを高速に入力した」、または「1文字を間違えて入力した」のサポートの呼び出し回数(およびその結果、コスト)を制限することです。などあなたがそれを思い出すことができない場合は、パスワードを記述する用紙のほか...
スティーブ私を呼び出す

17
在籍している大学には非常に愚かなパスワードルールがあります。8文字のみ、少なくとも1つの数字で、パスワードの最初または最後ではなく、キーボードの上2行以上からの文字などが必要です。最後にそれらはこれらのルールを持つことで総当たり攻撃を容易にします-.-。私はあなたがその愚かではないことを理解していますが、そのような愚かなルールを作らないでください!(ちょうど私のシステムからそれを
取り出さ

17
@callまあ、その理由で最大長を課すと、「パスワードを忘れた」というコールがから届きます。サイト固有のパスワードはすべて長いため、12文字に制限することで、覚えていない
Roman Starkov

回答:


193

パスワードは32、40、128の長さに関係なくハッシュされます。最小長の唯一の理由は、簡単に推測できるパスワードを防ぐためです。最大長の目的はありません。

最大長を課す場合にユーザーにサービス停止をさせる理由を説明する必須のXKCD

必須のXKCD


6
おそらく銀行はパスワードを制限することを選択するかもしれません。なぜなら、ATMでは、たとえば8文字を超えて入力できないからです。
アンドレ・Chalella

11
少なくともATMでは、ブルートフォース攻撃をしようとすると、カードを食べてしまいます。私が言及しているのは、オンラインでのみログオンするためのパスワードです。
nickf 2008

39
残念ながら、パスワードは常にハッシュ化されていると想定しています。パスワードの最大長は、プレーンテキストで保存されたパスワードの症状です。
jevon、2011

14
ため息、PayPalでも、「正しい馬のバッテリーの定番」は、< 修正済み
Roman Starkov

3
@kleinfreundは、ハッシュされた場合、パスワードの長さは関係ないためです(ハッシュ関数は任意の長さの文字列を固定長に変換します)。
Vicky Chijwani 2017

75

パスワードフィールドに指定されている最大長は、セキュリティの警告として読み取る必要があります。賢明でセキュリティ意識の高いユーザーは、最悪の事態を想定し、このサイトがパスワードを文字どおりに格納している(つまり、エポックウルフによって説明されているようにハッシュされていない)ことを期待する必要があります。

その場合がそうです:

  1. 可能であれば、このサイトをペストのように使用しないでください。彼らは明らかにセキュリティについて何も知りません。
  2. 本当にサイトを使用する必要がある場合は、他の場所で使用するパスワードとは異なり、パスワードが一意であることを確認してください。

あなたがパスワードを受け入れるサイトを開発している場合、していないあなたは同じブラシでタール取得したい場合を除き、愚かなパスワード制限を置きます。

[もちろん、内部的には、コードは最初の256/1024 / 2k / 4k /(何でも)バイトのみを「重要な」バイトとして扱い、マンモスのパスワードのクランチを回避します。]


17
私はまた、そのようなWebサイトに標準の電子メールを送信し、短い、安全性の低いパスワードを使用することを強制したことを述べ、そのようなばかげた制限を課すすべてのWebサイトで再利用することもあります。これは、それが問題であることをユーザーに知らせ、Joe Coderに上層部に示すためのレバレッジを与える可能性もあります。これにより、ユーザーが実際にWebサイトをよく考えていないという証拠になります。
Roman Starkov、

3
パスワードの最大数がプレーンテキストのパスワードを格納していることを意味すると想定する必要があるかどうかはわかりません。時々、彼らは入力を切り捨て、単純に最初のx文字をhashing()に渡します。(確認方法は、パスワードを制限を超えて設定してから、max-lengthを超えるさまざまなパスワード文字でログインしてみます)。
benc

5
@benc確かにそれは可能ですが、重要なのは、ユーザーがこれが彼らのしていることかどうかを知る方法がないということです。最大長(特に短いもの)は警告のサインであり、最悪の場合を想定する(またはプロバイダーに連絡して確認する)のが最善の方法だと思います。
12

1
詳しく説明してください。この答えは単なる声明です。
kleinfreund 2017年

1
最大パスワードは、必ずしもプレーンテキストとして保存されることを意味するわけではありません。技術的な理由が考えられます。たとえば、bcryptは最大72文字のパスワードしか許可しません。
emorris

58

完全に無制限のパスワード長を許可することには、信頼できないソースからのパスワードを受け入れる場合の1つの大きな欠点があります。

送信者はあなたに長いパスワードを与えようとする可能性があり、その結果他の人へのサービス拒否を引き起こします。たとえば、パスワードが1 GBのデータであり、メモリが不足するまでパスワードを受け入れるためにすべての時間を費やす場合。ここで、この人があなたが受け入れることを望んでいる回数だけこのパスワードを送信するとします。関係する他のパラメータについて注意しないと、これがDoS攻撃につながる可能性があります。

上限を256文字などに設定すると、今日の基準では過度に寛大に見えます。


35
それでも、上限のある1 GBのデータを送信できます。制限を行うソフトウェアは、ほとんど常にWebサーバーの背後にあります。
エポックウルフ、2008

6
ただし、計算量の多い処理を行う前に、最初の256文字以外はすべてドロップできます。1 GBのデータでshaハッシュを実行すると、256文字の同じハッシュよりもはるかに時間がかかります。
rcreswick、2008

2
@Eyal:Webアプリのクライアント側で発生することは本質的に信頼されていません。したがって、ハッシュはパスワードと同等になり、これは無益な練習になります。(おそらくWebブラウザーは1 GBのテキスト入力を受け入れず、カスタムクライアントが「thisisthehashedpassword」フォームフィールドに1 GBの文字列を送信する可能性があります)
Piskvorが建物を去った

4
@Piskvor:しかし、いずれにしても1 GBの文字列を防ぐ方法はありません。ユーザーは常にexample.com/?password=abcabcabcabc ...をリクエストして、リクエストを好きなだけ大きくすることができます。標準のDoS。
Eyal、2011

4
@Piskvorとエヤル、幸いなことに、ApacheとIIS(そしておそらく他の成熟したサーバ)のURLを経由して渡されたフィールドの長さを制限:boutell.com/newfaq/misc/urllength.htmlを
sampablokuper

21

まず、銀行に優れたITセキュリティ専門家が働いていると想定しないでください。 たくさんしないで

とはいえ、パスワードの最大長は無意味です。多くの場合、ユーザーは新しいパスワード(現時点ではすべてのサイトで異なるパスワードを使用することの価値に関する議論)を作成する必要があり、書き留める可能性が高くなります。また、ブルートフォースからソーシャルエンジニアリングへのあらゆる手段により、攻撃に対する感受性が大幅に向上します。


同意しました!見て、過去数年間の英国の銀行のオンラインアクセスセキュリティの失敗の文字列...
スチュトンプソン

6
私はすでにすべてのWebサイトでそれらをすべて覚えさせることができるスキームを通じて異なるパスワードを使用していますが、それらはすべてかなり長いです。そのパスワード私が書く付箋上のマロン最大長さの制限を課すので、離れて私の好適まだ一意のパスワードから私を強制するものであるだけwebsies ...
ローマStarkov

@romkynsあなたのスキームはシンボルを使用しないと思いますか?かつては総当たりが困難な短いパスワードを生成するようなスキームがありましたが、使用したサイトの10〜20%が一般的な特殊文字を禁止する場合は、それを放棄する必要がありました。
Sparr

特殊文字はありませんが、一部のサイトで要求されていることを知っていたため、数字と大文字が常に追加されます。思いついたときに最大長の制限について知っていればよかったのですが...近親者のために作成した(より単純な)スキームはこれまで完璧に機能しました!
Roman Starkov

1
@romkynsこのようなスキームの他の問題:パスワードを共有するサイト。スキームがnameofwebsitefO0(googlefO0 yahoofO0など)のようなものである場合、flickr.comで「yahoofO0」、またはaskubuntu.comでstackoverflowfO0を使用することになっていることをどのように覚えていますか?パスワードを期限切れにするサイト。次に、スキーマを拡張して、変更可能な部分を含める必要があります。ただし、有効期限ルールがサブストリングをチェックする場合は失敗します。
Sparr

13

パスワードの最大長を128文字未満に設定することは、OWASP認証チートシートで推奨されなくなりました

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

段落全体を引用:

パスワードが長いほど、文字の組み合わせが多くなるため、攻撃者が推測しにくくなります。

パスワードの長さの最小値は、アプリケーションによって適用される必要があります。10文字より短いパスワードは脆弱であると見なされます([1])。最小の長さを強制すると、一部のユーザー間でパスワードを記憶する際に問題が発生する可能性がありますが、アプリケーションでは、通常のパスワードよりはるかに長く、覚えやすいパスフレーズ(文または単語の組み合わせ)を設定するようユーザーに促す必要があります。

パスワードの最大長は、ユーザーがパスフレーズを作成できなくなるため、あまり短く設定しないでください。通常の最大長は128文字です。20文字未満のパスフレーズは、小文字のラテン文字のみで構成されている場合、通常は弱いと見なされます。すべてのキャラクターが重要です!!

ユーザーが入力するすべての文字が実際にパスワードに含まれていることを確認してください。ユーザーが提供した長さよりも短い長さでパスワードを切り捨てるシステムを見てきました(たとえば、ユーザーが20を入力したときに15文字で切り捨てられる)。これは通常、すべてのパスワード入力フィールドの長さをパスワードの最大長と正確に同じ長さに設定することによって処理されます。これは、パスワードの最大長が20〜30文字のように短い場合に特に重要です。


11
このソースは、パスワードの最大長の制限を推奨していません。パスワードの最大長の制限を低く(128文字未満)推奨していません。
2017

9

パスワードの最大長を強制するために私が想像できる1つの理由は、フロントエンドが多くのレガシーシステムバックエンドとインターフェイスする必要があるかどうかです。

もう1つの考え方は、ユーザーが短いパスワードを使わざるを得ない場合、(友達や家族が)簡単に推測できるキャッチフレーズやニックネームよりも、意味不明な意味不明なものを発明する可能性が高いということです。このアプローチはもちろん、フロントエンドが数字と文字の混合を強制し、l33t-speakで書かれた単語を含む、辞書の単語を含むパスワードを拒否する場合にのみ有効です。


1
レガシーシステムは理解可能ですが、設計を指示する必要がある場合があります。可能な限り、彼らはそれに影響を与えるべきではありません。新しいシステムで最後に必要なのは、最新のセキュリティ攻撃が一般的になる前に設計されたセキュリティポリシーを備えたシステムです。あるいは悪いことに、新しいソフトウェアですが、そもそも間違って設計されています。既存の企業システムはHTTPを使用する場合がありますが、新しいシステムまたは拡張機能でSSLを使用しないことは正当な理由ではありません。同様に、最後の人が間違っていたからといって、パスワードポリシーが脆弱であり続けないようにする必要があります。維持する場合は、コストと利益の関係を調査する必要があります。
Katastic Voyage 2017

6

いくつかの最大パスワード長を課すための1つの潜在的に有効な理由は、それをハッシュするプロセス(bcryptなどの遅いハッシュ関数を使用しているため)に時間がかかりすぎることです。サーバーに対してDOS攻撃を実行するために悪用される可能性があるもの。

次に、時間がかかりすぎる要求ハンドラを自動的に削除するようにサーバーを構成する必要があります。だから私はこれが大きな問題になるとは思いません。


4

私はあなたが両方の箇条書きで非常に正しいと思います。ハッシュ化されたパスワードを保存している場合は、パスワードの長さがDBスキーマに影響を与えることはありません。無制限のパスワード長を使用すると、ブルートフォース攻撃者が説明しなければならない変数がもう1つ増えます。

設計が悪いだけでなく、パスワードの長さを制限する言い訳を見つけるのは困難です。


3

パスワードの最大長を確認できる唯一の利点は、過度に長いパスワードによって引き起こされるバッファオーバーフロー攻撃のリスクを排除することですが、その状況を処理するためのより良い方法があります。


1
はい、最大入力長があるべきですが、それは間違いなく<64であってはなりません。8または12の最大長はとんでもないです。
Dan Bechard、2014年

2

長いパスワードを検証しないように言っている人々を無視してください。Owaspは文字通り128文字で十分だと言っています。十分な呼吸スペースを確保するために、気分が良ければ、300、250、500と言うこともできます。

https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length

パスワードの長さパスワードが長いほど、文字の組み合わせが多くなるため、攻撃者が推測しにくくなります。

...

パスワードの最大長は、ユーザーがパスフレーズを作成できなくなるため、あまり短く設定しないでください。通常の最大長は128文字です。20文字未満のパスフレーズは、小文字のラテン文字のみで構成されている場合、通常は弱いと見なされます。


議論には関係ありません。問題は、128で十分かどうかではなく、長さを制限するメリットがあるかどうかです。
vikki

1

ストレージは安価ですが、なぜパスワードの長さを制限するのですか。パスワードをハッシュするだけでなく、パスワードを暗号化している場合でも、64文字の文字列を暗号化するのに6文字の文字列を超えることはありません。

おそらく、銀行システムが古いシステムをオーバーレイしているため、パスワード用に一定量のスペースしか許可できませんでした。


9
非常に正当な理由がない限り、パスワードはハッシュ化する必要があります。ハッシュは固定長の文字列になります。システムが実際のパスワードを保存している場合を除いて、作成するスペースの引数はありません。これは間違いなく恐ろしい考えです。
Stu Thompson、

8
パスワードの暗号化はひどい考えです。悪質な従業員は、あなたが膨大な数のパスワードを漏らすのに必要なすべてです。そもそもそれらを決して保管しないことで、問題を解決してください。
ロマン・スターコフ

1

私の銀行もこれを行います。以前はすべてのパスワードを許可していましたが、私は20文字のパスワードを使用していました。ある日、私はそれを変更しました。驚いたことに、最大8が与えられ、古いパスワードに含まれている英数字以外の文字が切り取られていました。私には意味がありませんでした。

銀行のすべてのバックエンドシステムは、英数字以外の数字で20文字のパスワードを使用していたときに以前は機能していたため、レガシーサポートが原因である可能性はありませんでした。そして、たとえそうであったとしても、任意のパスワードを使用できるようにし、レガシーシステムの要件に適合するハッシュを作成します。さらに良いことに、従来のシステムを修正する必要があります。

スマートカードソリューションはうまくいきません。すでにカードが多すぎるので…もうギミックはいらない。


彼らは、ハッシュのデータベースが盗まれたとき(そして私がWHENを意味するとき)にブルートフォース攻撃にかかる時間が長くなる重要なキースペースを切り出します(salt / hash / stretchも想定していますが、そうではないと確信しています)。銀行を変更する時。
Chris Gomez 14

1

任意のサイズのパスワードを受け入れる場合、ハッシュ化される前に、パフォーマンス上の理由からカーテンの長さに切り詰められていると想定します。切り捨ての問題は、サーバーのパフォーマンスが時間の経過とともに向上するため、ハッシュが明らかに異なるため、切り捨て前に長さを簡単に増やすことができないことです。もちろん、両方の長さをハッシュしてチェックする移行期間を設けることもできますが、これはより多くのリソースを使用します。


1

必要がない限り、制限を課さないようにしてください。注意してください:それは多くの場合で必要になるかもしれませんし、必要になるでしょう。レガシーシステムへの対応は、これらの理由の1つです。非常に長いパスワードのケースを十分にテストしてください(システムで10MBの長いパスワードを処理できますか?)。使用するキー防御機能(KDF)(通常はPBKDF2、bcrypt、scrypt)には多くの時間とリソースがかかるため、サービス拒否(DoS)の問題が発生する可能性があります。実際の例:http : //arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/


0

最大長がありますか?これはITの奇妙なトピックです。通常、長いパスワードは覚えるのが難しく、書き留められる可能性が高くなります(明らかな理由により、重要ではありません)。また、長いパスワードは忘れがちになる傾向があり、必ずしもセキュリティリスクではありませんが、管理上の手間や生産性の低下などにつながる可能性があります。これらの問題が差し迫っていると考える管理者は、パスワードに最大長を課す可能性があります。

私は個人的に、この特定の問題を、ユーザーごとに信じています。あなたが40文字のパスワードを覚えることができると思うなら、それならあなたにはさらに力があります!

とはいえ、パスワードは急速に時代遅れのセキュリティモードになりつつあり、スマートカードと証明書の認証は、問題であると述べたように、ブルートフォースを実行するのは非常に困難または不可能であり、公開キーのみをサーバー側にプライベートに保存する必要があります。カード/コンピューターのキーを常に使用します。


好きな歌の歌詞、聖書の一節、その他のことわざを簡単に思い出すことができます。これらは、一般的なパスワードと比較して非常に長いです。私はちょうどそれをテストし、79文字で入ってきました!(確かに、パスフレーズが長いほど、間違いの可能性が
高く

0

長いパスワード、つまりパスフレーズは、単に長さに基づいて解読することが難しく、複雑なパスワードを要求するよりも覚えやすいです。

おそらく、長さを無用に制限して、かなり長い(10+)最小長にすることをお勧めします。


0

レガシーシステム(既に説明)または外部ベンダーのシステムとのインターフェイスには、8文字の上限が必要になる場合があります。また、ユーザーを自分自身から救うための見当違いの試みである可能性もあります。この方法で制限すると、システム内のpssw0rd1、pssw0rd2などのパスワードが多すぎます。


0

パスワードがハッシュされない理由の1つは、使用される認証アルゴリズムです。たとえば、一部のダイジェストアルゴリズムでは、認証メカニズムがクライアントとサーバーの両方で入力されたパスワードに対して同じ計算を実行するため、サーバーでプレーンテキストバージョンのパスワードが必要です(通常、パスワードと同じ出力が毎回生成されることはありません)ランダムに生成された「ノンス」と組み合わされ、2つのマシン間で共有されます)。

ダイジェストは一部では計算できる場合もありますが、常にではないため、これはしばしば強化されます。より良い方法は、リバーシブル暗号化を使用してパスワードを保存することです。つまり、暗号化キーが含まれているため、アプリケーションソースを保護する必要があります。

Digst authは、暗号化されていないチャネルでの認証を可能にするためのものです。SSLまたは他のフルチャネル暗号化を使用している場合は、ダイジェスト認証メカニズムを使用する必要はありません。つまり、パスワードをハッシュ化して保存できます(パスワードは平文で安全に送信できます(指定された値のsafeの場合)。


-4

たった8文字の長いパスワードは、間違っているように聞こえます。制限がある場合は、少なくとも20文字をお勧めします。


3
しかし、それが問題です-制限はまったくないはずです。
ルークスティーブンソン

-4

適用する必要がある制限は、2000文字の制限、または何か他にひどく高いようなものですが、それが問題である場合にのみデータベースサイズを制限するためです。


9
パスワードはハッシュ化する必要があります...そして、パスワードがハッシュ化されていれば、データベースのサイズは問題になりません。
エポックウルフ、2008

4
@epochwolf –パスワードを常にハッシュする必要がない理由の1つが考えられます(今日自分で発見したため)。ユーザーに代わって第三者に送信する必要があるパスワードは、ハッシュとして保存できません。値。[たとえば、外部ドメインを
介し
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.