NymVPNの「匿名モード」とは？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/facae863-2cf4-f224-7333-2a49b300eb78.png)
従来の仮想プライベートネットワーク（VPN）は、その名前にもかかわらず、実際にはプライバシーを保護していません。メタデータ収集、トラフィック分析、AIによる追跡と監視の技術が進化する中、どれほど評判の良いVPNサービスであっても、その約束には限界があります。必要なのは、革新的なネットワーク設計によってプライバシーを守る次世代のVPN技術です。

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/4b0a880e-e764-6dc8-4ff6-98995182480b.png)
この記事では、NymVPNで匿名モードをオンにしたときに、あなたのデータがどのように処理され、ミックスネットを通じてルーティングされるかを、ステップバイステップで説明します。


# 定義

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

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

・**ミックスネット**  
NymVPNを通じて匿名モードを使用しているときのNymネットワーク全体。5ホップのルーティングを含みます。ルートの始まりと終わりはゲートウェイであり、その間の3つがミックスノードです。ミックスネットは、カバートラフィックやタイミング遅延など、追加のネットワークプライバシー技術も導入しています。

・**ホップ**  
複数のパスを持つ旅行の停留所のように、ホップは暗号化されたトラフィックをミックスネット（あなたのデバイスとウェブ上の受信者の間）を通じてルーティングする5つの中継点（ゲートウェイまたはミックスノード）のいずれかです。

・**エントリーゲートウェイ**  
あなたのデータが通過する最初の5つのホップのうちの1つで、ミックスネットへのアクセスポイントです。匿名の資格情報を検証し、データパケットを最初のミックスノードにルーティングし、応答メッセージの場合には、前のミックスノードからのパケットをあなたに戻す役割を担います。

・**ミックスノード**  
トラフィックをルーティングしながら「ミキシング」操作を行い、強力なユーザー匿名性を提供する独立して運営されているサーバーです。ミックスノードは完全にトラストレスで、ミックスしてルーティングするトラフィックの内容、起点、目的地を知りません。

・**エグジットゲートウェイ**  
ミックスネットの最後のホップで、データパケットを公衆ウェブ上の目的地に転送する役割を担います。また、ミックスノードを通じてミックスネット経由でクライアントに戻される応答パケットも受け取ります（ステップ8を参照）。

・**Nymオペレーター**  
世界中でNymノードを運営する独立した人々やグループで、Nym Technologies SAによって所有または運営されていません。新しいNYMトークノミクスを通じて、Nymノードオペレーターはユーザーに質の高いサービスを提供することで報酬を得ます。

# ミックスネットルーティングの概要

ミックスネットを通じてプライベートデータが送信される際には、8つのステージがあります。

1. データパケットの準備
2. パケットのスフィンクス暗号化
3. ネットワークカバートラフィックの導入
4. エントリーゲートウェイとの接続
5. ミックスネットルーティング
6. エグジットゲートウェイとの接続
7. データの配信と再組み立て
8. クライアントへのミックスネット経由での応答

それでは、各ステージをステップバイステップで見ていき、ミックスネットがどのように機能するかを確認しましょう。

## ステップ1: パケットの準備

すべては、ウェブ上の何かと接続する前にあなたのデバイス上で始まります。NymVPNクライアントが匿名モードで接続されると、最初に行うのはデータをミックスネットを通じて送信するために準備することです。

### Sphinxパケット

NymVPNは、あなたのデータ送信をデータパケットに分割します。これらのパケットは以下の特徴を持ちます。

1. **サイズが等しい**
2. **複数のレイヤーで暗号化されている**

そのため、**識別不可能**で、パス上では**読めない状態**になります。Zcashの取引であろうと、プライベートメールであろうと、友人への個人的な画像であろうと、すべてが匿名で、高度に安全な同一のパケット形式に処理されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/c61d894d-55f8-9efc-0e6b-8c9f35279e74.png)

例えば、10MBのファイルは5つの同一で暗号化されたパッケージ、例えば各2MBに分割されます。

