web-dev-qa-db-ja.com

パスワードの自動修正のタイプミスは安全ですか?

Technology Reviewの パスワードのオートコレクトが優れている理由 のコメント:

新しい調査では、テキストメッセージやドキュメントのタイプミスを修正するために使用されているのと同じアプローチ、つまりオートコレクトを使用すると、これらのフラストレーションを回避できることが示されています。

「これは、私たちの見解では、かなり大きな問題です」と、ニューヨークのコーネルテックにあるジェイコブステクニオンコーネル研究所の教授、アリジュエルズは言います。 「ユーザーの利便性を高めるために、ウェブサイトでパスワードポリシーを変更する必要があります。セキュリティの低下はごくわずかです。」

この記事では、以下で始まる論文 pASSWORD tYPOSおよびそれらを安全に修正する方法 も引用しています。

ユーザーが選択した任意のパスワードに対して、誤植を許容するパスワード認証の最初の扱いを提供します。

安全だと言われていますが、これはbadアイデアのように思えます。

このアイデアは実際どのくらい安全ですか?

9
user74730

完全な開示:私は論文の著者の1人です。

正確なパスワードチェックシステムは、標準のソルト処理された、計算が遅いパスワードのハッシュを格納します。 password123などのパスワードが認証サービスに登録されると、ランダムなソルト「sa」が選択され(これは16バイト以上のランダムバイトである必要があります)、計算が遅いハッシュ関数Hが適用されます:H(sa、 password123)。結果はhと呼ばれ、salt saとともにデータベースに格納されます。前述のように、Hを遅くする(計算に10秒または数百ミリ秒)ように選択する必要があります。適切に構成されたargon2、scrypt、またはPBKDF2が適切です。

ユーザーが後でログインしようとしたときに、パスワードを入力すると、ハッシュが再計算され、保存されている値と照合されます。上記の例で、ユーザーがpassword123を送信すると、H(sa、password123)が(再びゆっくりと)再計算され、結果がチェックされます-以前に計算されたhと一致し、ログインを許可できます。送信されたパスワードが以前に登録されたパスワードと異なると、まったく異なるハッシュ値が生成され、ログインが失敗します。

私たちの考えは単純です。最初のチェックが失敗した場合、システムはさらに、送信されたパスワードに少数の「コレクター」関数を適用し、その結果にハッシュアルゴリズムを適用できます。たとえば、入力としてパスワードを取り、すべての文字の大文字と小文字が変更されたパスワードを出力するCaps Lockコレクター関数F_capsを修正します:F_caps(PASSWORD123)= password123およびF_caps(pAsSwOrD123)= PaSsWoRd123。 F_first(Password123)= password123およびF_first(pASSWORD123)= PASSWORD123のように、最初の文字の大文字の修正を修正することもできます。これらは実装が簡単であることに注意してください。

次に、タイプトレラントチェックを行うには、以前に登録されたソルト、ハッシュペア(sa、h)、および送信されたパスワードpwに次のロジックを適用します。

H(sa、pw)= hまたはH(sa、F_caps(pw))= hまたはH(sa、F_first(pw))= hの場合、ログインを許可する

例として、PASSWORD123を送信した場合、チェックはPASSWORD123、password123、およびpASSWORD123で行われ、2番目のチェックが成功します。

いくつかのポイント:

1)オフラインのブルートフォース攻撃の効果は、以前とまったく同じです。どうして?保管するのはsa、hだけだからです。 sa、hを与えられた攻撃者は、正しいパスワード(この例ではpassword123)を試すブルートフォース攻撃によってのみパスワードを学習します。ここでは、Hの計算方法を変更していないため、セキュリティは失われません。

2)リモート推測攻撃に対するセキュリティの変化はごくわずかです。これは紙面での広範な分析によって示されていますが、現実には、最も適切な戦略は、一定のしきい値まで最も可能性の高いパスワードを送信することです(たとえば、多くのサイトは、10回の試行の失敗後にアカウントをロックします)。タイプミスの修正により実行される追加のチェックは、攻撃者が少し幸運になるのを助けるかもしれませんが、それが本質的に無視できることを示します。それが心配な場合は、それをさらに減らすテクニックを提供します。

3)誤植耐性は、ログインサーバーのCPU使用率を増加させます(Hがscryptやargon2などのメモリハードハッシュの場合は、メモリ負荷も増加します)。これは、Hの追加の計算が遅いためです。実際には、ユーザーが拒否した後に再送信することになり、実際には、これは予想されるほどのオーバーヘッドにはなりません(上記の例では3倍)。各試行の代金を支払う。

4)任意のタイプミスを許可することはお勧めしません。これは、Hを法外な回数再計算する必要があるため(低速であることを忘れないでください!)、いずれにしてもこれは安全ではないため、現在では不可能です。原理的な分析に基づいて、許可するタイプミスを慎重に選択する必要があります。上記の2つの修正子であるCaps Lockと最初の文字の大文字の使用は、より微妙な意味合いを持ち始めるだけでなく、安全な展開を簡単に実現できると考えています。

追加情報を提供するFAQを追加しました: https://www.cs.cornell.edu/~rahul/projects/pwtypos.html

12
Tom Ristenpart

