web-dev-qa-db-ja.com

使い捨てのコードを他の人と共有できないのはなぜですか?

Googleから確認コードを受け取ると、次のようなメッセージが表示されることがあります。

「このコードを他の誰とも共有しないでください。Googleの誰もこのコードを要求することはありません。」

これはセキュリティ上の理由によるようですが、コードは1回限りのコードなので、使用後に誰かに渡しても機能しません。 (使用前にコードを誰かに与えることには適用されない場合があります。ただし、誰かがユーザー名とパスワードを知っていて、未使用のコードを取得でき、そのユーザーがログインした場合でも、新しいセッション用に新しいコードを生成する必要があります。そうですか?)

私は何かが足りないのですか、ワンタイムコードを共有しない理由はありますか?特に、ランダムな見知らぬ人が呼び出してそれを要求することに関する部分はありますか?また、誰かがあなたに電話して将来それを要求する機会が得られる前に、それは長い間自己期限切れになっているはずです。

31

正確である必要はないため正確ではなく、正確な言語は一部のユーザーを混乱させる可能性があります。

たとえば、「1時間以内の未使用のコードを他の人と共有しないでください。Googleの誰もこのコードを要求することはありません。」

あなたと私はそれらが何を意味するか知っています。でも私の義理の父とおじいちゃんは、なぜかわかりません。私の義理の父親は、コードを共有できる場合があり、彼の社会保障チェックから彼を詐欺した人が彼のメールにもアクセスできることを知っている人の具体例です。 (はい、彼の受信トレイのほとんどは飛行機雲に追加されたマインドコントロール化学物質と、太陽フレアがどのように地震を引き起こすかについてですが、誰かが彼の銀行口座にアクセスすることもできます。)

コメントで指摘されているように、条件付きで危険な状況の例は他にもありますが、例外は含まれていません。たとえば、「銃器のバレルを見下ろさないでください(チャンバーを掃除していない限り)」、「軽いソケットに指を差し込まないでください(ソケットの電源をオフにしていない限り)」。

使用済みまたは期限切れのトークンは誰にとっても役に立たないため、トークンを保持、共有、保護、削除、または一般的なセキュリティアドバイスに例外を追加しても意味がありません。

個人的な経験から、エッジのケースやセキュリティのニュアンスがあることをユーザーに知らせたときに、愚かなことをするユーザーがいることがわかります。ユーザーにそのような警告を書くとしたら、できるだけ広く一般的な発言をすることを知っています。

125
Ghedipunk

それはあなたに対するソーシャルエンジニアリング攻撃を防ぐためです。たとえば、キーロガーがあなたの電子メールアドレスとパスワードを記録した(しかし、ログインしている間は使用できなかった)怪しげな公共のコンピューターで2要素のGmailアカウントにログインしたが、2要素認証が有効になっていると想像してください。セッションの最後にサインアウトすることを忘れないでください。アカウントはまだ安全です(ただし、大まかな公共のコンピューターを使用してシステムにサインインしないことをお勧めします。2要素認証を使用しても、洗練された誰かがまだサインインしているときにウィンドウのアカウントで悪意のある行為を行う可能性があるためです)。 。

攻撃者はあなたのメールアドレスとパスワードを入手しました。アカウントにアクセスするには(たとえば、メールアドレスを使用して、オンラインでの注文、銀行口座へのアクセス、スパムの送信、その他の混乱など、他のシステムのパスワードをリセットする場合)、2要素認証システムを通過する必要があります。そのため、彼らはあなたに連絡し、Googleになりすまして、実際の認証コードで彼らに答えるようにあなたをだまして、彼らがあなたのアカウントに完全にログインできるようにします。多分彼らは電話であなたに電話し(Google Incに関連付けられているように見える偽の番号)、「2要素認証が設定されているようです。先に進む前に、テキストメッセージのコードを教えてください」と言います。等.

期限切れのトークンやすでに使用されているトークンは重要ではありませんが、この情報を第三者に提供しないという習慣を身に付けたいだけです。

36
dr jimbob

