web-dev-qa-db-ja.com

「パスワードノッキング」は良い考えですか?

ポートノッキングでは、サービスが実行されているポートを公開するために、定義された順序で特定のポートを「ノック」する必要があります。

パスワードノックはどうですか?たとえば、ABCの3つのパスワードがあるとします。それらのいずれもそれ自体は正しいものではありませんが、この順序で1つずつ入力すると、アクセスが許可されます。

このアイデアをより明確にするいくつかのシナリオ:

シナリオ1。

  • あなた:パスワードA
    • サーバー:無効なパスワード。
  • あなた:パスワードB
    • サーバー:無効なパスワード。
  • あなた:パスワードC
    • サーバー:パスワードを許可.

シナリオ2。

  • あなた:パスワードA
    • サーバー:無効なパスワード。
  • あなた:パスワードC
    • サーバー:無効なパスワード。
  • あなた:パスワードB
    • サーバー:無効なパスワード。

シナリオ3。

  • あなた:パスワードA
    • サーバー:無効なパスワード。
  • あなた:パスワードB
    • サーバー:無効なパスワード。
  • あなた:パスワードB
    • サーバー:無効なパスワード。
  • あなた:パスワードC
    • サーバー:無効なパスワード。

シナリオ4。

  • あなた:パスワードA
    • サーバー:無効なパスワード。
  • あなた:パスワードA
    • サーバー:無効なパスワード。
  • あなた:パスワードB
    • サーバー:無効なパスワード。
  • あなた:パスワードC
    • サーバー:パスワードを許可

通常のシングルパスワードログインと比べて、この方法の欠点は考えられません。さらに、パスワードを追加するたびに辞書攻撃が指数関数的に困難になります。

私はそれがあいまいであることによるセキュリティであり、強力なパスワードの必要性を廃止しないことを理解しています。パスワードシーケンス自体は、使用されるパスワードの連結と同じくらい強力です。この方法で追加されたセキュリティは、予想外に複雑な手順によるものです。

それは良い考えですか?従来のパスワードよりも優れていますか?

105
gronostaj

質問で概説されているシステムは、実際には長さA + B + Cの単一のパスワードを必要とするよりも弱いです。単一のパスワードに対して使用しないでください:

3つのパスワードの組み合わせがE F G。攻撃者はパスワードを送信できますA B C D E F G、5つの攻撃(A B CB C DC D ED E FE F G)2つの価格。これの一般的な用語は de Bruijnシーケンス であり、可能な組み合わせよりもはるかに少ない試行を使用して、状態ベースのシステム(デジタルロックなど)を攻撃できます。

160
Mark

生のセキュリティの観点から、パスワードは単に「A B C」であり、パスワードの相対的な強度はそれに応じて計算されます。

ユーザーの観点から見ると、これはおそらく使用するには難しすぎる。サーバーは現在の状態について何も表示しておらず(まだ2番目のパスワードを探しているのですか?)、そのためユーザーはどのパスワードを提供するかを判断できません。

防御の観点から、ここには少しの価値があります。パスワード攻撃は実行が少し複雑になり、この奇妙なスキームに対応するために既存の攻撃ツールを書き直す必要があります。攻撃者に次に進むよう説得するにはこれで十分かもしれませんが、あなたが重要なターゲットである場合、それはまったく役に立ちません。

148
tylerl

ここでいくつかのポイントを取り上げます。

