Die Active Group hat die Webanwendung MyOwnSafe für die MyOwnSafe GmbH entwickelt. MyOwnSafe ist ein „intelligenter Tresor mit Nachlassfunktion“. Der Anwender kann in dieser Anwendung Informationen und Dokumente zu seinen Versicherungen, und seinem Vermögen, sowie sonstige persönliche Informationen ablegen und pflegen. Außerdem kann er Vorkehrungen treffen um diese Informationen im Todes- oder Krankheitsfall bestimmten Personen zugänglich zu machen.

Dieser Artikel beschreibt das Projekt und seine Architektur, Hintergründe zu den Entscheidungen die dabei getroffen wurden, sowie den Erfahrungen die wir damit gemacht haben. Die technischen „Pfeiler“, auf denen die Anwendung fußt, sind dabei die Programmiersprachen OCaml und JavaScript („HTML 5“), Cloud-Computing, NoSQL-Datenbanken und Webservices. Eine Schematische Darstellung der Architektur von MyOwnSafe zeigt folgendes Bild:

Schematische Darstellung der Architektur von MyOwnSafe

Idee und Vorgaben

Der Auftraggeber hatte die persönliche Erfahrung gemacht, dass der Nachlass einer Person häufig sehr schlecht geregelt ist, und die Angehörigen sehr viel Arbeit damit haben, überhaupt erstmal in Erfahrung zu bringen was zu tun ist. Versicherungen müssen gekündigt oder umgeschrieben werden, Konten aufgelöst, Verträge geändert werden. Auch im „digitalen Leben“ eines Verstorbenen muss viel geregelt werden, wie zuletzt auch Google mit seiner Nachlass-Automatik gezeigt hat.

Die einzige technische Vorgabe für das Projekt war dabei, dass es ein Online-Dienst sein sollte, der über eine leicht zugängliche Webanwendung bedienbar ist.

Verschlüsselung

Zentrales Element eines Tresors oder Schließfachs ist, dass der Inhalt vertraulich bleibt. Das bedeutet, dass niemand außer den vorgesehenen Personen Einsicht in die Informationen erlangen kann. Es war uns daher schnell klar, dass nur eine Client-seitige Verschlüsselung der Daten mit einem Public-Private-Key-Verfahren das notwendige Maß an Vertraulichkeit sicherstellen kann.

Das Verschlüsselungsverfahren selbst ist dabei nichts Neues, sondern eine übliche Kombination von symmetrischer und asymmetrischer Verschlüsselung mit den etablierten und standardisierten Verfahren AES und RSA. Außergewöhnlich ist allerdings, dass diese Verschlüsselung der Informationen und Dateien im Browser des Kunden stattfindet. Der private Schlüssel aus dem RSA-Verfahren wird auf dem Rechner des Kunden generiert und verlässt diesen niemals.

Es muss also nicht versucht werden, die Vertraulichkeit durch die Sicherheit der Serversoftware gegenüber Hacker-Angriffen zu gewährleisten (wie oft dies nicht gelingt hört man ja immer wieder in der Presse), sondern die Vertraulichkeit ergibt sich in erster Linie aus der extrem großen Schwierigkeit die Verschlüsselung zu knacken.

Dieser Vorteil der Architektur ist gleichzeitig ein ungewohnter Nachteil: da der Kunde als einziger im Besitz des Schlüssels bzw. Passworts ist, können seine Daten bei Verlust des Schlüssels nicht wiederhergestellt werden. Eine „Passwort vergessen“-Funktion wie in vielen anderen Online-Diensten ist unmöglich. An diese Eigenschaft von MyOwnSafe müssen sich die Kunden sicherlich erst gewöhnen.

Client-Server-Architektur

Da klar war, dass innerhalb des Browsers ohnehin eine so komplexe Rechenleistung wie die Verschlüsselung von Daten geleistet werden muss, war es keine weitere Einschränkung die Anwendung als einen sogenannten „Fat-Client“ umzusetzen.

Bis vor einigen Jahren waren Webanwendungen meist so realisiert, dass in einer Anwendung auf dem Server bereits das konkrete Aussehen des Clients (also der Webseite), bzw. die Verbindung verschiedener Komponenten zu einer Webseite bestimmt und berechnet wurde.

Mit der starken Verbesserung der Programmierbarkeit von Browsern, die insbesondere durch Google vorangetrieben wurde, ist es heute allerdings möglich, ganz andere Webanwendungen zu schreiben. Der Browser wird dabei nicht genutzt um über Hyperlinks von einer Webseite zur nächsten zu navigieren, sondern die integrierte JavaScript-Engine wird als komplette Programmier-Plattform für die grafische Benutzeroberfläche und die Benutzerführung der Anwendung genutzt. Diese neuen Möglichkeiten werden häufig unter dem Begriff „HTML 5“ zusammengefasst.

Die Kommunikation zwischen Client und Server besteht dann nur noch aus einfachen Remote-Procedure-Calls, die sich allein auf die auszuführenden Aktionen und die notwendigen Daten beschränken. Die Darstellung und Navigation bleibt ganz dem Client überlassen.

