分散型VPN：NymVPNの技術　Mixnetの簡単な紹介

まずは、あけましておめでとうございます🥳
昨年からここQiitaに投稿をはじめたことにより、多くの人がNymを知り、コミュニティに参加してくださりました。
日本人の方との接点が増え、私にとってとても有難い年になりました。
今年はいよいよNymVPNの正式リリースとなりますので、今年もぜひよろしくお願いします。

ーーーーーーーーーーーーーーーーーー

私はNymというインターネットプライバシーを扱う会社で働いています。私たちの技術のひとつであるMixnetは、政府や大企業のような非常に強い敵からユーザーを守ることができます。ここでは、その仕組みについて、技術的ではない方法で説明します。

https://qiita.com/pseudonym2/items/e68ccf9b65bf8e98e380





私たちはすでに、Mixnetとプライバシーに関する技術的なドキュメントをかなり多く発表していますし、近々発表するホワイトペーパーでは、さらに多くのことを説明する予定です。LoopixのMixnetの技術的な仕組みを30分程度で簡単に紹介したのが、このUsenixのプレゼンビデオです。セキュリティオタクの方はご覧になってください。

しかし、これまでのところ、Mixnetが何なのか、簡単な、いや、単純な説明がなされていないように思います。ここでは、非技術的なレベルにまで物事を煮詰めようとする試みを紹介します。

私たちは通常、Mixnetを以下のように表現しています：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/48c3e965-d59d-529b-9d9e-920f217ce7b5.png)
図解の厄介なところは、図解を描くオタクには理解できるが、他の人には何の役にも立たないということです。今日は、別のアプローチをとります。思考実験として、物理的なメタファーを使って、頭の中にMixnetを構築してみましょう。

大都市にある人通りの多い通りを思い浮かべてください。ロンドン（私の住んでいるところ）のようなところなら、その通りにはたくさんのカメラが向けられています。監視カメラのオペレータは、あなたが防御しようとしている人たちです。

カメラオペレータは、通りのすべてを見ることができ、また、後で分析するためにすべてを記録することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/01b2b41b-08d0-b501-9bcb-968585970fd0.png)
次に、路上に人を配置します。人通りの多い道でも、どんな道を通ったのか、誰と話したのか、カメラオペレータには一目瞭然です。なぜなら、カメラオペレータはすべてを高画質で記録し、自由に再生することができるからです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/34757859-128f-a4d5-ff6d-fa5daff9db22.png)
問題は、街角に遍在する監視を打ち負かすことが可能かどうかということです。

みんなが同じマスクと服を着ているところを思い浮かべてください。

各々自分の好きなように想像して、ちょっと楽しんでみてください。ガイ・フォークスの仮面＋ミニマムな黒い服でもいいし、マルディグラの衣装を身にまとった素敵な人たちでもいい。ただ、一人一人が他の人と見分けがつかないようにすること。

これで、監視はより難しくなりました。これは、私たちの技術のひとつである「スフィンクス」のマジックです。Mixnet（例えるなら道）を通るすべての情報は、Sphinxのパケットに包まれます。Sphinxは、異なる情報の断片を区別することを難しくします。なぜなら、それは、すべての区別できる特徴を、当たり障りのない、同じような暗号の統一に包むからです。

https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6


これが、ネットワークを通過する私のSphinxパケットです：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/aa4c3bfa-d485-f0d6-250d-4e1e2bf5d6b8.png)
もう、かなり追跡が難しくなってきましたね。

他に何か必要なものはありますか？はい。仲間、群衆（Company）です。

1日のうち、2つの時間帯の通りの人通りを考えてみてください。まず、金曜日の午後、多くの人が出かけているでしょう。二つ目は、日曜の真夜中。ほとんど誰もいないですね。

さて、日曜日の夜、通りにいるのがあなた一人だったとしても、監視カメラには、あなたがアイズ・ワイド・シャットの服を着ていようと、機動隊員の制服を着ていようと、イースター・バニーの服を着ていようと、あなたが何をしたかは簡単に見えてしまいます。あなたには十分な隠蔽がないのです。別の言い方をすれば、匿名性の集合体は、その中に隠れるには十分な大きさではないのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/3318f960-86f8-e619-77f5-41022be57f62.png)

しかし、もしあなたが金曜日の午後に街頭で10万人の人々の一員であったなら、あなたにはたくさんのカバーがあるはずです。群衆の中からあなたを選び出し、匿名化することは非常に難しいでしょう。

この羊たちが物語を語っています：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/e2d9ed9b-42e0-e68a-7aca-9b3eddf18ef7.png)

お分かりのように、匿名性というのは、集団を愛するものです（anonymity loves company）。ネットワークシステムにおけるあなたの匿名性は、互いに見分けがつかない大勢の人に混じっているときに得られる匿名性に似ています。

これだけでいいのでしょうか？これで終わり？いいえ、まだです。

監視カメラのオペレータは、時間を計ることで人を追跡することができます。通りに出入りする人がすべて整然と並んでいると仮定します（一人ずつ入る、一人ずつ出る）。たとえ道が混んでいて、みんなが同じ「バーニー・ザ・パープル・ダイナソー」の服を着ていたとしても、誰が誰だかわかるのです。ただ、順番にカウントしていけばいいのです。

