Pignus - einfache PGP-Verschlüsselung auf iOS

Tobias Jungnickel 18.03.2019

Vom MVP zur App

Das Internet ermöglicht es Menschen auf der ganzen Welt miteinander zu kommunizieren. Allerdings birgt dieses auch die Gefahr, dass unverschlüsselte Nachrichten von dritten abgehört werden können. Gerade das am häufigsten genutzte Kommunikationsmedium wird überwiegend unverschlüsselt genutzt: die E-Mail.
Auf dem Software-Markt gibt es zwar eine Vielzahl von E-Mail-Clients mit der Option zur Verschlüsselung der Nachrichten - diese sind aber entweder zu teuer oder zu kompliziert. Mit Pignus haben wir eine App für iPhone und iPad entwickelt, die das Verschlüsseln von Nachrichten auch für unerfahrene Nutzer einfach und intuitiv gestaltet.

PIGNUS-Symbol

Was ist PGP?

Pretty Good Privacy (PGP) ist ein Verfahren zur Verschlüsselung und Signierung (Unterschrift) von digitalen Daten. Es wurde 1991 von Phil Zimmermann entwickelt und basiert, wie auch das Derivat OpenPGP auf dem RFC 4889.
PGP nutzt das Public-Key- oder auch asymmetrisch genanntes Verfahren. Dabei erstellen beide Parteien, die miteinander verschlüsselt Daten austauschen wollen, ein Schlüsselpaar bestehend aus privatem und öffentlichem Schlüssel. Hierbei muss der eigene öffentliche Schlüssel an die jeweils andere Partei übergeben werden, wobei der private Schlüssel niemals das eigene Gerät verlassen sollte und zusätzlich selbst noch mit einem Passwort, der sogenannten Passphrase, verschlüsselt werden kann. Wichtig hierbei zu wissen ist, dass trotz Kenntnis des öffentlichen Schlüssels keine Rückschlüsse auf den dazugehörigen privaten Schlüssel gezogen werden können und dieser erst recht nicht daraus reproduziert werden kann.
Da beim Senden des öffentlichen Schlüssels an die andere Partei über ein unsicheres Medium, z. B. das Internet, dieser von einer dritten Person abgefangen und verfälscht werden kann, muss noch die Authentizität des Schlüssels zur Person geprüft werden. Dieses sollte anhand des Fingerprints, einer kurzen, eindeutigen Zeichenkombination, über einen zusätzlichen Kanal, z. B. persönliches Gespräch oder Telefonat, erfolgen.
Um nun Daten für die andere Partei zu verschlüsseln müssen diese mit dem öffentlichem Schlüssel der Gegenseite verschlüsselt werden. Diese können dann nur noch mit dem zugehörigen privatem Schlüssel entschlüsselt werden, der sich nur im Besitzt des Eigentümers befindet.
Um Daten digital zu signieren wird dieses Verfahren quasi umgedreht. Der Unterzeichner verschlüsselt die Daten mit seinem privaten Schlüssel und sendet diese an die andere Partei. Diese Signatur kann wiederum nur mit der dazugehörigen Gegenseite, dem öffentlichen Schlüssel des Schlüsselpaares, geprüft werden, wodurch sichergestellt werden kann, dass diese Signatur nur vom wirklichen Erzeuger, dessen öffentlichen Schlüssel man besitzt, erzeugt werden konnte.
Wenn Daten signiert und verschlüsselt werden sollen so wird zuerst eine Signatur der Daten erstellt und das Ergebnis zusammen mit den eigentlichen Daten verschlüsselt und an den Empfänger gesendet. Da das asymmetrische Verschlüsseln von Daten mehr Rechenkapazität benötigt und die gleichen Daten, wenn sie an mehrere Parteien gesendet werden sollen, individuell mit deren öffentlichen Schlüssel verschlüsselt werden müssen kommt zusätzlich die symmetrische Verschlüsselung ins Spiel. Die eigentlichen Daten werden mit einem zufällig generierten Schlüssel symmetrisch verschlüsselt, welcher jeweils asymmetrisch für die verschiedenen Parteien verschlüsselt wird. Dieses Vorgehen wird auch hybride Verschlüsselung genannt. Dabei ist zu beachten, dass Daten, auch wenn sie nur an eine andere Partei übertragen werden sollen, zusätzlich noch mit dem öffentlichem Schlüssel des Senders verschlüsselt werden, damit dieser diese wiederum auch entschlüsseln kann.

Der Entwurf des minimal überlebensfähigsten Produktes

