【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
しらかば堂

こんにちは!しらかば堂(@shirakabado)です。

はじめに

以下の記事でも紹介していますが

【自宅VPN構築】(初めに) TL-R600VPNで無線LAN環境にVPN(PPTP、L2TP/IPSec)を構築する

Android 12以降のOSを搭載しているAndroid スマホは、現在以下のVPN接続画面で「PPTP」あるいは「L2TP/IPsec VPN 」は安全でないVPNと認定され、VPN接続が出来なくなっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する

そこでしらかば堂の Android スマホの機種変更

  • Galaxy Note9 / Android 10 → Galaxy Note20 Ultra 5G / Android 13

を機に IKEv2/IPSec 対応VPNルータを新規調達し、以下の構成でIKEv2/IPSec VPN接続を試みたのですが、結論として両機種の相互互換性に問題がありIKEv2/IPSec VPNの接続に失敗してしまいました。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
  • スマホ:SAMSUN Galaxy Note20 Ultra 5G / Android 13
  • 無線LANルータ:Buffalo 無線LAN親機 WSR-3200AX4S  (Version 1.30)
  • VPNルータTP-Link Omada ギガビットVPNルーター ER605 (Version:2.0.1)

 

本記事ではこの失敗を今後の糧とするため

  • IKEv2/IPSecプロトコルの概要
  • IKEv1ではなくIKEv2が求められる理由
  • 対向装置の IKEv2/IPSec VPN 接続パラメータ
  • WireSharkでのパケットキャプチャ環境
  • WireSharkによるIKEv2パケットの分析

といったポイントでIKEv2に対する理解を深め

  • SAMSUN Galaxy Note20 Ultra 5G / Android 13
  • T-Link ER605 VPNルータ

にどんな暗号化アルゴリズム整合性保証アルゴリズム疑似乱数関数ディフィー・ヘルマングループが実装されているのかを詳細に調査した結果をご紹介します。

IKEv2/IPSec プロトコルの概要

IKEv2/IPSec は、インターネット上の 2 つのエンドポイント間に安全な VPN (仮想プライベート ネットワーク) 接続を設定するために使用されるセキュリティ プロトコルで、IKEv2が確立したセキュリティアソシエーションをIPSecが利用するという関係になっています。

セキュリティ アソシエーション(Security Association)」は、通信セッションの暗号化や認証などのセキュリティ機能を提供するための概念です。

一般的に対向する2つのノード(例えば、ネットワーク上の2つのコンピュータ)が通信を確立する際には事前に相互に認証を行い、セキュリティアソシエーションを確立します。

このセキュリティアソシエーションを使うことで、両者の通信セッション中に送受信されるデータを暗号化し、双方のノード間でのみ秘密が確保されるという訳です。

またセキュリティアソシエーションに基づき、通信中に改ざんや偽装されたデータを検知することも可能です。

IPSec とは何か

この IPSec (Internet Protocol Security) は、 OSI (Open Systems Interconnection) 参照モデルのネットワーク層で動作するプロトコルであり、ネットワーク層を使用するすべてのアプリケーションとプロトコルに対し、エンドツーエンドの暗号化とデータの整合性検証を提供します。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
OSI参照モデルとTCP/IPの関係

IKEv2 とは何か

またIKEv2 (Internet Key Exchange version 2) は、元の IKE v1プロトコルの後継プロトコルでIPSec 接続に先立ち必要なセキュリティ アソシエーションを確立するために使用されるプロトコルで

によって定義されています。

IKEv2のプロトコルシーケンス

IKEv2のプロトコルシーケンスは次のようになっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
しらかば堂

“IKEv2″では、「クライアント」と「サーバー」の代わりに「イニシエータ」と「レスポンダー」という用語が使用されます。

これは、IKEv2がピア・ツー・ピア・プロトコルであり、通信する2つのエンドポイントの間に固定されたクライアント・サーバーの関係がないためです。

フェーズ1 IKE_SA_INIT交換 要求 イニシエーターは接続のための暗号化アルゴリズムやその他のパラメータを提案する最初のメッセージをレスポンダーに送信します。
応答 レスポンダーはイニシエーターからの提案をもとにどの提案を受けるか、あるいは受けないかを決定し、これをレスポンダーからの提案としてイニシエーターに応答します。
IKE_AUTH交換 要求 イニシエーターはレスポンダーへ認証要求を送信し、レスポンダーは事前共有鍵、証明書等をを使用してイニシエーターを認証します。
応答 イニシエーターが認証された後、レスポンダーは接続に使用する暗号化キーと整合性キーなどの追加情報をイニシエーターに送信します。
フェーズ 2 CREATE_CHILD_SA交換 要求 イニシエーターはレスポンダーに対しChild SA作成要求メッセージを送信します。このメッセージには、新しいChild SAが利用する暗号化、認証アルゴリズム、SAの期間等の関連情報の提案が含まれます
応答 レスポンダーは、イニシエーターから提案されたパラメータを受け入れるか拒否するかを決定し、受け入れる場合、合意されたパラメータを含む応答メッセージをイニシエーターに送信します。

ピア・ツー・ピア・プロトコル(P2Pプロトコル)は、ネットワーク上の各ノードが同等の役割を持ち、相互に通信を行うプロトコルのことです。P2Pプロトコルでは、各ノードがデータを共有し、リソースを相互に利用することができます。

CREATE_CHILD_SA交換までが完了すると、イニシエーターとレスポンダー間に新しいChild SAが確立され、実際のデータトラフィックを保護するために使用できるようになります。

イニシエーターとレスポンダーは、CREATE_CHILD_SA交換で確立されたパラメータとキーを使用してデータトラフィックを交換できます。

