見出し画像

noteのIPアドレス漏洩の本当の問題点

私は、セキュリティの専門家ではないです。
しかし、今回のnote株式会社の記事投稿者のIPアドレスが漏洩した件で、note株式会社がコメントで「なお、一般的なIPアドレスから、個人情報が特定されることはありません。 」と書いている事には大きな違和感を感じます。

画像1

IPアドレスから分かる事

この問題を論じるには、まず、IPアドレスから何が分かるかを説明する必要があります。

・使っているISPや携帯会社
・郵便番号
・住所
・経度・緯度
・企業が契約して利用している場合には企業名

例えば、IPデータベース会社の一つであるMaxMindで調べてみましょう。
以下は、今回、漏洩したIPアドレスの一つを使って調べたものです。

画像2

・IPアドレス
・Country Code(国コード) … JP(日本)
・Location (住所) … Shinjuku, Tokyo, Japan, Asia(東京都新宿区)
・Postal Code(郵便番号) … 160-0021(郵便局のサイトで調べると、東京都新宿区歌舞伎町と分かります)
・Accuracy Radius (精度) … 20㎞範囲内
・ISP … au one net
・Organization(組織名) … au one net
・Domain(ドメイン) … em-net.ne.jp
・Metro Code(都市コード) … 空欄(米国の都市につく)

以上から、この人は新宿区歌舞伎町近辺に住んでいて、「auひかり」を使っている事が分かります。

更にこのIPアドレスを日本のIPアドレス空間の割り当てと登録を管轄しているJPNIC(日本ネットワークインフォメーションセンター)のwhoisというサービスで調べてみましょう。

画像3

このIPアドレスの回線は、auひかりとしてKDDI株式会社から提供されているものの、マンション向けのインターネットサービスを提供している株式会社テンフィートライトの管理下にあることが分かります。

この会社の管理下にあるということは、マンション一棟での全部屋に導入する契約でしょうから、この会社と契約しているマンションを探せばいいわけです。

特定の個人と、IPアドレスからおおよその住所を紐づける事が可能なのです。
特に女性は、嫌だと思います。

個人名とIPアドレスの結びつきの「精度」と「確度」

一旦、個人名とIPアドレスが結びついてしまったからといって、それが正しいとは限りません。
しかし、その結びつきの「精度」と「確度」を上げる手段は色々あります。
データ分析では、「精度」と「確度(正確度)」という指標を使います。

・精度 … その測定されたデータのバラツキの程度
・確度 … その測定されたデータが真の値(この場合、その本人)である確率

画像4

Wikipediaの「正確度と精度」より

精度は、この場合には、人物の同一性です。
「本当に、本人かどうかは分からないけど、同一人物が投稿してるよね?」という確率です。

確度は、この場合には、人物の合致性です。
統計学では「真の値」と云いますが、実際に本人であるかどうかの確率です。

他の異なる参照データセットを使う事で、各段にこの二つの確率は高くなります。

1.「○○▲▲さんが、noteで投稿したときのIPアドレスはこれだった」
2.「そのIPアドレスで、別のサイトでこういう投稿が行われていた」
3.「○○▲▲さんが、こんなことを匿名で発言してるなんて!」「○○▲▲さんが、こんな違法コンテンツを買ってるなんて!」

これは、
1. ○○▲▲さんは、いつもこのIPアドレスを使っているのか?
2. 匿名である主張を発言しているのは、毎回同じ人なのか?
3. ○○▲▲さんは、この匿名である主張をしている人と同一人物なのか?
という3つの観点で分析が必要となります。

住所の精度と確度

「1.○○▲▲さんは、いつもこのIPアドレスを使っているのか?」 については、noteでの投稿で使われたIPアドレスの履歴を追えばデータが得られます。もちろん、いつも同じ場所から投稿していないかもしれないので、IPアドレスにバラツキは生じますが、それほど大きなバラツキにはならないでしょう。
これは、「使われたIPアドレス」の分布として分析ができます。

画像5

使われたIPアドレスの分布のイメージ(実際の数値ではない)

