Plattformübergreifende Verschlüsselung über Messenger: Implementierung für iOS und Android
Wenn nur zugelassene Messenger ohne Ende-zu-Ende-Verschlüsselung verfügbar sind, ist eine zusätzliche Schutzschicht über dem bestehenden Transport erforderlich. Dark Message implementiert Offline-Verschlüsselung von Nachrichten, Dateien und Dokumenten mit AES-256-GCM. Verschlüsselter Inhalt wird in jeden Übertragungskanal kopiert – MAX, E-Mail oder SMS – ohne Zugriff auf die Originaldaten auf dem Gerät des Senders oder Empfängers.
Die App arbeitet ohne Netzwerkberechtigungen und verschlüsselt Daten lokal. Der Empfänger entschlüsselt mit einem gemeinsamen Passwort, was Kompatibilität zwischen Android, iOS und Windows gewährleistet.
Architektur und Kryptografie
Symmetrische Verschlüsselung basiert auf AES-256-GCM für Vertraulichkeit und Authentifizierung. Die Schlüsselableitung verwendet PBKDF2-HMAC-SHA512 mit 600.000 Iterationen und einem zufälligen Salt. Das verschlüsselte Paketformat ist: [Version:1B][Inhaltstyp:1B][Salt:16B][Nonce:12B][Chiffretext+GCM_Tag:NB]. Dies garantiert eindeutigen Chiffretext selbst bei identischen Eingabedaten mit demselben Passwort.
Unterstützte Typen:
- Textnachrichten (Ausgabe als Base64-String).
- Bilder und Dateien (Ausgabe als .darkm).
- Dokumente in jedem Format (PDF, DOCX, XLSX, ZIP).
Entwicklung mit KI: Von der Architektur zum Debugging
Claude wurde für Codegenerierung, Strukturentwurf und Fehleranalyse eingesetzt. KI schlug Architektur vor, erstellte Entwürfe und half bei Byte-Vergleichen während plattformübergreifender Tests. Endgültige Tests und Verfeinerungen erfolgten manuell auf echten Geräten.
Prozess:
- Aufgabenbeschreibung – Vorschlag der Struktur.
- Codegenerierung – lokales Testen.
- Debugging von Diskrepanzen (Bytes, Schlüssel).
- Testen auf Python zur Verifizierung.
KI beschleunigte die Entwicklung und ersetzte ein plattformübergreifendes Team, beseitigte aber nicht die Notwendigkeit der Hardwarevalidierung.
CI/CD ohne Mac: GitHub Actions für iOS
iOS-Builds erfolgen auf einem virtuellen macOS in GitHub Actions. Die Pipeline verwendet XcodeGen, um das Projekt aus YAML zu generieren, und vermeidet die Speicherung von .xcodeproj im Repository. Automatische Signierung und Upload zu App Store Connect.
Pipeline-Phasen:
- Repository-Klonen.
- Xcode-Projektgenerierung.
- Build und Archivierung.
- Upload zu TestFlight (15 Minuten ab Commit).
Android wird lokal über Gradle (APK/AAB) gebaut. Dies ermöglicht plattformübergreifende Entwicklung auf Windows.
Plattformübergreifende Probleme und Lösungen
Die Sicherstellung identischer Entschlüsselung zwischen Plattformen offenbarte Schlüsseldiskordanzen.
UTF-8 in der Schlüsselableitung
Java PBEKeySpec konvertiert Passwörter über char[], iOS über UTF-8-Bytes. Lösung: benutzerdefiniertes PBKDF2 auf Android mit passphrase.toByteArray(Charsets.UTF_8).
Visuell identische Zeichen
Passwort "a" (kyrillisch U+D0B0) auf iPhone vs. lateinisch "a" (U+0061) auf Android. Tests mit einem Python-Skript bestätigten Unterschiede in den Schlüsseln.
KDF-Auswahl
Argon2id auf Android kollidierte mit CI/CD (Abhängigkeitsprobleme). Wechsel zu PBKDF2 sicherte Vereinheitlichung.
Veröffentlichung: Lektionen aus App Store und RuStore
App Store: zwei Ablehnungen aufgrund von Erwähnungen von Messengern in Metadaten, generierten Screenshots und unvollständigen Lokalisierungen. Anforderungen: echte Screenshots, saubere Beschreibungen, vollständige Lokalisierungen, Support-URL mit Kontakten.
RuStore: Screenshots strikt 9:16, Erhöhung von versionCode.
Wichtige Punkte
- Offline-Betrieb: keine Netzwerkanfragen, Daten verlassen das Gerät nicht.
- Kompatibilität: verschlüsselt auf Android – entschlüsselt auf iOS/Windows.
- Robustheit: AES-256-GCM + PBKDF2 (600k Iterationen) gegen Brute-Force.
- Einfachheit: Kopieren/Einfügen über jeden Transport.
- Offenheit: potenzielle Open Source für Audit.
Nutzung in Projekten
Integration in bestehende Apps ist möglich durch Export der Verschlüsselungslogik. Für mittlere/senior Entwickler: Implementierung von PBKDF2 mit festen Parametern für plattformübergreifende Kompatibilität. Testen auf echten Geräten, Fokus auf UTF-8-Passwortnormalisierung.
— Editorial Team
Noch keine Kommentare.