21. November 2019 von Ivan Kablar
Migration von Videomitschnitten mit Apache Mina (Teil 1)
Zu Beginn möchte ich euch zunächst einmal erklären, worum es sich bei einer Videoident überhaupt handelt: Falls ihr vor kurzem ein Bankkonto online eröffnet oder einen Kreditvertrag abgeschlossen habt, dann habt ihr die Videoident sehr wahrscheinlich bereits kennengelernt und durchlaufen. Eine Videoident ist eine Art der Identifikation, die beispielsweise bei der Eröffnung eines Bankkontos notwendig ist. Mussten Kundinnen und Kunden bisher ihre Identität über Postident in einer Filiale der Deutschen Post bestätigen, können sie dies nun bequem von zuhause erledigen. Ein großer Vorteil von Videoident besteht darin, dass die Identifikation mit der Webcam über den PC oder das Smartphone durchgeführt werden kann.
Während des Identifikationsprozesses wird eine Videoaufzeichnung angefertigt und gespeichert, so dass auch zu einem späteren Zeitpunkt darauf zurückgegriffen werden kann. Auf diese Weise sollen Geldwäsche und Terrorismusfinanzierung verhindert werden.
Mit der Verschärfung des Geldwäschegesetzes (GWG) haben sich auch die Anforderungen an die im Videoident-Verfahren gemachten Videomitschnitte grundlegend geändert. Um diese Problematik zu beschreiben und um euch zu zeigen, welchen Lösungsansatz es gibt, möchte ich ein Kundenprojekt aus dem Bankenbereich als Beispiel heranziehen, indem die Migration von Videomitschnitten die zentrale Projektanforderung darstellte.
Das Projekt
Unser Team unterstützte den Großkunden bei der Erweiterung seines Produktportfolios um einen Web-Service, mit dem es möglich sein sollte, Verträge rechtssicher digital zu signieren. Unser Auftraggeber ist einer der wenigen Dienstleister, der als qualifizierter Vertrauensdiensteanbieter nach eIDAS anerkannt ist und seinen Geschäftskunden (GK) die Nutzung seiner Videoident und Vertrauensdienste über sein Portal anbietet.
Die eIDAS-Verordnung trat 2014 als neue europäische Verordnung in Kraft und regelt europaweit verbindlich die Anforderungen an elektronische Identifizierung und Vertrauensdienste. Mit eIDAS sollen die elektronischen Transaktionen im Binnenmarkt gestärkt werden. Ein Beispiel: Will eine Person einen Vertrag online rechtssicher abschließen, dann muss diese sich zuerst über ein Portal identifizieren. Anschließend werden die Verträge und Daten dieser Person auf das Portal, über das der Signaturvorgang durchgeführt wird, überführt.
Die Frage, „Was passiert denn mit den Videomitschnitten?“ ist durch aus legitim – schließlich handelt es sich dabei um sensible Kundendaten. Eine Notiz am Rande: Für die Videoident verwendet unser oben genannter Kunde übrigens die Software iAgent der Firma Novomind.
Die Migration
Bevor das GWG seine Anforderungen verschärfte, war die jeweilige Bank für das Speichern und die sichere Verwahrung der im Videoident-Verfahren gemachen Videomittschnitte verantwortlich. Mit der Anpassung des GWG sind nun die Kreditinstitute verpflichtet, die Videomitschnitte auf eigenen Servern zu speichern. Aus diesem Grund beschloss unser Kunde, die auf seinem Portal gemachten Videomitschnitte bis Mitte 2019 an die Kreditinstitute – also an seine Geschäftskunden – auszuliefern. Da es sich hierbei um sehr große Datenmengen von 20+ TB handelte, sollte eine einfache und sichere Lösung für die Übermittlung der Daten geschaffen werden. Die Auslieferung der Videomitschnitte vom Novomind-Server an die GK sollte durch eine Java-Implementierung des SSH-Protokolls realisiert werden.
Die Migration der Daten eines großen GK stellte in dem Projekt eine Ausnahme dar, denn die große Anzahl seiner bei Novomind gespeicherten Videomittschnitte machte die Auslieferung auf einem physischen Speichermedium erforderlich.
Hohe Sicherheitsanforderungen
Die Sensibilität der Daten und die damit verbundenen hohen Sicherheitsanforderungen setzten in diesem Projekt den Einsatz einer Zwei-Faktor-Authentisierung für GK voraus. Diese sollte mittels privater und öffentlicher Schlüssel durchgeführt werden. Diese Schlüssel wurden mit dem RSA-Algorithmus und einer angemessenen Schlüssellänge implementiert, die für die notwendige Sicherheit sorgen sollten.
Jeder GK hatte zudem ein eigenes Verzeichnis. Darin wurden die zu migrierenden Videomittschnitte durch einen Cron-Job – damit ist ein System gemeint, das automatisiert Aufgaben erledigt – zwischengespeichert. Bevor ein Videomitschnitt vom Novomind-Server einem GK zugespielt werden konnte, wurde er dechiffriert und in ein kennwortgeschütztes ZIP-File gepackt, dessen Kennwort nur dem jeweiligen GK bekannt war.
Eigenentwicklung statt Zukauf
Auf dem Markt gibt es eine Vielzahl kommerzieller SFTP-Serverprodukte. Diese sind jedoch mit Lizenzkosten und Implementierungsaufwand verbunden. Um schneller und effektiver auf die sich ständig ändernden und sicherheitskritischen Anforderungen reagieren zu können, sollte eine Eigenentwicklung implementiert werden.
Diese Vorgabe stellte kein Problem dar, denn durch den frühen produktiven Einsatz sowie durch Continuous Deployment mit Zero-Downtime wurde die Anforderung reaktiv „on the fly“ entwickelt. Zudem war unser Team in die Fachthematik eingearbeitet und mit den relevanten Schnittstellen, Konfigurationen und Tools vertraut. Die Einarbeitungszeit und auch die Kommunikation spielten eine wichtige Rolle. Außerdem sollte der Dienst nach der Implementierung für die Auslieferung der Videomitschnitte erweitert werden, um auch Ident-Ergebnisse, wie zum Beispiel Bildschirmaufnahmen der Personalausweise, an die GK zu liefern.
Apache Mina und SSHd in der Anwendung
Aufgrund der hohen Sicherheitsanforderungen beim Transfer der Videomitschnitte wurde das SSH-Protokoll verwendet. Dabei handelt es sich um ein Netzwerkprotokoll beziehungsweise um Programme, mit deren Hilfe eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät hergestellt werden kann. Die Verschlüsselung und den Transfer der Daten übernahm ein SFTP-Dienst. Bei solch sensiblen Daten wurde auf die Implementierung eines transparenten Loggings sehr großen Wert gelegt und entsprechend wurden alle wichtigen Ereignisse - etwa Anmeldeversuche, Schlüsselvergleiche, Dateitransfer und Fehler - protokolliert. Auch die unzähligen Brute-Force-Angriffe von außen wurden aufgezeichnet.
Für diese sicherheitskritischen Anwendungsfälle stellt das Apache Mina Framework passende Schnittstellen zur Verfügung. Die Authentisierung mit öffentlichen Schlüsseln erfolgt am Server durch die Implementierung des PublickeyAuthenticator Interfaces. Für das Logging der Angreifer-IPs erwies sich das Interface ServerProxyAcceptor übrigens als außerordentlich nützlich. Da der SFTP-Dienst hinter einem Proxy steht, erschwerte dies zuerst das Weiterschleifen der Angreifer-IPs in das Session-Objekt. Mit einer Konfiguration des Proxys konnte dieses Problem allerdings schnell gelöst werden.
Mit dem Einsatz des Frameworks von Apache Mina und der SSHd-API wurde ein High-End-IT-Security-Produkt entwickelt, das den sicheren Transfer von sensiblen Daten ermöglicht und für die Umsetzung der Anforderungen des GWG verwendet wird. Für mich war das ein hochinteressantes Projekt, an das ich mich gerne zurückerinnere.
Wie geht es weiter?
Ich hoffe, ich konnte euch im ersten Teil meines Blog-Beitrags einen konkreten Einblick in das Projekt, die Anforderungen und Lösungen geben.
In meinem nächsten Beitrag werde ich auf einen wichtigen Anwendungsfall der verschlüsselten Kommunikation eingehen: Die Zwei-Faktor-Authentisierung mit privaten und öffentlichen Schlüsseln. Anhand des Apache Mina Frameworks und der SSHd-API werde ich euch in einem Beispiel prototypisch zeigen, wie die Implementierung eines Anmeldevorgangs am SFTP-Server aussieht.
Ihr interessiert euch für weitere spannende Themen aus dem Bankenumfeld? Dann werft auch einen Blick in unsere bisher erschienenen Blog-Beiträge.