Child SA(セキュリティアソシエーション)は、IPSec(Internet Protocol Security)で使用されるセキュリティメカニズムであり、2つのエンドポイント間の実際のデータトラフィックを保護するために使用されます。

Child SAには限られた有効期間があり、期限が切れた場合は新しいChild SAに置き換える必要があります。

IKEv2 パケットフォーマット

IKEv2 のパケットフォーマットはとても複雑ですが

に詳細な説明を見ることが出来ます。

ここではWireSharkのパケット解析結果を読み解くのに必要な部分に絞り紹介します。

IKEv2 ヘッダー

全てのIKEv2パケットの先頭に固定長で位置するIKEv2ヘッダーは次のような構造になっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
IKEv2ヘッダー

 これらのフィールドの意味は次のようになります。

  • IKE SA initiater’s SPI: IKEイニシエータのSPIです。
  • IKE SA responder’s SPI: IKEレスポンダーのSPIです
  • Next Payload:ヘッダーの直後に続くペイロードのタイプを示しています。
  • MjVer:使用中のIKEプロトコルのメジャーバージョンを示します。このバージョンのIKEに基づく実装では、メジャーバージョンは2です。
  • MnVer:使用中のIKEプロトコルのマイナーバージョンを示します。このバージョンのIKEに基づく実装は、マイナーバージョンは0です。
  • Exchange Type:使用される以下のようなメッセージ交換の種類を示します。
    • IKE_SA_INIT(34)
    • IKE_AUTH(35)
    • CREATE_CHILD_SA(36)
    • INFORMATIONAL(37)
  • Flags:メッセージの付加情報を“XXRVIXXX “という8ビット列で表します。
  • Message ID:紛失パケットの再送信と要求と応答の照合を制御し、メッセージ リプレイ攻撃を防止するために使用されます。
  • Length:メッセージ全体の長さ (ヘッダーとすべてのペイロードを含む) を示します。

 これらのフィールドの意味は次のようになります。

  • IKE SA initiater’s SPI: IKEイニシエータのSPIです。
  • IKE SA responder’s SPI: IKEレスポンダーのSPIです
  • Next Payload:ヘッダーの直後に続くペイロードのタイプを示しています。
  • MjVer:使用中のIKEプロトコルのメジャーバージョンを示します。
  • MnVer:使用中のIKEプロトコルのマイナーバージョンを示します。
  • Exchange Type:使用される以下のようなメッセージ交換の種類を示します。
    • IKE_SA_INIT(34)
    • IKE_AUTH(35)
    • CREATE_CHILD_SA(36)
    • INFORMATIONAL(37)
  • Flags:メッセージの付加情報を”XXRVIXXX “という8ビット列で表します。
  • Message ID:紛失パケットの再送信と要求と応答の照合を制御し、メッセージ リプレイ攻撃を防止するために使用されます。
  • Length:メッセージ全体の長さ (ヘッダーとすべてのペイロードを含む) を示します。

SPI (Security Parameter Indexes) は、エンドポイント (イニシエーターとレスポンダー) 自身が選択した接続固有の識別子です。着信 IKE パケットは、パケットの SPIのみを使用してIKE SA にマップされます 。ピアごとに複数のセッションが可能です。最初の IKE 交換の最初のメッセージで、イニシエーターはレスポンダーの SPI 値をゼロに設定します。

Fragsのビットの意味は次の通り

R:このメッセージが同じメッセージ ID を含むメッセージへの応答であることを示します。
V: 送信時にこのビットをクリアする必要があり、着信メッセージでは無視する必要があります。
I :イニシエーターは1を設定し、レスポンダーハこれをクリアします。
X:送信時にこのビットをクリアする必要があり、着信メッセージでは無視する必要があります。

IKEv2 で定義されているパラメータの詳細については
Internet Key Exchange Version 2 (IKEv2) Parameters
を参照してください。

IKEv2ペイロード

IKEv2ヘッダに続く可変長のペイロードは次のような構造になっています。

ペイロードとは、パケットの実際のデータを含む可変長セクションです。各ペイロードにはタイプと長さのフィールドがあり、その後にペイロード固有のデータが続きます。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
IKEv2ペイロード

これらのフィールドの意味は次のようになります。

  • Next Payload:メッセージ内の次のペイロードのタイプの識別子です。現在のペイロードがメッセージの最後の場合、このフィールドは 0 になります。常にメッセージの最後のペイロードでなければならない暗号化されたペイロードは例外です。現在定義されている主なペイロードは次のとおりです。
    • Security Association(33):セキュリティ アソシエーションに対して提案または確立されたパラメータが含まれます
    • Key Exchange(34):Diffie-Hellman鍵交換で使用する公開鍵が含まれています。
    • Nonce:(40):通信の暗号化において、暗号鍵を生成するためのランダムな値。
    • Notify(41):通信の状態やエラーを相手先に伝えるための通知。
  • C:イニシエータとレスポンダ間のペイロード対する制御に使用します。
  • Reserved:予備
  • Payload Length:ペイロード ヘッダーを含む、現在のペイロードのオクテット単位の長さです。

IKEv2 の Security Association ペイロード

IKEv2ヘッダに続くペイロードがSecurity Association(33)のときのペイロードは次のような構造になっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
IKEv2 Security Association ペイロード

これらのフィールドの意味は次のようになります。

  • Last Substruc:これがSAの最後の提案かどうかを指定します。これが最後の提案サブ構造である場合、このフィールドの値は0で、提案サブ構造がさらにある場合、値は2です。
  • Reserved:ゼロとして送信する必要があります。
  • Proposal Length:このプロポーザルの長さです。
  • Proposal Num:提案番号です。提案が行われるとき、SAペイロードの最初の提案番号は1でなければならず(MUST)、後続の提案は前の提案よりも1つ多い必要があります(2つの提案のORを示します)。プロポーザルが受け入れられるとき、SAペイロードのプロポーザル番号は、受け入れられた送信済みプロポーザルの番号と一致する必要があります。
  • Protocol ID:IPsecプロトコル識別子を指定します。
    • IKE(1)
    • AH(2)
    • ESP(3)
  • SPI Size:最初のIKE SAネゴシエーションの場合、このフィールドはゼロとして送信する必要があります。
  • Num Trans forms:この提案のトランスフォームの数を指定します。

それぞれの Security Association ペイロードには

  • 1 つ以上のProposal(提案) が含まれ
    • さらにそのProposal(提案)のそれぞれには 1 つ以上のTransform(暗号化通信において暗号アルゴリズムを選択するための手順) が含まれ
      • さらにそのTransformのそれぞれに 1 つ以上のAttribute 情報が含まれる

というような複雑なネスト構造になっています。

Security Association ペイロード の Transform

Security Association ペイロード の Transform は次のような構造になっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
Transform
  • Last Substruc:これがプロポーザルの最後の変換部分構造であるかどうかを指定します。これが最後の変換サブ構造である場合、このフィールドの値は0であり、さらに変換サブ構造がある場合、値は3です。
  • Reserved:ゼロとして送信する必要があります。
  • Transform Length:ヘッダーと属性を含む変換サブ構造の長さ(オクテット単位)
  • Transform Type:この変換で指定されている変換のタイプ。異なるプロトコルは、異なる変換タイプをサポートします。
    • EncryptionAlgorithm(ENCR)(1):暗号化アルゴリズム
    • PseudorandomFunction(PRF)(2):疑似乱数関数
    • IntegrityAlgorithm(INTEG)(3):整合性保証アルゴリズム
    • Diffie-HellmanGroup(D-H)(4):ディフィー・ヘルマングループ
  • Transform ID:提案されている変換タイプのインスタンス値で Transform Type と Transform ID の関係は以下のようになっています。
Transform Type Transform ID 説明
EncryptionAlgorithm(ENCR)(1) ENCR_DES_IV64(1)
ENCR_DES(2)
ENCR_3DES(3)
ENCR_RC5(4)
ENCR_IDEA(5)
ENCR_CAST(6)
ENCR_BLOWFISH(7)
ENCR_3IDEA(8)
ENCR_DES_IV32(9)
ENCR_NULL(11)
ENCR_AES_CBC(12)
ENCR_AES_CTR(13)

暗号化アルゴリズムは、データを暗号化するための数学的手順のことです。暗号化アルゴリズムを使用すると、データを平文から暗号文に変換し、第三者がデータを読み取ることができなくなります。一般的に、暗号化アルゴリズムは、鍵を使用してデータを暗号化することができます。暗号化アルゴリズムは、コンピューターセキュリティや通信プロトコルなどの分野で広く使用されています。

PseudorandomFunction(PRF)(2) PRF_HMAC_MD5(1)
PRF_HMAC_SHA1(2)
PRF_HMAC_TIGER(3)

疑似乱数関数は、ランダムな数値を生成するための関数の一種で、完全にランダムな数列を生成するのではなく、ある程度予測可能な数列を生成します。
疑似乱数関数は、デジタル署名や暗号化などのセキュリティプロトコルに使用されます。

IntegrityAlgorithm(INTEG)(3) NONE(0)
AUTH_HMAC_MD5_96(1)
AUTH_HMAC_SHA1_96(2)
AUTH_DES_MAC(3)
AUTH_KPDK_MD5(4)
AUTH_AES_XCBC_96(5)

整合性保証アルゴリズムは改ざんされたデータの検出に使用されます。また、データの完全性を保証するためにも使用されます。

Diffie-HellmanGroup(D-H)(4) NONE(0)
768-bitMODPGroup(1)
1024-bitMODPGroup(2)
1536-bitMODPGroup(5)
2048-bitMODPGroup(14)
3072-bitMODPGroup(15)
4096-bitMODPGroup(16)
6144-bitMODPGroup(17)
8192-bitMODPGroup(18)
ディフィー・ヘルマングループは、公開鍵暗号の一種で、暗号鍵の共有に使用されるグループです。ディフィー・ヘルマングループは、2つのユーザーが安全に暗号鍵を共有するために使用されます。

Transform のAttributes

Transform の Attributes は1つ以上の次のような構造のデータです。この構造はAF(Attribute Format)の値により構造が変化します。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
  • AF(Attribute Format):データ属性がタイプ/長さ/値(TLV)フォーマットに従うか、短縮されたタイプ/値(TV)フォーマットに従うかを示します。 AFビットがゼロ(0)の場合、属性はTLV形式を使用します。
  • Attribute Type:属性のタイプごとの一意の識別子です。
    • Key Length (in bits)(14)
  • Attribute Value:属性タイプに関連付けられた属性の値。

IKEv2 の Notify ペイロード

IKEv2ヘッダに続くペイロードがNotify(41)のときのペイロードは次のような構造になっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
Notify ペイロード

これらのフィールドの意味は次のようになります。

  • Protocol ID:この通知が、SPIフィールドにSPIが指定されている既存のSAに関する場合、このフィールドはそのSAのタイプを示します。子SAに関する通知の場合、このフィールドには、(2)AHを示すか、または(3)ESPを示す必要があります。このドキュメントで定義されている通知のうち、SPIはINVALID_SELECTORS、REKEY_SA、およびCHILD_SA_NOT_FOUNDにのみ含まれています。 SPIフィールドが空の場合、このフィールドはゼロとして送信する必要があり、受信時に無視する必要があります。
  • SPI Size:IPsecプロトコルIDによって定義されたSPIのオクテット単位の長さ、またはSPIが適用されない場合はゼロ。 IKE SAに関する通知の場合、SPIサイズはゼロでなければならず、フィールドは空でなければなりません。
  • Notify Message Type:通知メッセージのタイプを指定します。
    • NO_PROPOSAL_CHOSEN(14):提案された暗号スイートはどれも受け入れられませんでした。
  • ProSecurity Parameter Index(SPI):セキュリティパラメータインデックス。
  • Notification Data:通知メッセージタイプに加えて送信されるステータスまたはエラーデータ。このフィールドの値はタイプ固有です

