LINEのタイマートークで思うこと

LINEに新しく、タイマートークという機能が追加されました。

現在、「日本、中国以外でご登録いただいているお客さま」以外にしか使用可能になっていないそうですが、そのうちオープンになるんじゃないでしょうか。(中国では永遠に使用できないかも知れませんが)

どういう機能かというとSnapchatのように制限時間をつけたメッセージを送れるということです。(当然、両環境が最近のバージョンかつ上記の地域制限に引っかかっていない地域のユーザーである必要があります。)

使用を試みると以下のような表示がでます。

Screenshot_2014-07-31-21-24-22

これを見るとエンドツーエンドで暗号化しているようです。メニューにも暗号化キーを表示できるようになっています。見ると128ビット長のユーザー固有の鍵が使用されているです。

Screenshot_2014-07-31-21-24-36

タイマートークのメッセージを受信すると以下のようにタイマーメッセージであることが表示されます。メッセージの内容を通知する設定になっている場合もタイマーメッセージの場合、内容は表示されません。

Screenshot_2014-07-31-21-25-33

メッセージをタップすると双方でカウントダウンが表示されるのが確認できます。この長さは2秒から1週間まで選択できるようになっているようです。

Screenshot_2014-07-31-21-25-45

さて、この機能なのですが、一応エンドツーエンドをLINEで実現しようという機能は評価できるのですがいくつか思いつく問題や懸念としては……。

  1. 暗号が正しく使用されているか、また運営会社や当事者以外の機関(政府機関を含む)の鍵に対して勝手に暗号化を行っていないか
  2. 暗号鍵が変更できない使用になっているが、乱数などでちゃんと生成されたものなのか
  3. メッセージはきちんとソルトされているか

1に関してはこれはクローズドソースの宿命なので、回避のしようのない問題と言えます。これは別にLINEに限らずWindowsなどのOSを含め、どのようなソフトでも当てはまります。
2に関しては、いくら暗号を使用していたとしても暗号鍵が予想できる情報から推測できるものが生成されるような仕様になっていると無駄になってしまいます。また、正しく実装された乱数から取り出されたものであっても、変更が行われない仕様になっていると暗号鍵が漏洩した場合、役に立たなくなってしまいます。これに関しては手動で鍵を再生成し拡散できるような仕組みが欲しいところです。どちらにしても署名目的には使用していない仕様と思われますので、鍵を定期的に再生成するぐらい仕組みでもいいかと思います。
3に関しては特にLINEの場合、既知のスタンプなどパターン化されたメッセージが頻繁に使用されるシステムのため、ソルトがきちんとなされていないとリプレイ攻撃などが容易に行われてしまいます。そのため、他のソリューション以上にソルトが重要であるかと思われます。

尚、評価できる点としてはスクリーンショットの防止・通知など幻想のセキュリティが想起されるような実装を行っていないところです。Snapchatではこれが行われていますが、実際のところその通知がないからと言ってスクリーンショットが撮られていない、という保証はありませんし、基本的に他のユーザーに送られた場合、送られた情報はそのユーザーがどうとでもできる、という前提に使われるべきです。将来的にこれらが実装されるのかは分かりませんが、現時点で敢えてそれらに関して対策を行っていないのはある意味まともとも言えるかも知れません。ただ、ヘルプなどでスクリーンショットなどの撮影が可能なので、タイマーメッセージで送付先ユーザーがそのメッセージを受け取った後は必ずしも安全でない、ということは示されるべきであると考えます。