クイックノート

ちょっとした発見・アイデアから知識の発掘を

サイトのブロッキングってどういう仕組み?

最近、NTTをはじめとする回線業者が、
いわゆる海賊版サイトをブロッキングするという方針を示したことが話題となっています。

悪いサイトにはアクセスできないようにするのは当然だという意見もある一方、
表現の自由や、通信の秘密を侵害するなどの否定的な意見もあります。
(もちろん、単に使えなくなるのは嫌だという人もいるでしょう。)

表現の自由の侵害とは、ブロッキングされてしまうサイトが、
情報を外に出すことを阻害されてしまうことを指しますが、
通信の秘密の侵害はピンとこない人が多いようです。

なぜ、サイトへのアクセスをブロックすることが、
通信の秘密を侵害するのでしょうか?
これを理解するには、サイトブロッキングとはどういうものかを、
知っておく必要があります。

この記事では、サイトブロッキングの仕組みを簡単に紹介し、
それがどのように通信の秘密の侵害に関係するかを見ていきましょう。

サイトを見るとは

私たちが普段サイトを見ている時は、
写真や文章の乗ったWordファイルのようなものを受信して見ています。
このファイルは、インターネットから来たものですが、
具体的にはどこにあるのでしょうか?

このサイトを表示するためのファイルは、
それぞれのサイトを運営している会社(あるいは家庭)のコンピュータの中にあります。
このコンピュータのことをサーバーと言います。

例えばGoogleのサイトにアクセスしようと思ったら、
Google のサーバーからファイルをもらってきます。
サーバーにはファイルのオリジナルが保管されていて、
ファイルを欲しい人にコピーを渡します。

f:id:u874072e:20180425102505p:plain

インターネットを使う、インターネットにアクセスすると良く言うので、
インターネットが主役に思われがちですが、
あくまで主役はサーバーとその利用者です。
インターネットは、利用者とサーバーの間をつなぐのが役割です。

サーバーの名前と住所

インターネットは利用者とサーバーの間で
ファイルを届ける郵便屋さんのような働きをします。
そこで、インターネットを郵便屋さんに例えて考えてみましょう。

郵便を出す時には、宛名面に「名前」と「住所」を書きますよね。
それでは、サーバーにも「名前」と「住所」があるのでしょうか。

名前はURLを見ると分かります。

http://[名前]/~~  

URLは大体上のような形をしていますが、
ダブルスラッシュ「//」から次のスラッシュ「/」までがサーバーの名前です。
これはドメインと呼ばれています。
Googleの場合だと、「www.google.com」がGoogleのサーバーの名前ですね。

サーバーの住所に対応するものはIPアドレスです。
IPアドレスは直接目に見ることはあまりないので、
実感が湧きづらいですが、
ネットワーク上のコンピュータにはIPアドレスが割り振られています。

郵便屋さんが住所を頼りに郵便を届けるのと同じように、
インターネットはIPアドレスを頼りにデータを届けます。

名前から住所が引ける

私たちは、普段IPアドレスを意識していません。
住所を知らずに、どうやって郵便を届けているのでしょうか。

実は、インターネットの世界には、名前で住所を引くことができる
強力な電話帳のようなものがあります。
これはDNS(ドメインネームシステム)と呼ばれています。

私たちがこれを意識することがないのは、
リンクをクリックした時に、
リンクのURLを見て、電話帳を引いて、
IPアドレスを見つけて、アクセスするということを
全て自動で行っているからです。

f:id:u874072e:20180425121631p:plain

ブロッキングの仕組み

インターネットとその利用者はプロバイダと呼ばれる業者がつないでいます。
つまり、プロバイダは利用者にとって、インターネットの入り口に当たります。
郵便の例で言うと、郵便局のようなものですね。

インターネットの入り口ということは、
利用者の通信の窓口であり、重要な役割を果たします。 上に書いたDNSも、このプロバイダが提供していることが多いです。

f:id:u874072e:20180425125144p:plain

入口には多数の利用者のアクセスが集まるので、
ここでブロッキングすることは効率的です。
そのため、サイトブロッキングは主にプロバイダによって行われます。

では、プロバイダによって、
特定のサイトへのアクセスをブロックするにはどうすれば良いでしょうか。

方法としては、次の3つが考えられます。

DNSブロッキング

あるサイトにアクセスするとき、
最初に、サーバーの名前からIPアドレスを引きます。

プロバイダはこのアドレスを引くための電話帳も提供しているので、
海賊版サイトの名前でアドレスを引きに来られた時に、
アドレスを教えない、もしくは別のアドレスを教えれば、
利用者は海賊版サイトにたどり着くことができなくなります。

f:id:u874072e:20180426130839p:plain

住所が分からないので手紙の宛名が書けなくなりました。

これはプロバイダが自身で管理しているDNSに、
ちょっとした細工をするだけなので、非常にお手軽です。
そのため、ブロッキングでは最も使われている方法になります。