IKEv1ではなくIKEv2が求められる理由

IKEv1 の弱点

IKEv1には以下に示すセキュリティ上の弱点があるとされています。

  1. クラッキング攻撃への脆弱性: IKEv1には、暗号鍵を推測することによって認証や暗号化を回避することができる、クラッキング攻撃への脆弱性があります。また、IKEv1の鍵交換方式には、暗号化アルゴリズムに対する攻撃に対しても脆弱性があるとされています。
  2. 暗号化方式の制限: IKEv1には、暗号化方式に関する制限があります。具体的には、DES暗号など、現代の暗号化技術に比べて脆弱な暗号化方式が使用される場合があります。
  3. NATトラバーサルへの非対応: IKEv1は、NATトラバーサルに対応していません。これにより、IKEv1の通信は、NATを介した通信が必要な場合に問題が発生することがあります。
  4. DoS攻撃への脆弱性: IKEv1は、データパケットの認証が不十分であるため、DoS(Denial of Service)攻撃に脆弱です。攻撃者は、IKEv1の通信を遮断するために、偽のパケットを送信することができます。

これらは、IKEv1が初期のバージョンであることや、現代のセキュリティ要件に対応するための十分な改良が行われていなかったことによるものです。そのため、IKEv2のような、より強力なセキュリティ機能を備えたプロトコルが開発されたのです。

クラッキング攻撃は暗号化されたデータを解読することを目的とした攻撃で、攻撃者は暗号化されたデータを解読することで機密情報を盗み出します。

クラッキング攻撃には、以下のようなさまざまな種類があります。

  1. 辞書攻撃: 辞書攻撃は、事前に作成された辞書や一般的なパスワードのリストを使って、暗号化されたパスワードを解読する攻撃です。
  2. Brute-force攻撃: Brute-force攻撃は、全ての可能性のあるパスワードを試す攻撃です。攻撃者は、パスワードの文字数、文字種、組み合わせを試し、暗号化されたパスワードを解読します。
  3. キャプチャ攻撃: キャプチャ攻撃は、暗号化された通信をキャプチャし、解読する攻撃です。攻撃者は、パケットをキャプチャして、暗号化されたデータを解読し、機密情報を盗み出します。

NAT(Network Address Translation)トラバーサルは、プライベートIPアドレスを使用しているネットワーク内のコンピューターが、インターネット上の別のコンピューターやサーバーに直接アクセスするための技術です。

通常、プライベートIPアドレスを使用するネットワーク内のコンピューターは、NATによってグローバルIPアドレスに変換されます。

このためインターネット上の別のコンピューターやサーバーは、通常プライベートIPアドレスを認識できず、直接アクセスすることができません。

NATトラバーサルは、この問題を解決するための技術であり、以下の2つの手法があります。

  1. UPnP(Universal Plug and Play): UPnPは、NATデバイスのポートマッピングを自動的に設定するためのプロトコルです。UPnPをサポートするNATデバイスは、プライベートIPアドレスを使用しているコンピューターが外部ネットワークに接続されると、自動的にポートマッピングを設定し、外部からのアクセスを可能にします。
  2. STUN(Session Traversal Utilities for NAT): STUNは、NATデバイスを介した通信を可能にするためのプロトコルです。STUNは、STUNサーバーを使用して、クライアントのプライベートIPアドレスを検出し、NATデバイスのポートマッピングを設定します。

IKEv2が求められる理由

IKE(Internet Key Exchange)は、前述のようにIPsecのためのセキュリティアソシエーションを確立するプロトコルですが、IKEv1は初期のバージョンであり、IKEv2はその後に開発されたバージョンです。

IKEv2が必要とされる主な理由は、以下のようなものがあるとされています。

  1. 拡張性: IKEv2は、より柔軟で拡張性の高いプロトコルであり、さまざまなセキュリティポリシーや新しい認証方式などをサポートしています。これにより、IKEv2は、複雑なネットワーク環境や、新しいセキュリティ要件にも対応できます。
  2. セキュリティ: IKEv2は、IKEv1よりもセキュリティの向上が図られています。IKEv2では、暗号化アルゴリズムや、認証方式などの改善が行われています。また、IKEv2は、より安全で信頼性の高いトランスポートプロトコルであるUDPを使用します。
  3. パフォーマンス: IKEv2は、より効率的なプロトコルであり、より高速なセッション確立と高速なデータ転送を可能にします。これは、IKEv2が、より軽量で、より効率的なパケット処理を行うことができるためです。
  4. NATトラバーサル: IKEv2は、NATトラバーサルのための改善が行われています。これにより、IKEv2は、NATデバイスを介した通信に対応できます。

以上のような理由から、IKEv2は、IKEv1よりも高いセキュリティ、拡張性、パフォーマンス、NATトラバーサル対応能力を提供し、現代のネットワークセキュリティに必要な要件を満たすプロトコルとなっています。

対向装置のVPN接続パラメータ

Galaxy Note 20 Ultra 5G のIKEv2/IPSec VPN接続パラメータ

Galaxy Note 20 Ultra 5G のVPN 接続パラメータは以下の通りです。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
Galaxy Note 20 Ultra 5G
VPN パラメータ

