web-dev-qa-db-ja.com

パスワードを変更するときに数字だけを増やすのは許容できる方法ですか?

注:このパスワードスキームが最適であるかどうかは尋ねていません(もちろん、そうではありません)。認証と暗号化で一般的に使用されているアルゴリズムに基づいた最適なパスワードスキームと比較した、理論的または実用的な安全性について質問しています。私の質問ですでに述べたように、数学的にはこのスキーム(ここで定義したとおり)は、ユーザーに指示されていることと同じくらい安全です(ただし、実際にはそうではありませんが、ここでは無関係です)。エントロピーのみに基づく数学的分析を無効にする認証または暗号化の側面。

さて、私はこの興味深い考えを持っていました。パスワードで保護されたシステムでは、ユーザーが頻繁にパスワードを変更する必要があるため、多くの人は、次のような接頭辞に追加されたカウンターをインクリメントします。

awefjio; 1

awefjio; 2

...

接頭辞が一様にランダムに選択され、ランダムな新しいパスワードに約10ビットが加えられている限り、そのような一連のパスワードの使用は毎回完全にランダムな新しいパスワードを選択するのと同じくらい安全かどうか疑問に思います。 =カウンターからの余分なビットは無視しました。ユーザーがパスワードの変更を要求される頻度を考えると、それは小さなエラーマージン内で推測できる可能性があるためです。数学的には、このパスワードスキームは十分です。10ビットを追加すると、完全にランダムなパスワードと比較して、1024ビットを超えて攻撃者がパスワードを解読できるため、1024回を超えてパスワードを変更しないと想定されます。 (ここでは、攻撃者が何らかの方法で必要なソルトを含むパスワードのハッシュを持っていると想定しています。)

今、私はこれの明らかな欠点を1つ知っています。これは、現在のパスワードを入手した攻撃者が以前のすべてのパスワードを知っていることですが、ユーザーが一度ログインすると、彼/彼女のアカウントと古いパスワードを必要とすることはありません。

したがって、私の質問。 ユーザーがパスワードを変更するためにこのスキームを使用してはいけない具体的な理由はありますか?答えが正である場合、それは関与する認証または暗号化アルゴリズムに依存すると思います。質問を最も一般的に使用されるアルゴリズムに制限しても問題ありません。

明確にするために、私は以下の状況についてのみ質問しています。

  1. ユーザーは一定の頻度でパスワードを変更する以外に選択肢がなく、パスワードマネージャ(職場のコンピュータなど)を使用するオプションがありません。したがって、彼らはいくつかのスキームを決定する必要があります。この質問は、特定のスキームが別のスキームよりも優れているかどうかについてです。

  2. 固定定数nを選択します。それが重要であれば、私は少なくともn≥64を念頭に置いています。

    a。最初の方法は、パスワードを変更する必要があるたびに、nビットのエントロピーを持つ新しい独立したランダム文字列を選択することです。

    b。 2番目のスキームは、(n + 10)ビットのエントロピーを持つ固定ランダム文字列を選択し、パスワードを変更する必要があるたびに増分されるカウンターを追加することです。

問題は、(b)が少なくとも(a)一般的なタイプのパスワード保護されたシステムと同じくらい安全かどうかです。

36
user21820

攻撃者がパスワードを見つけた場合、パスワードを変更するまで攻撃者はシステムにアクセスできます。多くの場合、パスワードを変更することで、既にパスワードを持っている攻撃者が無検出で無制限にアクセスできるようになります。

今、あなたのパスワードがsecret-may16そしてパスワードを変更すると攻撃者はロックアウトされ、攻撃者は確かにsecret-june16をパスワードとして。したがって、予測可能な方法でパスワードを変更することは安全ではありません。

70
Sjoerd

このスキームは使用しないでください。このパスワードが攻撃者に知られると、攻撃者は「新しい」パスワードを取得できるためです。

これはこれらの状況の場合である可能性があります:

  • パスワードは、あなたと他のだまされた人との間で共有され、いつの日か(そのうちの1人)を信頼しないことに決めました。この場合、彼らは簡単に次のパスワードを推測できます。
  • 攻撃者はパスワードを入手します。彼はそれを解読すると(しばらく時間がかかることがあります)、パスワードの派生を推測できます。