データ分析を日頃からやっている方ならお分かりでしょうが、大抵は細かにバラツキません。
個人ごとの使用したIPアドレスのバラツキの度合いも、またバラツキの分布となります。
(ある人はバラツキが小さく、ある人はバラツキが大きいというように、人で集計した場合のバラツキ)
これは、その人の行動パターンに依存するためです。
毎日、同じような行動パターンを繰り返せば、バラツキは小さくなります。
「今日は東京、明日は大阪、明後日は札幌」と飛び回っているような人であれば、当然ながら、IPアドレスのバラツキは大きくなる可能性が大きいです。しかし、「投稿は落ち着いてしたいから、出先ではしない。家に帰ってからやる」という人なら、あっちこっちに出かけていたとしても、使用するIPアドレスのバラツキは小さいでしょう。

「IPアドレスは、DHCPで割り振られているから、毎回変わる」
という主張がネット上で見られました。

まず、DHCPで割り振られていても、そうそう違うIPは割り振られません。
IPアドレスの仕様上、できないです。
IPアドレスは、ネットワークアドレスとホストアドレスから成り立ちます。
例えば、192.168.0.1/24というプライベートIP(インターネット上では使えない会社内や自宅内で使うアドレス群)は、
・左から3つの数字(192.168.0)がネットワークアドレス
・右の数字(1)がホストアドレス
となります。
/24というのは、どこまでがネットワークアドレスで、どこからがホストアドレスかを指定するもので、各数字は8ビットなので、左から3つまでの数字をネットワークアドレスとしたい場合には、8×3=24ビットで「マスク」します。
「マスク」というのは、「この3つの数字でグループの番号とするから」という意味です。そのグループのアドレスが、「ネットワークアドレス」と呼ばれます。

この場合、192.168.0というグループで、言ってみれば、「東京都千代田区大手町一丁目」という町名みたいなものです。
その下に、細かに番地が分かれるわけです。
その番地は、IPアドレスでは、「ホストアドレス」と呼ばれ、0~255の数字が使えます。
「192.168.0.0」のようにホストアドレスの0は、ネットワークアドレスとしめす数字として使われます。
「192.168.0.255」のようにホストアドレスの255は、ブロードキャストアドレスとして使われます。
この「ブロードキャストアドレス」が肝で、例えると町内放送用だと思ってください。このアドレス宛てに「192.168.0.20の端末を探してるんですけど~」と問い合わせすると、192.168.0のネットワークアドレスに所属している端末はみんな192.168.0.255宛ての通信は受信するようになっているので、「あ、それ僕です!」と192.168.0.20が手を上げて連絡してくるわけです。
この仕組みによって、1対1の通信が成り立つわけです。

上述の例では、プライベートIPアドレスですが、インターネットに直接通信している端末やブロードバンドルーターは、パブリックIPアドレスを付与されます。
ISPからDHCPで動的にパブリックIPアドレス(インターネット上でアクセスできるアドレス)を割り振られても、上記の仕組み上、同一のネットワークアドレスに所属しているホストアドレスが割り振られているという点に注目して下さい。つまりIPアドレスのバラツキは限られるのです。

DHCPで動的にIPを割り振る際には、ブロードバンドルーターや端末のMACアドレス(Media Access Controlアドレス、ネットワークカード毎に付与されている固定のアドレス)を学習して、同じIPアドレスを払い出すようにしているところも多いです。

「DHCPで割り振っているIPの数が大きい(マスクしているネットワークアドレスの桁数が小さい)なら、分からないじゃないか」と仰る方もいるかもしれません。
これには「ネットワークの三角測量」と言われる手法があり、全く違うネットワークアドレスに属するIPアドレスからターゲットとなるIPアドレスに対して経路情報を調べます。

スライド1

すると、そのIPアドレスの手前あたりで、同一のIPアドレスが判明します。ルーティング上のゲートウェイアドレスです。これによって、同じ場所にいるかどうかが判定できます。

もしも、同一ネットワークアドレス内の別のホストアドレスの端末について場所が特定できたら、当然ながら、同じゲートウェイからアクセスしている端末はその場所に存在するという事なので、住所が特定できます。

スライド2

