web-dev-qa-db-ja.com

WPA2-エンタープライズはどのようにして悪魔の双子の攻撃から保護しますか?

元の質問のタイトル:EAP-TLS証明書に含まれる情報

最近、Wi-Fiアクセスポイントの検証に関して、stackoverflowに関するいくつかのトピックを読みました。

これらの質問への回答により、HTTPSを使用してサイトを確認できるのとほぼ同じ方法で、EAP-TLSを使用してアクセスポイントを確認できることがわかりました。 Wikipedia もこれを確認します:

サーバーがCA証明書(..)を介してクライアントに対して安全に認証された後

ただし、HTTPSでは簡単で、ドメイン(例: https://www.facebook.com )に接続し、接続しているサーバーが信頼できる証明書を持っているかどうかをブラウザがチェックしますそのドメイン名が含まれています。

私の質問は:APがクライアントに送信する証明書にはどのような情報が含まれていますか?それはSSIDですか、それとも何か他のものですか?

フォローアップの質問:ユーザーは、信頼できるAPに接続されていることをどのようにして知ることができますか?繰り返しますが、HTTPSを使用すると、ブラウザが警告を表示します。信頼できないアクセスポイントに接続している場合、PCまたはモバイルデバイスから警告が表示されますか?または、何かが間違っていることに気づく唯一の方法は、資格情報を再入力しなければならないという単純な事実ですか?

9
Michael

これは、クライアント証明書ベースのEAP-TLSではまったく問題にならないため、PEAP、EAP-TLS、およびEAP-TTLSがパスワード認証を保護するために使用する「サーバー」証明書に関する質問だと思います。

実装全体で非常に矛盾していることを考えると、EAP標準のドキュメントにこの情報が含まれることはないと思います(それ以外の場合はそれほど悪くありません)。また、EAPと802.1XがイーサネットとPPPダイヤルアップの前にWiFiの前に使用されていたため、標準がSSIDについて話し合わない可能性があることを考慮してください。

更新:RFC 759( "eduroam")が最近公開され、これについてさらに詳しく説明しています。 eduroamは、802.1X/EAPを使用するおそらく最大のサービスであり、世界中に多くの連合領域があります。 RFC 7593の概要、特に セクション7.1 は、eduroamユーザー間のサーバー検証の状況について少し述べています。

APがクライアントに送信する証明書にはどのような情報が含まれていますか。それはSSIDですか、それとも何か他のものですか?

PEAPv0ドラフト はこれについてまったく触れていません。

PEAPv1ドラフト は言う: "ピアはEAPサーバー証明書の有効性を検証する必要があり、また、証明書に提示されているEAPサーバー名を調べて、 EAPサーバーは信頼できます。」

ただし、サーバー名を確認する方法は説明されておらず、実際には名前が間違っている可能性があることを認めています: " EAP認証がリモートの場合、EAPサーバーはオーセンティケーターと同じマシン上に存在しないため、EAPサーバーの証明書の名前は、目的の宛先の名前と一致するとは想定できません。この場合、より適切なテストEAPサーバーの証明書が、目的の宛先を制御するCAによって署名されているかどうか、およびEAPサーバーがターゲットサブドメイン内に存在するかどうかなどです。」

RFC 5281 (EAP-TTLSを指定)には、既知のCAに対する検証と、「サーバー認証」extendedKeyUsageが有効になっていることの確認が必要です。

(CAチェックも常に実装されているわけではないことに注意してください。たとえば、iOSとWindows 8.1では、初めて接続するときに証明書のフィンガープリントを確認するようユーザーに要求します。

EAP-TTLS仕様では、私が見る限り、common-nameやsubjectAltNameの値は必要ありません。一部のクライアント(Windows、wpa_supplicant)には、予期される「共通名」がどうあるべきかを設定するものもあれば、まったく気にしないものもあります。

証明書は常にAPから送信されるわけではなく、多くの場合RADIUSサーバーが認証を処理することによって送信されることに注意してください。どこでも同じSSIDを使用するeduroamなどのフェデレーションがあります(一部の場所ではeduroam -認証済みイーサネットポート)、すべての認証リクエストはログイン名の@domainに基づいてホーム組織にルーティングされ、各組織には独自のEAP証明書があります。したがって、より良い世界では@domainは証明書と比較する必要があるもの。

たとえば、 Microsoft KB 814394 は、Windows PEAPクライアントの要件を示しています。

ユーザーは、信頼できるAPに接続されていることをどのようにして知ることができますか?繰り返しますが、HTTPSを使用すると、ブラウザが警告を表示します。信頼できないアクセスポイントに接続している場合、PCまたはモバイルデバイスから警告が表示されますか?または、何かが間違っていることに気づく唯一の方法は、資格情報を再入力しなければならないという単純な事実ですか?

クライアントによっては、次のチェックのいくつかの組み合わせがあります。

  • 指紋は初回使用時に記憶される(iOS、Windows 8.1で見られる)
  • 設定値に対してチェックされる一般名
  • 発行者は通常、組織の内部権限のみを含むホワイトリストに対してチェックされます(パブリックCAの使用は、共通名がチェックされている間のみ安全です)

私の経験から、ミスマッチは認証エラーと実質的に同じ方法で示されています。 wpa_supplicantのみをより詳細にすることができます。

多くのクライアントはonlyオプションとしてCA検証を行うため、唯一の可能なセキュアモードは、組織の専用CAに対してEAP証明書を検証することです。 (EAP証明書がThawteからのもので、クライアントがThawteが発行した証明書を要求するように構成できるが、サブジェクト/ CNチェックを行わない場合、文字通り誰でもThawteから通常のSSL証明書を購入し、偽のAPで使用できます...)

残念ながら、クライアントがすべてを受け入れるオプションを持っている場合、新しいCAのインストールは面倒なので、ほとんどの人がそれを使用します。 (もちろん、組織がHTTPSサイトを偽装することも可能であることは言うまでもありませんが、これはあまり望ましくなく、Androidで永続的な警告アイコンが表示されることもあります。)

Eduroamネットワークは 標準セットアップツール とiOSプロファイルを提供することでこれをより簡単にしようとしましたが、実際に使用しているのはごく一部です。

その結果、何かがおかしいことに気づかないかもしれません

5
user1686