おい、ハブル!
今日は、同僚と私が数か月間取り組んできたこと、つまりモバイル インスタント メッセンジャーのプッシュ通知について話します。すでに述べたように、私たちのアプリケーションでは主にセキュリティに重点を置いています。したがって、プッシュ通知に「弱点」があるかどうか、もしある場合には、この便利なオプションをサービスに追加するために、どのようにしてそれらを平準化できるかを調べました。
私たちの翻訳を出版しています
素材を調べます
クラシック モデルでは、プッシュ通知によりメッセンジャーが MITM (中間者) 攻撃に対して脆弱になります。たとえば、Google、Microsoft、および古いバージョンの iMessage では、アプリケーションは暗号化キーを Apple サーバーに送信し、サーバー上でユーザーが認証され、メッセージ ヘッダー (またはそのコンテンツ) が復号化されます。
その結果、プッシュ通知サーバーにアクセスして通信内容を読む可能性があります。これは、通信の暗号化は役に立たないことを意味します。プッシュ通知は依然として第三者に読み取られる可能性が残ります。記事の著者は、この可能性についてさらに詳しく議論しました。
Apple と Google のサーバーがユーザー暗号化キーの漏洩に対して 100% 安全であると思う場合は、従業員がそれらにアクセスできるという事実を考慮してください。そして従業員も人間です。
プッシュ通知にはさまざまな脆弱性があるにもかかわらず、Signal や Telegram を含む多くの「安全な」インスタント メッセンジャーはプッシュ通知を使用しています。そうしないと、ユーザーはアプリケーションに常にログインして新しいメッセージを「手動」で監視する必要があります。これは非常に不便であり、競合するメッセンジャーが有利になることになります。
パラノイアと常識
私たちのプロジェクトでは、数か月前にこの問題を詳しく取り上げました。競争力を高めるためには、プッシュ通知オプションを追加する必要がありました。ただし同時に、データ漏洩がプロジェクトへの信頼を損なう可能性があるため、セキュリティ ホールを開かないでください。
しかし、当社にはすでに重要な利点があります。当社のメッセンジャーは分散型であり (データはブロックチェーン上に保存されます)、従業員はアカウントにアクセスできません。ユーザーのみが暗号化キーを持ち、MITM 攻撃から保護するためにブロックチェーン上で対話者の公開キーを利用できます。
プッシュ通知の最初のバージョンでは、できる限り安全に実行し、メッセージ テキストをまったく送信しないことにしました。プッシュ サービスはノードからメッセージのテキストを受信せず、受信の事実に関するシグナルのみを受信しました。したがって、ユーザーには「新しいメッセージが到着しました」という通知が表示されました。メッセンジャー内でのみ閲覧可能でした。
その後、Apple の通知の最新バージョンに新しいセキュリティ機能が搭載されていることを知りました。彼らは
私たちは現在、iOS 用のプッシュ通知の 2 番目のバージョンを開発しました。これにより、セキュリティ上のリスクを負わずにメッセージのテキストを表示できるようになります。新しい概念では、ロジックは次のようになります。
- プッシュ サービスは、トランザクション番号を含むプッシュ通知を送信します (暗号化されたメッセージは非常に大きくなる可能性があり、通知のサイズは非常に制限されています)。
- デバイスが通知を受信すると、NotificationServiceExtension が起動されます。これは、ID によってノードからトランザクションを要求し、保存されたパスフレーズを使用してトランザクションを復号化し、新しい通知をシステムに送信するマイクロアプリケーションです。パスフレーズは安全なストレージに保存されます。
- システムは、復号化されたメッセージまたは翻訳を含む通知を表示します。
- キーはプレーン テキスト メッセージと同様、どこにも移動しません。プッシュ サービスにはメッセージを復号化する方法がありません。
このバージョンは動作するものとして受け入れられ、iOS アプリケーションの最新アップデートに実装されました。
技術的な側面に興味がある人は、ソース コードを参照できます。
出所: habr.com