LINEの電話帳アップロードの弊害について検討してみた

こういう系、高木先生をフォローしてるからすぐ耳に入ってはくるんだけど、
実際何がどのようにマズイのかというところまでちゃんと考えずに終わる事が多い。

で、昨日ぱぱす君とその話になり議論したので、とりあえずのところをまとめておこう。
ぱぱす君は物理学科ながら情報科学的な話をちょこちょこ知っているというレベルなので、
彼がバンバン言いたいことを言ってそれに一つずつ答えて行くと、こちらも理解が深まるというかそんな構図である。

LINEのしくみ

LINEは繋がりに電話番号を利用する。すなわち、1電話番号で1人の登録になる(これはSMSで登録確認が来ることで保証されている)。

AさんがLINEの会員になりアプリをインストールすると、Aさんのの電話帳に入っている他人の電話番号が全て、LINEにアップロードされる。(☆)

この結果、もしAさんの電話帳に登録されていたBさんがLINEを始めると(あるいはすでに始めていると)、
Bさんに「Aさんは友達かもしれないよ」という旨が表示される。

きっかけ

LINE始めると他人の電話番号を勝手にLINEに送られるんだぞ!気持ち悪い!LINE始める奴は俺の番号消してからにしろ!というようなことを言ったら、意外にも何が悪いの?という反応が返ってきたのでバトル開始。

問題になりうる点を整理。

papasuがLINEを開始してqsonaの電話番号をアップロードした。この先の状況を3点に整理する。

  1. qsonaがLINEを使わない時に、qsonaに引き起こされる害
  2. qsonaがLINEを始めた時に、qsonaに引き起こされる害
  3. qsonaのみにかかわらず、全体としてこのようなシステムがもたらす害

このうち1つ目だけで時間切れになってしまったので、2つめ・3つめについては高木先生のBlogを再度読んで勉強することにする。

思考1。

まず単純に気になるのは、LINEに電話番号がアップロードされることで、単純にLINEに悪用される、あるいは流出する可能性。
まあLINEを使うんだから自分の電話番号がLINEに知られるのは当たり前だ。でもLINEを使わない人の番号まで送られるのはどうなのか。電話帳の中にはLINEの会社NHNは生理的に嫌いだから番号なんて知らせたくない人もいるであろう。

まずぱぱす君は、電話番号はハッシュ化して送られるのだから生電話番号を送るのとは違うという意見。
確かにハッシュ値に変換されていれば、流出しても鍵が残っていれば大丈夫そうだ。

しかし、仮にハッシュにして送っていようと、LINEの人が本気を出せば容易に照合可能であると思われる。
なぜなら日本の携帯の電話番号は、僕の知っている限り090か080か070で始まるわけで、その下は8桁、すなわち
3*10^8=3億個程度しかない。
3億程度、総当たりですぐである。

ここのところ、ぱぱす君は、ハッシュ関数単射ではなくて、適当な数(1000個とか)衝突するんじゃないかという話をしてたけど、
さすがに衝突して一意に区別できなくなったら、そもそもサービスとして使い物にならないんじゃないかと。
qsonaとpapasuの電話番号のハッシュ値が同じで、二人ともLINEを始めたら、サービス上でお互いを区別できないわけですからね(友達かも?のサジェストとかがぐちゃぐちゃになると思われる)。

しかしながらよく考えてみると、送るのはあくまで電話番号だけであって、
それとセットで電話帳の登録名までが送られるわけではなさそうだ。(これに気づくのに大分かかった。。)

それだったら、電話番号だけがアップロードされたところで、「その電話番号が存在するよ」「その電話番号はpapasuの知り合いだよ」という情報が渡るだけだ。
前者の「その電話番号が存在するよ」という話は、今の時代、電話番号自体は適当にかけてもだいたい繋がるわけで、そもそも平文で電話番号リストが流出しても、大した問題ではなさそうだ。
後者の「その電話番号はpapasuの知り合いだよ」という情報が使われるとしても、何か出来るとしてもLINE会員のpapasuへの嫌がらせくらいであろうか。

と、この辺まで考えて高木先生の記事を読むと次のようにある。

ここで言う「暗号化」というのはハッシュ化のことを指しているのだろう。運営側としては、友だちのマッチング処理さえできればよいので、生の電話番号は不要でありハッシュ値で事足りるという配慮(Privacy by Design の一つ)なのだろう。

しかし、電話番号のような値域の狭い(日本国内の携帯電話番号は3億個分しかない)文字列をハッシュ化しても、総当たりによって簡単に元に戻せてしまうので、「やらないよりはまし」という程度の意味しかない。

また、電話番号というのは、誰でもいつでも無差別に電話をかけることが可能なものであることは、昔から皆に知られていることなので、電話番号そのものが漏れないようにすること自体にはあまり意味がない。求められていることは、「誰それの電話番号は何番か」ということが漏れないようにすることである。

思考2。

次に考えられるのは、電話番号の一意性が崩れる瞬間、すなわち携帯を解約してその番号が…って話。

この辺まで来ると、そろそろ高木先生の話を正確に理解できてきているので、わざわざ書くのがめんどくさくなってくるという。

高木浩光@自宅の日記 - LINEがこの先生きのこるには