米政府(NSA)が国民の通信を監視していることを暴いたSnowdenご推薦の、Signalのようなセキュアなメッセージングサービスも、今その上に誰がいるか分らなければ誰も使わないだろう。でもユーザーのリストを検索するためにあなたのコンタクト情報を送信したとき、Signalなどがそれをのぞき見しない、とどうやって信頼*できるのか? 実は、信頼など要らない。のぞき見は不可能だから。Signalの今度のアップデートでは、コンタクトの発見がなお一層プライベート(外部非公開)になった。〔*: 本稿は、信頼(trust)をネガティブなものとして捉えている。システムやベンダーへの信頼がセキュリティの唯一の根拠である事態。〕
そもそも、Signalにせよ誰にせよ、誰かがこの情報を集めていたことはない。それは通信の全過程で暗号化されているから、実はすでに相当安全なのだ。でも万一Signalがハックされたり、NSAに秘かに乗っ取られたりしたらどうか。もしもこの悪の双生児(政府諜報機関とハッカー)がSignalを仔細に調べたら、既知のハッシュ(暗号値)を見つけて、そこからユーザーが検索している相手の情報が分かるかもしれない。そんな情報があれば、ユーザーの匿名化が剥げ落ちてしまう。
SignalのMoxie Marlinspikeは先週のDisruptで、このアップデートの新しい機能を匂わせ、そういう(上記のような)超極端な可能性ですら、確実にありえなくしたチームのやり方を壇上の電子黒板に書き出した。
技術的詳細の説明は彼の方が当然適任だが、しかし、その要旨はこうだ: おそらく、Signalのサーバーは、小さなアクションがあるたびにそれらをログしている。それらから、メッセージの返事が書かれている場所の正確なメモリアドレスが分かり、そのアドレスにユーザー情報もある。
こう考えてみよう: 誰かが今読んだり書いたりしているものが何か、それは直接には分らなくても、よーく見れば、どこに鉛筆があるか、それがどんな動きをしているかは分かる。ユーザーリストがアルファベット順で、検索している名前の文字数が分かれば、かなり範囲は狭まる。
こんな、RAMをモニタするような超低レベルの攻撃も、その可能性を無視すれば敵の利となることもありえる。
しかし幸いにも、今は“secure enclave”(安全な包領・飛び地)という仕様が、急速にチップの設計のスタンダードになりつつある。その中で行われる演算や保存されるデータは、OSのユーザー部分(アプリケーションコード)からアクセスできない。AppleはそのAnチップのsecure enclaveにToch IDやFace IDの情報を収めるから、外部からユーザーのバイオメトリック情報にアクセスできない。ハッカーやあの3文字のお役所の手に、それらが渡ることもない。
この包領を利用し、メインのデータベースに特殊なクェリを投げることによって、Marlinspikeと彼のチームは、ユーザーが自分のアドレス帳をSignalのリストと突き合わせることができるようにした。リストや検索結果を見れるのは、そのユーザーのみである。その包領はさらに、Signalのサーバーがおかしなコードを実行してないことをチェックする。
Signalのその特殊なコードが悪用される可能性が、まったくないわけではないが、ふつうのユーザーコードでアクセスするハッカーや国の諜報機関に比べれば、その可能性はきわめて低い。それでもなお、ユーザーはSignalの技術を信頼しなければならないが、もっともっと多様な要素を信頼しなければならない通常のセキュリティ技術に比べると、要素数が少ないぶん安全だ。比喩として、情報はそれを持つ/見る人が多いほど、漏れる可能性が高い。
この機能はまだ、一般供用されていない。“ベータ技術のプレビュー状態”だ。でも今後の2か月でテストを終えて、展開したい、と言っている。