まず、攻撃者がパスワードスキームを知っていないことを前提としてbadを想定し、あいまいであることによるセキュリティであることは間違いありません。すべてのユーザーがこのログインスキームを習得できれば、攻撃者も習得できます。そのため、ノックは、単一のパスワード[〜#〜] abc [〜#〜]がある場合と同じです。

「パスワードを追加しないと、ブルートフォースの推測の数が指数関数的に増えるのではないでしょうか?」答えはノーだ。長さzのアルファベットと、長さab、およびcの3つのパスワードを考えます。それぞれの可能なパスワードの数は、それぞれzazb、およびzc。各パスワードのすべての可能な値をすべての可能な順序で試す場合は、za * zb * zc推測、これはz(a + b + c)。たまたま、単一のパスワードの長さ[〜#〜] abc [〜#〜]a + b +- cなので、必要な推測の数もz(a + b + c)

また、特にパスワードを思い出せない場合に、ユーザーがこのシステムに混乱したり、不満を感じたりするという設計上の懸念もあります。人々は、訪問するサイトごとにoneパスワードを覚えるのに十分な問題があります(そのため、多くの人々がパスワードを再利用しています)。 Threeパスワードを覚えるのはさらに難しく、一部のユーザーが3つすべてに同じ文字列を使用しても驚くことはありません。

ログインに3つのフォーム送信を要求すると、ブルートフォース攻撃が確実に遅くなりますが、サーバー側のパスワード検証に遅延を追加することで、簡単に達成できます。

38
Justin

あいまいであることによるセキュリティです。広く採用されている場合、攻撃者は3回試行するだけです。この時点で、パスワードは1つだけにすることもできますが、パスワードの最小の長さを長く設定して、3つの個別のパスワードを連結した長さになるようにします。

19
Mike Scott

これは単にA || B || Cであるパスワードと区別がつきません。

11
Stephen Touset

Two-factor authはより優れていますser-friendlyまだmore安全です。

せずにoneパスワードを使用しても、パスワードノックよりも安全性が低くなります。

見つけるあなたのパスワードを攻撃できる攻撃者は、あなたのノックスキームについても知る可能性があります。

ノックすることを選択することは、アルゴリズムを選択することに似ています。考えてみてくださいpublic

パスワードareあいまいさによるセキュリティですが、完全に異なるパスワードに置き換えることができますeasily

そうは言っても、スキームが多少あります類似「ノッキング」に似ていますが、もう少し便利です。

  • ランダムリクエストone複数のシークレット(パスワード、フレーズ、 iTANs ...)のうち。
    これは、シークレットのallを入力するよりもはるかに速く、攻撃者が知ることができるのは一度に1つのシークレット(これは使用後は無効になります)。
    攻撃者がauthenticateを実行できる可能性は、知っている秘密のrelative numberと相関しています。それでも、ユーザーはallシークレットとそのorderを知っている必要があります。
  • 入力タイミング、つまり、ユーザーが入力している間にすべてのパスワード文字の間の時間を分析します while .
    これはノックするよりも偽造するについて知るのが難しく、IIRCで数回調査されています。欠点:

    • タイミング変動少し毎回ユーザーがパスワードを入力しますが、ユーザーを区別するにはそれでも十分な場合があります
    • ユーザーが別の方法で入力することを選択すると、タイミングが完全に変わることさえあります。 初期段階パスワードを選択した後(ユーザーはまだパスワードの入力を学習中)、またはできない通常の方法で入力(けが、保持片手でサンドイッチ...)

obscurity schemeをすばやく変更できる場合、つまり、壁が具体的に構成されているコンクリートではなく、-ちょっとした努力で「迷路を変更する」ことができる場合、隠蔽によるセキュリティは良好です(確認してください)迷路バイパスできません)。

9
Archimedix

ポートノッキングの概念は、Webサイトへのログインには直接適用されません。少なくとも、あなたが提案したという意味ではありません。ポートノッキングでは、特定の順序で異なるポートに接続して、目的のポートを開きます。あなたの例では、すべてのパスワードを1つのサイトに配置しています。他の人が指摘したように、これはすべてのパスワードをまとめることと実際には何の違いもありません。使用するすべてのパスワードが非常に長い場合を除き、それらを連結して1つのパスワードを使用することもできます。この方法のあいまいさもあまり役に立ちません。誰かがそれを作成し、誰かがその使用方法を知っている必要があるため、攻撃者がそれがどのように機能するかを知るのに十分です。また、あなたはそれを世界に説明しました。

代わりに、さまざまなWebサイトを使用してさまざまなポートを表すことができます。 WebサイトDにログインしようとしているとしましょう。WebサイトDに接続しても、WebサイトA、B、Cに正しくログインしていることがこの順序で確認できない限り、ページは表示されません。このように、攻撃者は異なるパスワードを解読する必要があるだけでなく、3つの異なるサイトで実行する必要があり、サイトDにアクセスするために正しい順序で使用する必要があり、別のパスワードが必要になります。

これはまだある程度のあいまいさに依存していますが、1つのサイトでパスワードを単純に分割することからはより明確になります。

7
fooot

  • それは標準の総当たり攻撃をだますでしょう。ボットネットや単純なツールからの自動攻撃はそのままでは機能しません。
  • この方法でキーロガーをだますことができるかもしれません。ログでは、3回目の試行でユーザーがパスワードを思い出したように見えます。攻撃者がこのパスワードを使用した場合、機能しません。しかし、彼が何が起こっているのかを知らないか、推測しない場合に限ります。しかし、この場合、彼はとにかくあなたを所有します。
  • ユーザーは複数の単語を使用する必要があります=>より長いパスワード。

  • 通常のユーザーには複雑すぎます。
  • ポートノッキングのように、それは部分的にあいまいさによるセキュリティです。攻撃者が攻撃を適応できることがわかっている場合。

合計

ポートノッキングと同様に、単純な攻撃に対してわずかな利点しか追加しません。主な利点はパスワードが長くなることであり、パスワードルールを適用することでより簡単に適用できます。

とにかく、ユーザーが気にしなければ、それはあなたができることです。最後に、すべてのセキュリティ機能が重要です。しかし、私はそれを行うことを勧めません。

6
PiTheNumber

[〜#〜] pros [〜#〜]:このシステムは2要素認証といくつかの利点を共有します

1)ほとんどのブラウザとパスワード保存システムはこれをサポートしていないため、多くても1つのパスワードしか覚えていません。したがって、少なくともどこかにプレーンテキストで保存されることはありません。

2)どこでも同じパスワードを使用する人は、他のサイトと共有されていない少なくとも2つのパスワードを使用する必要があります。

