NymVPNの匿名モードとは？トラフィックを保護するNym mixnet

従来のバーチャルプライベートネットワーク（VPN）は、その名にもかかわらず、私たちのプライバシーを実際には保護していません。メタデータ収集、トラフィック分析、AIによる追跡と監視の進展に伴い、評判の良いVPNサービスであっても、その約束に関係なく、プライバシー保護は十分とは言えません。必要なのは、革新的なネットワーク設計を通じてプライバシーを守ることができる次世代のVPN技術です。

ここで登場するのがNymVPNです。このアプリが現在市場に出回っている他のVPNと異なるのは、「ミックスネットワーク（mixnet）」技術を統合してアプリの匿名モードを実現している点です。しかし、匿名モードを選択したとき、画面の裏では何が起こっているのでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/2534f9a0-9289-b8a7-907a-2d213b275132.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/7851d4bd-6bd6-72fc-563e-d250e6e0cff8.png)
このガイドでは、NymVPNの匿名モードを有効にした際、Nymがどのようにデータを処理し、mixnetを通じてルーティングするかをステップバイステップで説明します。

# 定義
まずは、いくつかの定義を明確にしましょう。

- **クライアント**: あなたのデバイス上で動作しているNymVPNアプリ。

- **Mixnet**: NymVPNの匿名モードを使用する際に通過するNymの全体のネットワークです。これは5つのホップでルーティングされ、ルートの始まりと終わりはgateway、中間の3つはmixnodesです。Mixnetには追加のネットワークプライバシー技術として、カバートラフィックやタイミング遅延が導入されています。

- **ホップ**: 複数区間の旅の中継地点のように、暗号化されたトラフィックをmixnetを通じてルーティングする5つのリレー（ゲートウェイまたはmixnodes）のいずれかです。

- **Entry Gateway**: データが最初に通過する5つのホップのうちの1つで、mixnetへのアクセスポイントです。匿名資格を検証し、データパケットを最初のmixnodeにルーティングし、応答メッセージの場合には前のmixnodeからのパケットを再びルーティングします。

- **Mixnode**: 独立して運営され、トラフィックをルーティングする際に「ミキシング」操作を行い、強力なユーザーの匿名性を提供するサーバーです。Mixnodesは完全に信頼不要で、mixnetを通過するトラフィックの内容、送信元、送信先を知らないまま処理します。

- **Exit Gateway**: Mixnetの最後のホップで、データパケットをパブリックウェブ上の目的地に転送します。また、mixnodesを介してmixnetを通過し、クライアントに戻される応答パケットも受け取ります。

- **Nymオペレーター**: 世界中でNymノードを運営する独立した個人やグループで、Nym Technologies SAが所有・運営していません。独自のNYMトークン経済により、Nymノードのオペレーターは、ユーザーに質の高いサービスを提供することで報酬を得ます。

## Mixnetルーティングの概要
Mixnetを通じたプライベートデータ伝送には、以下の8つの段階があります。

1. **データパケットの準備**
2. **パケットのSphinx暗号化**
3. **ネットワークカバートラフィックの導入**
4. **Entry Gatewayへの接続**
5. **Mixnetでのルーティング**
6. **Exit Gatewayとの接続**
7. **データの配信と再構成**
8. **Mixnetを介してクライアントへの応答**

それでは、各ステージをステップごとに見て、Mixnetがどのように機能するかを確認しましょう。

# ステップ1: パケットの準備
すべては、ウェブ上のどこにも接続する前に、あなたのデバイス上で始まります。NymVPNクライアントが匿名モードで接続されると、最初に行うのはデータをMixnet経由で送信するための準備です。

### Sphinxパケット
NymVPNは、データの全送信を複数のデータパケットに分割します。これらのパケットは次の特徴を持っています。

- サイズが均等であること
- 複数層の暗号化が施されていること

このため、パケットは途中で (1) 区別できず、(2) 読み取れない状態になります。Zcashのトランザクションであれ、プライベートなメールであれ、友人への個人的な画像であれ、すべてが匿名で高度にセキュアで、同一のパケット形式に処理されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/379cdccb-850b-e124-0d89-52d4e32f16f3.png)
例えば、10MBのファイルを2MBずつの5つの同一の暗号化されたパッケージに分割することができます。

これ自体はそれほど新しいものではありません。データ暗号化は通常、大量のデータを扱い、そのデータを複数のパケットに分割します。Sphinx以外の暗号化方式でも、均一なパケットサイズが求められることがあります。

