SYSTEM

Die Relevanz der kryptografischen Schlüssel im luca-System

By August 17, 2021August 31st, 2021No Comments

luca schützt sensible Daten sämtlicher Nutzer:innen mittels digitaler Verschlüsselung. Hierzu kommen verschiedene kryptografische Schlüssel zum Einsatz. Was bedeutet dies für alle, die mit dem luca-System umgehen? Also Nutzer:innen, Betreiber:innen und Gesundheitsämter?

 

Das luca-System speichert keine Kopien der kryptografischen Schlüssel auf seinen Servern. Die Schlüssel liegen ausschließlich in der Obhut der jeweiligen Anwender:innen. Löschen diese ihre Keys, können die damit chiffrierten Daten nicht mehr in Klartext gewandelt werden und die Kontaktnachverfolgung scheitert.

Unser kryptografisches Konzept ist so gestaltet, dass nur hierzu berechtigte Gesundheitsämter – und nicht etwa wir als Betreiber des luca-Systems, Betreiber:innen von besuchten Betrieben oder andere unberechtigte Dritte – die Kontaktdaten von Nutzer:innen entschlüsseln können und dies auch nur im sinnvollen Umfang.

Um dieses Ziel zu erreichen, kommen Paare aus privaten (private key) und öffentlichen (public key) Schlüsseln zum Einsatz. Bei diesem Public-Key-Verschlüsselungsverfahren verwenden die kommunizierenden Parteien – beispielsweise ein Web-Browser, der eine per TLS (Transport Layer Security) verschlüsselte https-Verbindung zum Web-Server herstellt – jeweils unterschiedliche kryptografische Schlüssel zum Ver- beziehungsweise Entschlüsseln der Daten (asymmetrische Verschlüsselung).

Ein Schlüssel kommt niemals allein

Im Fall des luca-Systems gibt es insgesamt vier solcher Schlüsselpaare: Je eines für Betreiber:innen und Nutzer:innen sowie ein HDEKP genanntes Paar pro Gesundheitsamt (Erläuterung der Abkürzung und technische Details zum Zusammenspiel der Schlüssel für Gesundheitsämter liefert unsere englischsprachige technische Dokumentation). Darüber hinaus gibt es für die Ämter den sogenannten Tagesschlüssel. Diesen täglich ausgetauschten Schlüssel verteilen die angeschlossenen Gesundheitsämter über das luca-System untereinander. Der Vollständigkeit halber sei noch der kryptografische Schlüssel erwähnt, mit dem Ämter die durchs Scannen von Schlüsselanhängern gelieferten Daten dechiffrieren können. Dieser Key spielt für die folgenden Ausführungen keine Rolle.

Die Schlüsselpaare für Betreiber:innen und Gesundheitsämter erzeugen die Anwender:innen während der erstmaligen Registrierung mittels der von ihnen verwendeten Web-Applikation, die Keys der Nutzer:innen erstellt die Smartphone-App beim ersten Aufruf.

Gesundheitsämter benötigen zwei Paare (HDEKP und Tagesschlüssel), damit jedes Amt in Deutschland bei Bedarf jeden Kontaktdatensatz entschlüsseln kann. Dies ist nötig, da das mit der Kontaktnachverfolgung betraute und für die Region des Betriebs zuständige Gesundheitsamt unter Umständen auf Daten von Nutzer:innen zugreifen muss, deren Wohnort nicht im Einzugsgebiet des betreffenden Amts liegt.

So spielen die Schlüsselpaare im luca-System zusammen

Anhand eines Check-in-Vorgangs soll die Wirkweise der Public-Key-Encryption im luca-System erläutert werden. Asymmetrische Chiffrierung findet noch an diversen anderen Stellen im System statt, die Rollen der verschiedenen Schlüssel sind dabei stets die gleichen.

Der erste Schritt beim Check-in ist der Download des öffentlichen, alle 24 Stunden neu erzeugten Tagesschlüssels der Gesundheitsämter durch die App. Die Software stellt durch Prüfen des mitgelieferten digitalen Zertifikats sicher, dass es ein legitimer Schlüssel ist, also von einem durch D-Trust identifiziertem Gesundheitsamt ausgestellt wurde.