このような「番号付きパスワード」を使用することで、パスワードを定期的に変更することの(小さな)セキュリティ上の利点を損なうことになります。

関連質問: 90日ごとにパスワードを変更すると、セキュリティがどのように向上しますか?

35
Lukas

パスワードの一部のみを変更することは非常に一般的であり、非常に悪い習慣です。

エントロピーは、何かがどれほど未知であるかを示す尺度です。最初にランダム固定開始またはまったく新しいパスワードを選択した場合、どちらも同じ量のエントロピーで、両方の選択肢は同等になります。 OK。

パスワードを変更する必要がある間、以前のパスワードが発見されないことが完全に確実であれば、それも問題ありません。知られていないものは同じ量のエントロピーを保つからです。

しかし...そして常にあります...しかし、以前のパスワードが回復された場合はどうなりますか?それとも2つ?

これは、以前のパスワードをプレーンテキストで保存するサイト/システムで発生する可能性があります。以前のパスワードをハッシュとして保存するサイト/システムでも発生する可能性があります。

なぜなら、プレーンテキストでは、以前のパスワードがIamGod_april16であったことが簡単にわかるからです。そして、誰かがIamGod_may16を使用しようとします...一部を予測可能な方法で変更するだけで、簡単に新しいパスワードが公開されます。

ハッシュとして保存されていたとしても、適切に実行すると困難になりますが、誰かがハッシュを解読してパスワードが何かを発見した場合はどうなりますか?その後、彼はIamGod_december18を試すことができるようになります。また、将来的にスキームを変更しなかった場合は... bang! 2年前に起こったリークのためにヒットしました。

「IamGod_」の部分がランダムであるか、人間が読めるかなど、問題ではないことを確認してください。一部の情報が漏えいする可能性があるのは、月、数字、最後の文字などです。 ..スキームが「IamGodh」であったとしても、誰かが「IamGodi」、「IamGodj」などを試すことができます。

したがって、(b)スキームは(a)よりも安全であるか、安全であるかについての具体的な質問への回答の最初の部分:それはより安全ではありません。数字の変更、月の変更、文字の変更などを使用すると、結局、オフラインでもオンラインシステムでも、新しい組み合わせを簡単に試すことができるからです。

そして、2番目の部分があります。非常に優れたスキームを考案し、変更部分がパスワードの途中にある場合でも、誰かが2つ以上の古いパスワードを回復した場合はどうなりますか?そして、それらが「3VQ2NMkK」、「3VQ3NMkK」、「3VQ4NMkK」であったことがわかりますか?さて、あなたはいくつかのパターンを見ることができますか?

したがって、スキームが検出されない場合、(a)と(b)は同等に安全です。しかし、これは優れたスキームを考案できるという強力な仮定であるため、一般に、どのようなシステムでも(b)の安全性が低くなると仮定することは非常に安全です。

もちろん、それはシステムが何らかの形で壊れていると想定しています。誰かがサイトに侵入したか、内部の誰かがデータベースをコピーしたか、誰かがバックアップテープを失ったか、または乙女が介入したため、データベースがリークされます。社内での中間の攻撃、またはサイトの更新によってパスワードが漏洩したため、ハートビート攻撃によって一部のパスワードが明らかになったため、または会社が1台の古いコンピューターをネットワークで使用できるようにしたため、または...

これらの状況(およびその他の多くの状況)はあなたの制御が及ばないことを考えると、アドバイスは安全な面を選択することです:古いパスワードが漏えいしないと仮定しないでください。

11
woliveirajr

頻繁なパスワードの更新/変更を必要とするエンタープライズ環境であっても、特定のスキームを維持することは決して良い考えではありません。たとえば、例のように、同じ基本文字を保持し、パスワードを単一の整数だけで変更した場合、古いパスワードを知っている人はこのスキームを使用して変更を予測できます。たとえば、「クランチ」と呼ばれるツールを見てみましょう。提供した例を使用すると、スキーマのすべての可能な置換を生成して、辞書攻撃で使用できます。

