© Vector Micro Master/Shutterstock.com, Deco Design/Shutterstock.com
Datenschutzkonforme Gästelisten mit PHP in Zeiten von Corona

You really don’t want to know


Die Corona-Krise stellt neue Anforderungen an die Gesellschaft und besonders an die Gastronomiebranche. Eine neue Software soll u. a. Restaurantbetreibern und Gastwirten dabei helfen, personenbezogene Daten sicher abzuspeichern. Möglich machen soll das Miss Racoon.

Mit der Wiedereröffnung von Gaststätten, Restaurants und Bars nach der durch Corona bedingten Schließung im Frühjahr 2020 sind Gastwirte verpflichtet, Gästelisten zu führen. In diesem Zusammenhang entstand die Idee, eine Softwarelösung zu entwickeln, die alle erfassten personenbezogenen Daten besonders sicher speichert. Die daraus entstandene Webanwendung Miss Racoon [1] wird inzwischen von Gaststätten eingesetzt und laufend weiterentwickelt. Ein wesentliches Prinzip der Anwendung ist, dass die auf dem Endgerät erfassten personenbezogenen Daten nie unverschlüsselt übermittelt und serverseitig verschlüsselt gespeichert werden. Zur Entschlüsselung wird ein privater Schlüssel verwendet, der nur auf dem Gerät vorhanden ist, das die Daten abruft. Das Nichtvorhandensein eines zur Entschlüsselung benötigten Schlüssels auf der Serverseite bedeutet, dass selbst im Fall eines Einbruchs oder Diebstahls der serverseitigen Daten ein wesentliches Element fehlt, das zur Entschlüsselung der Daten notwendig ist.

Symmetrische und asymmetrische Verschlüsselung

Bei symmetrischen Verschlüsselungsverfahren wird für die Ver- und Entschlüsselung einer Nachricht derselbe Schlüssel verwendet. Bei einer einfachen Substitutionsverschlüsselung wird jeder Buchstabe des Klartexts durch einen Buchstaben des Schlüssels (Substitutionsalphabets) ersetzt. Ein sehr einfaches Beispiel dafür ist die PHP-Funktion str_rot13(). Bei dieser Funktion wird jeder Buchstabe des Alphabets verschlüsselt, indem er durch den Buchstaben ersetzt wird, der 13 Positionen danach folgt. So wird die Nachricht phpmagazin zu cuczntnmva verschlüsselt. Eine Verschiebung um 13 Buchstaben hat bei einem Alphabet mit 26 Buchstaben den Effekt, dass Funktion und Umkehrfunktion genau identisch sind: str_rot13(cuczntnmva) ergibt wieder phpmagazin.

Die Verschlüsselung mit der str_rot13-Funktion ist natürlich nicht sicher. Der Schlüssel ist an dieser Stelle nicht zufällig, weil die Buchstaben, aus denen er gebildet wird, letztlich ein verschobenes Alphabet sind (auch Caesar-Chiffre genannt). Sicherer ist ein Schlüssel, der wie ein Passwort bzw. eine Passphrase aufgebaut ist, d. h. aus beliebigen Zeichen in einer willkürlichen Reihenfolge besteht. Das Beispiel in Listing 1 zeigt eine solche Verschlüsselung mittels xor - ^ in PHP.

Listing 1

function myXor(string $input, string $passphrase): string { $result = ''; $cipher = str_repeat($passphrase, ceil(strlen($input)/strlen($passphrase))); for ($i = 0; $i < strlen($input); $i++) { $result .= $input[$i] ^ $cipher[$i]; } return $result; } $original = 'This is a secret message which nobody should know'; $passphrase = 'super_secret'; $encrypted = myXor($original, $passphrase);

Größere Sicherheit lässt sich durch längere Schlüssel erzielen. Ein vollständig zufälliger Schlüssel, dessen Länge der Nachrichtenlänge entspricht und der nur ein einziges Mal verwendet wird, gilt als sicher [2]. In der Praxis sind solche mit sogenannten One-Time Pads verschlüsselten Nachrichten dennoch angreifbar. So wurde die Verschlüsselung sowjetischer Nachrichten gebrochen, die mit One-Time Pads verschlüsselt worden waren, weil dieselben Pads mehrfach verwendet wurden. Bei der im zweiten Weltkrieg vom Auswärtigen Amt eingesetzten Verschlüsselung (Blockverfahren bzw. vom amerikanischen Signal Intelligence Service als GEE bezeichnet) waren die Schlüssel nicht wirklich zufällig, dadurch war es Kryptoanalytikern in Bletchley Park möglich, Regelmäßigkeiten zu entdecken, die einen Rückschluss auf die Maschine erlaubten, mit der die „zufälligen“ Sequenzen erzeugt wurden. Dadurch war es möglich, die Schlüssel zur Entschlüsselung zu rekonstruieren [3].

Ein wesentliches Problem, das alle symmetrischen Verschlüsselungsverfahren aufweisen, ist die sichere Übertragung der Schlüssel (Schlüsseltauschproblem). Der sichere Austausch von Schlüsseln ist mit großem logistischem Aufwand verbunden, weshalb in der Praxis Sicherheit und Flexibilität oft gegeneinander abgewogen werden. So verwendete das Fleet Broadcast System der US Navy Schlüssel, die zwar täglich wechselten, aber für alle Empfänger gleich waren [4]. Dadurch war es zwar möglich, dass alle Empfänger mit denselben Schlüsseln zur Entschlüsselung ausgestattet werden konnten (was den logistischen Aufwand senkt, wenn eine Dienststelle neu hinzukommt). Allerdings war das gesamte System kompromittiert, wenn die Schlüssel eines Empfängers nicht mehr sicher waren. Genau das geschah, als die Sowjetunion in den späten 1980er Jahren durch Bestechung Kenntnis der Schlüssel der Alameda Naval Air Station erlangte [4]. Asymmetrische Verschlüsselungsverfahren sind eine relativ junge Entdeckung, deren Grundlagen erst in der zweiten Hälfte der 1970er Jahre publiziert wurden [5]. Asymmetrische Verschlüsselung basiert darauf, dass die Nachrichten mit einem Schlüssel ver- und mit einem anderen Schlüssel entschlüsselt werden, sich aber der inverse Schlüssel nicht auf praktische Weise aus dem anderen berechnen lässt [4]. Mathe...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang