Sichere Push-Benachrichtigungen: von der Theorie zur Praxis

Hey Habr!

Heute spreche ich darüber, was meine Kollegen und ich seit einigen Monaten machen: Push-Benachrichtigungen für mobile Instant Messenger. Wie ich bereits sagte, liegt bei unserer Bewerbung das Hauptaugenmerk auf der Sicherheit. Deshalb haben wir herausgefunden, ob Push-Benachrichtigungen „Schwachstellen“ haben und wenn ja, wie wir diese ausgleichen können, um diese nützliche Option in unseren Service aufzunehmen.

Ich veröffentliche eine Übersetzung unseres Artikel von Medium mit einigen kleinen Ergänzungen von mir. Es enthält die Ergebnisse der „Untersuchung“ und eine Geschichte darüber, wie das Problem gelöst wurde.

Wir untersuchen das Material

Im klassischen Modell machen Push-Benachrichtigungen Messenger anfällig für MITM-Angriffe (Man-in-the-Middle). Beispielsweise sendet die Anwendung bei Google, Microsoft und der alten Version von iMessage Verschlüsselungsschlüssel an Apple-Server – auf dem Server werden Benutzer authentifiziert und der Nachrichtenkopf (oder sein Inhalt) entschlüsselt.

Sichere Push-Benachrichtigungen: von der Theorie zur Praxis

Dadurch besteht die Möglichkeit, die Korrespondenz durch Zugriff auf den Push-Benachrichtigungsserver zu lesen. Das bedeutet, dass jede Verschlüsselung der Korrespondenz nutzlos ist: Push-Benachrichtigungen bieten weiterhin die Möglichkeit, von Dritten mitgelesen zu werden. Die Autoren des Artikels diskutierten diese Möglichkeit ausführlicher. „Richtig verschlüsseln“ auf Xaker.ru, gewidmet Methoden zur Verschlüsselung von Nachrichten.

Wenn Sie der Meinung sind, dass die Server von Apple und Google zu 100 % vor der Weitergabe von Benutzerverschlüsselungsschlüsseln geschützt sind, bedenken Sie, dass ihre Mitarbeiter Zugriff darauf haben. Und Mitarbeiter sind Menschen.
Trotz aller Schwachstellen von Push-Benachrichtigungen nutzen sie viele „sichere“ Instant Messenger, darunter Signal und Telegram. Andernfalls müssen Benutzer neue Nachrichten „manuell“ überwachen, indem sie sich ständig bei der Anwendung anmelden. Das ist sehr unpraktisch und konkurrierende Messenger werden einen Vorteil haben.

Paranoia und gesunder Menschenverstand


In unserem Projekt haben wir uns vor einigen Monaten intensiv mit dieser Thematik auseinandergesetzt. Um wettbewerbsfähig zu sein, mussten wir eine Push-Benachrichtigungsoption hinzufügen. Aber öffnen Sie gleichzeitig keine Sicherheitslücke, denn jedes Datenleck würde das Vertrauen in das Projekt untergraben.

Allerdings haben wir bereits einen wichtigen Vorteil: Unser Messenger ist dezentral (Daten werden auf der Blockchain gespeichert) und Mitarbeiter haben keinen Zugriff auf Konten. Nur Benutzer verfügen über Verschlüsselungsschlüssel, und zum Schutz vor MITM-Angriffen sind öffentliche Schlüssel von Gesprächspartnern in der Blockchain verfügbar.

Bei der ersten Version der Push-Benachrichtigungen haben wir uns entschieden, so weit wie möglich auf Nummer sicher zu gehen und den Nachrichtentext überhaupt nicht zu übermitteln. Der Push-Dienst hat vom Knoten nicht den Text der Nachricht erhalten, sondern nur ein Signal über den Empfang. Daher sah der Benutzer die Benachrichtigung „Neue Nachricht ist eingetroffen“. Es konnte nur im Messenger gelesen werden.

Sichere Push-Benachrichtigungen: von der Theorie zur Praxis
Wie es funktionierte: Video.

Danach erfuhren wir, dass Apples neueste Version der Benachrichtigungen über neue Sicherheitsfunktionen verfügt. Sie freigegeben UNNotificationServiceExtension, die es Entwicklern ermöglicht, vollständig verschlüsselte Benachrichtigungsdaten über APNS zu senden. Die App auf dem Gerät des Endbenutzers führt dann die Entschlüsselung durch (oder lädt zusätzliche Daten herunter) und zeigt eine Benachrichtigung an. Wir haben es als Grundlage für die zweite Version der Push-Benachrichtigungen genommen.

Wir haben jetzt die zweite Version der Push-Benachrichtigungen für iOS entwickelt, die es Ihnen ermöglicht, den Text der Nachricht ohne Sicherheitsrisiko anzuzeigen. Im neuen Konzept sieht die Logik so aus:

  • Der Push-Dienst sendet eine Push-Benachrichtigung mit der Transaktionsnummer (die verschlüsselte Nachricht kann sehr groß sein und die Größe der Benachrichtigungen ist sehr begrenzt).
  • Wenn das Gerät eine Benachrichtigung empfängt, startet es unsere NotificationServiceExtension – eine Mikroanwendung, die eine Transaktion vom Knoten anhand der ID anfordert, diese mithilfe der gespeicherten Passphrase entschlüsselt und eine neue Benachrichtigung an das System sendet. Die Passphrase wird im sicheren Speicher gespeichert.
  • Das System zeigt eine Benachrichtigung mit einer entschlüsselten Nachricht oder Übersetzung an.
  • Die Tasten gehen nirgendwo hin, genau wie die Klartextnachricht. Der Push-Dienst hat keine Möglichkeit, die Nachricht zu entschlüsseln.

Sichere Push-Benachrichtigungen: von der Theorie zur Praxis

Wir haben diese Version als funktionsfähig akzeptiert und sie im neuesten Update der iOS-Anwendung implementiert.
Wer sich für die technische Seite interessiert, kann sich den Quellcode ansehen: github.com/Adamant-im/adamant-notificationService.

Source: habr.com

Kommentar hinzufügen