同機の場合、IKEv2を選択可能なオプションは

  • IKEv2/IPSec MSCHAPv2
  • IKEv2/IPSec PSK
  • IKEv2/IPSec RSA

の3種類がありますが、ここでは以下の記事で利用した L2TP/IPSec PSK に近い IKEv2/IPSec PSK を選択しています。

【自宅VPN構築】(その6) AndroidスマホにVPN(PPTP、L2TP/IPSec)設定をする

MSCHAPv2は、Microsoftが開発した認証プロトコルの一種であり、パスワードを使用した認証を提供するために使用されます。MSCHAPv2は、PPP(Point-to-Point Protocol)セッションにおいて、クライアントがPPPサーバーに対して認証を行う場合に使用されます。

MSCHAPv2では、パスワードに加えて、チャレンジ・レスポンス方式を使用して、認証の安全性を向上させます。具体的には、クライアントとサーバー間でランダムなチャレンジが送信され、クライアントはそのチャレンジに基づいてレスポンスを生成し、サーバーがそのレスポンスを確認することによって認証が行われます。

MSCHAPv2は、Windowsで広く使用されており、Wi-Fiの認証や、VPN接続など、様々なアプリケーションで使用されています。また、MSCHAPv2は、安全性が高く、実装が簡単であるため、他の認証プロトコルと比較して比較的広く使用されています。

PSKは、Pre-Shared Key(事前共有鍵)の略称で、暗号化に使用される鍵の一種です。PSKでは、事前に双方で共有された鍵を使用するため、通信の暗号化や認証が行われます。

PSKを使用する場合、通信を行う双方は、あらかじめ同じ鍵を共有しておく必要があります。通常、鍵は安全な方法で共有されます。例えば、あらかじめ交換されたメールや直接会って渡されたプリントなどです。

PSKは、暗号化の手順が簡単であるため、実装が容易で、小規模なネットワークに適しています。例えば、家庭内のWi-Fiルーターなどでよく使用されます。ただし、大規模なネットワークでは、鍵の共有が難しい場合があり、セキュリティリスクが高くなる可能性があります。そのため、大規模なネットワークでは、PSKよりも複雑な鍵共有方式を採用することが一般的です。

RSAは、暗号技術の一種で、公開鍵暗号方式の代表的なアルゴリズムの一つです。RSAは、1977年にRon Rivest、Adi Shamir、Leonard Adlemanの3人によって開発されました。

RSAでは、鍵のペアである公開鍵と秘密鍵を使用して暗号化と復号を行います。暗号化する際には、相手先の公開鍵を使用して暗号化を行い、復号する際には、自分自身の秘密鍵を使用して復号を行います。公開鍵は誰でも知ることができますが、秘密鍵は本人しか知りません。

RSAは、デジタル署名やSSL/TLS通信など、様々な分野で使用されています。RSAは、長い鍵長を使用することで、非常に高い暗号強度を実現できます。ただし、鍵長が長いため、暗号化や復号に多大な計算リソースが必要であり、処理が遅くなる可能性があります。また、RSAには量子コンピュータに対する脆弱性が指摘されており、今後の研究が求められています。

TP-Link ER605 のIKEv2/IPSec VPN接続パラメータ

この Tp-Link ER605 を IKEv2/IPSec で設定しようとした場合の IKE Phase1 の許容プロポーザルを確認する画面は以下のようになっています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
TP-Link ER605 VPN ルーターの IKEv2/IPSec VPN 接続パラメータ設定画面1
【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
TP-Link ER605 VPN ルーターの IKEv2/IPSec VPN 接続パラメータ設定画面2

つまり Proposal の選択リストは次の組み合わせを’ー’で連結したものをまとめて設定するようになっており、この設定では

  • sha2-AES256-DH14

を選択しています。

入力カテゴリ 略号 意味
第1項目 整合性保証アルゴリズム MD5 メッセージダイジェスト5 – メッセージの整合性と認証に使用される暗号化ハッシュ関数
sha1 セキュアハッシュアルゴリズム1 – データのセキュリティ確保とメッセージの整合性を確認するために使用される暗号化ハッシュ関数
sha2 セキュアハッシュアルゴリズム2 – データのセキュリティ確保とメッセージの整合性を確認するために使用される暗号化ハッシュ関数のファミリー。
第2項目 暗号化アルゴリズム DES データ暗号化規格 – 古い暗号化アルゴリズムで、現在はセキュリティが低いとされています。
3DES トリプルデータ暗号化規格 – DESの改良版で、3回の暗号化ラウンドを使用して、DESよりも優れたセキュリティを提供します。
AES128 Advanced Encryption Standard 128 – 128ビットの鍵を使用してデータを保護する暗号化アルゴリズム。
AES192 Advanced Encryption Standard 192 – 192ビットの鍵を使用してデータを保護する暗号化アルゴリズム。
AES256 Advanced Encryption Standard 256 – 256ビットの鍵を使用してデータを保護する暗号化アルゴリズム。
第3項目 ディフィー・ヘルマングループ DH1 Diffie-Hellman 1 – 768ビットの鍵を使用する鍵共有アルゴリズム。
DH2 Diffie-Hellman 2 – 1024ビットの鍵を使用する鍵共有アルゴリズム。
DH5 Diffie-Hellman 5 – 1536ビットの鍵を使用する鍵共有アルゴリズム。
DH14

Diffie-Hellman 14 – 2048ビットの鍵を使用する鍵共有アルゴリズム。
DH15 Diffie-Hellman 15 – 3072ビットの鍵を使用する鍵共有アルゴリズム。
DH16 Diffie-Hellman 16 – 4096ビットの鍵を使用する鍵共有アルゴリズム。