Sphinxの特徴は、この均一なパケットサイズがミックスネットのコンテキストでどのように機能し、ネットワーク全体でのトラフィックパターンの分析を妨害するかにあります。

# トラフィック解析への耐性

トラフィック解析の目的は、送信者と受信者をトラフィックパターンを通じて結びつけることにあります。これは、パッケージの内容にアクセスすることではなく、最新の暗号化によって常に保護されているべきです。焦点は、メタデータの解析にあり、これによって、データが暗号化されていたり、従来のVPNによるプロキシサーバーやIPアドレスの隠蔽があっても、誰が誰と何をしているかを結びつけることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/21b04c78-2d11-2a75-b699-fc4f2d0b6d49.png)
送信者が通常のVPNを使用してオンライン活動にリンクされる方法は多数あります。監視者は、VPNサーバーに出入りするデータの入力と出力を分析するだけで、トラフィックパターンを把握することができます。

1つの方法は、パケットサイズそのものに関連しています。パケットサイズが異なる場合、サイズに基づいてパケットを比較的簡単に関連付けることができます。簡単な例を挙げると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/f4afdb50-10e0-063b-cfdd-a2d43366322d.png)
この場合、データ追跡は、あなたのIPアドレス（VPNが把握しているもの）を知らなくても、データの到着とその目的地をリンクすることができます。トラフィックのメタデータ（この場合、異なるパケットサイズなど）が明確なネットワーク上であれば、関連付けることができます。このため、VPNのIPアドレスの隠蔽は、あなたを十分に保護できない可能性があります。

**技術的注釈1**: Sphinxのデータパッケージは現在2KBに設定されています。これは非常に小さく、追加の復号化ステージにより遅延が増えますが、その代わりに重要な役割を果たします。それは、ミックスネット全体のトラフィック量を増加させ、結果としてすべてのユーザーの匿名性を高めることです。

**技術的注釈2**: 小さなメッセージを送信すると、デフォルトのパケットサイズを満たすために、パケットの残り部分がランダムなデータで埋められます。また、大きなメッセージは複数のパケットに分割されます。

結果として、外部からはすべてが同じように見えます。すべてが同じに見えることで、追跡が難しくなり、プライバシーが向上します。

### データミキシングの実現
以下で説明するように、ミックスネット内では、異なるユーザーのトラフィックのデータパケットを混ぜ合わせることが、ミックスノードの主要な機能の1つです。しかし、パケットサイズが同一でなければ、ミキシングは不可能です。

公平なゲームを確保するためにカードをシャッフルすることを考えてみてください。もしカードの形が異なったり、裏面に特徴的な画像があれば、プレイヤーはカードの表を見なくても、何のカードかを識別できてしまうでしょう。



# ステップ2: 暗号化
暗号化はオンラインデータセキュリティの基礎であり、すべてのVPNはトラフィックをルーティングする前に、ユーザーデータをデバイス上で暗号化するべきです。これにより、データが転送中であっても、あなたの行動や発言の内容が第三者、さらにはVPNサーバー自体にもアクセスできないように保護されます。

VPNルーティングにおける暗号化の機能について、さらに見ていきましょう。

### Sphinx暗号化
Nymのミックスネットは、マルチホップミックスネットルーティング専用に設計されたSphinxに基づく層状暗号化プロトコルを使用しています。

NymVPNの匿名モードでは、各データパケットが5回暗号化され、クリアテキストデータの周りに玉ねぎのような層を形成します。各暗号化層は、ミックスネット内の特定のホップ（1/3のミックスノードや最終出口ゲートウェイなど）が持つ復号化キーに対応しています。このキーは公開鍵暗号方式によって生成され、特定のホップが自分専用に設計された最外層の暗号化を復号化できるようにします。

- **注意**: ミックスノードが暗号化の層を削除すると、次の2つのことしか見ることができません：
  1. そのパケットがどこから来たのか
  2. 次にデータパケットをどこに送るべきか
  
ミックスノードは送信される内容だけでなく、クライアントと受取人の間の完全なルートについても見えない状態です。

すべての暗号化されたデータパケットが最終的な宛先に到着すると、意図された受取人のみがメッセージの暗号解除された内容（「クリアテキスト」）を表示できるようになります。これは、受取人の側で再構成される際に行われます。

### 暗号化プロトコル
さまざまな種類と強度の暗号化プロトコルが存在します。Sphinxは、暗号化プロセスの異なる段階に対して最先端のプロトコルを使用しています。


# ステップ3: カバートラフィックの導入
数の力には価値があります。ミックスネットの場合、数の中に匿名性があります。群衆が大きければ大きいほど、追跡が難しくなります。そこで、NymVPNは、あなたをカバーするために群衆のサイズとノイズを積極的に増加させます。

