web-dev-qa-db-ja.com

802.1x PEAPによる証明書の検証

最近、WPA-PSKのしくみについて学びました。私が正しく理解している場合、4ウェイハンドシェイクにより、プロトコルはPMK/PSKを送信せずにPMK(したがって、PSK)を相互に所有できるようになります。この方法では、中間者攻撃の影響を受けません。

私の質問は、WPA-エンタープライズの場合、相互認証はどのように保証されるのですか? (ちょうど趣味のプロジェクトとして)ホームネットワークでFreeRadiusとPEAPを使用して802.1xを実行していますが、動作しますが、どのように動作するかを理解しているかどうかわかりません。

私はPEAPを使用しているため、クライアントはユーザー名とパスワードで認証されます。しかし、クライアントは彼らが話しているWiFiネットワークが中間者でないことを確認しますか?認証サーバーにはSSL/TLS証明書がありますが、自己署名されています。これを機能させるには、サーバー証明書の署名に使用されるルートCA証明書をクライアントにインストールしないでください。これは私のセットアップでは当てはまりませんが、私のすべてのAndroidクライアントは問題なく接続します。

私の前述の理解が正しければ、パスワードを傍受する中間者攻撃が可能であるため、PEAPを使用するWPA-エンタープライズはWPA-PSKよりも安全性が低いことを意味します。これは私には奇妙なようです。私の理解に欠陥はありますか?

編集:

この記事 で部分的な答えを見つけました。しかし、私はまだ答えられていない質問があります。

  • これは本当に、私のWPA2-Enterprise PEAPセットアップがプレーンWPA2-PSKよりも安全でないことを意味しますか? WPA2-PSKは非常に単純で、1つの共有シークレットのみを必要とするため、直感に反するようです。 WPA2-EnterpriseができないのにWPA2-PSKが共有シークレットだけで相互認証を保証できるのはなぜですか?
  • 私はそれについて心配する必要がありますか(そして私の設定を改善/保護するために進んでください)、またはこれが悪用される可能性はありませんか?
  • クライアントにサーバーの証明書を検証させるにはどうすればよいですか?すべてのクライアントに手動で証明書をインストールする唯一の方法はありますか? (その場合、とにかく証明書を配布する必要がある場合は、EAP-TLSに切り替える方が適切です)
  • または、HTTPSと同じように公開証明書を使用できますか?それはどのように機能しますか? HTTPSを使用すると、証明書がドメインに「アンカー」され、自分のCAに証明されます。これはRADIUSサーバーでどのように機能しますか?

編集:

より多くの答えが見つかりました。

EAP-MS-CHAP-V2(Microsoftチャレンジハンドシェイク認証プロトコルバージョン2)は、パスワードベースのユーザーまたはコンピューター認証をサポートする相互認証方式です。 EAP-MS-CHAP v2認証プロセス中に、クライアントとRADIUSサーバーの両方が、認証が成功するためにユーザーのパスワードを知っていることを証明する必要があります。相互認証は、オーセンティケーターを含めることにより提供されますサーバー認証が成功した後、パケットがクライアントに返されます。

(2つを超えるリンクを投稿することはできないため、この見積もりの​​ソースを提供することはできません)

ここでは、第2段階の内部認証プロトコルであるMS-CHAPv2も相互認証プロトコルであることを説明します。今では理にかなっています。

ただし、 この記事 は、MS-CHAPv2が安全ではなくなったことを示唆しています。 WPA2エンタープライズセットアップでMS-CHAPv2の相互認証プロパティに依存しているため、より安全なMS-CHAPv2の代替はありますか?

編集:

PEAPv0/EAP-MSCHAPv2よりも強力で、相互認証を提供し、SSL/TLS証明書をまったく必要としない新しい単一ステージのEAP認証プロトコルであるEAP-PWDについて知りました。

