“Five Eyes”のインターネット監視を打ち破るには？

Nymミックスネットは、集団監視に耐性のある匿名通信のための、初のオープンソースのインセンティブ付きインフラである。しかし、これは何を意味するのだろうか？このブログ記事では、Nymの脅威モデルを分析し、Nymが提供する匿名性について説明する。

# Nymのミックスネットアーキテクチャ
まず、Nymネットワークアーキテクチャについて簡単に説明します.

Nymネットワークは、プライバシーを強化するアプリケーションやサービスに”Layer0”のプライバシーを追加するインフラとして機能する。”Layer0”とは、ネットワーク・パケット（TCP/IPやUDPパケット等）のレベルを指す。クライアントは、オープン・インターネット経由ではなく、Nym ミックスネット経由でサービス・プロバイダーにアクセスする。

Nym mixnetの目的は、ユーザーの通信内容とメタデータの両方を保護することであり、その結果、ユーザーのトランザクションやサービスへのアクセスがリンクされないようにすることである。言い換えれば、Nym mixnetは通信の機密性を保護するだけでなく、誰が誰と通信しているのか、あるいはどれだけのデータがやり取りされているのかという情報を隠すことができる。ミックスネットワークの概念に馴染みがない方は、こちらとこちらの過去のブログ記事で詳しく紹介しています。一言で言えば、ミックスネットとは、mixノードの集合を経由してトラフィックをルーティングするオーバーレイネットワークのことで、各ノードは受信したパケットを暗号的に処理し、順序を入れ替えることで、**内容だけでなくタイミングも追跡不可能にし、通信を追跡不可能にする**。

Nym mixnetは、プロキシとして機能するgatewayを経由してアクセスできる。gatewayは、クライアントにミックスネットへのアクセスを提供すると同時に、「フリーライド攻撃（free-riding）」を含むサービス拒否攻撃やシビルアタックからミックスネットを保護する。同様に、サービスプロバイダはgatewayノードに接続することでNymミックスネットに接続する。gatewayノードは、オフラインになる可能性のあるクライアントやサービスのメッセージストレージとしても機能し、アクセス困難な参加者がメッセージを受信できるようにします。これは、Nymクライアントがモバイルデバイスで、ネットワーク信号がしばしば途切れる可能性がある場合に特に便利です。gatewayは、各クライアントやサービスプロバイダと安全なチャネルを共有します。参加者は、常に同じgatewayを使用するか、複数のgatewayにトラフィックを分割するかを選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/8b7ecf90-4be4-f74e-c975-8a58a26ba86d.png)
Nymのネットワークアーキテクチャ

# Nymの脅威モデル


Nymは、VPNやTorのような既存のソリューションで考えられているよりも強力な敵対者に対してプライバシーを提供することを目的としている。特に、Nymは次のことを考慮に入れている：

・**グローバル・ネットワーク監視者**：つまりネットワークのすべての参加者とコンポーネント間の通信を監視できる敵対者。受動的な監視に加え、攻撃者はパケットを注入、変更、削除することもできます。

・**悪意を持つノードオペレーター**：つまり敵対者は、ミックスノード、gateway、サービス・プロバイダー、エンドユーザーを含むネットワーク参加者の一部を侵害することができます。

このように、Nymは、前述の能力のあらゆる組み合わせを持つ敵対者を想定している。

# プライバシーの目標
次に、基本的な匿名性の特性を定義しよう：

### 第三者によるRelationship anonymity

Relationship anonymityは、relationship unlinkabilityとも呼ばれ、権限のない第三者が、2つのシステム参加者が通信しているかどうかを推測できないことを意味する。言い換えれば、敵対者は誰がどのパケットを送信したか、または誰がどのパケットを受信したかを知ることはできるかもしれないが、敵対者は送信したパケットと受信したパケットをリンクすることはできないため、通信している送信者と受信者をリンクすることはできない。

この特性は、部外者のみ、つまり敵対者が対象となるデータパケットの送信者でも受信者でもない場合に考慮される。匿名性は、送信者と受信者がお互いの身元を知っていることを前提としている。しかし、お互いにそれを隠したい場合もある。そのため、以下の匿名性も考慮する。

### 送信者の匿名性（Sender anonymity）

送信者の匿名性とは、メッセージを送信した当事者の身元が隠されることを意味する。つまり、受信者から見れば、悪意のある受信者が敵対者と結託したとしても、特定のパケットを送信したユーザーを特定することはできない。

これは、初期のサイファーパンクが匿名電子メールで持っていた性質である。

### 受信者の匿名性（Receiver anonymity）

受信者の匿名性とは、通信の部外者からだけでなく、送信者からも、たとえそれらが共謀していたとしても、受信者の身元が隠されることを意味する。これは、ある種の隠されたサービスを実行する場合に必要な特性である。

送信者の匿名性と受信者の匿名性を組み合わせることで、双方向の匿名性を得ることができます。つまり、送信者と受信者はお互いの身元を知ることなく通信することができるのだ。

# 実際の匿名性
さまざまな脅威モデルのもとで、さまざまなシステムがさまざまな匿名性を提供している。VPNとTorを例にとってみよう。VPNもTORも、アクセスしたウェブサイトからリクエスト送信者のIPアドレスを隠すが、想定する脅威モデルは異なる。VPNは、悪意のあるISPプロバイダーや検閲、インターネット接続の盗聴から守るために設計されている。しかし、VPNプロバイダーは常にあなたのIPを知っており、そのサーバーを通過する接続データとトラフィックを見ることができます。したがって、あなたとあなたの通信は、VPNプロバイダーに対して匿名ではありません。このように、VPNは、VPNプロキシが信頼できるという前提でのみ、送信者の匿名性を提供します！