#!/bin/bash

crunch 9 9 0123456789 -t awefjio@@

Crunch will now generate the following amount of data: 1000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 100 
awefjio00
awefjio01
awefjio02
awefjio03
awefjio04
awefjio05
awefjio06
awefjio07
awefjio08
awefjio09
awefjio10
.........

などなど。予測可能なパスワードパターンを維持すると、資格情報で保護されたWebサイトのログインフォーラムへのハッキングが非常に簡単になります。毎回一意で完全に新しいパスワードを作成することをお勧めします。もう1つの脅威は、ハッキングの情報収集段階です。ハッカーがターゲットの習慣、高評価、低評価、趣味、家族の名前、誕生日、特別なライフイベントの日付などを知るほど、ログインを解読するために辞書/単語リストの作成を続ける必要があります。

だからあなたの質問に答えるには、いいえ、どんな状況でも、パスワードの変更で単純な整数の増分を使用するのは良い習慣ではありません、

7
Yokai

はい、そうです。

ユーザーにパスワードの定期的な変更を要求することは、ユーザーにパスワードを書き留めさせるため、セキュリティシアター( CESGの記事 を参照)の逆効果です。攻撃者がパスワードを取得できた場合、パスワードが次に変更される前に、システムにバックドアまたはSlurpギガバイトのデータをインストールするまでに数週間かかる可能性があります。

単純な番号付けスキームを使用すると、書き留めずに覚えることができるパスワードを選択できます次に、システムをゲームして、引き続き使用できるようにすることができます覚えやすいパスワードを無期限に。

既存のパスワードにnビットのエントロピーがある場合、他のnビットのエントロピーパスワードと同じ量のエントロピーが引き続き存在します。常にパスワードを切り替えても、それは変わりません。最後に1桁を追加すると、約2.3ビット(ln(10)ビット)が追加されます。ただし、番号付け方式が簡単に推測できるためエントロピーが追加されない場合でも、最初はnビットのままです。

使用されているハッシュアルゴリズムが適切であれば、パスワードaはランダムな文字列のように見えるものにハッシュします。別のパスワードbは、まったく異なる文字列のように見えるものを提供します(非常にまれなハッシュ衝突の場合を除いて)。 2つのハッシュを調べて、2つのパスワードが完全に異なるか、または1文字だけ(おそらく末尾の数字)だけ異なるかを判断する方法はありません。変更された文字が1つだけかどうかを判断できる場合は、ハッシュアルゴリズムが壊れているため、より良いものが必要です。

クライアントからホストにパスワードを転送するために使用される暗号化システムについても同じことが言えます。 2つの類似したパスワードが類似した暗号化されたメッセージを与える場合、その暗号化はすでに役に立たない。

5
Simon B

あなたの場合、シーケンススキームのセキュリティは、主に非暗号化要因が原因で低下します。ショルダーサーフィンを検討してください。同じパスワードを毎日、毎年、入力すると、同僚や他の観察者がそのパターンに気付く可能性があります。通常のカメラがパスワードを取得できる喫茶店など、物理的なセキュリティのレベルが異なるさまざまな場所に同じパスワードを入力できます。

攻撃者が知識を学習すると同時に使用しない場合を考えてみましょう。私は昨年誤ってパスワードを確認した同僚かもしれませんが、今年は同じアカウントのライバルです。古いパスワードの1つがqwerty1007で、もう1つがqwerty1011であることがわかっていれば、かなり単純な推測で成功することになります。

パターンを採用することにより、長期間にわたる損失のリスクが高まります。

[あなたの提案は、表面的には2要素認証システムで使用される一般的なスキームに似ています。ユーザーは覚えているパスワードを入力する必要があり、さらにハードウェアデバイスに表示されたコードを入力する必要があります。

しかし、それが安全である理由は、トークンからのコードのサイズによってセキュリティが著しく改善されるということではありません。それは、システムが不正なパスワード+コード推測の数を有限数に制限し、ユーザーIDをロックアウトするということです。 ]

4
John Deters

Sjoerdの説明を少し詳しく説明し、少し異なる角度からアプローチします。