Einfacher Server

Die gewählte Client-Server-Architektur machte es uns auch möglich, den Server mit einfachen und „kleinen“ Programmen zu realisieren. Er besteht aus einer Fast-CGI-Anwendung hinter dem Lighttpd-Webserver. Durch diese „kleine Oberfläche“ des Webservers bietet er auch keine große Angriffsfläche für Hacker-Angriffe.

Zur Implementierung der Fast-CGI-Anwendung haben wir die funktionale Programmiersprache OCaml gewählt. OCaml ist eine bereits seit über fünfzehn Jahren etablierte und gefestigte Variante aus der ML-Sprachfamilie. Sie unterstützt neben dem funktionalen Programmieren auch imperative und objekt-orientierte Paradigmen, ein statisches Typsystem mit besonders mächtiger Typinferenz, sowie ein gutes Modulsystem. Es gibt eine Vielzahl von Bibliotheken, insbesondere zur Web- und Netzwerkprogrammierung, und der Compiler erzeugt sehr performanten nativen Code. Letzteres gab auch den Ausschlag zu der Entscheidung für diese Sprache in diesem Projekt.

Die „Cloud“

Höchste Vertraulichkeit dieser sehr sensiblen Daten der Kunden ist in dieser Architektur bereits durch die Client-seitige RSA- und AES-Verschlüsselung hergestellt. Nicht einmal der Betreiber selbst kann die Informationen einsehen. Dies machte die Entscheidung für ein Cloud-basiertes Hosting und Datenhaltung leichter, das zwar nicht ganz so gut absicherbar ist wie ein eigenes Rechenzentrum, aber immens niedriegere Kosten verursacht und gleichzeitig gut skalierbar auf eine schwer abzuschätzende, wachsende Anzahl von Kunden ist. Ein großer Kostenvorteil für ein Start-Up-Unternehmen.

Die Entscheidung für die Dienste von Amazon Webservices fiel in erster Linie aufgrund der zum Zeitpunkt der Einführen einzigartigen Breite des Angebots durch Amazon. Die „Elastic Compute Cloud“ bietet eine breite Palette von virtuellen Servern, die „Simple DB“ eine flexible NoSQL-Datenbank, und „Simple Storage Service“ einen nahezu unbegrenzten „Container“ für größere Datenpakete.

NoSQL-Datenbanken

Sowohl die „Simple DB“ als auch der „Simple Storage Service“ von Amazon fallen in die Kategorie der „NoSQL“-Datenbanken, wobei ersteren ein sogenannter Document-Storage, und letzterer ein Key-Value-Storage darstellt. Diese Datenbanken benötigen keine starre Definition der abzuspeichernden Daten (ein sogenanntes Schema), sondern erlauben, dass jeder Eintrag in der Datenbank andere Felder besitzt.

Diese Freiheit hat sich als sehr positiv für die Entwicklung der Anwendung herausgestellt, da sie es uns erlaubt die Migration der Datenbestände „nebenbei“ zu programmieren und auszuführen. Wenn man die Funktionen zum Lesen der Daten so programmiert, dass sie Datensätze im alten und neuen Format lesen können, dann bekommt man die Migration geschenkt, die in relationalen Datenbanksystemen immer einen erheblichen Aufwand und Fehlerrisiko darstellt.

Zahlungsdienstleister

Ein weiterer Baustein der Architektur, der die Kosten für den Kunden stark reduziert hat, ist die Nutzung eines externen Dienstleisters für die Abwicklung von Konto- und Kreditkartenabbuchung. Nicht zuletzt aufgrund des immer wieder vorkommenden Diebstahls von Kreditkartendaten aus den Datenbanken von Unternehmen, verlangen die Kreditkarten-Unternehmen inzwischen aufwändige Zertifizierungen und regelmäßige Sicherheitsprüfungen bei Firmen, die Kartendaten ihrer Kunden verarbeiten.

Ein MyOwnSafe-Kunde gibt jedoch seine Konto- oder Kreditkartendaten niemals direkt an MyOwnSafe, sondern der Web-Client leitet ihn zu einer Seite des Dienstleisters ExperCash weiter. Der MyOwnSafe-Server erhält am Ende nur einen eindeutigen Schlüssel, mit dem er über eine separate Schnittstelle zu einem ExperCash-Server die Abbuchungen durchführen kann. Weil MyOwnSafe dadurch nie die Kreditkartendaten der Kunden „sieht“, ist keine teure Zertifizierung notwendig.

Fazit

Diese sehr moderne Anwendung mit komplexen Anforderungen konnten wir extrem kostengünstig und termingerecht umgesetzen. Entscheidend dafür war der Einsatz moderner Techniken, wie die funktionale Programmierung in der Sprache OCaml und den flexiblen NoSQL-Datenbanken, sowie klar getrennte Aufgabenverteilung zwischen Client und Server, und die sinnvolle Nutzung externer Serviceanbieter.

Die Active Group setzt daher auch weiterhin auf OCaml und andere mächtige funktionale Programmiersprachen, um robuste Programme so effizient wie möglich zu entwickeln.