[〜#〜] cons [〜#〜]:ただし、システムには全体的に欠陥があり、単一パスワード認証よりも悪いと主張します。

1)より重要なパスワードに使用する、パスワードで保護された推奨のパスワードストレージシステムは使用できないため、この1つのパスワードにはあまり適さないものを使用する可能性があります。ポストイット、テキストファイルなど。

2)他の人は、これはパスワード「ABC」と同じくらい強いと主張しています。そうではない。最悪の場合、それはパスワード「A」と同じくらい強いだけだと思います。

これは、私(および一般的なユーザー)がパスワード「password1」、「password2」、「password3」を使用するためです。このパスワード生成システムは、ctrl-c、ctrl-vのパスワードを入力して、数。

同様のパスワードを使用できない場合は、可能なパスワードの範囲を減らしています。ABCほど安全ではなく、ABDと同じセキュリティしかありません。A!= B!= C:作成しました検索ドメインを減らすことで、クラッカーの仕事が簡単になります。

また、パスワード入力スクリプトで許可されている予測可能なシーケンス、「1月」、「2月」、「3月」を選択します。

そして、私は自然なシーケンスを使用しているので、これはパスワードクラッカーが辞書で持っている順序になる可能性が高いので、パスワードクラッキングマシンは自然にそれらのパスワードを正しい順序で試し、すぐに入ります。 システムを知っていると、絶対にこの方法で辞書を並べます。

3)セキュリティを低下させるもう1つの要因は、パスワードを変更するために、3つの異なるフィールドを変更する必要があることです。これにより、多くのユーザーがパスワードを変更できなくなります。

4)他の人が指摘しているように、これはひどい、ひどいユーザーエクスペリエンスです。キャプティブオーディエンス(従業員、学生など)がいない限り、このユーザーに敵対的なアプローチによって習慣を失うことになります。

5
Dewi Morgan

