2FA純粋主義者はセキュリティキー(ユビキーやスマートカードなど)を求めているようですが、 その他 は、電子メールなどの物理的要素の「所有」を含まないように見える、よりリラックスした姿勢を持っているようですアドレス、電話番号、または登録済みデバイスにインストールされている特定のアプリへのプッシュ通知チャレンジ(「ソフト」な複製可能な秘密鍵のみを持っています)。
私は主に最後の1つ(プッシュメッセージ)を調査しましたが、(物理的でない方法で、または物理的な努力で)コピーできるすべてのものは、完全に確実に「物理的な」所持ではないものとして記述される可能性がありますあなた(そしてそれは要因としてカウントされません)。
しかし 2F のような信頼できる2要素プロトコルの説明は完全に除外されない '...完全にソフトウェアの実装...' なので、これは私を混乱させます。
また、携帯電話がハッキング(または複製)されたという想定から、モバイルブラウザに保存されたパスワード(別の想定)にアクセスできる可能性があるため、ハッカーには本当の第2要素はもうないと言えます(私は安全です) Webアプリケーション;)とソフトウェアトークン(またはデバイスでのフルアクセスを想定したハードウェアトークン)。
私が質問しようとしていることを推測します:スマートフォンを使用した実際の2FA実装を構成するのは何ですか?それとも理論と実際の実装を混同しすぎているのでしょうか?
ソフトウェアトークンアプローチを使用する場合、保存できないパスワードでそれを保護することを考えるしかありませんでした(スマートフォンのハッキングケースを少し軽減するため)。しかし、これはそれを再び「あなたが知っているもの」にして、2番目の要因を軽減しないのではないでしょうか(この場合、1番目の要因も「あなたが知っているもの」です)。
[これは私の見解であり、業界の見解を表すものではありません]
メインデバイスに保存されている秘密データの一部が、「知っているもの」と「持っているもの」の境界を曖昧にすることに完全に同意します。どちらの側にあるかは、そのデータが何であるか、認証プロトコルがどのように機能するか、そしてどのような視点からそれを見ているかによって異なります。
技術的には、ユビキー、スマートカード、さらには OTP fobs も、物理的にアクセスできる攻撃者にとっても抽出が困難な方法ですが、ソフトウェアに格納された秘密のデータです。あなたが所持していることを証明しているのはデバイスではなく、秘密のデータであると私は主張します。ハードウェアトークンではこれらは同じですが、人々は同じ考え方を電話や他の種類の秘密に適用しており、それが正しい考え方であるかどうかはわかりません。
それがどんな種類の秘密であるか、そしてあなたのデバイスがそれをどのように保存してアクセスするかは、セキュリティのスライドスケールを与えます(plain text file --> yubikey
)。どこかに「知っている」と「持つ」の境界があります。どこでその線を引くかは、だれの視点に大きく依存すると思います。いくつかの例:
誰もが同意するいくつかのケースがあります。ユーザーがテキストボックスに入力するパスワードは明らかに「知っている」であり、RSAキーペアを持つスマートカードは明らかに「持っている」です。しかし、「知っている」と「持つ」をどのように定義しても、上記のパースペクティブの1つが「知っている」と見なし、別のパースペクティブが「持っている」と見なすEdgeケースは常にあると思います。
システム管理者が新しいランダムパスワードを生成し、それを暗号化してユビキーに保存し、キーが要求に応じて暗号化されたパスワードを解放し、VPNクライアントのみが平文パスワードを復号化して実際に使用するキーを持っているとします(これが正しいかどうかはわかりません)現実的ですが、ちょっと、それは思考実験です)。それは知っているか持っているか?エンドユーザーの観点から見ると、それは確かに持っています...彼らはフォブなしではアカウントに入ることができません。管理者の観点からすると、ユーザーがフォブとVPNクライアントをハックするために邪魔をしない限り、ユーザーはパスワードを知ることができないため、フォブを返却して別のユーザーに渡すことができるため、それは(ほとんど)持っています。従業員。しかし、サーバーの観点から見ると、プレーンテキストのパスワードがすべて表示されるため、確かにわかっています。安全なデバイスから取り出されたか、入力されたかを判別する方法がありません。
アプリケーション開発者として、私にとって重要な理論上の違いは次のとおりです。
「あなたが知っているもの」(つまりパスワード)を使用して、秘密をネットワーク経由でサーバーに送信します。 「あなたが持っているもの」(通常は暗号化キーまたはシード)を使用すると、シークレット自体は送信されませんが、シークレットを所有していることを証明する1回限りの値またはチャレンジレスポンスが送信されます。
中間者がWebトラフィックを盗聴することを検討してください。彼らはあなたのユーザー名/パスワードを盗むことができます。 OTP/yubikey /などでは、秘密データは暗号化キーまたはRNGシードです。彼らは彼らが望むすべてのメッセージを嗅ぐことができます、彼らは「あなたが持っているもの」の秘密を決して回復しません。
2番目の要素を取得するために攻撃者があなたのデバイス(物理アクセスまたはルートキット)またはあなたの別のアカウントにアクセスする必要がある場合、それは私の「何か」の定義を満たしていると私は主張しています。
攻撃者が既にデバイスにアクセスした後のクローン作成への抵抗は明らかにボーナスですが、(私にとって)定義を満たす必要はありません。結局のところ、クローンを作成するには、攻撃者は既にデバイスを「持っている」必要があります。その時点で、デバイスを使用して偽装できることと、デバイスのクローンを作成して偽装できることの違いは、どちらの方法でも、すでに偽装できるため、理論的には意味がありません。
これに対する正しい答えはなく、Mikesの投稿と同様に、これは私の見解にすぎません。
電話を使用することの主な弱点は、デバイスへのアクセスを示すためにSMSメッセージに依存する傾向があることです。
ささいなことではありませんが、デバイスまたはSIMに物理的にアクセスせずにSIMのクローンを作成することは可能であり、認証システムの制御の外にある手順に依存しており、決定的にはユーザーの制御に依存しています。私にとって、依存関係のある手続き型制御の信頼性の本質的に未知の性質により、このオプションは2FAシステムであるとして除外されます。
これは影響の少ない環境では問題にならないと主張する場合や、潜在的な攻撃者がSIMのクローンを作成する可能性が低い脅威のシナリオである場合があります。リスク(信頼性が不明な外部依存に依存すること)を受け入れることは完全に正当化されるかもしれませんが、ユーザーが特定の時点でデバイスを所有しているというレベルの信頼性を主観的に主張することさえできません時間は2FAソリューションとして説明できると思います。
リスクシナリオで信頼性を必要としない場合に、なぜ追加の要素を実装しようとするのか、またはリスクアセスメントが追加の要素が必要であると示唆する場合、少なくとも導入されていないものがある場合に別の言い方をする理由についての質問もあります。ある程度の誤った安心感/コントロールの不実表示。これは、アクセスコントロールシステムが将来的により機密性の高いデータに拡張される可能性がある場合に特に関連しますが、誰かが気にせず、それに基づいてサインオフしない場合、適切な慣行により、コントロールのレビューが指示されます。 2FAが実装されているということは、先に厄介な驚きがあるかもしれません。
一方、スマートフォンにサイクリングカウンターを備えたアプリケーションをインストールするシステムは、デバイスへのアクセスを示す信頼できる指標にはるかに近くなっています。デバイスへのアクセスを取得するためのリモートエクスプロイトは不可能ではありませんが、それはより複雑で(根拠のない断定的な主張)の可能性は低くなります。
一部のシナリオでは、電話が所有者によって「保護」される利便性と可能性は、アプリベースの2FAソリューションが必要とする妥協がそれに値することを意味すると思います。通常、私は正式にそれを疑似2FAまたはその効果を表す言葉と呼びます。
今日のほとんどのスマートフォンには、耐タンパー性のある安全なストレージがあり、OTPシークレットの保存に使用できます。これらは、秘密値の抽出またはコピーが不可能であるように構築されており、OTPの計算にのみ「使用」できます。
ハードウェアはあなたの協力や過失があってもコピーできないため、これは「あなたが持っているもの」と見なすことができます。基本的に、トークンとその秘密データは「一緒に溶接」されるため、秘密データを使用できるようにするにはトークンを使用する必要があります。
ただし、セキュリティで保護されていないメディアに格納されているシークレットにのみ依存する「ソフトトークン」については、「知っていること」のほうを検討します。
物理トークンにも同じように適用します。トークンが秘密を保持できる場合、私はそれを「あなたがポーズをとるもの」と考えます。秘密が何らかの方法で簡単にコピーできる場合、その「知っているもの」です。
私はこの「テスト」を使用して、トークン/スマートフォンが「あなたが持っているもの」または「あなたが知っているもの」と見なすことができるかどうかを判断します。
1:問題のトークンデバイスまたはアイテムを想像してください。
2:これが公共のベンチに置かれ、そこに横たわっていると想像してください。
3:1日後、戻ってデバイスを見つけます。
4:デバイスがまだ秘密を変更せずに信頼できる場合、その「所有しているもの」、それ以外の「知っているもの」。また、電話の場合、再フォーマットされた同じ秘密が電話に再インストールされることも想像できます。
別の簡単な考慮事項は、不正な従業員を想像してみてください。あなたは彼からトークンを取り戻します(秘密を変更したり置き換えたりすることはありません)。悪意のある従業員が問題のサービスに引き続きログインできますか?悪意のある従業員がトークンを改ざんして秘密を抽出できるという事実を考えてみてください。
通常はpossession factor
は暗号鍵で表されます。
スマートカードから生成され、(簡単に)抽出できない秘密鍵は、おそらく最も安全な暗号鍵であり、したがって最良の第2要素(所有)です。
YubikeyのようなU2Fデバイスにも、マスターキーから派生した秘密キーがあります。 (このマスターキーのセキュリティに関する議論は、ここでは範囲外です)。
OTPトークンとして使用されるyubikeyは、対称秘密鍵を使用して、ワンタイムパスワードに基づいて生成します。 RFC 4226。
ほとんどのハードウェアkeyfobトークンは、対称秘密鍵でRFC 4226またはRFC6238を使用します。まあ-このキーはベンダーによって生成され、ハードウェアに書き込まれました。この秘密鍵のコピーを破棄するにはベンダーを信頼する必要があるため、これは所有要素の考え方を大幅に弱めます。
今、私たちはスマートフォンに来ています。 GoogleはGoogle Authenticatorを思いついた。これは、RFC 4226およびRFC 6238に基づく暗号化(秘密)鍵にも基づいて機能するため、これを2番目の要素と呼びます。しかし、 Googleオーセンティケーターのロールアウトプロセスは最悪です 。スマートフォン内の秘密鍵は、実際には強力でオンラインでパッチが不適切に適用された「コンピューター」に存在します。はい、スマートフォンをアプリで使用することは2番目の要素ですが、かなり弱いものです。
スマートフォンを使用してプッシュメッセージまたはSMSを取得する場合、これを第2要素と呼ぶのではなく、双方向認証と呼びます。興味深い違いは次のとおりです。
電話を完全にオフラインにすることで、Google認証システムを「保護」できます。攻撃者は実際の電話を攻撃する必要があります-実際の第2要素。
SMS=を受信している場合、攻撃は完全にあなたの電話を気にする必要はありません。あなたの電話は第2の要素ではありません。攻撃者がネットワークを攻撃することははるかに簡単かもしれません。ソーシャルエンジニアリング)とSMSのルートを変更します。その場合、2番目の要素/電話はどこにあるのでしょうか?それは完全に方程式から外れています。
しかし、考える必要があるのは結局のところ、どれだけのセキュリティが必要で、どれだけのリスクを取り続けたいかです。
私の見解では、「あなたが持っているもの」と「あなたが知っているもの」の唯一の違いは、認証に必要な情報が保存される場所です。頭の中に保存されている場合、それは「あなたが知っているもの」です。スマートカードや紙に保存されている場合、それは「あなたが持っているもの」です。
明らかに、バーコードが書かれた一枚の紙は、「あなたが持っているもの」のひどく安全でない実装になるでしょう。ユーザーに名前と誕生日を尋ねるのは「知っているもの」のひどい実装ですが、それらの考慮事項これらの各認証要素が何であるかの概念的な定義から完全に分離されています。
実際には正しいですが、「持っているもの」を実装することを目的とする認証要素は、認証に使用されている物理トークンを複製しようとする攻撃者に対してできるだけ耐性がなければなりません。 「知っているもの」を実装する場合は、監視や詐欺によって攻撃者が推測したり発見したりすることが難しい情報を使用する必要があります。認証要素が簡単にバイパスまたは侵害される場合、事実上、認証要素ではありません。