昨今は、IPv4の枯渇の問題があるので、IPv6へとシフトしていてIPv6が振り出されてるようになっています。
IPv6は、地球上の落ちている小石にIPを払い出しても十分というくらいに膨大な数のアドレス群です。
IPv6のIPアドレスのリース時間は、DHCPの実装で異なりますが、一般的にIPv4より長めです。
Understanding DHCPv6 Lease Times

IPv6への移行と共に、IPアドレスが個人情報と結びつくのは避けられないでしょう。

人物同一性の精度

IPアドレスのバラツキが小さい場合に、「あの人がここのサイトではこんな発言をしている」と飛びつきたくなるでしょうが、「2. 匿名である主張を発言しているのは、毎回同じ人なのか?」をまずは検証する必要があります。

これは既に研究が進んでいて、「Author Profiling」として色々な論文や実装が既にあります。

アンサンブル学習と遺伝的アルゴリズムに基づくオンラインWriteprint同定の研究
文章における著者の特徴解析

2007年のWiredの記事「文章の特徴を分析して個人を特定するプログラム」では、95%の精度で、複数の書き込みを同じ執筆者によるものと判断できると書いています。この記事から13年が経過した今だと機械学習などの実装が進んでいるので、より精度が上がっているでしょう。

GitHub上でも、「Author Profiling」で検索すると、実装はいくつも上がっています。

例えば、IPアドレスが違うものを毎回使っていたとしても、文章を解析すれば同一人物による投稿であるかどうかは技術的に解析可能なのです。

人物同一性の確度

「どこぞにお住まいの、いつもあそこにあんな事を書いている名無しさんは、あの人なのか?」
それが、「3. ○○▲▲さんは、この匿名である主張をしている人と同一人物なのか?」の検証になります。

上述したとおり、実は、これはIPアドレスは必要なくて、Author Profilingで可能です。
専門用語では「教師あり学習」と云います。
noteで実名で文章が書かれているわけですから、これを「正解」として学習して、他のサイトで匿名で書かれた文章と適合度を検証すればいいわけです。

とある知り合いの大学の先生が、学生のTwitterの投稿について、「(Author Profilingで)匿名で書いてもバレるのに」と仰っていました。
人は言語で思考します。言語を使わずに図形やイメージだけで日々考えて生きている人はいません。
思考は脳でパターン化し、そのパターンこそが、その人の特徴です。
言語の思考パターンは指紋のように個人を特定できるわけですから、言語を用いて書く文章にも、その指紋が残るわけです。

その事を利用したものにIBMのワトソンによる「Personality Insights」という言語学的分析とパーソナリティ理論を応用し、テキストデータから、その筆者の特徴を推測するデモがあります。

また、総務省傘下の情報通信研究機構は、SNSの投稿から本人の知能指数、精神状態、生活習慣を見抜く実験に成功しています。
「SNSから内面見抜く」

noteのIPアドレス漏洩の本当の問題点 ― 鍵を与えた事

以上から、noteのIPアドレス漏洩の本当の問題点はどこにあるかをまとめると、分析に必要な「鍵」を与えた事にあります。

ITの分野では、key-valueという用語があります。

データ管理システムの種類の一つで、保存したいデータ(value:値)に対し、対応する一意の標識(key:キー)を設定し、これらをペアで格納する方式。

KVSとは - IT用語辞典 e-Words

noteで実名で記事を書いたとしても、IPアドレスが漏洩しなければ、他のサイトで何を書いているかを調べる事は効率的にできません。他のサイトで調べるための検索に必要な「キー」が無いからです。

しかし、noteでIPアドレスが漏洩したことで、[本名:IPアドレス]という、ある程度、一意に特定可能なkey-valueが出来てしまったわけです。(その一意性は使用されたIPアドレスのバラツキになることは上述しました。)

本名がkeyで、IPアドレスがvalueだったのが、今度はIPアドレスをkeyとして検索して情報を抽出できるようになり、且つ、noteで文章が書かれているため、それを教師あり学習のデータとして使って、他のサイトで匿名で書かれた投稿が本人のものであるかどうかが確率的に判定できます。

