Jeff Atwood氏がブログで投稿した記事「Password Rules Are Bullshit (Posted Mar 10, 2017)」を翻訳してご紹介しています。
なお、この記事は原著者の許諾を得て翻訳・掲載しています。
パスワードの悪いところはたくさん、たくさんありますが、一番悪いものは何か知っていますか?それはパスワードのルールです。
あなたのパスワードは:
- 8~32文字の長さでなければなりません
- 以下の要素のうち少なくとも2つを含めなければなりません:
- 少なくとも1つの文字(大文字または小文字)
- 少なくとも1つの数字
- 以下のうち少なくとも1つの特殊文字:# $ % ‘ ^ , ( ) * + . : | = ? @ / ] [ _ ‘ { } \ ! ; - ~
- 前に使用していた5つのパスワードと異なるものでなければなりません
- あなたのユーザーIDと一致してはいけません
- 2つ以上の同じ文字を含めることはできません(例:111またはaaa)
- 2つ以上の連続する文字を含めることはできません(例:123またはabc)
- 金融機関の名前を使用してはいけません(例:JPM、MORGAN、CHASE)
- 一般的に使用されるパスワードであってはなりません(例:password1)
僕たちが一生のうちにパスワードの問題を解決できないんだったら、墓の外に出て幽霊として出没してやる
このTwitterの誓約を、インターネットの永続的な記録に正式に記載しましょう。死後の世界があるかどうかはわかりませんが、きっとすぐにわかるでしょう。私は猛烈に怒った幽霊として化けて出てやります。
最悪なパスワードのルールが世界中にあふれています:
しかし、このことをあなたに伝える必要はないでしょう。僕たちのようなオタクと同様、あなたが真にランダムなパスワード生成ツールを使用するにつれて、この体制下では、あなたは毎日ひどく苦しんでいるはずです。
パスワードに関する古典的なXKCD(ウェブコミックのサイト)を見たことがありますか?
僕たちは確かに「正解、馬、バッテリー、ステープル」が実行可能なパスワード戦略であるかどうか議論することができます。しかし、ここでの主張はパスワードの長さの問題です。
いや、僕は真剣です。実際にそうです。僕は、あなたのパスワードがあまりにも短すぎるということが言いたいのです。現在、クラウドコンピューティングとGPUパスワードのハッシュクラッキングの状況を考えると、8文字以下のパスワードは、パスワードのない状態と同じくらい危険にさらされています。
パスワードを短くしてはいけないというルールがあります。長いパスワードは、短いパスワードよりも安全性が高いはずですよね?
では、この4文字のパスワードはどうでしょう?
この8文字のパスワードはどうでしょう?
あるいは、この7文字のパスワード(仮説ですが、こういうのがあってもいいですよね)はどうでしょう?
@codinghorror申し訳ないですが、パスワードはアラビア語、中国語、タイ語、韓国語、クリンゴン語、Wingdings、絵文字を使用してはいけません
- Finley Creative(@FinleyCreative)2016年3月3日
上記の4つのUnicode絵文字をお気に入りのログインダイアログに貼り付けて(実際に試してみてください)、実際には4文字ではないことを発見すると驚くかもしれません。
おやまあ。
僕たちの古くからの友人であるUnicodeが再び襲ってきます。
ここで判明したように、「あなたのパスワードは合理的な長さでなければならない」という単純なルールでさえ、必ずしもそうであるとは限りません。特に、ASCII至上主義の醜いアメリカ人のような思考をやめるならば。
では、素晴らしい、そして長いパスワードはどのようなものでしょうか?それらは常に安全でしょうか?
aaaaaaaaaaaaaaaaaaa
0123456789012345689
passwordpassword
usernamepassword
もちろん、こんなものはだめですよね。最近、こんなユーザーに会ったことはありますか?
これらは、僕が今までに書いたソフトウェアのすべての部分を一貫して台無しにします。もちろん、あなたのようなオタクがエントロピーの概念について理解していることはよくわかっていますよ。しかし、エントロピーに対するあなたの愛を、恐ろしく独特なパスワードのルールとして表現するとこうなります…。
- 大文字を含まなければなりません
- 小文字を含まなければなりません
- 数字を含まなければなりません
- 特殊文字を含まなければなりません
…これは、ユニコードと絵文字の世界で想像力が驚くほど失敗した結果です。
僕たちがDiscourseを構築したとき、ログインのダイアログは一見単純であるにもかかわらず、非常に複雑なソフトウェアであることがわかりました。僕たちが使用したプライマリパスワードルールも、「パスワードの長さ」という最も単純なものでした。僕たちは既に最小パスワードのデフォルトの長さを8文字から10文字に増やしました。管理者またはモデレーターになった場合、最小の長さをさらに増やして15文字にしようと決めました。
僕はまた、上位10万の最も一般的なパスワードに照らし合わせてパスワードをチェックすることを提唱しました。 2016年にデータが漏洩した1,000万のパスワードを見ると、最も多く使用されているパスワードの上位25個は以下のとおりです:
123456 | 123321 |
123456789 | 666666 |
qwerty | 18atcskd2w |
12345678 | 7777777 |
111111 | 1q2w3e4r |
1234567890 | 654321 |
1234567 | 555555 |
password | 3rjs1la7qe |
123123 | |
987654321 | 1q2w3e4r5t |
qwertyuiop | 123qwe |
mynoob | zxcvbnm |
1q2w3e |
このデータも、ASCII中心主義を裏切っています。僕が思うに、どんな文化においても数字は同じですが、平均的な中国人が「password」、「quertyuiop」、または「mynoob」というパスワードを選択するとは思えません。そのため、このリストはカスタマイズ可能かつローカライズ可能でなければなりません。
(1つの興味深いアイデアは、より長いパスワードの中で一般的な短いパスワード一致を検索することですが、これはあまりにも多くの偽陽性(誤検知)を引き起こすと思います。)
データを調べると、これもパスワードの長さを考慮した主張に変わります。上位25個のパスワードのうち10文字なのがたった5個であることに注目してください。つまり、10文字のパスワードを求めると、最も一般的なパスワードとかぶる確率を80%減らすことになります。このことは、Discourseで漏洩した何百万ものパスワードを収集し、10文字以上という新しい最小要件を反映したパスワードだけをフィルタリングしてリストを絞り込んだときに気付きました。
それは突然小さなリストになったのです。(同様の一般的なパスワードリサーチを行っている場合は、コメントで結果を共有してください。)
仲間の開発者に以下のような常識的なアドバイスを提供したいと思います:
1. パスワードのルールはでたらめです
- パスワードのルールは機能しません。
- パスワードのルールは、真にランダムなパスワードジェネレータを使用する人たちという理想的な読者に大きな不利益をもたらします。知ってます?そのランダムなパスワードに数字や記号が含まれていないことだってあるんですよ。僕は数学の教科書をダブルチェックしました。その結果、やっぱりその可能性はあります。まず間違いないと思います。
- パスワードのルールは平均的なユーザーを苛立たせます。その結果、彼らは非協力的になり、パスワードの安全性を損なう「創造的な」回避策を使用してしまうのです。
- パスワードのルールは、僕が上記で共有した多くの恥ずかしいリンクに基づいても、選択されたルールが大雑把で不完全で、かつ/または狂っているという意味で、間違っていることが多いです。
- 真剣に、神への愛のために、この既にナンセンスなパスワードルールをやめてください。僕の言葉を信じられないならば、この2016年 NISTのパスワードルールの推奨事項を読んでみてください。そこには「構成ルールなし」と書かれています。しかし、僕は1つのエラーを見つけました。そこは「でたらめな構成ルールなし」と書くべきです。
2. Unicodeにおける最小のパスワードの長さを強制してください
ルールが一つだと、少なくとも覚えやすく、理解しやすく、強制しやすいです。このルールは、それらを全てもたらすよく知られているルールであり、よくわからない状況でも機能するルールです。
- このルールはシンプルです。ユーザーは(全員じゃないかもしれないですけど、ほとんどは)数えることができます。
- このルールは機能します。データが、このルールが機能することを示しています。試しに、選択した一般的なパスワードリストをダウンロードし、パスワードの長さでグループ化してみてください。
- 数学は嘘をつきません。他のすべての事項が等しい場合、より長いパスワードは、短いパスワードよりもランダムになり、安全性が高くなります。
- この1つのルールでさえも神聖なものではないことを受け入れてください。中国のサイトでは、パスワードの長さを最低6文字にすると、非常に合理的かもしれません。20文字のパスワードでも、馬鹿馬鹿しくなるほど安全ではない場合もあります。
- パスワード入力フィールドで(ほとんど)すべてのUnicode文字を許可しないのは間違っている可能性があります。
- これは実装の詳細を少しお見せしただけですが、パスワードの最大の長さも合理的であることを確かめてください。
3. 一般的なパスワードを確認してください
既に述べたように、「一般的」の定義は読者と言語によって違いますが、データが漏洩した既知の10万、100万、または100万件のリストに存在する一般的なパスワードを選択すると、ユーザーにとってはひどい不利益になります。ハッカーがハッキングする際にこれらの一般的なパスワードを入力することに疑いの余地はありません。積極的なパスワード試行率の制限があっても、上位1,000個の最も一般的なパスワードを使用するだけで、簡単にパスワードを割られてしまうのはショッキングです。
- 1.6%の人は、上位10個に入るパスワードを使っています
- 4.4%の人は、上位100個に入るパスワードを使っています
- 9.7%の人は、上位500個に入るパスワードを使っています
- 13.2%の人は、上位1,000個に入るパスワードを使っています
- 30%の人は、上位10,000個に入るパスワードを使っています
幸運なことに、実際に漏洩した数百万ものパスワードリストがあり、それを取捨選択することができます。それらは、退屈なプログラマーが夢見る仮想的で合成的な「切り裂きジャック(未解決)」のパスワードルールではなく、実際のユーザーが使用する実際のパスワードなので、データフォレンジックを行うのは楽しいことです。
研究を行ってください。データを収集してください。ユーザーを保護してください。
4. 基本的なエントロピーを確認してください
ここで選り好みをする必要はありません。あなたの直感を信じて、エントロピーの尺度を選んでください。しかし、あなたがチェックに失敗したときに、それをユーザーに説明することができなければならないことを忘れないでください。
文字通り「aaaaaaaaaa」という10文字のパスワードを選択するユーザーがいても問題ないとわかったとき、僕は少し悲しかったです。僕の意見では、これを行う最も簡単な方法は、(y)個の文字のうち少なくとも(x)個の固有文字が存在することを確認することです。そしてこれは、僕たちがDiscourseの現在のベータ版で行っていることです。他のアイデアも大歓迎なので、コメント欄にお寄せください。単純かつ明確な方がいいです!
5. 特別なケースのパスワードを確認してください
お恥ずかしいことに、Discourseのログインを構築するときに、僕たちは本当にブロックしなければならない2つの一般的な事例を見逃してしまいました。
- ユーザー名と同じパスワード
- 電子メールアドレスと同じパスワード
Discourseバージョン1.4より前のバージョンを使用している場合は、すみません、すぐにアップグレードしてください。
同様に、以下のような他の特別なケースをブロックすることもできます。
- ウェブサイトのURLまたはドメインと同じパスワード
- アプリ名と同じパスワード
つまり、既存の考えにとらわれずに、ユーザーが考えるであろうことをよく考えてみてください。
釈明
何人かがこの記事を「私が今リストアップする4つを除いて、他のすべてのパスワードのルールはでたらめだ」と解釈しています。それは僕が意図していることではありません。
僕の考えは、わかりやすく、シンプルで、実用的で、あらゆる状況において実生活で機能するルールである「長さ」に焦点を当てることです。ユーザーは、十分な長さであれば、(ほとんど)すべてを適切なUnicodeで入力することができます。これは、ユーザーに指示する際に必要なものすべてを拘束する1つのルール、つまり長さです!
3.から5.は、より特殊な例外チェックのようなものです。あなたは無限の願いを望むことはできません。それは本当にまれな例なので、事前に議論する必要はありません。あなたは、ユーザー名と全く同じというような誤ったパスワード、またはaaaaaaaaaaaまたは0123456789のようなパスワードをユーザーに与えないようにする必要がありますが、これは事前に説明する必要のあるルールではなく、入力後のチェックだけで十分です。
長すぎて読みきれないよという人向けの要約:ルールは1つだけ、「長さ」です。好きな文字列を入力し、十分な長さを持つ合理的なパスワードであることを確認してください。
【広告】技術チームを構築している最中ですか?Stack Overflow Careersは、地球上のプログラマーに向けて最大のコミュニティから雇用を手助けします。私たちは、あなたのような開発者を念頭に置いてサイトを構築しています。
著者:Jeff Atwood
屋内愛好家。Stack OverflowとDiscourseの共同設立者。免責事項:僕は自分の言っていることを自分でも理解していません。僕のTwitterアカウント:http://twitter.com/codinghorror
CREDIT:原著者の許諾のもと翻訳・掲載しています。
[原文]Password Rules Are Bullshit (Posted Mar 10, 2017) by Jeff Atwood