このタイミング攻撃を防ぐにはどうしたらいいのでしょうか？

実験に戻りますが、道の真ん中に一定の間隔でテントを設置します。監視カメラはその中を見ることはできない。人々は定期的にテントに入り、ごく短い時間、ランダムにぶら下がる。そして、来たときとは違う順番で帰っていく。カメラオペレータは、誰が誰だかわからなくなる。

テントはmixnodeです。彼らはSphinxのパケットをシャッフル、またはミックスして、監視オペレータがユーザーの匿名化を解除するためにタイミング攻撃（パケットを順番にカウントする）を使用できないようにします。ここでは、いくつかのSphinxパケットがミュンヘンのビールテントの中で一瞬リラックスしている様子を技術的に描いたもので、外部の監視から完全に安全です：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/a968cb18-33e9-960a-211d-b533ae3dd220.png)

最後にもうひとつ、私たちにできることがあります。人々が道を歩いている間は監視から完全に逃れられるようになりましたが、彼らが道に入るとき、あるいは道を出るとき、つまりmixnetを使い始めるとき、あるいはやめるときは、まだかなり明確です。

これは問題で、監視に対抗したいタイミングで想像上の通りに入り、用が済んだらすぐに通りを離れると、（何をしているかという現実世界の文脈にもよりますが）自分がどんな行動をとっているのかがかなり明確になる可能性があります。そこでNymのMixnetは、トラフィックのカバー、つまり実際に行動している人が紛れ込めるような偽の街頭トラフィックを継続的に送信しています。

Nymのアプリケーションを起動するとすぐに、あなたの代わりにロボットを街中に送り込み始めます。そうすれば、実際に匿名性が必要になったとき、あなたの取る行動は、あなたのマシンからすでに送信された他のトラフィックの流れの中に埋もれてしまうのです。

さて、これがMixnetと現実の世界との関係です。新しい物理的な視点を持って、元のMixnetアーキテクチャの図面を振り返ってみましょう。

『スノーデンの暴露』で知られるように、様々な団体がインターネットの大部分を完全に監視下に置いています - 彼らは本質的にインターネット上のすべてのインフォメーションフローを記録しています。私たちが身を守りたいのは、そのようなカメラからなのです。Mixnetの回路図を再度見てください：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/c148028d-3f02-a8ac-1d15-92c4a8533dbc.png)

左側のAliceのコンピュータは、Mixnetを通して、Bobのコンピュータにメッセージを送り、監視を回避したいと考えています。

Aliceのコンピュータの電源が入るとすぐに、それは自動的にSphinxのパケットカバーのトラフィックをmixnetを通して送り始めます。パケットのそれぞれは、ストームトルーパーが他のストームトルーパーと区別がつかないように、他のすべてのパケットとバイナリレベルで区別がつきません。

Sphinxのパケットはmixnodeを経由してルーティングされます。パケットは一緒にシャッフルされ、各ノードに入ったときとは異なる順序で放出されます。まるでストームトルーパーがオクトーバーフェストのテントでビールを飲むために立ち寄るように。

Sphinxのパケットは複数のmixnodeを通過してBobに届きます。Mixnetを使っている人が十分に多いと仮定すると（ストームトルーパーや羊のような大きな匿名性のセットを街中で使っていると仮定すると）、AliceがBobと話していたのか、他の誰かと話していたのか、それとも彼女がサンドイッチを食べている間に自動的にトラフィックのカバーを送っていたのかを、ネットワークを監視する人が決めることは不可能です。

つまり、Nym mixnetは、広範なオンライン・ネットワーク監視を打ち破るために、次のようなテクニックを使っているのです：

1.すべてのトラフィックが同じに見えるようにする（敵が個々のトラフィックを追跡できないようにする）。

2.トラフィックの順序を変更する（敵がユーザーの匿名性を統計的に解除するために、トラフィックの出入りを単純にカウントできないようにする）。

3.偽のトラフィックのカバーを生成する（匿名性が重要であった時期を敵に知られないようにするため）

# 参考リンク

- [Nym公式サイト](https://nymtech.net/)
- [Nymのミキシングネットワーク - Wikipedia](https://ja.wikipedia.org/wiki/Nymミックスネット)
- [Nymホワイトペーパー](https://nymtech.net/nym-whitepaper.pdf)
- [分散型VPNとは？](https://qiita.com/pseudonym2/items/9d45bf63ddfd17edd0ae)

- [ミックスネットとは何か？ VPNによる比類なきオンラインプライバシー](https://qiita.com/pseudonym2/items/e68ccf9b65bf8e98e380)
- [Sphinx暗号-Nymを支える匿名データフォーマット](https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6)
- [ココナッツ認証（Coconut Credentials）とは？- プライバシーを保護するゼロ知識証明技術](https://qiita.com/pseudonym2/items/b2739ae32f4fb29de0b6)
- [インターネット上のプライバシーを向上させるコンピューターサイエンティスト](https://qiita.com/pseudonym2/items/259de004166f70125cc3)

# コミュニティ

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



原文は、2020年2月17日にhttps://constructiveproof.com で公開されました。