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
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.
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.
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.
Danach erfuhren wir, dass Apples neueste Version der Benachrichtigungen über neue Sicherheitsfunktionen verfügt. Sie
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.
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:
Source: habr.com