VPNは、私たちのオンライン活動を保護しますが、ネットワーク盗聴者の存在下では効果がありません。盗聴者は、データパケットのサイズとタイミングに基づいて、単にルーティングされたネットワークトラフィックを追跡することができ、したがって、私たちが訪問しているサービスと私たちのIPアドレスを容易に関連付けることができます。したがって、VPNは第三者関係の匿名性を提供しないのです。

単一のプロキシVPNとは対照的に、Torは分散型オーバーレイネットワーク上に構築されるため、単一の信頼/失敗のポイントを回避することができる。Torは「ネットワークトラフィックの何割かを観測することができ、トラフィックを生成、変更、削除、遅延させることができ、自身のオニオン・ルーターを操作することができ、オニオン・ルーターの何割かを侵害することができる」敵対者を想定している。

Torはボランティアによって運営される一連のサーバーを経由して接続をルーティングするため、1つのTorリレーで通信の送信者と宛先の両方をリンクすることはできない。したがって、少なくとも1つのノードが正直である限り、TorはVPNよりも強力な送信者の匿名性を提供する。

VPNは受信者の匿名性を提供しませんが、TorはTorネットワーク内で実行され、独自の.onionアドレスを取得するTor専用サービスを登録できる隠しサービスという選択肢を提供します。隠しサービスは、クライアントがonionアドレスの背後にある匿名サーバーのIPを学習しないため、受信者の匿名性があります。これは、隠しサービスがクライアントのIPを知らないという事実と相まって、双方向の匿名性を実現します。

Torは、ネットワークのごく一部しか観測できない攻撃者に対してのみ、誰が誰と通信しているかという情報を守っているのです。したがって、Torは、NSAや彼らの友人である "Five Eyes "のように、ネットワーク上のすべてのトラフィックを監視することができる敵対者に対して、強力な第三者関係の匿名性を提供しません。

# Nymが目指す匿名性とは？
それでは、Nymが提供するプライバシー特性について見ていこう。これらの特性について議論する際には、上述のような能力を持つ敵（Nymの脅威モデルを参照）を想定しており、したがってVPNやTorが想定している敵よりもはるかに強力な敵が想定されていることに留意してほしい。

まず、3番目の匿名性の関係である。VPNやTor、その他の既存のソリューションとは対照的に、Nym mixnetは第三者関係の匿名性を提供する。そのため、たとえ敵がネットワークの全体像を把握していたとしても、通信しているクライアントとサービス・プロバイダーを関連付けることはできない。この特性は、敵対者が最初と最後のミックスノード、またはゲートウェイの一部を制御している場合でも提供されます。

Nym mixnetは送信者の匿名性も提供する。つまり、サービス・プロバイダーから見れば、悪意のあるサービス・プロバイダーが敵対者と結託したとしても、どのNymユーザーが特定のリクエストを開始したかを特定することはできない。

最後に、受信者の匿名性について説明しよう。この特性は、リクエストの 受信者の身元が、許可されていないパーティーから隠されることを意味する。Nymに統合されたアプリケーションやサービスは、オープンなウェブ経由ではなくNym mixnet経由でアクセスできるように設計されていますが、Torの隠しサービスと混同しないでください！現在、Nymは隠しサービスを提供していないため、受信者の匿名性を提供していません。しかし、これは将来的に変更されるでしょう！

## Single Use Reply Blocks (SURBs)

現在、Nym mixnetはSphinx Single Use Reply Blocks (SURBs)を実装しています。簡単に言うと、AliceがサービスプロバイダへのリクエストをSphinxパケットフォーマットにラップするとき、彼女はペイロードの最も内側のレイヤーに、事前に計算された新しいSphinxヘッダーと鍵のセットをカプセル化します。サービスプロバイダが応答を送る準備ができたら、彼はその鍵を使って応答を暗号化し、この新しく計算されたSphinxペイロードとAliceから得たヘッダを結合する。

しかし、もし応答がSURBが収容できるサイズよりも大きかったらどうなるでしょうか？あるいは、SURBがネットワークでドロップされたら？これはネットワークの信頼性に大きな影響を与えるだろう！単純にSURBを再利用することを提案することもできるが、これは本当に悪い考えだ。敵対者がミックスノードの入力パケットと出力パケットを記録し、同じパケットを再送信した場合、そのパケットの復号化は同じままです。こうして、攻撃者はネットワークのセキュリティを完全に破ることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/cd38903b-d98f-8cb2-2cff-457584b8eba1.png)
一般的に、複数の匿名返信を可能にするスキーマを設計することは容易なことではありません。様々な潜在的な解決策は、セキュリティとパフォーマンスのトレードオフが異なるからです。そのため、バージョン0.8.0では当面の間、送信者の匿名性を「オフ」にしました（つまり、受信者のゲートウェイには誰が送信者であるかが通知されます）。そして現在、送信者の匿名性と複数の返信を組み合わせたソリューションを展開する準備を進めています。このようなことは、これまでどのようなシステムでも行われたことはありませんでしたが、私たちは初期設計を行い、現在それを検証しているところです。(現在実装済み)

# まとめ

ここまでで、Nymが考えている敵対モデルや、Nym mixnetが提供しようとしている基本的な匿名性についての疑問が払拭されたことと思う。これらの匿名性に加え、Nymネットワークはシビル攻撃、エクリプス攻撃、その他多くの攻撃に耐性があるが、それらについては今後のブログ記事で詳しく説明する。

私たちのコードベースはオープンソース(https://github.com/nymtech/ )であり、あなた自身のノードを設定する方法については、私たちのドキュメント(https://nymtech.net/docs )で見つけることができます。

# 参考リンク

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