この記事では、わずかなIPアドレスの漏洩をも回避するためにVPNを使っている方に向けての情報です。
VPNの主な使用目的が、ブラウジング中の覗き見の防止、アクセス解析サービスを提供する企業へ検索の履歴の漏洩、ロケーションなどの個人情報を守る目的で利用している方にとっては有益な情報だとおもいます。
ソースネクストの「速いVPN」を2ヶ月近く使い分かった事を書いています。購入直後に公開し迷走しているページよりスマートにしました。
本当は有用なWebRTCについて
ソースネクストの速いVPNを購入した事をきっかけに、VPNを色々調べていく中で、WebRTC機能によりパソコン内から確認できるIPアドレスが外部に流出する脆弱性の存在を知ってしまいました。
WebRTCとはWeb Real Time Communicationの略で、本来は「Webブラウザ間で音声やビデオ、データなどをリアルタイムにやり取りする際に用いられる技術」です。
WebRTCについては「初心者必見!よくわかるWebRTCの仕組み(KDDI WEB COMMUNICATIONS)」がわかりやすかったです。
WebRTCのICE Candidateよって伝えられる情報
WebTRCのICE Candidateによって伝えるられる情報は大きく分けて4種類です。
- IPアドレス、ポート番号
- 暗号化の鍵
- セッションの属性(名前、識別子、アクティブな時間など)
- 通信するメディア
こうやってみると、確かにブラウザ間の直接通信などのピアツーピア接続をするための技術なので、かなり込み入った情報までやりとりされています。
WebRTCを悪用したサイトとなると、完全に危険なサイトの閲覧の問題になります。
そうなると、VPNは関係なくなるので、ここでは、IPアドレスの漏洩だけを書いていきます。
パソコン内のIPアドレス
そもそも、VPNを使ってもWebRTCでIPアドレスが漏れる?ほんと?と思っている方向けの記事でここまでの説明を求められているかはすごく微妙ですが少し、込み入ったことを書いていきます。
実は、パソコンのIPアドレスは一つではありません。VPNで接続していても、IPv4のローカルIPアドレスとIPv6アドレスなど複数のハードウェアに対応したアドレスを持っています。
IPv4アドレスは、インターネットで使えるグローバルアドレスと、プライベート空間で使える192.168.xxx.xxxといったローカルなプライベートアドレスの2種類が存在します。
IPv4の場合はインターネットプライバイダーからは、グローバルIPアドレスが割り振られ、その1つのグローバルアドレスを、ローカルなプライベートアドレスに変換して共用しています。
一つのパソコンにIPv4アドレス1個と、外用グローバルなIPv6アドレスと、プライベートな省略表示ができるIPv6アドレスの3つ以上をのアドレスを持っています。
WebRTCのIPアドレス漏洩は、内部で使われているIPアドレスの流出のことを言っているようです。
IPv4とIPv6の違い
パソコン内のIPアドレスについての説明が少し分かりにくかったと思うので、もう少しイメージしやすい形で、IPv4のローカルアドレスと、IPv6のローカルアドレスの違いを説明します。
IPv4の場合
プロバイダーから貸し出されたIPv4のグローバルアドレスは2文字しか使えない場合に似ています。
例えば佐藤家を例に出すと、家の中では、父親、母親、長男、次女、といった形で呼び合いをしているのが、ローカルアドレスです。
家の外から見たら、長男も次女も、一家全員が佐藤さんです。
他の人の家の父親と、佐藤家の父親は別人です。そのため父親という名前がわかっても、どこの父親か?を特定するには、別の情報が必要になります。
IPv4の伝言役のようなルータのNTA機能
ここの外向きと内向きの名前の呼び替えは、伝言役のようなルータのNTA機能が自動的に行なっています。基本的に家の中から外向きに話しかけない限り、ルータは伝言を取り継ぎません。
ルータは長男や長女が外の誰に話しかけたかを覚えていて、長男も長女のすべて佐藤さんとしての発言として発信します。
返答があったときに、長男が話しかけた相手からの佐藤さんへの返答は長男に、長女が話しかけた相手からの佐藤さんへの返答は、長女に向けて伝えます。
イメージしやすいように佐藤さんとしましたが、実際は固有名ではなく、プロバイダーの顧客番号とか貸出番号が外から見えます。
IPv6の場合
プロバイダーから貸し出されたIPv6アドレスは、少し事情が異なってきます。使える文字数が長いので、家の外と中で同じ名前で呼び合う事ができます。
プロバイダーからはA社顧客1番みたいなIPv6アドレスが割り振られて、佐藤さんの場合は、普通に、A社顧客1番佐藤清、A社顧客1番佐藤千代、A社顧客1番佐藤翔太、A社顧客1番佐藤愛などと、名前を普通につけています。
A社顧客1番がB社顧客9999番になっても、B社顧客9999番佐藤清といった形で後に続く、清という固有番号が使われるので、これは個人の特定が、長男から特定するより遥かに簡単になってしまいます。
パソコンには、外向きのIPv6アドレスの他に、家の中だけで使うIPv6アドレスといった、複数の名前が使われています。
2つ目の内向き用のIPv6アドレス
IPv6の2つ目ですが、グローバルな外向きの名前は長いので、家の中だけで使える「家の」といった名前も用意されています。
実際にアドレスの文字数が減り、家の清、家の千代、家の翔太、家の愛といった名前でも、会話が通じるようになります。
「家の」後の名前が固定なので、どこの家かは知らないけれど、清さんはいつでも、清です。
例えに使った清や千代や翔太や愛はお名前ランキングの上位から適当に選んだ名前ですが、実際はMACアドレスが使われるケースが多いです。
ハードウェア固有のMacアドレス
名前を使ったIPv6の説明は少し簡略化しすぎたのでMACアドレスについて紹介しておきます。
IPv6のアドレスは、プロバイダーから割り振られた先頭部分の文字と、後半部分の文字を適当に使うことで、家の中のすべての端末にグローバルで使える固有番号を割り振ろうという使い方を想定して割り振られています。
家庭内での重複を防止するために、ハードウェア固有のMACアドレスが利用されています。この命名法がどこの機器でも同じになっています。
当初、インターネットのルールを定めたRFC(Request For Comments)規格では、IPv6アドレス後半のデバイス個別部分に、MACアドレスを利用して生成する事になっていました。
この問題については、RFC7136によって、この仕組みは必須ではなくなったため、現在のRFCではMACアドレスを利用したIPv6アドレスの利用は、非推奨になっています。
Significance of IPv6 Interface Identifiers (RFC 7136)
しかし、古いルータやソフトでは、現在も非推奨のアドレスが使われており、本来は近場でしか伝わらないMACアドレスがグローバルアドレスに含まれるため、接続端末を識別する枝になっています。
ハードウェア固有のMACアドレスはIEEEで管理されています。そのため、機器間のバッティング防止として利用しやすいためそのままWi-Fiルータでの端末特定にも使われています。
IEEE登録局公式サイト MACアドレスから登録申請者の確認や検索も可能
MACアドレスは、手動で書き換えることもでき、最近のスマホではMACアドレスをランダム化して利用する機能がついています。
今のところ規格がない状態ですが、ランダムMACアドレスがIEEEが管理するMACアドレスとバッティングすると問題なので、ランダムMACアドレスと分かるようになっています。
さらに、ランダム化に規則性があるとも指摘されています。
ランダムMACアドレスに関する標準化については「Status of IEEE 802.11 Randomized and changing MAC address Study Group」から進捗状況について確認することができます。
ネットワークを管理する人間の都合により、MACアドレスをあえて固定してネットワーク上で端末を識別しやすくしている場合もあります。
いずれにしろ、IPv6はIPv4よりも、個人を特定しやすいアドレスだということだけ、頭の片隅に置いておくとよさそうです。
そもそも、IPv6は、地球上のすべての端末にユニークな番号を割り振るために作られた規格で、匿名化?何をいってるんだ?的なところはあります。
WebRTC技術を逆手に取った悪用のからくり
WebRTCが脆弱性の根源ではない事がわかったと思います。VPNでIPアドレスなど個人を特定できる情報を漏らしたくない人は、後ろめたいことをしている可能性もあり、別の意味で狙われるリスクが高まります。
ウイルスバスターやノートンなどのセキュリティソフトのWebアドレスの確認を切っている可能性すらあります。
そんな秘密を持っている人を暴きたい組織は、WebRTCという仕組みを利用して、正々堂々とブラウザに対してInteractive Connectivity Establishment (ICE)プロトコルで、ブラウザが認識できるIPアドレスを教えるようにと、ユーザーに分からないように小声で頼んできます。
正直で何でも話してしまうブラウザは、自分が認識している全てのiPアドレスなど、ブラウザ間の直接通信ができてしまうような情報を返信ししてしまいます。
こういった、WebRTCが、ピアツーピア通信を確立するために、色々なIPアドレスを伝えてしまう事から、VPNの接続元を調べたり、個人を特定しようとしたりと、探りを入れられてしまうのです。
いや、一番怖いのは、ブラウザへの直接接続です。最近のブラウザは、見ている接続しているページのIPアドレス以外では、ファイル操作やデーターベースを利用する事ができません。
しかし、見ているサイトであれば、データベースからファイル操作までやりたい放題で色々できてしまうのです。こっそり見ているはずが、裏では何をしているか分かりません。
最初は、仕組みより、対策方法だけ書くつもりでしたが、やっぱり長くなってしまいました。
ここからは、具体的な対策方法について書いていきます。
個人の特定を防止するためにVPNを使う場合に使わない方が良いブラウザ
Microsoft Edgeは、個人を特定する枝を付けるのが大好きなので諦めてください。Windowsのバージョンアップが実質無料になったため、ユーザーエクスペリエンスの向上の新機能という皮を被って新しい枝を付けてきます。
GoogleのChromeも、そもそもGoogleにログインしたらアウトなので、諦めてください。
Webサイトの運営者の魔の手
ホビー三昧Dでもアクセス解析に無料で使えるGoogle アナリティクスを使っています。新しいバージョンのGA4ではアプリ間にまたがるユーザー解析機能を提供しています。
サイト管理者が無料で使えるヒートマップに惹かれて、Googelの解析データをMicrosoftの検索エンジンであるBingの解析ツールとの連携しているケースもあります。
GoogleアナリティクスやGoogle Search Consoleの、解析タグはほとんどのサイトで付けられています。解析タグは、Google検索エンジンに登録してもらうにはどうしたら良いかを調べるためのツールになっています。
ホビー三昧Dでは、100のネタを10まで減らそうと努力しつつ、30とか120になってしまっています。アクセス数が増えた記事に気づくと、もう少し良くしようという修正のモチベーションがわきます。こういう使い方なので、大目に見てください。
WebRTCの悪用に対する対処はされますが、過度な売り込みやアクセス解析から逃れるためにVPNを使う場合は、GoogleのChromeを使うのはやめた方が良いと思います。
VPN接続目的にお勧めのブラウザ
まず、どちらのケースでもプライベートモードと呼ばれる、閲覧履歴を残さないタブでの閲覧をお勧めします。Firefoxなら、終了時に全てのクッキーや履歴を消去すると設定するのがお勧めです。
Firefoxでの設定方法
オープンソフトウェアのFirefoxは、少なくても広告収入とは無縁の団体のため、ユーザーが枝となる機能を停止する手段をFirefox の設定エディター(開発元ヘルプ)にある項目で用意しています。
やり方を説明します
アドレスバーにabout:configと入力してReturnキーを押します
警告ページが表示されるので「危険性を承知の上で使用する」をクリックします
検索ボックスにmedia.peerconnection.enabledと入力します
ダブルクリックして値を「false」に変更します
これで、WebRTC機能を悪用してVPNで隠したIPアドレスを盗み出そうとする人の鼻をくじくことができます。
ちなみに、WebRTCをOFFにすると、WebRTCを利用したブラウザ上で動くWeb会議ツールがなどが使えなくなります。
ついでにFirefoxの安心設定の紹介
設定のカスタムを色々探すと、暗号通貨マイニングやフィンガープリント採取やトラッキングコンテンツのブロックなど、色々出てきます。
更に、起動画面での広告ショートカットも、どういう機能があるかなど、「…」で閉じるを押していくと、ショートカットそのものを削除する方法も教えてくれます。
アクセスした場所の今日や明日の天気なんて知らせなくても結構と思っても、消させてくれない洗剤みたいなアイコンのあの、ツールとは全然違います。
ついでに、プライベートモードで起動すれば、全てまっさらにして終わってくれます。
AppleのSafariはデフォルトでOK
完全に停止することはできませんが、接続時に使用したIPアドレス以外はウェブサイトが認識できないようになっています。さすがMacOSです。
ただ、iCloudの同期やら何やらで、Appleには何をやっても筒抜けになります。
マイクロソフトに対して手厳しく書いているので、バランスを取るために、斜めな見方を言うと、囲い込みの結果かも知れませんが安心です。と書いておきます。
VPNソフトによって対応がまちまちな理由
情報セキュリティは利便性を追求するとどうしても脆弱性が残るため、常にトレードオフになります。
WebRTCは脆弱性として悪用されてしまってますが、リアルタイム通信やサーバーを使わずピアツーピア通信をするための便利な技術です。
速いVPNやWi-Fiセキュリティに限らず、多くのVPNサービスが、ユーザーの手を煩わせずに、あの手この手の裏技を駆使して、対策をしていますが、いたちごっこになっています。
今回のWebRTCによるIPアドレスの漏洩に関しては、ごく一部の問題です。Windowsそのものが、企業体質として情報ビジネスに熱心になっているため、色々と個人を特定できる枝をちょくちょく差し込んでいます。
当然、あの手この手の仕様変更は企業秘密であり、使用許諾でOKを押しているので文句は言えません。どうしてもアングラ的に、モグラ叩き的な対策しかないのが現状です。
抜本的な対策は、まだネットにつながってもほとんどデーターを送受信をしないWindows7を使うか、LinuxなどのOSを使うしか無いと思います。
まとめ
ちなみにWebRTC漏洩ですが、Free Wi-Fiを安全に使うためにVPN接続を使う場合や、利用元から接続元や履歴を特定されても問題のないサイトで使う場合には、まったく意識しなくて大丈夫です。
基本的に、インターネットは、悪用することを想定せず作られた技術による相互ネットワークです。
こんなWebRTCの脆弱性を心配するようなネットサーフィンって何やってるの?的なところもありますが、そもそもVPNの利用目的の一つが隠蔽のためなので公開しました。
設定自体はたいした手間はかからないので、めぞん一刻の五代くんの就職面接時に渡された安産祈願のお守り程度にはなるかと思います。
IPv6の割り当てに関するMACアドレスによるプライバシーの影響がRFC7136で指摘されたように、MACアドレスとIPv6の関係以外の要素でもプライバシーの影響が出ないかどうか世界中で調査が続いています。
今回、VPN接続時のWebRTCによるIPアドレスの漏洩を書きましたが、これは、普段は問題がないけど、場合によっては脆弱性になると言った類のものです。
追記すればするほどマニアックになっていきますが、また、なにか知ったら、記事にしようと思います。
Windowsアップデート良し、セキュリティソフト良し、Firefoxの安全設定良し、VPN接続良し、ご機嫌よし「ご安全に(^^)/」ってそんなノリで、お互い、楽しいVPNライフを楽しめると良いですね。
ソースネクストの「速いVPN」を2ヶ月近く使い分かった事を書いています。購入直後に公開し迷走しているページよりスマートにしました。