hgot07 Hotspot Blog

主に無線LANや認証連携などの技術についてまとめるブログです。ネコは見る専。

Passpointプロファイルのばらしかた (分析方法)

OpenRoamingなどで使われているPasspointは、WPA2/WPA3 Enterpriseをベースにして、さらに高度な機能 (802.11u) が盛り込まれたものです。事前共通鍵 (PSK, Pre-Shared Key) を使うWPA2/WPA3 Personalと違って、Enterpriseでは、ID/パスワードやクライアント証明書に加えて、認証方式やサーバ認証のための証明書、ドメイン名など、端末に設定する項目が多くなっています。Passpointの端末設定には、さらに多くの設定項目が必要です。このため、これらの情報を手入力するのが難しいので、端末設定には「Passpointプロファイル」と呼ばれるデータを使ったり、専用の設定アプリを使ったりするのが一般的です。

例えば、OpenRoamingに対応した (新しい) TOKYO FREE Wi-Fiでは、Passpointプロファイルと、アプリの、いずれかを用いて端末の設定が可能になっています。

ところで、Passpointプロファイルの中身は、一体どうなっているのでしょうか。この記事では、Passpointプロファイルのばらしかたを紹介します。

 

Passpointプロファイルをファイルに落とす

最近のOSには、ウェブサイトからPasspointプロファイルをダウンロードして、Wi-Fi周りの設定を容易に行うことのできる仕組みが組み込まれています。このようなWi-Fi設定方法は、web-based provisioning と呼ばれています。

Passpointプロファイルの中身を覗くために、まずファイルに落としたいのですが、普通にウェブサイトで設定ボタンをタップするとWi-Fi設定に自動的に流し込まれてしまいます。ファイルとしてダウンロードする隙がありません。

また、OS自動検出機能がウェブサイトに組み込まれていることもあり、例えばWindowsAndroid用のプロファイルを取得しようにも、User-Agent を偽装しなければいけません。要するに、面倒……

Chromeブラウザを使うと、各種OS用のプロファイルを手っ取り早くダウンロードすることができます。WindowsChromeなら、F12キーを押すことで、各種OSのエミュレーションができるモードに入ります。

ChromeでF12を押したところ

ChromeでF12を押したところ

Dimensionsの設定でOSを選びます。あとは、Passpointプロファイルを配布しているウェブサイトにアクセスして、所定の操作をするだけです。Wi-Fi設定などのメニューが自動的に開くことがなく、プロファイルがファイルとしてダウンロードできます。

 

執筆時点で、プロファイルの形式はOSごとにまちまちで、統一されていません。唯一、Androidが使用している PPS-MO (Per-Provider Subscription - Mobile Object) 形式は Wi-Fi Alliance によって制定された汎用フォーマットですが、AppleMicrosoftはこれを採用していません。

 

Android用Passpointプロファイル

Wi-Fi Alliance が制定した、PPS-MO 形式が用いられています。Android 11以降で、Wireless Broadband Alliance による拡張属性にも対応しています。

プロファイルの形式は、この辺 ↓ を見れば分かります。

プロファイルをテキストファイルとして覗いてみると、Base64っぽい文字列が出てきます。

Passpointプロファイルの中身 (Android)

Passpointプロファイルの中身 (Android)

マルチパートMIMEエンコードされているので、順番にデコードしていけばよいです。

Linuxなら、

$ base64 -d  passpoint.conf > profile.txt

Base64のデコードができます。

続いて、テキストエディタなどを使って、各パートに切り分けます。

最初のパートはXML形式で、ここに様々なパラメータが埋め込まれています。

二番目のパートは、これまたBase64っぽい内容なので、デコードします。サーバ認証用のCA証明書が含まれていることが確認できると思います。

$ base64 -d part2.txt > cacert.pem
$ openssl x509 -text -in cacert.pem | less

EAP-TTLSならば、この2パートだけです。EAP-TLSの場合は、クライアント認証のためのクライアント証明書がこの後に続きます。

 

Apple用Passpointプロファイル

macOS/iOS/iPadOS共通で、mobileconfig形式のプロファイルが使われています。XMLで記述されています。自前のプロファイルを作りたいなら、Apple Configuratorアプリでも作ることができます。

プロファイルの形式は、この文書 ↓ を見れば分かります。

Passpointプロファイルは、署名付きと署名無しの二種類があります。テキストファイルとして覗いてみて、先頭が文字化けしているように見えたら、署名付きです。

以下のようにして、署名を削除できます。

$ openssl smime -verify -noverify -inform der -in passpoint.mobileconfig -out nosign.mobileconfig

 

Windows用Passpointプロファイル

Windows 10以降で、ms-settings: URIスキームによるWi-Fi設定が可能になっています。プロファイルはXMLで記述されており、これにXML署名が付いています。署名は必須で、XMLデータの末尾 (最終タグの手前) に埋め込まれています。プロファイルを覗くだけなら単に無視すればよいです。

プロファイルの形式について、あまりまとまった文書がありません。この辺 ↓ を見て頑張って解析します。

 

Passpointプロファイルの作り方

自前のプロファイルを作るのは、色々とつまづく点が多くて、結構面倒です。プロファイルの作成を容易にするためのツールを作りました (結構前の話)。試してみたい人はどうぞ。Passpointのパラメータさえ知っていれば、様々なOSのプロファイルを作成して、ウェブサイトで配布できるようになります。

github.com

おしまい

 

Passpointプロファイルのことが分かったら、次はアクセスポイントで遊んでみたくなりませんか? (・∀・)

booth.pm