IPアドレスブロッキング

サーバーに向けた通信は、
IPアドレスという住所が書いた封筒で届けられます。

そのため、プロバイダに通信が届いた時点で、
IPアドレスをみて、それが海賊版サイト宛のものならはじくことができます。

f:id:u874072e:20180426151447p:plain

窓口で封筒の受け取りを拒否されるので、
通信が止められました。

DPI

DPIとはディープパケットインスペクションの略で、
封筒の中を覗く操作に当たります。

封筒の中身を覗いて、それが不適切なものであれば破棄します。

f:id:u874072e:20180426152203p:plain

不適切かどうかは人間がチェックすれば分かるかもしれませんが、
全部の通信を人が見張るのは大変なので、
コンピューターが自動的に判断します。

ところが、何が不適切なのかを上手く判断できないと、
何でもブロックされてしまうので、
「名前」や「住所」だけで判断するのに比べて、
難しい方法になります。

ブロッキングは抜け道だらけ

上では、3つのブロッキングの方法を説明しましたが、
実は、このブロッキング回避しようと思うと簡単にできてしまいます。

DNSブロッキングの抜け道

DNSはサーバーの名前から住所を調べるための電話帳でした。
DNSブロッキングでは、プロバイダが自分で提供しているDNSを書き換えることで、
住所を教えない、あるいは、嘘の住所を教えます。

ところが、DNSはプロバイダだけが提供するわけではありません。
便利なので、プロバイダが提供しているだけであって、
電話帳は別の場所にあってもいいのです。

例えば、「8.8.8.8」のサーバーはGoogleが提供しているDNSサーバーです。
そのため、プロバイダのDNSに拒否されても、
「8.8.8.8」に聞きにいけばIPアドレスを教えてもらえます。

また、仮に、どのDNSIPアドレスを教えてくれなかったとしても、
IPアドレスを直打ちすれば、DNSに聞きに行くまでもなくアクセスできてしまいます。

IPアドレスブロッキングの抜け道

IPアドレスブロッキングは封筒の住所を見て通信をはじくものですが、
サイトの住所は簡単に変えることができます。

というのも、サイトはあくまでサイトを表示するためのデータが本体なので、
簡単にコピーして別の場所に置くことができます。

f:id:u874072e:20180426154056p:plain

住所を変えられるとブロッキングをすり抜けてしまうので、
アクセスを遮断することができません。
住所変更とブロッキングの鬼ごっこが始まってしまいます。

DPIの抜け道

「名前」も「住所」もダメなら「中身」ならどうだと思うのですが、
これも完璧ではありません。

インターネット上では途中で誰が封筒を開けて中身を読むか分からないので、
中身を暗号化して通信することがよく行われています。

暗号化されると、中身が何であるのかわからないので、
仮に封筒を開けたとしてもそれが不適切なものかどうかの判断がつきません。

通信の暗号化については、下の記事を参照してください。

clean-copy-of-onenote.hatenablog.com

通信の秘密を侵害する?

さて、ブロッキングについて見てきましたが、
ブロッキングは通信の秘密を侵害するのでしょうか?

通信の中身そのものを覗き見するDPIは明らかに通信の秘密を侵害してますね。

では、「名前」や「住所」をみてブロッキングするのはどうでしょうか?

通信の秘密で保護されるもの

実は、通信の秘密で保護されるものは、
「内容」に限らず、通信そのもの自体にも及び、
「誰が」や「誰に」、「いつ」などの情報も保護の対象となります。

IPアドレスは見えてしまう

とはいえ、インターネットでは「住所」(IPアドレス)を見ないことには、
通信を届けることはできません。
なので、「住所」はどうしても見えてしまいます。

本来は見えてはいけない情報なので、
基本的には見て見ぬふりをすることが求められます。

ブロッキングでは、本来見てはいけない情報をつかって、
通信を遮断
するので、通信の秘密の侵害に引っ掛かる可能性があるのですね。

名前を見るのはもっと危ない

インターネットでの通信は「IPアドレス」さえあれば十分です。

そのため、「名前」については、
通信を仲介する上でも知る必要のない情報です。

プロバイダがこれを知れるのは、
たまたまユーザーがプロバイダが用意した電話帳を使ったからです。

そのため、通信事業者として、知る必要もなく、
本来知ってはいけない情報
である「名前」を使ってブロッキングを行うことは、
IPアドレスのみでブロッキングするよりも、
通信の秘密の侵害に引っかかる可能性が高そうです。

まとめ

インターネットの通信では、サーバーの「名前」と「住所」が重要になります。

ブロッキングでは、「名前」や「住所」などの情報を使って、
通信を遮断しますが、
通信の秘密の保護の対象には、これらの情報も含まれています。

本来、知らないはずの情報を使ってしまうというのが、
通信の秘密を侵害する可能性があるということですね。

プライバシーポリシー