これを実現するために、NymVPNクライアントは、デバイスからネットワークへ「カバー」または「ダミー」トラフィックを送信します。これらのパケットは、実際のトラフィックと全く同じように見えますが、実際には空です。

- **目的**: 群衆のサイズを増加させ、追跡の試みをさらに困難にすることです。

これは、Nymが「追加のノイズ」と呼ぶ多くのネットワークプライバシー戦略の1つです（ステップ5を参照）。

#### 技術的注釈
カバートラフィックの量は、現在のネットワークトラフィックの量によって変動します。ミックスネットのトラフィックが十分に高い場合、クライアント側からは減少することがあります。逆に、トラフィックが低い場合は、増加することがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/b2115266-be94-fbaa-bd0e-5270362abf3f.png)


# ステップ4: Entry Gateway接続

Gatewayは、Nymネットワークへのアクセスまたは出口ポイントです。データがパケットに分割され、暗号化された後、最初のサーバーである **Entry Gateway** に転送されます。このサーバーには次の2つの機能があります。

- **匿名資格情報の検証**  
  ミックスネットへのアクセスのために、ブロックチェーンを通じて資格情報が再利用されていないか、または二者が同時に使用していないことを確認します。

- **暗号化パケットの送信許可**  
  有効な場合、Entry Gatewayは暗号化パケットの送信を許可します。次に、データパケットをミックスネット内の次の送信先、すなわち3つのmix nodeの最初のノードに送信するために、最外層の暗号化を解除します。

**重要なプライバシー注記**:  
Entry Gatewayは、Nymミックスネット内であなたの真のIPアドレスを見る唯一のサーバーです（他に隠蔽されていない場合）。しかし、Entry Gatewayは、最終目的地のIPアドレスとあなたのIPアドレスを結びつけることはできず、それはExit Gatewayだけが見ることができます。


# ステップ5: Mixnetルーティング

Entry Gatewayによって資格情報が検証されると、データパケットは3つの連続したミックスノードを経由して中継されます。前述のように、あなたのミックスネット内の5つのステップの旅の各ノードは、処理するデータパケットの最外層の暗号化を解除するための復号化キーしか持っていません。解除された後に明らかになるのは、次のミックスノードを示すヘッダー情報だけです。

**注意**: ミックスノードは、「あなたの」データを中継することすらありません。なぜなら、それは処理するデータパケットの起源についての知識を持っていないからです。それは単に、多くの匿名ユーザーからデータパケットを受信し、それらを混合して、送信を遅延させるだけです。

これらの中継サーバーをユニークにするのは、ネットワークの監視試行を混乱させるために行う2つの追加のプライバシー保護です。

**ミックスノードの2つのプライバシー保護機能**:
1. **データパケットのミックス（mixing）**  
 「ミックスネット(mixnet)」という名前は、異なるユーザーのトラフィックのデータパケットをミックスノードを通過する際に混ぜ合わせることに由来します。

あなたの異なるデータパケットは異なるミックスノードを通過するだけでなく、ミックスノードは同時に多くの異なるユーザーのパケットをルーティングします。これにより、データパケットが新しいミックスノードに中継される際に、データパケットが混合されます。

すべてのデータパケットは、あなたのものであれ他のものであれ、外部の監視からは同一に見えます。これにより、特定のユーザーの完全なトラフィックパターンをミックスネットを通じて追跡することが非常に困難になります。さらに、各ミックスノードがSphinx暗号化の最外層を復号化するため、データパケットはミックスノードに入ってきたときとは異なって見えます。

2. **タイミングの隠蔽**  
 AIによって強化された高度な追跡分析技術は、データパケットがサーバーに到着したり離れたりする際のマイクロ秒に注目します。このメタデータは、データの出所を予測するために使用される可能性があります。匿名化されたデータパケットがミックスノードサーバーで再配列されることで、タイミングに関する入力と出力を関連付けることはもはや不可能になり、いわゆる「先入先出し」の原則も適用されなくなります。


# ステップ6: Exit Gateway

**Exit Gateway**は、あなたのトラフィックが公共のウェブ上の目的地に配信される前の最後の停留所です。このサーバーは、データが目的地に到達する前の最終中継役を果たします。

この時点で、Sphinx暗号化の最終層が解除され、クライアントのデバイスと目的地との間で確立された任意のデフォルトの暗号化（HTTPSやSSL/TLS暗号化プロトコルなど）はそのまま残ります。