Schema minimal überlebensfähiges Produkt Das Ziel bestand nun darin den oben beschriebenen Prozess, der für viele sehr technisch und damit oft kompliziert und abschreckend wirkt, einfach und intuitiv zu gestalten. In einer multidisziplinären Gruppe innerhalb der Firma, bestehend aus erfahrenen Nutzern von PGP und Kollegen, die entweder eine endbenutzerfreundliche Bedienung für PGP gesucht haben oder das Verfahren als solches gar nicht kannten, wurde dabei die Funktionalitäten besprochen, die vorhanden sein müssen, um das Verfahren in einer App umzusetzen. Das daraus entstehende Produkt wird auch MVP, kurz für Minimum Viable Product oder auf deutsch minimal überlebensfähiges Produkt, genannt. Dabei handelt es sich um ein Produkt, das nur genau die Funktionalitäten besitzt, um den primären Anwendungsfall für die Zielgruppe durchzuführen. Dieses Vorgehen ermöglicht es ein Produkt möglichst schnell auf den Markt zu bringen, um den Bedarf der potentiellen Nutzer zu prüfen und gegebenenfalls die Ausrichtung frühzeitig anzupassen.
Für Pignus bestand die Kernfunktionalität darin das eigene Schlüsselpaar aufzunehmen, den öffentlichen Schlüssel an die Gegenseite zu übertragen, um schlussendlich Dokumente für diese verschlüsseln zu können. Wichtig hierbei war es, dass es nicht nur möglich sein sollte, bereits erzeugte Schlüsselpaare importieren zu können, sondern vor allem auch neue Schlüsselpaare in Pignus erzeugen zu können. Zudem sollte es möglich sein den eigenen öffentlichen Schlüssel auf sicherem Wege an die Gegenseite senden und diesen zusätzlich auf Echtheit prüfen zu können. Bei der Verschlüsselung sollte es darüber hinaus nicht notwendig sein Passwort bei jeder Verschlüsselung erneut eingeben zu müssen. Auch sollte der Nutzer nicht dazu gezwungen werden die App öffnen zu müssen, um Daten zu verschlüsseln, sondern dieses direkt an passender Stelle durchführen zu können.

Was macht Pignus so einfach?

Screenshot PIGNUS Um die Bedienung von PGP in Pignus so einfach wie möglich zu gestalten wurden einzelne Bestandteile quasi in eine andere Sprache übersetzt, die einer Nachrichten-App ähnelt. Anstelle eines Schlüsselpaares erstellt man in Pignus ein Profil. Neben dem eigenen Namen und der E-Mail-Adresse muss ein Passwort hinterlegt werden (die oben beschriebene Passphrase), um das eigene Profil, oder genauer gesagt den privatem Schlüssel, zusätzlich zu sichern.
Nach dem Erstellen wird empfohlen eine Sicherung des Profils anzulegen, falls dieses auf einem anderen Gerät importiert werden möchte. Um seinen öffentlichen Schlüssel an die andere Person zu übertragen kann das Profil über alle Kanäle, die auf dem iOS-Gerät angeboten werden, gesendet wird. Empfohlen wird hierzu AirDrop über ein lokales WLAN anstatt per E-Mail oder über einen Nachrichtendienst wie WhatsApp.
Das eigene Profil wird dann bei der anderen Personen als Kontakt gelistet. Um zusätzlich die Echtheit zu überprüfen kann entweder der Fingerabdruck vergleichen werden oder viel einfacher der QR-Code mit der integrierten Kamera ausgelesen und automatisch geprüft werden.
Um nun eine Nachricht oder ein Dokument zu verschlüsseln wird die gewünschte Optionen nach Auswahl der Schaltfläche in der Mitte gewählt und anschließend die gewünschte Nachricht eingegeben bzw. das Dokument ausgewählt. Im nächsten Schritt müssen nur noch die Kontakte gewählt werden, die die zu empfangenen Daten entschlüsseln können sollen. Hierbei ist das eigene Profil automatisch ausgewählt, damit diese immer noch selbst wieder entschlüsselt werden können.
Um den eigentlichen Prozess der Verschlüsselung durchführen zu können muss das eigene Passwort eingegeben werden. Dieses wird benötigt, da die Daten nicht nur verschlüsselt sondern immer auch signiert werden. Um die immer wiederkehrende Eingabe zu erleichtern kann das Passwort gespeichert werden und mit Bestätigung über Touch-ID (Fingerabdruck) oder Face-ID (Gesichtserkennung) automatisch ausgefüllt werden.
Zum Schluss muss noch der Weg gewählt werden wie die Daten an die andere Person übertragen werden sollen. Auch hier bieten sich, wie beim Senden des Profils, alle Möglichkeiten an, die iOS bietet. Neben verschiedenen Nachrichtendiensten können Dokumente auch in Umgebungen wie iCloud oder Dropbox abgelegt werden.
Das hier beschriebene Verfahren der Verschlüsselung funktioniert genauso auch andersherum für die Entschlüsselung. Hierbei wird automatisch erkannt, ob es sich um verschlüsselte oder unverschlüsselte Daten handelt und jeweils die entsprechende Richtung durchgeführt.
Neben der Ver- und Entschlüsselung direkt in Pignus ist es zudem auch möglich Dokumente in einer beliebigen App auszuwählen und diese anschließend, beispielsweise per Mail, an die andere Person weiterzuleiten. Verschlüsselte Nachrichten können zudem direkt in jeder App unverschlüsselt angezeigt werden.


Quellen
Tobias Jungnickel

Consultant bei frobese GmbH