P-GW製品開発日記 ─ その2 「P-GWでの認証」

前回、P-GWの役割として次のように書きました。

GTP-Cが認証・認可を含む接続状態の管理を、GTP-Uが通信パケットの送受信を扱います。

今回はP-GWが行う認証について調べます。 ターゲットはNTTドコモ様の相互接続サービスです。

P-GWでの「認証」って何

無線LANの認証をはじめ、認証スイッチとRADIUSサーバーの組み合わせでは、接続の際にユーザーIDとパスワードを入力します。RADIUSサーバーは、これらを元に接続可否を判断します。

MVNOのSIMを契約して、最初の設定ではどんな項目があるでしょうか。 自動入力になっていることも多いですが、おおむね次の3つでしょう。

  1. APN
  2. ユーザー名
  3. パスワード

しかし、これらはMVNOごとに固定値である場合が多いです。SIMの説明書に記載されていたりしますね。 ユーザなら(顧客なら)誰でも知ってるので、いわゆる認証が目的だとは言えないでしょう。

相互接続をL3接続で行う場合に使われるRADIUSサーバーで認証条件に使われる項目は主に次の3つです。

  1. ユーザー名
  2. パスワード
  3. 発信者番号(電話番号)

携帯端末の設定で入力する項目以外に電話番号を使っています。 登録された電話番号を持つSIMを認証の条件に加えることで、個別の認証をしていることになりますね。 ではL2接続の場合はどうなるのでしょうか。 P-GWでの認証にあたる処理(接続を許可する・しないを決める部分)がどんなものなのか調べていきます。

ドコモ様の技術的条件集別表9 パケットデータ直収(IMT-2000)ユーザインターフェース仕様を読むと、GTP-Cでは以下のようなメッセージを扱うとあります。

  • ノード監視処理(Echo Request/Echo Response)
  • セッション設定処理(Create Session Request/Create Session Response)
  • ベアラ更新処理(Modify Bearer Request/Modify Bearer Response)
  • セッション削除処理(Delete Session Request/Delete Session Response)
  • ベアラ切断処理(Delete Bearer Request/Delete Bearer Response)

3GPPの仕様書 3GPP TS 29.274 V11.5.0 (2012-12) P.24 「Table 6.1-1: Message types for GTPv2」を見ると、たくさんメッセージの種類がありますが、ドコモ様の仕様では上記の5つの処理で必要なメッセージを使用するということですね。

この中の、セッション設定処理が認証に該当します。 技術的条件集別表9 パケットデータ直収(IMT-2000)ユーザインターフェース仕様より抜粋。

5.4 セッション設定処理(Create Session Request/Create Session Response)

(1) 処理概要

移動無線装置より接続要求された場合、直収パケット交換機より、直収回線等 接続事業者ノードに対してCreate Session Requestを送信します。Create Session Requestを受信した直収回線等接続事業者ノードは、Create Session Requestの 情報要素により、接続可否判定を行います。接続を許容する場合には、直収回線 等接続事業者ノードより直収パケット交換機に対してCreate Session Response を送信します。Create Session Responseを受信した直収パケット交換機では接 続応答を移動機無線装置へ送信することにより、回線を接続します。接続を非許 容にする場合には接続非許容を示すCauseを設定したCreate Session Responseを 送信します。

Create Session Requestメッセージには、どのような情報が載っているのでしょうか。 パラメータ一覧から、該当しそうな項目を拾ってみます。

パラメータ名 説明 必須
IMSI 携帯電話の識別番号 必須
MSISDN 電話番号 -
APN アクセスポイント名 必須

おや?ユーザー名とパスワードに相当する項目がありません。

最初、RADIUSの延長で考えてしまっていたのですが、P-GWの場合、S-GWがCreate Session Requestを送ってくる時点で、SIM自体の正当性検査は終わっているんですよね。 従って、ユーザー名・パスワードの組の検証結果をもって、L2レイヤーで接続するかを決定するRADIUSとは違い、単にそのSIMがネットワークサービスの提供対象かどうかを検証できれば良いわけです。

SIMを特定する情報としては、IMSIが該当すると考えて差し支えないでしょう。 P-GWの認証処理としては、このIMSIがサービス提供対象かどうかのチェックでよさそうです。

では、MSISDN(電話番号)はというと、これはSIMを一意に特定する情報とはなりません。 例えば、SIMカードを紛失し再発行した場合などは、同じMSISDNが設定されたSIMカードが複数枚存在する可能性があります。SIMカードが、S-GWから向こう側(コアネットワーク側)で有効か無効であるかは別にして。 (とはいえ、L3接続においてRADIUSサーバーを利用していた環境からの移行などを考えると、MSISDNを条件にしたいという要求はありそうですね。)

ところで行方不明なユーザー名・パスワードの情報ですが、携帯端末で設定したユーザー名・パスワードはどのように利用するのでしょうか。

Create Session Requestのパラメータ一覧に、Protocol Configuration Optionsという項目があります。

7.10 Protocol Configuration Options (PCO)

Protocol Configuration Options (PCO)は、移動無線装置と直収回線等接続事業 者ノード間で規定される情報の転送のために使用されます。直収パケット交換機は、 移動無線装置からセッション設定処理時に本パラメータを受信した場合、Create Session Request に透過で設定いたします。Create Session Responseに本パラメ ータが設定された場合、移動無線装置へ接続応答時に透過で設定いたします。 Protocol Configuration Optionsの使用方法の詳細は、3GPP TS29.274v11.5.0及び TS 24.008v 8.7.0を参照願います。

携帯端末の設定画面で用意されている項目のうちのいくつかは、このProtocol Configuration Optionsに格納されます。 ここに、例えばPPP(RFC1661)の認証情報の形で、ユーザー名・パスワード、認証タイプ(PAPやCHAP)の情報が含まれます。

まとめ

P-GWにおける認証処理は、Create Session Requestメッセージの処理が相当します。 使える情報は以下の5つ。

  1. IMSI
  2. MSISDN
  3. APN
  4. ユーザー名(携帯端末で設定した場合)
  5. パスワード(携帯端末で設定した場合)

サービス提供対象のSIMであるかは、IMSIをチェックすることで判定可能。 他の項目は、認証条件の追加項目としても構わないし、認可の条件(たとえば、ゲートウェイが提供する接続先ネットワークを変更するなど)として使用してもよいでしょう。


Written by imazu in Blog on 2016-06-07. Tags: PGW, Develop,