EAP-PWDは安全性が高く(暗号化された形式であってもパスワードが送信されることはありません)、PKI証明書を必要とせず、認証ラウンドトリップが3回だけ必要です。したがって、たとえばEduroamやその他の環境で展開するのが効率的であると考えられます。 Radiatorユーザーデータベースが正しい平文パスワードにアクセスできる必要があります。

唯一の問題は、まだ広く採用されていないことです。 Android(> 4.0)doesはそれをサポートしていますが、それはいいことです。しかし、それでも多くの情報を見つけることができませんでしたそれについて、そしてその外観からすると、Windowsはそれをサポートしていません。

4
Compizfox

私の前述の理解が正しければ、パスワードを傍受する中間者攻撃が可能であるため、PEAPを使用するWPA-エンタープライズはWPA-PSKよりも安全性が低いことを意味します。これは私には奇妙なようです。私の理解に欠陥はありますか?

はい、私の理解に欠陥がありました。 PEAPは内部認証方式(私の場合はEAP-MSCHAPv2)をTLSでカプセル化します。 TLSを正しく使用すると、サーバー認証が提供されます。私の場合、サーバーのパブリック証明書が検証されていないため、正しく使用されませんでした。

ただし、MS-CHAPv2は相互認証も提供します。私自身の質問に答えるには:

これは本当に、私のWPA2-Enterprise PEAPセットアップがプレーンWPA2-PSKよりも安全でないことを意味しますか? WPA2-PSKは非常に単純で、1つの共有シークレットのみを必要とするため、直感に反するようです。 WPA2-Enterpriseがそうではないのに、WPA2-PSKが共有シークレットだけで相互認証を保証できるのはなぜですか?

あんまり。どちらも、プレーンテキストでパスワードを送信せずに相互認証を保証します。ただし、MS-CHAPv2の唯一の問題は、それがかなり古く、DESに依存していることです。 クラック可能

クライアントにサーバーの証明書を検証させるにはどうすればよいですか?すべてのクライアントに手動で証明書をインストールする唯一の方法はありますか? (その場合、とにかく証明書を配布する必要がある場合は、EAP-TLSに切り替える方が適切です)

これにはまだ答えられません。サーバーの証明書を確認すると、セキュリティが確実に強化されます(MS-CHAPv2がクラックされる可能性があるため)が、Androidでこれを行う方法はわかりません。 AndroidデバイスにCA証明書をインストールしようとしましたが、問題はありませんでしたが、それでもWiFi設定でCA証明書を選択できませんでした。

または、HTTPSと同じように公開証明書を使用できますか?それはどのように機能しますか? HTTPSを使用すると、証明書がドメインに「アンカー」され、自分のCAに証明されます。これはRADIUSサーバーでどのように機能しますか?

これについての手掛かりはありません。

代替案

まあ、MS-CHAPv2はもう安全ではないので、いくつかの代替案があればいいでしょう。本当に有望なEAP方式はEAP-PWDです。私は本当にそれを実装したいのですが、それについて見つけることはあまりありません。 Androidはサポートしていますが、FreeRADIUSは3.x(unstable)ブランチでのみサポートしています。もちろん、stableブランチ(2.x)はDebianにあります。いくつか待つ必要があると思いますこれのための時間。

1
Compizfox

クライアントにサーバーの証明書を検証させるにはどうすればよいですか?すべてのクライアントに手動で証明書をインストールする唯一の方法はありますか? (その場合、とにかく証明書を配布する必要がある場合は、EAP-TLSに切り替える方が適切です)

デバイスにCAの公開証明書をインストールするだけです。私のRADIUSは、自己署名CAによって発行された自己ロールサーバー証明書を使用しており、正常に動作します。証明書をAndroidにインポートするとき、「VPNとアプリ」または「WLAN 「後者は、wifiネットワークとの接続に使用されるCA証明書の正しいものです。

その上、ここに小さなヒントがあります。 FreeRADIUSで弱いプロトコルを無効にしたので、クライアントはCA証明書がないとWiFiネットワークに接続できません。