誰かがあなたのユーザー名とパスワードを知っていて、未使用のコードを取得でき、その人が新しいコードにログインする場所を新しいセッション用に生成する必要がある場合でも、誰かに使用前にコードを与えることには適用されない場合があります。正しい?

違う。たとえば、Google認証システムアプリによって生成されたTOTPコードについて話していると思います。 TOTPは、クライアントとサーバー(携帯電話とGoogleのサーバー)に共有シークレットを保存することで機能します。認証するには、クライアントとサーバーの両方がシークレットを [〜#〜] hmac [〜#〜] キーとして使用して現在の時刻をハッシュし、それをn桁に切り捨てます値(多くの場合6桁、場合によってはそれ以上)。

TOTPはセッションに関連付けられているわけではなく、完全に共有シークレットと現在時刻に基づいています。

私は何かが足りないのですか、ワンタイムコードを共有しない理由はありますか?特に、ランダムな見知らぬ人がそれを呼び出して要求することに関する部分はありますか?また、誰かがあなたに電話して将来尋ねる機会が得られる前に、それは長い間自己期限切れになるはずです。

currentコードを送信するように依頼された詐欺に遭う人々を阻止しようとしていると思います。コードが使用された後、またはコードが無効になるのに十分な時間が経過した後、コードは役に立たなくなります。

複数の古いコードには、共有シークレットの総当たりを可能にするのに十分な情報が含まれている可能性がありますが、これにはSHA-1へのプリイメージ攻撃が少なくとも必要ですまだかなり実行不可能です(つまり、コードは共有シークレットの特定の推測が正しいかどうかを判断することを許可しますが、推測に数回のライフを費やしてそれを見つけることはできません)。

12
AndrolGenhald

これは、セキュリティコミュニティの多くのアドバイスに当てはまります。

「良い習慣」と「悪い習慣」を分ける線は一貫しているはずですが、多くの場合はそうではありません。あなたはそれを壊すことができてそれが悪いのか、それともできずにそれが良いのか?

残念ながら、それがどのように機能する傾向があるかではありません。特に、攻撃側と防御側では、砂の線が異なります。同じ壊れているかどうかの質問は問題の核心ですが、どちらも対処したくない「良い」と「悪い」の間の多くの灰色の領域を無視します。お気に入りの「MD5はどれほど悪いのか?」。

残念ながら、これを回避する簡単な方法はありません。暗号化には、証明または回避することがほぼ不可能である、人々が実行できないことに関する灰色の領域がたくさんあります。曖昧さがまったくない場合でも、何かが安全になる前にブルートフォースになるには、どのくらいの時間がかかり、どのキットを使用する必要がありますか?平均的なデスクトップでの明確な分は良くなく、人類の現在のすべてのコンピューターで数十億年はおそらくほとんどのことには十分ですが、その中間が線です。それに対する答えはありません。安全であるための唯一の方法は、防御側は常に攻撃側が破壊可能として受け入れるよりも厳しい条件を主張するである場合です。

お持ち帰りは次のとおりです。

防御的なアドバイスが実行可能な攻撃と正確に一致すると期待するべきではありません。それは彼らの仕事ではなく、正しく理解することはほぼ不可能であり、間違いは控えめに言っても間違いが問題になる可能性がある複雑なぼやけたラインです。

したがって、注意が必要です。特にそれがほとんど害を及ぼさない場合。

4
ANone

ジンボブ博士は完全に正しいです。ソーシャルエンジニアリング。具体的には、攻撃者がパスワードを持っている場合のソーシャルエンジニアリング攻撃。安全でないユーザーデータベースがブルートフォースされるシナリオを想定できます。かなりの数のユーザーが電話番号に関連付けられ、データベースに含まれている可能性があると思います。パスワードが解読され、電話番号が関連付けられたら、Twilio IVRに送信します。ユーザーが応答すると、IVRは、アカウントが侵害された可能性があることを通知し、受信する確認コードを入力しない限り無効になります。次に、ログインをトリガーし、彼らがコードで応答した場合、あなたは入っています。これが、誰も要求しないと言っているまさにその理由です。前述のように、中古のものは価値がありませんが、未使用のものをあきらめることは黄金です。

1
Philip Tinney