最初に、スケジュールされた(事後的な)パスワードの変更によって、どのセキュリティ目標が達成されているかを質問する必要がありますか?セキュリティ部門またはベストプラクティスドキュメントで、2〜3か月ごとにパスワードを変更する必要があるのはなぜですか。

いくつかの理由があります。

  1. 総当たり攻撃を複雑にする

    誰かがパスワードのハッシュにアクセスする可能性がある場合、パスワードを破ることができるまでにはかなりの時間がかかります。ブルートフォース攻撃を実行する時間が、パスワードの有効期間よりも長い場合、すでにパスワードを変更しているため、パスワードを取得しても利益を得ることができません。

  2. 侵害されたパスワードが役立つ可能性のある時間を制限する

    人々は自分のパスワードが危険にさらされたことを常に知るわけではありません。定期的なパスワードの変更により、パスワードが攻撃者に永久に侵入することを防ぎます。 (もちろん、一度マルウェアが原因である場合もありますが、aptが原因ですが、これは常にそうであるとは限りません。)これにより、攻撃者が侵入の遅れを知るのは、いくつかの状況。

  3. パスワードの再利用を少し抑えるには

    多くの場合、人々は複数のシステム(仕事用とプライベート)でパスワードを再利用します。ほとんどのプライベートシステム(Gmail、そのスポーツセンターの登録Webページなど)では、定期的なパスワードの変更は強制されないため、ユーザーがどこからでも同じパスワードで始めたとしても、パスワードの変更によって区別される可能性があります。

  4. ハッシュアタックをバインドパスするには

    攻撃者がパスワードのハッシュにアクセスするだけである場合、彼/彼女が十分に高度な場合、攻撃者はそのハッシュを使用してシステムに対して認証することができます。基本となるパスワードを変更すると、ハッシュが変更されるため、攻撃者は再び阻止されます。

ここで、提案した2つのスキームが、私たちが概説した目標に対してどのように積み重ねられるかを尋ねることができます。攻撃者がパスワードのプレーンテキスト(確かに1、2)にアクセスする場合、最初のスキーム(増分)は2番目のスキームよりもはるかに弱いです。脳死ではない攻撃者は、増加を試みます。 3番目の状況では、外部サービスのパスワードにカウンターがまったく含まれているかどうか、および一般に規制の実際の影響が何であるかによって決まるため、判断するのは少し難しいです。 4番目の目標では、使用されるハッシュ関数がランダムなOracleとして十分に動作すると仮定して、増分は2番目のスキームとほぼ同じです。

まとめると、パスワードのカウンターをインクリメントするだけでは、新しい任意のパスワードを選択するよりもはるかに弱くなりますが、予想される攻撃の種類によって異なります。

3
DRF

パスワードデータベースが漏洩した場合、適切なパスワードが解読されるまでに時間がかかることがあります。その時までに、あなたはおそらくパスワードを変更せざるを得なくなりました。この概念は、これらの「セキュリティシアター」によるパスワードの強制リセットが存在する理由の大部分です。

ただし、アカウントへのアクセスは通常、自動化されたスクリプトを使用して処理されます。試行されたパスワードが失敗した場合でも、ロックアウトされるまで、スクリプトにはさらに数回の試行があります。 2016年5月12日に「fredJune15」のようなパスワードが拒否され、スクリプトがデータが2015年7月に取得されたことが通知された場合、スクリプトはロックアウト前にfredApril15、fredApril12、fredApril16を試す可能性があります。試すことの手がかり。

スクリプトがシステムへのpassword-reset-periodを知っているか、またはそれを推測できる場合は、単純な増分番号で、その番号が何回増分されるかを推測できます。したがって、7回の強制パスワードリセット期間後の「fred12」は、ほぼ確実に「fred19」になります。パスワードのリセット期間はほとんどの場合1か月であるため、それらを推測することはほとんど常に機能します。

注目に値する点:複数のシステムで同じパスワードを使用しているが、1つが異なる割合で増分されたため、またはアカウントを異なる時間に作成したために異なる番号を使用した場合、1つのシステムが侵害された場合、両方のシステムが侵害されます。

