Wired誌より:
...Palin のハックには、実際のスキルは必要ありませんでした。代わりに、ハッカーはペイリンの生年月日、郵便番号、配偶者と出会った場所に関する情報を使用してペイリンのパスワードをリセットするだけでした。
忘れたパスワードをリセットするために、 このような秘密の質問を信用することはできません。
より良いシステムをどのように設計しますか?
いわゆる「セキュリティの質問」の不安は長い間知られていました。ブルースシュナイアーが言うように:
その結果、通常のセキュリティプロトコル(パスワード)は、はるかに安全性の低いプロトコル(秘密の質問)にフォールバックします。また、システム全体のセキュリティが低下します。
何ができるの?私の通常のテクニックは、完全にランダムな答えを入力することです-私は数秒間キーボードを狂ったように叩きます-そしてそれを忘れます。これにより、一部の攻撃者が私のパスワードをバイパスして私の秘密の質問に対する答えを推測しようとすることはできませんが、パスワードを忘れるとかなり不快になります。これが私に起こったとき、私はパスワードと質問をリセットするために会社に電話しなければなりませんでした。(正直なところ、電話回線の反対側にいるカスタマーサービス担当者に自分自身を認証した方法を覚えていません。)
より良いテクニックは、ユーザーが最初に登録した電子メールアカウントに新しいランダムパスワードを生成するために使用できるリンクを含む電子メールを送信することだと思います。新しいパスワードを要求しなかった場合は、それを無視して古いパスワードを使い続けることができます。他の人が指摘しているように、Yahooは電子メールサービスを実行していたので、これは必ずしも役に立たなかったでしょうが、他のほとんどのサービスでは、電子メールはまともな認証手段です(実際には、認証の問題を解決しますユーザーの電子メールプロバイダー)。
もちろん、OpenIDを使用することもできます。
帯域外通信がその方法です。
たとえば、SMSで一時パスワードを送信することは許容される場合があります(システムによって異なります)。私はこれがテレコムによって頻繁に実装されているのを見てきました。SMSは安価/無料/ビジネスの一部であり、ユーザーの携帯電話番号は事前登録されています...
銀行は特定の番号との間で電話をかける必要があることがよくありますが、私は個人的にはそれほど夢中ではありません。
そしてもちろん、システムによっては、ユーザーに自分自身を特定するためにブランチオフィスに立ち入るように強制することもできます(ユーザーをひどく苛立たせるだけです)。
結論として、強力なパスワード要件を回避するために、より弱いチャネルを作成しないでください。
多くの投稿者が電子メールを提案しているのを見てきましたが、私が提案できるのは、防御策として電子メールを使用しないことです.
誰かのメール アカウントを侵害することは比較的簡単です。多くの Web ベースの電子メール サービスは実際のセキュリティも提供しておらず、SSL を提供している場合でもデフォルトではないことが多く、ユーザーを保護するために電子メールパスワード の脆弱性に依存しています (これには、ほとんどのリセット メカニズムがあります)。時間 )。
電子メールは最も安全でない技術の 1 つであり、クレジット カードの詳細などの情報を電子メールで送信するのが本当に悪い考えであるのには十分な理由があります。それらは通常、サーバー間で平文で送信され、サーバーとデスクトップクライアント間でも同じように暗号化されずに送信されます。必要なのは、リセット URL を取得してトリガーするためのワイヤースニフだけです。(銀行が SSL 暗号化を使用するのには正当な理由があるため、私が妄想的だとは言わないでください。ルート上の 20 ~ 200 台の物理デバイスが善意を持っているとどのように信じることができますか?)
リセット データを取得したら、パスワードをリセットし、(相手の) メール アドレスを変更して、相手のアカウントを永続的に制御できます (これは常に発生します)。
そして、彼らがあなたのメールアカウントを取得した場合、彼らはあなたの受信トレイをブラウズして、あなたが購読している相手を見つけ、簡単にすべてのパスワードをリセットするだけです。
そのため、電子メール ベースのセキュリティを使用すると、セキュリティ上の脆弱性が伝播する可能性があります。私はそれが有益だと確信しています!
尋ねられている質問は、ソフトウェアだけではほとんど不可能だと思うものです。これが、独自の秘密鍵署名でチャレンジに応答するハードウェア ドングルを使用した 2 要素認証を採用している理由です。新しいもの。
それは「システム」に依存します。
銀行またはクレジットカードプロバイダーの場合は、検証できる物理トークンを顧客にすでに発行しています。
あなたがeコマースサイトである場合、あなたはいくつかの最近の取引を求めます-正確な金額、使用されたクレジットカード番号など。
あなたがYahooのようなら、私が使用する自動化されたアプローチは、電話またはテキストメッセージのいずれかを介して、他のいくつかの基本的な質問と回答とともにアクティベーションコードを携帯電話に送信することです。
ジェイ
ユーザーに3つの質問と回答を入力してもらいます。彼らがリセットを要求するとき、彼らに5つの質問のドロップダウンを提示します。1つは彼らが入力した3つからランダムなものです。次に、確認メールを送信して、実際にパスワードをリセットします。
もちろん、真に「ハッカーの証拠」となるものはありません。
(in)security question を完全に廃止します。それらは非常に明白なセキュリティ ホールであるため、深刻な (よく知られている) インシデントを作成するのにこれほど長い時間がかかったことに少し驚いています。
それらが消えるまで、私は「n4weu6vyeli4u5t」高校に通っていたことをそれらを使用するWebサイトに伝え続けるつもりです...
ユーザーが関与している場合 (ほとんどの場合そうでない場合も)、セキュリティはありません。安全という幻想しかありません。あなたがそれについてできることはあまりありません。「あまり一般的ではない」セキュリティの質問をすることもできますが、一部の人々はすべてを世間の目にさらしているため、悪用される傾向があります.
電子メールなどの二次チャネルは、問題に対する合理的な解決策を提供します。ユーザーがパスワードのリセットを要求した場合は、パスワード リセット トークンを電子メールで送信できます。他の人が言っているように、まだ完全ではありませんが、これを悪用するには、攻撃者が Web サイト、その MTA、およびユーザーの MUA の間の視界のどこかにいる必要があります。技術的には簡単ですが、現実には、非常に知名度の高い個人を除いて、彼らが気にするのはあまりにも多くの作業/リスクであることをお勧めします.
アカウントの作成時にユーザーに SSL または GPG 公開鍵の提供を要求することは非常に役立ちますが、無知なユーザーはそれらが何であるかを知りません。ましてや、秘密鍵を安全に保管し、バックアップして紛失しないようにすることができます。 .
ユーザーに 2 番目の緊急パスワード (携帯電話の SIM カードの PIN/PUK のようなもの) を提供するように求めることは役立つかもしれませんが、ユーザーが同じパスワードを 2 回使用したり、2 番目のパスワードも忘れたりする可能性があります。
簡単に言えば、ユーザーにセキュリティについて教育し、安全であることが必要であり、わずかな余分な作業が単純に苦痛ではないことに気付くまで、手がかりスティックでユーザーを攻撃したい場合を除き、あなたは SOL です。お尻。
これらのセキュリティの質問を実際には2要素認証であるものとして扱うことは、完全に誤解を招く恐れがあります。以前に読んだ偽のアイテムから、特定の(銀行)サイトが「2要素認証」を必要とするとき、彼らはそれを行うための安価な方法としてこれを実装し始めました。ブルース・シュナイアーはこれについて[戻っている間][1]話しました。
複数の要因は、同じではない最良のものです。それは、あなたが「知っている」すべてのものではなく、あなたが知っているものや持っているものなどである必要があります。ここで、ハードウェア認証トークン、スマートカード、およびその他のそのようなデバイスが役立ちます。
[1]:http : //www.schneier.com/blog/archives/2005/03/the_failure_of.html2要素認証の失敗
電子メールを送信してすべてを認証することは、かなり効果的なソリューションです。(ただし、この場合、Yahooでは機能しなかった可能性があります:))。
セキュリティの質問やパスワードを回復するための他の手段をいじくり回すのではなく、認証リンクを使用して事前定義された電子メールアカウントに電子メールを送信することにより、パスワード回復要求に応答するだけです。そこから、パスワードを変更したり、必要なことを何でも変更できます(ただし、パスワードを送信しないでください。とにかく、常にソルトハッシュとして保存し、常に変更する必要があります。その後、電子メールアカウントが侵害された場合は、少なくとも次のような兆候があります。他のサービスにアクセスしたユーザー)
本当の答えは、ハッカーを締め出すための絶対確実な方法はないということです。私はセキュリティの質問が嫌いですが、それらを使用する場合は、ユーザー定義のセキュリティの質問を許可してください。ユーザーとして、アカウントを設定するためにサイトでセキュリティの質問が必要な場合は、自分のセキュリティの質問を設定して、自分だけが答える方法を知っていることを質問できるようにする機能が本当に好きです。この場合、それは本当の質問である必要はありません。しかし、ユーザーアカウントは、ユーザーの愚かさと同じくらい安全であり、多くのユーザーが「質問」のようなものを使用するという事実は?と「答える!」または同様に愚かな何か。ユーザーを自分の愚かさから救うことはできません。
電子メールシステムでない場合は、パスワードをリセットするためにクエリ文字列に戻らなければならないハッシュを使用して、安全なページへのリンクを電子メールで送信します。
次に、誰かがあなたのパスワードをリセットしようとした場合、あなたは知っているでしょう、そして彼らは潜在的にハッシュを推測することができません。
2つのGUIDを掛け合わせて使用し、16進数で表されます。
IMO 秘密の質問は、システムの一部として時間制限のある非常に弱いコントロールとしてのみ使用する必要があります。例:パスワードリセットシステム。
あなたは認証されています。あなたの携帯電話番号とあなたの秘密の(それほど秘密ではない)答えを登録してください。
パスワードを忘れた。
ロック解除をリクエストします。
a) あなたの「それほど秘密ではない」という質問は、「それほど秘密ではない」という回答を求めています。b) 正しい場合、事前登録された電話にテキスト メッセージが送信されます。
このようにして、電話が盗まれた場合、電話のピン/ロックなどのコントロールが機能しなくなります。電話の紛失/盗難が報告され、無効にすることができるまで、攻撃者がパスワードをリセットできるようにするための難読化の手段があります.
この使用法は、「それほど秘密ではない」質問/回答の唯一の目的だと思います。
ですから、この世界には彼らのための場所があり、通常はシステムが議論される必要があると私は主張します.
適切なセキュリティの質問は誤解です。それらは実際にシステムに脆弱性を生み出します。それらを安全な質問と呼ぶべきです。ただし、それらが提供するリスクと価値を認識すると、「良い」セキュリティ質問には次の 4 つの特徴が必要です。 . 決定的または単純です。詳細については、http://www.goodsecurityquestions.comを参照してください。
以下は、良い、公平、悪いセキュリティ質問のリストです。
1 つには、パスワードを直接リセットするのではなく、パスワードをリセットするためのリンクを含む電子メールを送信する必要があります。そうすれば、彼女は電子メールを受け取り、リセットを開始したのは彼女ではなく、彼女の質問/回答が侵害されたことを知っていたでしょう.
メール アドレスが無効になった場合は、タイムアウト (数日または 1 週間) 待ってから、新しいメールをアカウントに添付できるようにする必要があります。
別の電子メール アカウントにメッセージを送信するか、携帯電話にテキスト メッセージを送信するか、電話をかけるか、通常のメール メッセージを送信します。いつでも変更される可能性のある公的記録または好みの問題を含まないもの。
私は物事をシンプルに保ち、名誉システムのアプローチを使用することを好みます。たとえば、次のようなものをユーザーに提示します。
これは本当にあなたですか? [はい]または[いいえ]を選択します。
公記録にない質問のみを提供してください。
常にパスワードリセットを登録済みの電子メールアカウント(電子メールアカウントでは扱いにくい)に送信するか、PIN番号を登録済みの携帯電話に送信するか、IMアドレスへのリンクなどを送信します-基本的に、登録時にいくつかの二次連絡先情報を取得し、これを使用して、「パスワードリセット」リンクを送信します。
パスワードを直接変更させないでください。常に追加の手順を実行するようにしてください。
ユーザーに独自の秘密の質問と回答、および予備の電子メール (パスワード リセット リンクが送信される電子メールではない) を入力するように要求するのはどうでしょうか。セキュリティの追加ステップのために、ハッシュ化されたセキュリティの質問と回答をデータベースに保存します。
ユーザーがパスワードを忘れた場合は、パスワードのリセット リンクをユーザーのメインのメールアドレスに送信します。次に、ユーザーはリンクをクリックしてリダイレクトし、セキュリティの質問と回答を求めます。この手順が成功した場合は、ユーザーが自分のパスワードをリセットできるようにします。ユーザーがセキュリティの質問と回答を忘れた場合は、セキュリティの質問と回答をリセットするためのリンクをユーザーの予備のメールアドレスに送信します。
攻撃者がいずれかの電子メールにアクセスできたとしても、もう一方にアクセスできなければ意味がありません (攻撃者が両方にアクセスできる可能性はほとんどありません)。このプロセスには、開発者とユーザーの両方に多くの余分な作業が必要であることはわかっていますが、それだけの価値があると思います。(おそらく、ユーザーがこの追加のセキュリティが必要な場合は、セキュリティの質問/回答を有効にするための推奨オプションをユーザーに提供することができます.)
肝心なのは、このシステムがどのように機能するかは、ユーザーに大きく依存するということです。セキュリティの質問/回答の強度と、2 つの電子メールがどの程度「結び付けられていない」か (つまり、一方の電子メールから他方の電子メールにアクセスする方法がない) によって、このシステムの強度が決まります。
この方法に問題があるかどうかはわかりませんが、もしあれば、誰かがそれらを指摘できれば幸いです:)
その人のユーザー名とパスワードを含むハッシュを生成し、それを Https 経由でファイルとしてユーザーに送信します。ユーザーはファイルをディスクに保存します。このファイルを安全な場所に保管するのは彼らの責任です。または、メールアドレスに送信することもできますが、セキュリティが低下します. ユーザーがログイン資格情報を忘れた場合は、このファイルをアップロードする必要があります。サーバーがユーザー名とパスワードを確認すると、パスワードを変更するためのダイアログが表示されます。
ソーシャル メディアの進化により、Web サイトからのセキュリティに関する質問は簡単に解読できなくなりました。質問のほとんどは、ソーシャルメディアプラットフォームで簡単に入手できる個人情報であるため. アカウントのハッキングを回避するための代替手段の 1 つは、特殊文字、数字、大文字などを追加するなど、ログインに対してパスワード ルールを厳格にすることです。この種のパスワードは解読が難しく、セキュリティを大幅に強化できます。しかし、多要素認証、パスワードレス ログイン、SMS 認証などの新しい代替方法があります。SMS 認証は多要素認証の一部であり、ユーザーは携帯電話に OTP を提供され、それを入力する必要があります。ウェブサイトにログインします。これは、モバイルのアクセスがユーザーのみ (ほとんど) に制限されているため、安全な方法です。もう 1 つの多要素認証方法は、確認リンクを電子メールに送信して、サインイン プロセスを完了することです。このトピックについて非常によく書かれたブログがありますこのコンセプトを詳しく説明するメディア。