編集:この回答は正しくありません。投票数の多い回答を参照してください。付録では「安全なスケッチ」について言及していましたが、論文を詳しく読んでみると、それらがしないでくださいその方法を推奨していることがわかります。

理論的には、安全なスケッチ[17]を使用して、サーバー側のいくつかのタイプミスを修正できます。ただし、既存の構造の実証済みの境界は弱すぎて、(エントロピーが非常に低い)私たちの設定に意味のある保護を提供できません。

彼らは私がここに書いた私のポイントをすでに認め、その考えを拒否しました。初めてその論文を読むのを完全に逃した。

-

研究論文は非常に信頼できるようであるという事実にもかかわらず、私自身はそれらの発見に同意しません。それらの計算は確かですが、その仮定は実際の攻撃シナリオを考慮しておらず、人々がパスワードを選択する方法を考慮していません。

基本的に彼らが言っているのは、capslockを有効にする、最初の文字を大文字にしない、文字を追加または削除しない、キーボードの隣接するキーを押すなど、いくつかの一般的な間違いがあるということです。彼らが提案する解決策では、これらの一見マイナーなエラーをすべて無視して、システムが十分に近いパスワードを受け入れるようにすることができます。

これは使いやすさの大幅な改善ですが(パスワードを入力するときに誤字を犯します)、セキュリティのトレードオフは彼らが認めるよりもはるかに大きくなります。問題の一部は、オンライン(ライブWebサイトへのログイン)とオフライン(ハッシュデータベースの取得とコンピューター上のクラック)に対応していないことです。攻撃者が1秒あたり数十億のパスワードをブルートフォースで攻撃できるオフライン攻撃では、あいまいなパスワードは大幅に失敗します。

たとえば、ハッカーが100万個のパスワードのデータベースを取得し、それらに対してハイブリッド辞書攻撃を試みたとします。通常、パスワードクラッキングソフトウェアは「password」のような単語を受け取り、Password、pAssword、PAssword、password1、password!などを含む、そのすべての順列を試します。すべての単一の辞書単語の何百もの順列を試さなければならないことが、パスワードの解読には非常に時間がかかります。

あいまいなパスワードの場合、それらの置換のほとんどすべてが有効なパスワードとして機能します。たとえば、100万個のパスワードのセット全体に対して「パスワード」を試すだけだとします。ハッカーは、Wordのすべてのアカウントとすべての順列に対して正しい一致を取得します。ここでの大きな問題は、1文字を変更したり、ランダムな大文字を使用したり、数字や句読点を最後に追加したりするなどして、多くの人がパスワードを強化することです。

攻撃者がすべての順列を試行するように強制し、試行ごとにミリ秒の時間さえ獲得することが重要です。これが、PBKDF2などのアルゴリズムで数百または数千回のハッシュを使用する理由です。パスワード解読ソフトウェアが各パスワードに関係するあらゆる作業は、私たちにとって有利です。

この論文では、パスワードスペース全体を検討しており、ファジーチェックによって攻撃者がブルートフォースで攻撃しなければならない可能性のあるパスワードの数を大幅に減らすことはないと彼らは正しく計算しています。問題は、パスワードがこの潜在的なスペースに均等に分散されるのではなく、辞書の単語で構成される比較的小さなスペースの周りに集まっていることです。これを考慮に入れると、セキュリティの損失は重大です。

これを全体的に見ると、米国全体の表面積(380万平方マイル)を使用して、選択できるすべての可能なパスワードを表す場合、誰もが使用する実際のパスワードは約5平方フィートの領域に収まります。このような小さなスペースでのあいまいなパスワードは、惨事になるでしょう。

このアイデアは、カジュアルなセキュリティがあり、使いやすさが重要なシステムでうまく機能します。また、ハードウェアトークンや生体認証センサーなどの複数の認証要素と組み合わせて使用​​することもできます。しかし、それ以外のすべての場合、このテクニックは十分に安全ではありません。

1
Mark Burnett

ここには2つのもっともらしい攻撃シナリオがあります。

  1. オフラインクラッキング
  2. オンラインクラッキング

オフラインのクラッキング状況では、強力な暗号化の原則を適用する必要があると、紙はまだ述べています。これは、ファジーロジックがないことを意味します。ソルトを知っていて、入力を推測することで、最終的なハッシュを計算するために必要な作業だけがあります。このシナリオでは、論文の方法に実際の利点や欠点はありません。

オンラインクラッキングの状況では、攻撃者がオンラインソースに対してランダムにパスワードを推測しているときに、ユーザビリティとセキュリティのトレードオフがあります。基本的に、各試行はいくつかの価値があります(使用される修正アルゴリズムと可能な修正の量によって異なります)。ここでのトレードオフは、単一アカウントのシナリオでは理論的には最小のようです。

ただし、現実的なオンライン脅威モデル内で攻撃ははるかに大きなスケールで発生します。ボットネットは、偶然に一部が正解であると期待して、一般的なパスワードの攻撃を試みます。このペーパーで説明するのは、大規模な場合、アカウント侵害の全体的なリスクを増大させるものです。

最終的には、セキュリティとユーザビリティのトレードオフに帰着します。このような状況では、悪意のある試みの効果を効果的に倍増させるため、このようなポリシーを任意の規模で設定することは拒否されます。

0
Fernando