注:この方法論は、業界の一部の部分で既にpassword-recoveryスキームで使用されています。パスワードを忘れた場合は、電子メールアドレスを使用して一連の個人的な質問を開始し、パスワードを回復することができます(多くの場合、これは1つの質問にすぎません)。通常はコンテキストを厳選された一連の質問に制限することで、ユーザーにとってより口当たりの良いものになり、ユーザーは(うまくいけば)秘密だが既知の答えを使用する機会が与えられます。

また、一部の優れた銀行では、(前述のパスワード回復スキームと同じように)ログイン元のコンピューターを認識しない場合に、追加のセキュリティ質問を提供します。

例えば:

Enter your password:  *****

Your computer is not recognized, please answer the following additional questions:

What city did your mother grow up in?  *********
What is your favorite movie? *************

これにより、知識のあるユーザーは、覚えやすい一連の「パスワード」を許可しながら、選択した一連の質問にかなりあいまいな回答を提供できます。もちろん、一般的なユーザーは「認識されないコンピューター」の質問に推測しやすい回答を使用する可能性がありますが、いずれにせよ、ユーザーには常に適切なパスワードを提供する責任があります。

enter image description here

5
Ogre Psalm33

他の人が述べたように、これはA\nB\nCと同等のパスワードを持っていることと同等です。ただし、このスキームには、フィッシングタイプのものを減らすのに役立つ利点が1つあります。システムが他のパスワードを受け入れる代わりに最初のパスワードを受け入れる場合、システムが危険にさらされており、単にユーザー名とパスワードをログに記録していることがわかります。

ただし、その場合は、実際のパスワードでログインする前に、ランダムなパスワードでログインすることをお勧めします。そうしないと、最初の3分の1が(おおよそ)侵害されたシステムによってログに記録されてから、パスワードのかなりの部分が侵害されただけです。

3
fluffy

一部の人が言ったように、それはあいまいさによるセキュリティでさえないと思います— 3つのパスワードのログインは公に提示されますよね?確かに、いくつかのツールを調整するいくつかの作業が必要になりますが、それほど難しくはありません。

ブルートフォースの複雑さに関しては。可能性の数は、長さがA + B + Cの単一のパスワードを持つ場合と同じです。このため、このスキームで得られる唯一の防御策は、攻撃者を最初は少し苛立たせることです。さらに、このスキームが一般的になると、標準ツールがすぐに適応します。

2
Peter

多くの人が言及したように、専用の攻撃の目的では、パスワードの連結よりも強力で覚えやすく、難しくもありません。ただし、パスワードの強度とは無関係な operations security (OPSEC)値がいくつかあります。あまり価値はありませんが、 Worldbuilding Stack Exchangeサイト に多くの時間を費やす人として、私の想像力は熱狂しました。

サービスを承認されたユーザーに制限するだけでなく、誰かが誤ってその存在を偶然に見つけられないようにする必要があるかどうかを検討してください。これはもはや単純なエントロピー問題ではなく、スパイ対スパイ情報理論の問題です。あなたの仕事は、パスワード入力をちらっと見た人の信号対雑音比(SNR)を最小限に抑えることです。これは現在、パスワードの強度とは無関係です。

1つのアプローチは、ダミーの動作を設定することです。別のシステムのログインのように見せます。適切な特権を持つアカウントのみが、意味のあるコンテンツにリダイレクトされます。他の人にダミープロジェクトにサインアップさせて、人々に好奇心をかき回らせて満足させることもできます。

ただし、今はspy-vs-spyについて話しています。誰かがジェームズボンドがゴム製のアヒルの最新動向を議論するフォーラムに本当にそれほど興味がないわけではないことに気づき、こじ開け始めます。ジェームズボンドは情報を公開しないのが得意ですが、ある時点で[最新]のガールフレンドの頭に銃を構え、NoGood博士にゴム製のダックフォーラムのパスワードを公開しないと、疑わしいことになります。 NoGood博士は馬鹿ではありません。彼はそれを理解するでしょう。

