安全なプッシュ通知: 理論から実践へ

おい、ハブル!

今日は、同僚と私が数か月間取り組んできたこと、つまりモバイル インスタント メッセンジャーのプッシュ通知について話します。すでに述べたように、私たちのアプリケーションでは主にセキュリティに重点を置いています。したがって、プッシュ通知に「弱点」があるかどうか、もしある場合には、この便利なオプションをサービスに追加するために、どのようにしてそれらを平準化できるかを調べました。

私たちの翻訳を出版しています Mediumの記事 私自身からいくつかの小さな追加を加えま​​した。 「調査」の結果と、問題を解決した経緯が記載されています。

素材を調べます

クラシック モデルでは、プッシュ通知によりメッセンジャーが MITM (中間者) 攻撃に対して脆弱になります。たとえば、Google、Microsoft、および古いバージョンの iMessage では、アプリケーションは暗号化キーを Apple サーバーに送信し、サーバー上でユーザーが認証され、メッセージ ヘッダー (またはそのコンテンツ) が復号化されます。

安全なプッシュ通知: 理論から実践へ

その結果、プッシュ通知サーバーにアクセスして通信内容を読む可能性があります。これは、通信の暗号化は役に立たないことを意味します。プッシュ通知は依然として第三者に読み取られる可能性が残ります。記事の著者は、この可能性についてさらに詳しく議論しました。 「正しく暗号化してください」 Xaker.ru では、メッセージを暗号化する方法に特化しています。

Apple と Google のサーバーがユーザー暗号化キーの漏洩に対して 100% 安全であると思う場合は、従業員がそれらにアクセスできるという事実を考慮してください。そして従業員も人間です。
プッシュ通知にはさまざまな脆弱性があるにもかかわらず、Signal や Telegram を含む多くの「安全な」インスタント メッセンジャーはプッシュ通知を使用しています。そうしないと、ユーザーはアプリケーションに常にログインして新しいメッセージを「手動」で監視する必要があります。これは非常に不便であり、競合するメッセンジャーが有利になることになります。

パラノイアと常識


私たちのプロジェクトでは、数か月前にこの問題を詳しく取り上げました。競争力を高めるためには、プッシュ通知オプションを追加する必要がありました。ただし同時に、データ漏洩がプロジェクトへの信頼を損なう可能性があるため、セキュリティ ホールを開かないでください。

しかし、当社にはすでに重要な利点があります。当社のメッセンジャーは分散型であり (データはブロックチェーン上に保存されます)、従業員はアカウントにアクセスできません。ユーザーのみが暗号化キーを持ち、MITM 攻撃から保護するためにブロックチェーン上で対話者の公開キーを利用できます。

プッシュ通知の最初のバージョンでは、できる限り安全に実行し、メッセージ テキストをまったく送信しないことにしました。プッシュ サービスはノードからメッセージのテキストを受信せず、受信の事実に関するシグナルのみを受信しました。したがって、ユーザーには「新しいメッセージが到着しました」という通知が表示されました。メッセンジャー内でのみ閲覧可能でした。

安全なプッシュ通知: 理論から実践へ
仕組み: ビデオ.

その後、Apple の通知の最新バージョンに新しいセキュリティ機能が搭載されていることを知りました。彼らは リリース UNNotificationServiceExtension: 開発者は完全に暗号化された通知データを APNS 経由で送信できます。次に、エンド ユーザーのデバイス上のアプリが復号化を実行し (または追加データをダウンロードし)、通知を表示します。私たちはこれをプッシュ通知の第 2 バージョンの基礎として採用しました。

私たちは現在、iOS 用のプッシュ通知の 2 番目のバージョンを開発しました。これにより、セキュリティ上のリスクを負わずにメッセージのテキストを表示できるようになります。新しい概念では、ロジックは次のようになります。

  • プッシュ サービスは、トランザクション番号を含むプッシュ通知を送信します (暗号化されたメッセージは非常に大きくなる可能性があり、通知のサイズは非常に制限されています)。
  • デバイスが通知を受信すると、NotificationServiceExtension が起動されます。これは、ID によってノードからトランザクションを要求し、保存されたパスフレーズを使用してトランザクションを復号化し、新しい通知をシステムに送信するマイクロアプリケーションです。パスフレーズは安全なストレージに保存されます。
  • システムは、復号化されたメッセージまたは翻訳を含む通知を表示します。
  • キーはプレーン テキスト メッセージと同様、どこにも移動しません。プッシュ サービスにはメッセージを復号化する方法がありません。

安全なプッシュ通知: 理論から実践へ

このバージョンは動作するものとして受け入れられ、iOS アプリケーションの最新アップデートに実装されました。
技術的な側面に興味がある人は、ソース コードを参照できます。 github.com/Adamant-im/adamant-notificationService.

出所: habr.com

コメントを追加します