この点だけを見ると、特に新しいことではありません。データ暗号化(https://qiita.com/pseudonym2/items/b8ad772b77ed5aaa37be)
は通常、最大データ量に対応し、データが複数のパケットに分割されることを含み、スフィンクス以外の暗号化方式ではパケットサイズが均一である必要があります。

重要なのは、スフィンクスの均一なパケットサイズがミックスネットの文脈でどのように機能し、ネットワーク全体のトラフィックパターンの分析を抑制するかです。

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/8cd5c319-af2d-84eb-a09a-c9da480285bd.png)
送信者が普通のVPNのシンプルなカバーを使用している際に、どのようにしてオンライン活動と結び付けられるかには多くの方法があります。監視は単に中央集権型VPNサーバーへのデータの入力と出力を観察することでトラフィックパターンを識別できます。

その一つの方法は、パケットサイズ自体に関係しています。もしパケットサイズが異なれば、そのサイズに基づいてパケットを相関させるのは比較的簡単です。以下に過度に単純化した例を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/fe744952-c20b-68a5-1d9d-0d2d86f40946.png)


この場合、データ追跡はあなたのIPアドレス（VPNが知っている）を知る必要はなく、データの到着先とその目的地を結び付けることができます。トラフィックのメタデータ（この場合、上記の異なる形状）は、ネットワークが十分にクリアであれば相関付けられる可能性があります。このため、VPNのIP難読化は、あなたを保護するにはほとんど効果がありません。

・**技術的メモ 1**  
スフィンクスデータパッケージは現在、2KBに設定されています。これは非常に小さく、追加の復号化ステージによって遅延が増します。しかし、このトレードオフはもっと重要なことを実現します。それは、ミックスネットを通じた全体のトラフィック量が増加し、結果的にすべてのユーザーの匿名性が向上することです。

・**技術的メモ 2**  
デフォルトサイズのパケットに収まらない小さなメッセージを送信する場合、パケットの残りはサイズ要件を満たすためにランダムデータでパディングされます。また、メッセージが大きい場合は、多くのパケットに分割されます。

最終的には、外部から見たときにすべてが同じように見えます。そして、同じように見えることで、誰もが追跡が難しくなり、したがってよりプライベートになります。

# データミキシングの有効化

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

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


## ステップ2: 暗号化

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

**VPNルーティングにおける暗号化の機能について詳しく学ぶ(https://qiita.com/pseudonym2/items/719cc1429758c40e8c15)**

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

NymVPNの匿名モードでは、あなたのデータパケットは5回暗号化され、クリアテキストデータの周りに層を形成します。各暗号化層は、ミックスネット内の特定のホップ（1/3のミックスノードや最終エグジットゲートウェイなど）が持つ復号化キーに対応しています。このキーは公開鍵暗号によって生成され、ホップがそれにだけ設計された最外層の暗号化を復号することを可能にします。

**注**: ミックスノードが暗号化の層を取り除くと、次の2つのことしか見ることができません:  
(1) 直前の送信元  
(2) 次にデータパケットを送信する先。

伝送される内容だけでなく、クライアントと受信者の間の完全なルートにも盲目です。

すべての暗号化されたデータパケットが最終目的地に到着すると、意図された受信者のみが受信者側でメッセージが再構成されたときに、暗号化されていない内容（または「クリアテキスト」）を閲覧することができます。

・**暗号化プロトコル**  
暗号化プロトコルにはさまざまな種類と強度があります。スフィンクスは、暗号化プロセスの異なる段階に対して最先端のプロトコルを使用しています。



# ステップ3: カバートラフィックの導入

「数の力」には価値があります。ミックスネットの場合、数の中に匿名性があります。人が多ければ多いほど、追跡が難しくなります。そこで、NymVPNは積極的に群衆のサイズとノイズを増加させてあなたを保護します。

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

その目的は？  
単に群衆のサイズを増加させることで、追跡の努力をさらに困難にすることです。これは、Nymが追加の「ノイズ」と呼ぶネットワークプライバシー戦略の一つです（ステップ5を参照）。

・**技術的メモ**  
カバートラフィックの量は、現在のネットワークトラフィックの量によって変動することがあります。ミックスネットのトラフィックが十分に多い場合は、クライアント側から減少することがあります; もし少ない場合は、増加することがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/c9abf046-4d2d-4e3f-929d-c5731f09268a.png)


# ステップ4: エントリーゲートウェイ接続

ゲートウェイは、Nymネットワークへのアクセス点または出口点です。データがパケットに分割され、暗号化された後、最初のサーバーであるエントリーゲートウェイに転送されます。このサーバーには二つの機能があります:

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