スライド3

私がお願いしたいこと

セキュリティは、システムでは「非機能要求」に属していて、日本のITは、この「非機能要求」が弱いです。

私が担当しているのは、「非機能要求」の内、性能と可用性に関する品質ですが、セキュリティも大事な品質です。

是非、note株式会社には、この機会にセキュリティ会社のセキュリティ監査を受けてもらいたいです。

実装のまずいところを全部洗いだしてくれるはずです。

それが、大規模に使われているのであれば尚の事、社会の公器として、良き企業市民としての義務です。

そして、一般の方々には、ネット上でのプライバシーの確保は難しいという事を知って欲しいです。

上述したような技術は、企業がマーケティングオートメーションとか、広告配信などで使っている一般的なものです。

自分のプライバシー情報を守るというのはどういうことなのか?
そして匿名で何かを書くということは誰にも知られずに言いたいことを言える事なのか?
ネットでの発言の倫理が問題となっている今、考える一つのきっかけになれば幸いです。

追記1: IPアドレスのデータベースについて

IPアドレスのデータベースは、セキュリティのためにも使われています。
例えば、クレジットカード決済で、IPアドレスから場所を特定して、不正な決済かどうかの判断に使われています。

ある瞬間に東京にいて決済した人が、10分後に大阪で決済していたら、明らかにおかしいですよね。

IPアドレスのデータベースの存在そのものが悪ではありません。

追記2: IPアドレスの特定方法について

皆さんのコメントをTwitter等で拝見しました。

マンションでなく一戸建てであっても、また地方であっても、IPアドレスの特定はできます。
また、IPアドレスや個人の特定等は、Webのアクセスだけではなく、複数の方法を使います。

この分野は、私が知ってる限りでも20年ぐらい研究されていて手法が色々と蓄積されているのです。
私が最初にこの分野を学んだのは、Akamaiに在籍しているときでした。
最も近いキャッシュサーバを割り当てるためのネットワーク距離の測定で、ユーザの場所の特定は欠かせないですし、ユーザの場所を特定するためのソリューションも売ってました。

私は、基本的に1から10まで全てを書かないようにしています。
上述の内容も10の内の3ぐらいでしかないです。

殆どの人は、やり方を考え出せずにいるので、やり方を1から10まで知ろうとします。
でも、優秀な人なら「一を聞いて十を知る」、IT業界では「ポインタを得る」なんて言いますけど、僅かな情報からヒントを得て、残りを開拓します。

私が書いた内容から「IPアドレスの特定や、IPアドレスからの個人の特定って、ここまでしか判明しないんだな」というような判断材料にはしないでください。

追記3: IPアドレスと個人情報の紐づけと特定

「IPアドレスだけでは、個人情報が特定できるはずがない」と仰るコメントをちょこちょこと見受けました。

上述の「かったるい」手法で話を終わらせて、後は、「あれもあるよね、こういうデータから参照するやり方もあるよね」と察して欲しかったのですが、上述の手法は「眉唾」に見えるらしいので、より直接的に確定させる方法の一つを紹介します。

個人情報漏洩ってありますよね?
日本では大企業での漏洩はニュースになりますが、中小企業のWebサイトなどからの漏洩はほぼニュースになりません。
しかし、毎月、どこかのサイトが漏洩しているのです。
https://cybersecurity-jp.com/leakage-of-personal-information

個人情報漏洩は、本名、住所、メールアドレス、ID、パスワードだけではなくアクセスしてきたIPアドレスも含まれている事が多いのです。
https://haveibeenpwned.com/PwnedWebsites

スライド4

IPアドレスである程度あたりがつけば、他にも個人情報の特定の手法などソーシャルエンジニアリングを含めて幾らでもあるんですよ。
あなたが知らないだけで。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
ありがとうございます!
パフォーマンスエンジニア。株式会社Spelldata代表取締役。 JABEE広報・普及委員会委員。 「逆襲のSlackware」の管理人。 社会人向け統計学の勉強会「中西塾」の管理人。 パフォーマンスチューニングが好きな君、CMG(http://cmg.org)会員にならないか?