WireShark でのパケットキャプチャ

WireShark とは

WireShark は、広く使用されているオープンソースのネットワーク プロトコル アナライザーで、これを用いることでネットワーク トラフィックをリアルタイムでキャプチャ分析、および表示することができます。

具体的には、有線および無線ネットワーク、イーサネット、Bluetooth、USB など、さまざまなソースからネットワーク トラフィックをキャプチャ、分析し、TCP、UDP、HTTP、FTP、SMTP、ISAKMP などの多くのプロトコルをデコードして表示できます。

具体的なWireSharkの使い方に関しては以下の記事が参考になります。

IKEv2 パケットキャプチャ環境

本記事でご紹介するIKEv2 パケットキャプチャ環境は次の通りです。

Galaxy Note 20 Ultra 5G からの IKEv2/IPSec 接続要求パケットは無線LANルータを経由してT-Link ER605へ送信されますが、その接続要求をT-Link ER605と同じサブネットに配置したWindows10PCにインストールした WhireSharkでモニタしています。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
IKEv2 パケットキャプチャ環境

WireSharkによるIKEv2パケットの分析

UDPプロトコルレベルの分析

上記の接続環境で Galaxy Note 20 Ultra 5GT-Link ER605 間の IKEv2 通信状況をWireShark でキャプチャすると以下のようになっていました。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
WireShark による Galaxy Note 20 G5 と T-Link ER605 間の IKEv2/IPsec VPN のパケットキャプチャ状況

このぼかしの入っている2つのIPアドレスは

  • 153.236.xxx.xxx : Garaxy Note 20 Ultra 5G が一時的にアサインされた公開IPアドレス
  • 192.168.yyy.yyy:T-Link ER605 の自宅内LANでアサインされた固定IPアドレス

のようなのでこのキャプチャ画像は Garaxy Note 20 Ultra 5GT-Link ER605 が以下のように ISAKMP プロトコルでメッセージをやり取りしている状況と推定できます。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
しらかば堂

IKEv2は、ISAKMP(Internet Security Association and Key Management Protocol)の後継プロトコルで IKEv2 と同じ ポート番号 500 を使用するため、WireShark のキャプチャ上 ISAKMP(=IKEv2)と表示されます。

ISAKMPは、「Internet Security Association and Key Management Protocol」の略で、2つのノード間で使用される認証鍵交換暗号化アルゴリズムの調整を行い、セキュリティアソシエーションの管理を行うなど、IKEのための基本的な機能をするためのプロトコルで

で定義されています。

IKEv2(ISAKMP)レベルの分析

ISAKMP(IKESAINIT Request:要求)

WireShark 上で先ほどの ISAKMP(IKESAINIT Request:要求) をクリックして展開し、UDPプロトコル(ポート番号500番)の部分を展開すると以下のように実際の ISKSAINIT の中身を確認することができます。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
WireShark による Galaxy Note 20 G5 の IKEv2/IPsec VPN の要求パケットキャプチャ状況

このメッセージ全体をこのテキストとしてコピーしたものが以下になります。

User Datagram Protocol, Src Port: 60119, Dst Port: 500
    Source Port: 60119
    Destination Port: 500
    Length: 660
    Checksum: 0x2d0d [unverified]
    [Checksum Status: Unverified]
    [Stream index: 371]
    [Timestamps]
        [Time since first frame: 0.000000000 seconds]
        [Time since previous frame: 0.000000000 seconds]
    UDP payload (652 bytes)
Internet Security Association and Key Management Protocol
    Initiator SPI: 0e09e05aa4fa0cb5
    Responder SPI: 0000000000000000
    Next payload: Security Association (33)
    Version: 2.0
    Exchange type: IKE_SA_INIT (34)
    Flags: 0x08 (Initiator, No higher version, Request)
    Message ID: 0x00000000
    Length: 652
    Payload: Security Association (33)
        Next payload: Key Exchange (34)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 244
        Payload: Proposal (2) # 1
            Next payload: Proposal (2)
            Reserved: 00
            Payload length: 136
            Proposal number: 1
            Protocol ID: IKE (1)
            SPI Size: 0
            Proposal transforms: 15
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): ENCR_AES_CBC (12)
                Transform Attribute (t=14,l=2): Key Length: 256
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): ENCR_AES_CBC (12)
                Transform Attribute (t=14,l=2): Key Length: 128
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA2_512_256 (14)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA2_384_192 (13)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA2_256_128 (12)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA1_96 (2)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_512 (7)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_384 (6)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_256 (5)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA1 (2)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048-bit MODP Group with 256-bit Prime Order Subgroup (24)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 384-bit random ECP group (20)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 256-bit random ECP group (19)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048 bit MODP group (14)
            Payload: Transform (3)
                Next payload: NONE / No Next Payload  (0)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 1536 bit MODP group (5)
        Payload: Proposal (2) # 2
            Next payload: NONE / No Next Payload  (0)
            Reserved: 00
            Payload length: 104
            Proposal number: 2
            Protocol ID: IKE (1)
            SPI Size: 0
            Proposal transforms: 11
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): AES-GCM with a 16 octet ICV (20)
                Transform Attribute (t=14,l=2): Key Length: 256
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): AES-GCM with a 16 octet ICV (20)
                Transform Attribute (t=14,l=2): Key Length: 128
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_512 (7)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_384 (6)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_256 (5)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA1 (2)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048-bit MODP Group with 256-bit Prime Order Subgroup (24)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 384-bit random ECP group (20)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 256-bit random ECP group (19)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048 bit MODP group (14)
            Payload: Transform (3)
                Next payload: NONE / No Next Payload  (0)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 1536 bit MODP group (5)
    Payload: Key Exchange (34)
        Next payload: Nonce (40)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 264
        DH Group #: 2048-bit MODP Group with 256-bit Prime Order Subgroup (24)
        Reserved: 0000
        Key Exchange Data: 433f69c8b258b92ffd419afb35d51d0b20085f5772f2505ee07786b9f01db9fd6912e544…
    Payload: Nonce (40)
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 36
        Nonce DATA: 961c6abd35f27652aa1d465e686369b2d6714d9d2d149aa30a90ff587848f7f1
    Payload: Notify (41) - NAT_DETECTION_SOURCE_IP
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 28
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: NAT_DETECTION_SOURCE_IP (16388)
        Notification DATA: 801dc9f210c848084a0e96b1d58675e083df6e79
    Payload: Notify (41) - NAT_DETECTION_DESTINATION_IP
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 28
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: NAT_DETECTION_DESTINATION_IP (16389)
        Notification DATA: 7a8811cffad5f0787c2f8ba3c917c382e2b74770
    Payload: Notify (41) - SIGNATURE_HASH_ALGORITHMS
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 16
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: SIGNATURE_HASH_ALGORITHMS (16431)
        Notification DATA: 0002000300040005
        Supported Signature Hash Algorithm: SHA2-256 (2)
        Supported Signature Hash Algorithm: SHA2-384 (3)
        Supported Signature Hash Algorithm: SHA2-512 (4)
        Supported Signature Hash Algorithm: Identity (5)
    Payload: Notify (41) - REDIRECT_SUPPORTED
        Next payload: NONE / No Next Payload  (0)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 8
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: REDIRECT_SUPPORTED (16406)
        Notification DATA: <MISSING>

 

 

