安全なメッセージングアプリケーションを一緒に設計する

私たちのほとんどは、私たちが毎日使用する「安全な」メッセージングアプリケーション(SMS、WhatsApp、Viber、Skypeなど)が実際に電子メールインターセプト機能でいっぱいであることを知っています。 中間サーバーを使用してメッセージを送信し、各メッセージのコピーを保持します。 自動的に各メッセージのコピーが状態サーバーに複製され、そこから削除されることはありません。 また、どのIPで何時に誰と話したかに関する情報を自動的に記録しました。



数か月間、私は、どのような方法でも傍受できない真に安全なメッセージングアプリケーションを実装する方法について考えました。



メッセージが暗号化を試みて、既に暗号化されているサーバーに送信することもありますが、実際に機能しますか? サーバーがメッセージの対象となるクライアントのふりをして暗号化されていない形式でメッセージを受信する場合、中間者攻撃はここで簡単に実装されますが、クライアントはメッセージは最終受信者のみが読むことができると考えています。



毎日使用でき、同時にプライバシーの問題を考えないために使用できるアプリケーションのアーキテクチャについて議論し、次のセットに到達しました。



  1. オープンソース。 したがって、誰でもアプリケーションがどのように機能するかを詳細に調べ、バックドアがないことを確認できます。
  2. P2P。 クライアントは互いに直接接続します。 メッセージは決してサーバーを通過しないため、どのような形式でも傍受される可能性がなくなります。 現在、iOSおよびAndroid用のlibjingleを使用してP2Pを実装するために、 WebRTCジングルを検討しています。
  3. TOR すべての接続は、匿名のTorネットワーク内のクライアントによって行われます。 このようにして、クライアントのIPアドレスと、トラフィックの初期暗号化が隠され、リッスンが妨げられます。
  4. OTRは 、ユーザーと認証目的の間のすべてのメッセージをさらに暗号化するために使用されます。
  5. AndroidバージョンはChatSecureに基づいて開発されています 。 iOSバージョンはゼロから開発されています。
  6. 顧客がお互いを見つけて直接P2P接続を確立できるように、XMPPサーバーが使用されます。 現時点では、選択はOpenfireとejabberdのどちらかです。


セキュアなアプリケーションアーキテクチャを開発するときに見逃したものは何ですか? 何を改善できますか?



All Articles