Anschließend verschlüsselt die App auf dem Smartphone der Nutzer:innen die sogenannte Contact Data Reference mit diesem öffentlichen Schlüssel. Dies sorgt dafür, dass nur ein Amt den Datensatz durch Einsatz seines privaten Schlüssels wieder in Klartext verwandeln kann, nicht jedoch wir als Betreiber des Systems oder sonstige Dritte.

Die erwähnte, mit dem öffentlichen Tagesschlüssel chiffrierte Contact Data Reference ist ein aus folgenden Komponenten bestehender Datensatz:

  • der individuellen, bei der Erstregistrierung vom luca-System erzeugten user ID der Nutzer:in; die user ID verweist auf die verschlüsselten, auf dem luca-Server gespeicherten Kontaktdaten der Nutzer:in
  • einem Code zum Verifizieren der Echtheit des Datensatzes
  • dem Data Secret, einem 16 Byte langen Zufallswert, den die App beim erstmaligen Aufruf erzeugt und niemals im Klartext ans luca-System übermittelt. Wer das Data Secret kennt, kann letztlich die Kontaktdaten der Nutzer:in entschlüsseln.

Die anschließenden Schritte unterscheiden sich je nach Ablauf des Check-ins (Weg 1: Betreiber:in scannt individuellen QR-Code der Nutzer:innen, Weg 2: Nutzer:innen scannen QR-Code des Betriebs). Das Endergebnis ist jedoch dasselbe, so dass das Folgende für beide Wege gilt: Der zuvor mit dem Schlüssel des Gesundheitsamts verschlüsselte Datensatz durchläuft einen weiteren Durchgang. Diesmal kommt der öffentliche Schlüssel des Betriebs zum Einsatz. Entweder in der App (Weg 2) oder im zum Scannen verwendeten Endgerät des Betriebs (Weg 1) werden die Daten nochmal verschlüsselt.

Dieses durch zweiteilige Schlüssel(Gesundheitsamt und Betreiber) gesicherte Datenpaket wird anschließend zusammen mit einer von der App generierten traceID auf den luca-Server hochgeladen. Anhand der traceID können Gesundheitsämter bei Bedarf feststellen, wer wann in welchem Betrieb war. Sinn der zweistufigen Verschlüsselung mit unterschiedlichen Public Keys: Gesundheitsämter können den für sie bestimmten Teil des Datenpakets nur nach Zustimmung und Entschlüsselung durch den Betreiber weiterverarbeiten.

Was passiert, wenn ein Schlüssel gelöscht wird?

Hat nun eine Betreiber:in keinen Zugriff mehr auf den privaten Schlüssel – weil er eventuell gelöscht wurde oder der Datenträger, auf dem der Key gespeichert war, verloren ging – scheitert die Kontaktnachverfolgung: Der Betrieb kann die mittels seines Public Keys um das Datenpaket gelegte Chiffrierungsschicht nicht mehr entfernen.

Das gleiche gilt prinzipiell auch für Gesundheitsämter. Gehen die dort lokal gespeicherten Private Keys verloren, ist keine sinnvolle Teilnahme am luca-System mehr möglich. Da in den Ämtern aber in der Regel mehrere Mitarbeitenden Kopien der Schlüssel haben, ist das Risiko geringer. Außerdem könnte bei Verlust des HDEKP ein anderes Gesundheitsamt aushelfen, das Zugriff auf den Tagesschlüssel hat.

Nachdem Private und Public Key durch mathematische Funktionen untrennbar verzahnt sind, hilft im Fall eines Schlüsselverlusts auch das Erzeugen eines neuen Schlüsselpaars nichts. Der neue private Schlüssel passt nicht zum einstmals bei der Chiffrierung des Check-in-Vorgangs verwendeten öffentlichen Schlüssels. Die Konsequenzen sind also die gleichen wie bei einem verlorenen Hausschlüssel (dass sich in der analogen Welt Nachschlüssel erzeugen lassen, soll hier keine Rolle spielen): Der einem nachgekauften Schloss beiliegende Schlüssel entsperrt das bereits in der Tür verbaute Schloss nicht.

Bleib gesund!

Dein luca-Team

PS: Dieser Text ersetzt eine ältere Fassung. An den beschriebenen Mechanismen des luca-Systems hat sich nach Veröffentlichung der Ur-Fassung jedoch nichts geändert