web-dev-qa-db-ja.com

パスワードに特殊文字を使用するのは悪いことですか?

私はパスワードテンプレートに最適なエントロピーを見つけようとしています。いくつかのテストを実行した結果、最良の結果はàでした。

この記号だけでも、セットに160文字が追加され(大文字、小文字、数字、さらには記号とは対照的です)、私が使用しているような完璧に見えるスペイン語のキーボードからすぐに利用できます。

ただし、これに関する情報は見つかりません。すべてのパスワード生成ソフトウェアはそれらの使用を避けているようで、その理由はわかりません。

+9qQ¨{^のようなパスワードは、最大254文字セットのサイズを追加します。+9qQ¨{^aaaaには67ビットのエントロピーがすでにあり、覚えやすさの要素を別に設定しています。これらの特殊文字の使用を避ける理由はありますか?

51

いわゆるパスワード強度チェッカーのほとんどは、パスワードもエントロピーも正しく理解していません。 alwaysが強力なパスワードとして渡されるとんでもない何かを見つけました。名前と生年月日を試してください(ロケールの要件に応じて、ドットまたはスラッシュを使用)。大文字と小文字、特殊文字と数字がそこにありますが、正しい考えの誰もがパスワードとしてそれを推奨しません。

それでも、「JohnDoe01.01.1980」は https://howsecureismypassword.net/ で「220兆年」をスコアし、 http://www.passwordmeter.com/ で100%をスコアします。

https://www.my1login.com/resources/password-strength-test/ は、愚かさを理解している唯一のチェッカーです-この例を入力して、その見積もりが「素晴らしい」から最後の数値を入力すると「中」、カレンダーの日付があることを「取得」します。

だから:パスワードを判断するために原始的なエントロピー計算エンジン以上のものを使用してください。

あなたの特定のケースでは、それは意味します:

紙の上文字セットを拡張すると、検索スペースが大幅に増加し、パスワードが大幅に安全になります。 実際にはユーザーの99.9%が独自のロケールを使用し、スペイン語のaまたはドイツ語のウムラウトは、ほんの数文字の追加であり、UTF-8スペース全体ではありません。なぜなら、攻撃者が基本的な人間の性質を考慮に入れていないと考えるのはばかげているからです。

使いやすさの側面もあります。日本のインターネットカフェからリモートで自分のアカウントにログインする必要がありましたが、それは明らかに面白くありませんでした。ユーザー名、パスワード、または必要なコマンドのいずれかに非ASCII文字が含まれている場合、それを実現する方法はなかったと思います。

別のキーボードからマシンにログインしなければならない可能性がある場合、特殊文字を使用すると、パスワードを忘れた場合よりも自分のアカウントにアクセスできなくなります。

さらに、Unicodeとその多くの壊れた実装については話さないでください。これらは、追加の問題を引き起こす可能性があります。

これらは、パスワードジェネレータが非ASCII文字を回避する理由の一部でもあります。

すべての潜在的な問題を補償するのに十分なセキュリティが追加されていません。


そして、お願いします、お願いします。パスワードの複雑さについて考えるのをやめてください。それは蛇油のストローマン橋です。長さはいつでも複雑さを上回ります。パスワードジェネレーターを使用している場合は、おそらくそれらをパスワードマネージャーにも保存しており、10、20、40、または200文字を入力してもかまいません。

パスワードセキュリティの#1の最良のヒントは、登録するすべてのインターネットサイトにランダムな新しいパスワードを使用することです。これにより、次回のハッキングでパスワードが失われることがなくなります。あなたがそれらを適切にハッシュしてソルトするかどうか確信が持てないので、もしそうでなければ、世界中のすべての複雑さと特殊文字は少しでも重要ではありません。

26
Tom

言語固有の文字は一般的に利用できないため、通常、パスワードジェネレーターでは避けられます(たとえば、米国のキーボードにはアクセント付き文字がありません)。したがって、これらのツールからの省略を、それらが弱いか問題がある可能性があることを示すものとしてとらないでください。

シンボルセット(a-zA-Z0-9など)。パスワードを総当たりするときに推測できる文字のプールが大きいほど。言語固有の文字を追加すると、プールに追加されます。これは良いことです。

ただし、エントロピーの計算方法には注意してください。文字列ààààààààààà便利なため、キーボードで打っただけではエントロピーはあまりありません。エントロピーとは、キャラクターの選び方です。ランダムにchosen文字列は高いエントロピーを持ち、ランダムに選択された文字列は文字の広いプールからより高いエントロピーを持ちます。

78
schroeder

はい!

すべてのパスワードには printable ASCII characters のみを含める必要があります。「拡張ASCII」ではなく、Latin-1ではなく、Unicodeではありません。

その理由は、「à」などを押したときに、プログラムが実際に何を受信するかを決して知らないためです。

「拡張ASCII」の多くのバージョンでは、「à」は(hex)85としてエンコードされます。
ISO Latin-1では、「à」は(hex)E0としてエンコードされます。
Unicodeでは、「à」はコードポイントU + 00E0です。 UTF-8でエンコードすると、結果は(hex)C3(hex)A0になります。

ジャスティンタイムは別の可能性があるとコメントで指摘しています。誰もがユニコードを話す場合でも、「à」はさまざまな方法で格納できます。上記のU + 00E0がありますが、「a」の後に(COMBINING Grave ACCENT)が続く合成バージョン(U + 0061 U + 0300)もあります。正しく記述されたプログラムはこれを処理しますが、この領域にバグがあることは非常に一般的です

名前や住所に国民性を持っている人なら誰でも、さまざまな方法でそれらが破壊されているのを見てきました。これが起こると、それは単に醜いですが、手紙は通常とにかく配信されます。

これがpasswordに発生すると、ログインできなくなります!そこに行かないでください。

68
Stig Hemmer

エントロピーを計算するには、ランダムな文字列を生成する明確に定義された方法が必要です。次の文字列を考えます。

abcdef

優れた乱数ジェネレータを備えたコンピュータに6つの小文字と たまたまこの特定のシーケンスを取得した を生成するように指示した場合、ログがあります。2(266)ビットのエントロピー(28ビットのエントロピー)。ただし、ランダム文字列ジェネレータ 常に「abcdef」を返す の場合、エントロピーは実質的に0ビットになります。エントロピーの計算では、攻撃者がパスワードの生成方法を知っていると想定しています。

あなたの質問では、à文字について具体的に言及しました。アルゴリズムを指定しなかったので、アルゴリズムを提案させてください。特定のパスワード生成アルゴリズムを選択し(選択は重要ではありません)、常にàを最後に付けます。これは何ビットのエントロピーを追加しますか?生成される可能性のあるパスワードの数は変更されなかったため、答えは0です。

しかし、ランダムな文字を生成するアルゴリズムを変更して、可能な出力文字にà文字を追加したとします。そうするとログが追加されます2((アルファベット+ 1)サイズ)-ログ2(アルファベットサイズ)エントロピーのビット。これはそれほど多くの値を提供しません。62文字のアルファベットサイズ(小文字+大文字+数字)の50文字のランダムパスワードの場合、これは1ビットのエントロピーを追加するだけです。パスワードに1文字を追加すると、約6ビットのエントロピーが追加され、より良い結果を得ることができます。

さらに、アルファベットにàを追加すると、パスワードを入力する必要があるキーボードにあるとは限らない文字を使用するコストが発生します。

7
Konrad Borowski

ログインシステムが適切に実装されていない場合、それは悪いことです。 (おそらくレガシーの理由で)パスワードの最大長があり、許可される文字(またはさらに悪いことに、許可されていない文字)に関するばかげたパスワード規則を持っている多くのシステムをまだ見ているように見えるので、ASCII以外の文字を作成することを信頼しません無傷でそれを高い信頼度で。あなたがset非ASCII文字を含むパスワードを許可されていても、ログインプロセスがそれを壊したのは確かに悪いでしょう。

最大パスワード長を強制するシステムの場合、パスワード長が実際に測定される方法のあいまいさも考慮する必要があります。それはバイト数ですか?どのエンコーディングで?それはいくつかのコードポイントですか?書記素クラスターの数?たとえば、システムがUTF-8のバイト数に基づいてパスワードの長さを制限している場合、非ASCII文字を使用するとより多くのバイトが消費され、reduceエントロピーになる可能性があります。

5
jamesdlin

エントロピーに関して確かな情報を提供している回答はたくさんありますが、「...これらの特殊文字を使用しない理由はありますか?」

一部のコンピュータパスワードシステムでは、英数字と、アンダースコア(_)やハイフン(-)などの限られた範囲の文字のみを使用できます。他のすべての文字は禁止されています。

一部の複雑なアプリケーションでは、画面のスクラップを使用するレガシーシステムがあり、テキスト文字列内の特殊文字の翻訳が破損する可能性があります。問題は、アプリケーションがどのように実装されているかを知ることができないことです。最小基準を設定する法律がある場合とない場合があります。

文字セットが変更されるチェーンのどの時点でも、特殊文字がドロップまたは破損する可能性があります。

登録のために初期パスワードを受け入れるアプリケーションが、検証のためにパスワードを受け入れるアプリケーションと同じであるとは限りません。私は、悪質に実装されたシステムをすべて経験した場合、ペストのようなシステムを回避することを認めなければなりません。

3
PDP11

パスワードをどこでどのように使用するかによって異なります。

パスワードマネージャーを使用している場合USBスティックでは、コピーと貼り付けにより、すべてのマシンでパスワードが正しく入力されるという問題はありません。

特別なデバイス(スマートTV、冷蔵庫、USBスティックを挿入できない、または許可されていないデバイス)でパスワードを使用する必要がある場合、またはログインプロセスが不適切に実装されている可能性がかなり高い場合は、 ASCII US-Keyboardsにある文字のみを使用します。

2
paradx

エントロピー はパスワードのプロパティではありません。これは、パスワード生成メソッドのプロパティ(または、より一般的には、確率分布のプロパティ)です。具体的には、攻撃者が使用された方法を知っていると想定して、生成された特定のパスワードを識別するために攻撃者が必要とする情報の予想ビット数です。生成する可能性のあるすべてのパスワードが同じ確率である場合、これによりログのエントロピーが単純化されます2(可能なパスワードの数)。

  • したがって、メソッドがàを選択する場合、エントロピーは0になります。単一の可能なパスワードのどれが選択されたかを識別するために追加情報は必要ありません。
  • パスワードが1〜16のàsのシーケンスである場合、16の可能性とログがあるため、エントロピーは4になります。2(16)= 4。
  • パスワードが0から15までの3つの数字であり、一律に独立して選択されている場合、エントロピーは12です。 可能性とログ2(16)=ログ2(16)* 3 = 12。

    しかし、パスワード15 3 7は、確率分布ではないため、エントロピーを持っていません。その中から選ばれたアイテムです。

パスワードのエントロピーを与えると主張するツールは、そのパスワードを生成するために使用した可能性のある方法について推測です(そしてほぼ確実に推測wrong)、そしてあなたが使った方法のエントロピーを彼らに与えますthink彼らは、パスワードがanyで生成された可能性のあるメソッドを使用して選択されたと信じているため、特殊文字を含むパスワードのエントロピーが高いと報告していますanyの位置。この仮定が偽の場合(そうである場合)、彼らが報告するエントロピーはナンセンスです。

パスワードに特殊文字を使用することは、良くも悪くもありません。 どの文字がパスワードに含まれるかは問題ではありません。 いくつの可能性があるかが重要です。

2
Ray

はい、場合によっては。例えば:

1)パスワードを覚えておかなければならない状況の場合、特殊文字を追加または要求するとセキュリティが低下し、ユーザーがパスワードを保存しないことに関するパスワードポリシーに違反したり、パスワードを書き留めたりする可能性が高くなります。どちらの場合も、複雑なパスワードを使用するよりもはるかに大きなセキュリティリスクが発生します。

また、たとえば、次の一連のパスワードを検討してください。90日ごとに変更され、特殊文字を使用して、過度のパスワード要件を満たします。

   Th1s$ecuritySucks!
   Th2s#ecuritySucks!
   Th3s@ecuritySucks!

最初の2つのパスワードが公開されたと想像してください... 3番目のパスワードに変更した後でも、最初の2つのパスワードを見れば現在のパスワードを推測するのは簡単です。

2)エントロピーのためにエントロピーを追加することは、他のセキュリティ問題の解決に費やすリソースの浪費になる可能性があります。システムをロックダウンする場合(たとえば、ファイルと比較して)、他のすべての攻撃手段を確実にブロックすることで、より多くの利益を得ることができます...より多くの推測が必要なパスワードを作成する。

何もすることがなく、パスワードを人の記憶に保持したり、入力したりする必要がない場合(少なくとも、不明なシステムや異なるシステムから入力した場合は必要ありません)、必ずしも有害ではありません。

0
HumanJHawkins

No、パスワードに「特殊」(より良い:非ASCII)文字を使用することは悪くありません。

ユーザーとして、あなたがしなければならないすべては

  1. uTF-8以外のログインフォームが表示されないことをウェブサイトを信頼し、
  2. 必要なときにいつでもパスワードを入力できることを確認してください。

外部の物理キーボードでパスワードを入力する必要がある場合は、ASCII以外の文字を生成するキーの位置を覚えておく(または検索する)必要があります(BTW、àスペイン語キーボードでは、2回のキーストロークです)。レイアウトに関しては、すべてのオペレーティングシステムで変更できるので、問題ありません。

非ASCII文字の利点は、パスワード解読ソフトウェアが、私見では、それらを試す可能性が低いことです。もしそうなら、より長い確率を犠牲にして、より低い確率でパスワードを探索しますASCIIパスワードは、使用される可能性が高くなります。

0
Walter Tross