そこで、Jamesに2つのパスワードを設定しました。 1つは彼を通常のゴム製ダッキーフォーラムに入れ、もう1つは最高機密の核ミサイルシミュレーターに入れます。ここでは、実際のパスワードセキュリティを無視することはできません。彼の核ミサイルシミュレータのパスワードは、3つのパスワードを連結したものである限り、長くする必要があります。彼のダッキーなパスワードはおそらくもっと短い。誰かが彼のダッキーアカウントにログインするのを誰かが以前に見たことがあるため、良いことでもあります。彼らはブルートフォースを開始するキャラクターの数を知っています。ダッキーなパスワードを見つける前に、誤って安全なパスワードを見つけてほしくない。

したがって、ミサイルシミュレータが存在することは依然として秘密であるため、途中で「無効なパスワード」を返すと、ブルートフォーサーが続行しないようにできます。さらに、ジェームスが「パスワードを2回間違えて入力した」ときに、大きなクライマックスの公開を行うことができます。

1
Cort Ammon

「可動部分が少ないほど、失敗する可能性は低くなります。」

このアイデアは、特筆すべき利点がないだけでなく、単一のパスワードよりも実装が複雑です。そのため、潜在的な障害のポイントがさらにあります。例えば...

実装方法によっては、マルコムが定期的にパスワードXを送信する拒否攻撃を許可する可能性があります。彼が正当な試みを妨害するように彼がそれを正しく時間を計るならば、システムはA X B Cを受け取り、あなたのエントリーを拒否します。同様に、あなたがA Bを送信した直後にパスワードCを送信する場合、システムは彼を許可し、あなたは許可しません。

応答タイミング攻撃では、AがA B Cの正しい最初のパスワードであることがわかり、Dが単一パスワードDEFのプレフィックスであることに気付かない場合があります。

1
Vynce

無駄な技術的複雑さをなくす

以前の正解によると、

A\nB\nC

とほぼ同じ

A B C

(または @ Markの回答、Bruijnシーケンス については、もっと軽いかもしれません)。

そこから、あなたが本当にあなたの秘密を守る必要があるなら:

  1. しばらく強くテストされた標準ツールを使用します。 (不明な場合は、あいまいな表現を使用するのではなく、共有して質問することをお勧めします。)

  2. それらを最新に保つ。

  3. パスフレーズについてユーザーに教える( xkcd:Password Strength および ISに関するディスカッション を参照)

  4. ソーシャルエンジニアリング(Wikipediaの場合) がセキュリティの欠陥の最初の方法であることを覚えておいてください。 (別の有名な xkcd:Security )。

  5. システムを監視し、ログを確認します。

0
F. Hauri

他のすべての素晴らしい答えに加えて、このタイプのパスワード保護スキームは、キーロガーや中間者攻撃に対する保護を提供しません。シーケンス内にパスワードを入力するので、キーロガーはアクションを再生し、承認を得ることができます。 @Archimedixで提案されている2要素認証は、これを軽減する最も効果的な方法です。

0

他の人が述べたように、機能的には、これは1つの長いパスワードと同じです。実装の混乱を少なくするために、同じ画面で3つのパスワードすべてを要求することで実装できます。

これらの行に沿って何かが私のオンラインブローカーによって行われ、ログイン中にメンバーのパスワードと取引パスワードを求めます。ログインするには、両方のパスワードを正しく取得する必要があります。また、会員パスワードは10日程度ごとに変更しなければならず、前の3つのパスワードを繰り返さない等のルールがあります。

私の銀行( ICICI Bank )は以前に2つのパスワードを実装していました。1つはログインして情報にアクセスするために表示するために入力するパスワード、もう1つは金融取引につながるアクションが発生したときに取引するために入力するパスワードです。実行されました。私のVisaデビットカードは、呼び出しシステム -D Secure でも保護されています。支払いゲートウェイに関係なく、彼らは私を自分のサイトに連れて行き、パスワードを入力して取引を完了します。表示するメッセージをカスタマイズできるので、これは本物のVisaサイトであることを知っています。

したがって、あなたが言うのとまったく同じ方法で実装されていませんが、アイデアは前例のないものではありません。複数のパスワードを追加することは、少なくとも銀行家や株式ブローカーが納得しているように思えるものです。

0
Kinjal Dixit