**重要な注意点**:  
Exit Gatewayは、Nymミックスネット内であなたの暗号化されたトラフィックとウェブ上の最終目的地のIPアドレスを見る唯一のサーバーです。ただし、Exit Gatewayは、あなたの元のIPアドレスとこれを結びつけることはできず、そのIPアドレスは直接接続されているEntry Gatewayのみが表示できます。



# ステップ7: データ送信と再構成

さて、あなたの多くのデータパケットが意図したウェブ上の場所に到達しました。次はどうなりますか？

Sphinx暗号化が可能にするのは、これらの多くの部分が受取人の鍵によってのみ復号化でき、元々デバイスから出発したときの全体を形成するために再構成できることです。たとえば、10MBの動画を送信した場合、Sphinxはこれを5,000の暗号化パケットに変換します。受取人以外の誰も、それが何であるか、どこから来たのかを解読することはできません。

元のデータファイルは、受取人側でこれらの部分が集まって形成されます。

ここまでのミックスネットを通るあなたのトラフィックのスナップショットです:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/7824531d-77b6-d787-da9e-3976e789ad81.png)
# ステップ8: 応答
インターネット通信は一方通行ではありません。メッセージを送信するときには応答を期待しますし、ウェブサービスにコマンドを送った場合には、データがこちらに返ってくる必要があります。理想的には、オリジナルのメッセージを送信したときと同じセキュリティ対策で返ってくるべきです。

Nymのmixnetで用いられるSphinx暗号化によって、暗号化されたデータと一緒に返答ルートも暗号化される「Single-Use Reply Blocks（SURBs）」と呼ばれる仕組みが可能になります。これにより、応答も同じプライバシー保護のルーティングを通じてあなたに返ってくることができます。

#### 技術的な注意点:

SURBsを使用した応答トラフィックは、クライアントから送信されたデータとは異なる方法で暗号化されています。クライアントからのデータは層状に暗号化され、各ホップで解読されますが、SURB応答はmixnetを通過する際に暗号化されます。これにより、監視をさらに混乱させる効果があります。なぜなら、各ノードは送信メッセージを処理しているのか、応答を処理しているのか、解読しているのか、暗号化しているのかを正確には認識できないからです。

# 誰がmixnetを必要としているのか？
NymVPNの匿名モードは、今日最もプライバシーに配慮したオンライン通信手段の1つであることは間違いありません。しかし、このレベルのプライバシーと匿名性が常に必要でしょうか？確かに、いつも必要というわけではないかもしれません。5ホップのmixnetルーティングは、他のVPNに比べてかなり遅くなることを考慮することが重要です。だからこそ、NymVPNはユーザーに選択肢を提供しています。

機密性の高いメッセージなど、重要なトラフィックやデータに対して徹底したプライバシー保護が必要な場合は、**匿名モード**をオンにするだけです。

一方、市場最高レベルのプライバシーを維持しつつ、スピードも求める場合は、WireGuardを搭載したNymVPNの**高速モード**を選びましょう。

あなたのニーズに合わせて、プライバシーを妥協せずに選択してください。NymVPNなら、自分の手でプライバシーを守ることができます。


# 参考リンク

- [Nym公式サイト](https://nymtech.net/)
- [Nymのミキシングネットワーク - Wikipedia](https://ja.wikipedia.org/wiki/Nymミックスネット)
- [Nymホワイトペーパー](https://nymtech.net/nym-whitepaper.pdf)
- [分散型VPN と中央集権型VPN:違いの全て](https://note.com/koko_crypto/n/n71fe7e92b68a)
- [ミックスネットとは何か？ VPNによる比類なきオンラインプライバシー](https://note.com/koko_crypto/n/n302e7516f691?magazine_key=m0129d65e3526)
- [Sphinx暗号-Nymを支える匿名データフォーマット](https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6)
- [ココナッツ認証（Coconut Credentials）とは？- プライバシーを保護するゼロ知識証明技術](https://qiita.com/pseudonym2/items/b2739ae32f4fb29de0b6)

# コミュニティ

- [Nym日本コミュニティ - Telegram](https://t.me/nymjapanese)
- [Nym日本コミュニティ - Discord](https://discord.com/invite/nym)
- [Nym日本コミュニティ - LINEオープンチャット](https://line.me/ti/g2/0YGYYq4EoQZ8fL5FYQmqU4O9SRuE_a6YX19GtA?utm_source=invitation&utm_medium=link_copy&utm_campaign=default)

- [Nymプロジェクト日本語アカウント - X](https://x.com/nymproject_jp)