ISAKMP(IKESAINIT Responce:応答)

同様にWireShark 上で先ほどの ISAKMP(IKESAINIT Responcce:応答) 側をクリックして展開し、UDPプロトコル(ポート番号500番)の部分を展開すると以下のように実際の ISKSAINIT の中身を確認することができます。

【自宅VPN構築】#10 Galaxy Note 20 Ultra 5G の IKEv2/IPSec パケットをWireSharkで分析する
WireShark による T-Link ER605 からの IKEv2/IPsec VPN の応答パケットキャプチャ状況

こちらをメッセージ全体をこのテキストとしてコピーしたものが以下になります。

User Datagram Protocol, Src Port: 500, Dst Port: 60119
    Source Port: 500
    Destination Port: 60119
    Length: 44
    Checksum: 0x1fab [unverified]
    [Checksum Status: Unverified]
    [Stream index: 371]
    [Timestamps]
        [Time since first frame: 0.002587000 seconds]
        [Time since previous frame: 0.002587000 seconds]
    UDP payload (36 bytes)
Internet Security Association and Key Management Protocol
    Initiator SPI: 0e09e05aa4fa0cb5
    Responder SPI: 9a2d65bf64c8f6b0
    Next payload: Notify (41)
    Version: 2.0
        0010 .... = MjVer: 0x2
        .... 0000 = MnVer: 0x0
    Exchange type: IKE_SA_INIT (34)
    Flags: 0x20 (Responder, No higher version, Response)
        .... 0... = Initiator: Responder
        ...0 .... = Version: No higher version
        ..1. .... = Response: Response
    Message ID: 0x00000000
    Length: 36
    Payload: Notify (41) - NO_PROPOSAL_CHOSEN
        Next payload: NONE / No Next Payload  (0)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 8
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: NO_PROPOSAL_CHOSEN (14)
        Notification DATA: <MISSING>

このキャプチャ結果をIKEv2のフォーマットにあてはめて分析するとGalaxy Note 20 Ultra 5G からのIKEINIT Request による2つの提案は T-Link ER605 から受け入れられなかった()ことがわかりました。

T-Link ER605 をイニシエータモードで設定した場合のパケット(参考情報)

問題切り分けのためにこの T-Link ER605 をIKEv2/IPSec VPN のイニシエータモード(起動側)で設定して、その要求フォーマットを同様に WireShark でキャプチャすると、以下のようになりました。

User Datagram Protocol, Src Port: 500, Dst Port: 500
    Source Port: 500
    Destination Port: 500
    Length: 500
    Checksum: 0xfc9e [unverified]
    [Checksum Status: Unverified]
    [Stream index: 3494]
    [Timestamps]
        [Time since first frame: 18.594630000 seconds]
        [Time since previous frame: 5.331628000 seconds]
    UDP payload (492 bytes)