・**有効な場合、ゲートウェイは暗号化されたパケットの送信を許可します。**  
外側の暗号化層を取り除き、データパケットを次に送信する場所（すなわち、三つのミックスノードの最初のノード）を確認します。

**重要なプライバシーノート**:  
エントリーゲートウェイは、あなたの本当のIPアドレスを見る唯一のサーバーです（他の方法で隠されていない限り）。ただし、エントリーゲートウェイは、あなたのIPアドレスとウェブ上の最終目的地のIPアドレスを関連付けることはできません。それはエグジットゲートウェイだけが見ることができるものです。


# ステップ5: ミックスネットルーティング

資格情報がエントリーゲートウェイによって検証されると、データパケットは3つの連続したミックスノードを経由して中継されます。前述のように、ミックスネット内の5つのステップの旅の各ノードは、取り扱うデータパケットの最外層の暗号化の復号化キーしか持っていません。復号化が行われると、ネットワーク内の次のミックスノードを指定するヘッダーのみが公開されます。

**注**:  
ミックスノードは、「あなたの」データを中継するわけではありません。なぜなら、取り扱うデータパケットの起源については何も知らないからです。単に多くの匿名ユーザーからデータパケットを受け取り、それらを混ぜ、送信を遅延させます。

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

・**データパケットミキシング**  
「ミックスネット」という名前は、データパケットを異なるユーザーのトラフィックと混ぜるという実践から来ています。ミックスノードを通過する際に、異なるユーザーのデータパケットが混ぜられます。

・**タイミングの難読化**  
AIによって強化された高度な追跡分析技術は、データパケットがサーバーに到着し、出発する際のマイクロ秒単位に注目します。匿名化されたデータパケットがミックスノードサーバー上で再順序付けされるため、タイミングに基づいて入力と出力を相関させることは不可能になります。


# ステップ6: エグジットゲートウェイ

エグジットゲートウェイは、トラフィックが公共のウェブ上の目的地に届けられる前の最後のステップです。データが目的地に到達する前の最終中継点として機能します。

この段階で、スフィンクス暗号化の最終層が取り除かれます。その後、クライアントと目的地の間に確立されたデフォルトの暗号化（例えばHTTPSやSSL/TLS暗号化プロトコル）が維持されます。

**重要なノート**:  
エグジットゲートウェイは、Nymミックスネット上で暗号化されたトラフィックとウェブ上の最終目的地のIPアドレスを見る唯一のサーバーです。ただし、この情報を元のIPアドレスと関連付けることはできません。元のIPアドレスは、直接接続しているエントリーゲートウェイだけが見ることができます。


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

さて、多くのデータパケットが目的のウェブ上に届きました。次はどうなるのでしょうか？

スフィンクス暗号化が許可するのは、これらの多くのパーツが受信者の鍵でのみ復号化され、受信者の端で再構成されて、デバイスから出発したときの全体のデータファイルが形成されることです。たとえば、10MBのビデオを送信し、それが5,000の暗号化パケットに変換された場合、受信者以外の誰もその内容や起源を解読することはできません。

これらのパーツは受信者側でのみ元のデータファイルとして再構成されます。


これまでのミックスネットを通過したトラフィックの概要を以下に示します:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/c853b511-cec3-cd93-172d-523da81cc69f.png)

# ステップ8: 応答
インターネットトラフィックは一方向ではありません。メッセージを送信するときは応答を期待し、ウェブサービスからコマンドを実行すると、データが戻ってくる必要があります。理想的には、元のメッセージと同じセキュリティ対策で戻ってくるべきです。

Nymミックスネットでのスフィンクス暗号化が可能にするのは、暗号化されたデータとともに戻りルートも暗号化されることです。これを「**Single-Use Reply Blocks（SURBs）**」と呼びます。これにより、応答もミックスネットを通じて同じプライバシールーティングで返されることができます。

**技術的ノート**: SURBsを使用した応答トラフィックは、クライアントから送信されたデータとは異なる方法で暗号化されます。クライアントからのデータは層ごとに暗号化され、各ホップで復号化されますが、SURB応答は実際にはミックスネットを通過する際に暗号化されます。これにより、監視に対してさらに混乱を招くことになります。なぜなら、各ノードは送信されたメッセージと応答のどちらを扱っているのかを知ることができず、復号化や暗号化を行うからです。


# 参考リンク

- [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)