つまり、いいえ、毎回新しいランダムパスワードを生成します。パスワードマネージャを使用します。 2要素認証を使用できる場合は、それを使用します。

1
Dewi Morgan

新しいパスワード全体をロールバックする必要があります。

違反がなければ、絶えずローテーションするパスワードの価値はわかりません。ただし、パスワードをローテーションする場合、これが重要です。

元のパスワードを作成したときと同じ想定される安全な制約のあるシステムを使用してパスワードを再生成したい。つまりおそらくジェネレータがP3588swrOd4を提供していたので、1バイトの変更のみを行っているため、数値の増分は受け入れられません。

したがって、パスワードルールが3つの実際のランダムワード「BadgerYtterbiumLancet」であり、新しい非ランダムワードを選択している場合、パスワードは「BadgerFoxSquirrel」と推測されやすくなります。

パスワードをインクリメントするだけのもう1つの大きな問題は、それが状況を生み出すことです。たとえば、会社がこれを10年間行っているとします。互いに危険なほど類似しているパスワードのハッシュを作成しています。 (これが、「ランダム」、「ピッキング」パスワードを使用する理由です-よく人々はパスワード、一般的なフレーズなどを使用する傾向があります。)互いに比較してすべてのパスワードに同じくらい多くの一意性が必要です-新しいものを扱いたい新しいパスワードと同じもののパスワード。つまりPassword1、Password2、3、4、5など。これは本当に悪い場所に行き着きます。妥協して問題を修正した場合、さらに悪いことに、クラッカーにとって貴重なデータであれば、以前は機能していたもののバリエーションに近いものを試してみることができるでしょう。

また、組織外の人(解雇された従業員など)がパスワードの生成方法を知るのは安全ではないことにも注意してください。繰り返しますが、これが私が「ランダム」に戻る理由です。「辞書で4つのランダムな単語を選んだ」または「強力なランダムパスワードジェネレーターを使用した」という漠然としたものを超えてパスワードの生成を予測する方法を誰も知らないはずです。

1
Lilly

パスワードをクラックしているとき、あなたが行うすべてが増分である場合、私は同じ1秒以内に新しいパスワードを取得します。これは、私が他人の前で追加および追加するパスワードを試行しているためであり、qwerty関連のスキームと検出されたパスワードの基本的なリストの後でのみです。

0

おそらく最も安全な答えではありませんが、最近定期的に変更されるパスワードに何を使用するかについてのアドバイスを最近聞いたことがあります。次のXか月で何をすることを楽しみにしていますか。それを使用してパスワードを作成します。したがって、パスワードの有効期限が切れる前にディズニーワールドに旅行する場合は、Looking4wrd2SpaceMtnのようなことを行うことができます。

Xか月後、そのパスワードの有効期限が切れたら、別のことを検討してください。おそらく、作業中の目標です。Wrk-out-35mincard!o

あなたのパスワードは以前のパスワードから推測することはできません(あなたがそれについて賢明な場合)、それらはまともな長さであり、彼らはあなたが取り組んでいる目標やあなたが楽しみにしているイベントを思い出すのに役立ちます。

トリックがパスワードを思い出そうとして、頻繁に変更される場合、これはひどいオプションではないと思います。

0
Paul Pehrson

サフィックスが誕生年のように見える場合は、多少安全かもしれません。

私がmyname1977を使用すると、そのパスワードを知っている誰かが私がそれをmyname1978に変更したと推測する可能性は少なくなりますが、おそらくゼロではありません。

しかし、なぜリスクを取るのか? (私が言うように、私がするようにではなく、私はインクリメントしますが、それは私がパスワードを変更するように要求する唯一の場所であり、私に関する限り、社内の誰もがすべてを自由に見ることができるためです私の仕事用PC。あなたの走行距離は間違いなく異なります)。

個人的に、私は Edward Lear がパスワードのための素晴らしいインスピレーションの源であると思います:-)

そして、最もシンプルで、最も印象に残る、最小8文字、1つの数字、1つの大文字、1つの特殊文字の「すべてのボックスにチェックを付ける」は、確かにcat plus one big dog AKA cat+1Dogです。