Internet Security Association and Key Management Protocol
    Initiator SPI: 5feb048d8e220dc5
    Responder SPI: 0000000000000000
    Next payload: Security Association (33)
    Version: 2.0
        0010 .... = MjVer: 0x2
        .... 0000 = MnVer: 0x0
    Exchange type: IKE_SA_INIT (34)
    Flags: 0x08 (Initiator, No higher version, Request)
        .... 1... = Initiator: Initiator
        ...0 .... = Version: No higher version
        ..0. .... = Response: Request
    Message ID: 0x00000000
    Length: 492
    Payload: Security Association (33)
        Next payload: Key Exchange (34)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 92
        Payload: Proposal (2) # 1
            Next payload: Proposal (2)
            Reserved: 00
            Payload length: 44
            Proposal number: 1
            Protocol ID: IKE (1)
            SPI Size: 0
            Proposal transforms: 4
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): ENCR_AES_CBC (12)
                Transform Attribute (t=14,l=2): Key Length: 256
                    1... .... .... .... = Format: Type/Value (TV)
                    Type: Key Length (14)
                    Value: 0100
                    Key Length: 256
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA2_256_128 (12)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA2_256 (5)
            Payload: Transform (3)
                Next payload: NONE / No Next Payload  (0)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048 bit MODP group (14)
        Payload: Proposal (2) # 2
            Next payload: NONE / No Next Payload  (0)
            Reserved: 00
            Payload length: 44
            Proposal number: 2
            Protocol ID: IKE (1)
            SPI Size: 0
            Proposal transforms: 4
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 12
                Transform Type: Encryption Algorithm (ENCR) (1)
                Reserved: 00
                Transform ID (ENCR): ENCR_AES_CBC (12)
                Transform Attribute (t=14,l=2): Key Length: 256
                    1... .... .... .... = Format: Type/Value (TV)
                    Type: Key Length (14)
                    Value: 0100
                    Key Length: 256
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Integrity Algorithm (INTEG) (3)
                Reserved: 00
                Transform ID (INTEG): AUTH_HMAC_SHA1_96 (2)
            Payload: Transform (3)
                Next payload: Transform (3)
                Reserved: 00
                Payload length: 8
                Transform Type: Pseudo-random Function (PRF) (2)
                Reserved: 00
                Transform ID (PRF): PRF_HMAC_SHA1 (2)
            Payload: Transform (3)
                Next payload: NONE / No Next Payload  (0)
                Reserved: 00
                Payload length: 8
                Transform Type: Diffie-Hellman Group (D-H) (4)
                Reserved: 00
                Transform ID (D-H): 2048 bit MODP group (14)
    Payload: Key Exchange (34)
        Next payload: Nonce (40)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 264
        DH Group #: 2048 bit MODP group (14)
        Reserved: 0000
        Key Exchange Data: de65b79deb400d80e798dbb79b4f10e863d75b2906cedcf12f72803c135b3de8de014aa6…
    Payload: Nonce (40)
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 36
        Nonce DATA: 08dbc56e074bb64676e33e25e31b99c50feb3f0c2d2fcb447fa8dc036a36ec9a
    Payload: Notify (41) - NAT_DETECTION_SOURCE_IP
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 28
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: NAT_DETECTION_SOURCE_IP (16388)
        Notification DATA: b234bb18d568e552d11d83dc96347046847faff0
    Payload: Notify (41) - NAT_DETECTION_DESTINATION_IP
        Next payload: Notify (41)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 28
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: NAT_DETECTION_DESTINATION_IP (16389)
        Notification DATA: 748b33adc92e6ad396ca1fde4af33e157c5fb36d
    Payload: Notify (41) - SIGNATURE_HASH_ALGORITHMS
        Next payload: NONE / No Next Payload  (0)
        0... .... = Critical Bit: Not critical
        .000 0000 = Reserved: 0x00
        Payload length: 16
        Protocol ID: RESERVED (0)
        SPI Size: 0
        Notify Message Type: SIGNATURE_HASH_ALGORITHMS (16431)
        Notification DATA: 0001000200030004
        Supported Signature Hash Algorithm: SHA1 (1)
        Supported Signature Hash Algorithm: SHA2-256 (2)
        Supported Signature Hash Algorithm: SHA2-384 (3)
        Supported Signature Hash Algorithm: SHA2-512 (4)
Src Port: 500, Dst Port: 500

これを同様に整理すると T-Link ER605 からのIKEINIT Request には次の2つの提案を出しており、WireShark でのパケットモニタ状況を見る限り、Galaxy Note 20 Ultra 5G / Android 13 と T-Link ER605 は共通するIKEv2 オプションを持っているように見えます。

提案番号 提案タイプ 提案値
#1 ENCR(暗号化アルゴリズム) ENCR_AES_CBC (12)
INTEG(整合性保証アルゴリズム) AUTH_HMAC_SHA2_256_128 (12)
PRF(疑似乱数関数) PRF_HMAC_SHA2_256 (5)
D-H(ディフィー・ヘルマングループ) 2048 bit MODP group (14)
#2 ENCR(暗号化アルゴリズム) ENCR_AES_CBC (12)
INTEG(整合性保証アルゴリズム) AUTH_HMAC_SHA1_96 (2)
PRF(疑似乱数関数) PRF_HMAC_SHA1 (2)
D-H(ディフィー・ヘルマングループ) 2048 bit MODP group (14)

 

従って、現状何故  Galaxy Note 20 Ultra 5G / Android 13 からの IKE_SA_INIT Request 提案を T-Link ER605 が受け入れない(NO_PROPOSAL_CHOSEN)のか不明な状況となっています。

まとめと今後の方向性

本記事では

  • IKEv2/IPSecプロトコルの概要
  • IKEv1ではなくIKEv2が求められる理由
  • 対向装置の IKEv2/IPSec VPN 接続パラメータ
  • WireSharkでのパケットキャプチャ環境
  • WireSharkによるIKEv2パケットの分析

といった観点で紹介し

  • SAMSUN Galaxy Note20 Ultra 5G / Android 13
  • T-Link ER605 VPNルータ

にはどんな暗号化アルゴリズム整合性保証アルゴリズム疑似乱数関数ディフィー・ヘルマングループが実装されているのかを詳細に調査した結果をご紹介しました。

結果として

  • Galaxy Note 20 Ultra 5G / Android 13 と T-Link ER605 は共通するIKEv2 オプションを持っているように見えること
  • にもかかわらずGalaxy Note 20 Ultra 5G / Android 13 からの IKE_SA_INIT提案に対し、T-Link ER605 がこれを受け入れない(NO_PROPOSAL_CHOSEN)謎の挙動となっていること

が判明しました。

今後はベンダへの本件に関する問い合わせや、T-Link ER605に別途搭載されているOpenVPNの調査実装等の検討を進めたいと考えています。

本記事が同様の悩みを持たれている読者の方に少しでもお役に立てれば幸いです。