じーろぐ

日々の記録。コンピュータやプログラミングの話題が多め。

匿名性と安全性の高いメッセンジャーアプリThreema

高いセキュリティと匿名性を兼ね備えたメッセンジャーアプリ「Threema」の紹介です。

Threemaとは?

Threemaは、スイスのThreema GmbHが開発しているメッセンジャーアプリで、セキュリティと匿名性が大きな特徴です。 最近だと、「Telegram」や「Signal*1など、セキュリティに重点を置いて開発されているメッセンジャーアプリもありますが、Threemaは、IDの作成と本人確認にSMSを使用しない*2点、通信相手の本人確認に気を使っている点、通信内容だけでなく個人を特定するデータの秘匿に重点を置いて設計されているところが他のアプリと異なります。

threema.ch

基本的な使い方

インストールとThreema IDの作成

インストールとIDの作成やセキュリティに関する基本的なことは、以下のサイトがわかりやすいので参照してみてください。

暗号化メッセージアプリ Threema を使ってみた – Taro is here!

作成したThreema IDを(QRコードの読み取りなどで)交換することで、やり取りができるようになります。 Threema IDが他のメッセンジャーアプリのIDと違うのは、乱数だけをもとに作成されるため、電話番号やメールアドレスなどと紐付かない点です。これにより、

  • 本人確認にSMSや電話、メールアドレス不要
  • これらの個人を特定する情報を用いないので、高い匿名性を実現できる
  • 電話番号などが変わっても同じIDを引き続き使用できる
  • SIMスワップ攻撃に強い

といった利点があります。もちろん、電話番号やEmailとの関連付けることで簡単にIDの交換を行うこともできます。

プロファイル画面から今の関連付け状態を簡単に確認したり、解除したりできます。

f:id:z_logger:20190420163317p:plain

チャットと通話

Threema IDを交換した相手とは、テキストチャットと通話(Threema Callsと呼ばれるボイスコール)およびビデオチャットができます。

メインの画面はこんな感じです。ボイスチャットに関しては、通話日時や通話時間もチャット画面に記録されます。普通のメッセンジャーアプリが備えている機能は揃っています。

f:id:z_logger:20190420163336p:plain

写真や現在地を相手に送ることも簡単にできます。

f:id:z_logger:20190420163353p:plain

写真は、送信画面で多少編集したりもできます。

f:id:z_logger:20190420163410p:plain

通知もほとんど遅延はありません。

試した感じだとボイスチャットの音質もよく、比較的通信が遅い環境でも電話可能です(一分間に750から800KiB程度のデータ転送量*3。理論的には15kbps程度の通信速度でも通話できる)。

設定で、Threemaサーバをリレーして通話するかどうかを設定で選択できます。 Threemaサーバをリレーすると、通話相手にIPアドレスを知らせずに通話できますし、逆に直接通話に設定するとThreemaのサーバを介さずに通話可能です。

もちろん、通話もチャットも受信者の端末上で復号化するEnd to Endの暗号化をサポートしています。これは、最近のアプリだとほとんどのアプリが実現していますが、 Threemaは、本文だけでなく、メタデータ等も含めて全て暗号化して送信されるようです*4。また、送信するデータも最小限で済むように設計されています。

Threema IDの交換方法

Threemaを使うためにはまず最初に作ったThreema IDを交換する必要があります。

Threemaが一番推奨しているIDの交換方法は、対面によるQRコードの読み取りです(相手のThreema IDがわかれば良いので、他の手段でも交換可能)。直接あってIDを交換することで、なりすましを防ぐことができます。

これは一見めんどくさいですが、セキュリティを高める上で最も合理的な方法です。「セキュリティー=通信の暗号化」と考えがちですが、相手がなりすましをしているといくら通信内容を暗号化しても意味がありません。Threemaでは、本人確認手段によって信頼性を3段階でレベル分けしてアドレス帳に表示する仕組みになっています。最も信頼性の高い相手の確認手段を対面によるQRコードのスキャン*5、次いで他のアプリでよく用いられるアドレス帳とのマッチング(E-mailや電話番号での本人確認、信頼性は3段階中の2として表示されます)、IDの手入力などそれ以外の手段は信頼性が低いとして、どの手段でアドレス帳に登録したかがグリーン、オレンジ、レッドの3段階で表示されるようになっています(下の画像を参照)。この通信相手の本人確認を重視しているところが、Threemaが他のアプリと決定的に違う点です。

f:id:z_logger:20190420163434p:plain

このアドレス帳との同期はオプションで、同期の有効/無効を簡単に確認・変更できるだけでなく、同期する場合も送信されるデータはハッシュ化されます。

f:id:z_logger:20190420163450p:plain

プライバシーの設定がわかりやすい

Threemaの良い点はプライバシー設定が簡単なところです。上記のアドレス帳の同期をするかどうかのほか、

  • 着信拒否リスト
  • 既読かどうか/タイプ中かどうかを送信するかどうか?
  • Threema Callの有効/無効やリレーサーバーを経由するか

などを設定できます。また、珍しい設定項目として

の設定も可能です。また、PINコードなどでロックすることもできます。

f:id:z_logger:20190420163507p:plain

その他

良いとも悪いとも言えますが、有料です。そのかわり広告などはないですし、収益源がわかりやすいので安心できます。 ただ、アプリも数百円ぐらいで購入でき、サービス料金とかはないのでちゃんとペイしてるのか不明ですが。。

また、サーバはスイスにあり、セキュリティも考慮されているようです*6

まとめ

セキュリティにこだわっているメッセンジャーアプリは結構多いですが、匿名性にも気を使っているアプリは少ないんじゃないでしょうか。 実際、TelegramSignalのウェブページには"anonymity"という単語は出てきません。 最初から、「セキュリティ」、「匿名性」、「プライバシー」を考慮して作られているのでフローも自然で使いやすいと思います。気になる人は試してみてください。