Dienstag, 25. Mai 2021

Der Grüne Pass: Israelische Lösung (wahrscheinlich)

Kathi lebt ja seit einiger Zeit in Israel, und vor ziemlich genau zwei Jahren hatten wir sie dort besucht – ich hab damals ausführlich davon berichtet. Ich weiß nicht, ob sich noch alle daran erinnern können: 2019, das war noch vor Corona!

Israel und Corona, das ist ein Wortpaar, das derzeit sehr oft zitiert wird. Denn durch die sehr frühe und sehr rasch durchgezogene Impfkampagne wurde es dort auch sehr früh möglich, wieder in ein halbwegs normales ziviles Leben zurückzukehren. Theater, Kino, Restaurants etc. sind wieder geöffnet, sogar große Hochzeiten sind wieder möglich. Allerdings muss jeder nachweisen können, dass er oder sie tatsächlich geimpft ist. 

Realisiert wurde dieser Nachweis durch einen ebenfalls oft zitierten "Grünen Pass". Eine zentrale Impfstelle verschickt an die Geimpften einen QR-Code, der auf Papier oder Handy hergezeigt wird. Wenn mit diesem Code alles in Ordnung ist, bekommt man sozusagen grünes Licht zur Teilnahme.

Wie allerdings dieser israelische Grüne Pass funktioniert, war bis jetzt – zumindest für mich – einigermaßen unklar. Ebenso unklar wie die Lösung für den Grünen Pass, wie sie bei uns im Gespräch ist. Vor kurzem hat mir Kathi ihren persönlichen QR-Code geschickt, und seitdem beginnen sich die Nebel für mich etwas zu lichten.

Ich beschreibe also im Folgenden, wie die Lösung wahrscheinlich in Israel funktioniert. Natürlich nicht zu 100% sicher, aber sehr, sehr wahrscheinlich.

Quelle: pixabay

[Update 2021-05-28: In der aktuellen Ausgabe der c't lese ich gerade, dass die Stadt Berlin mit ihrem BärCODE genau diesen hier beschriebenen Lösungsweg geht! Und:
Die parallelen Bestrebungen des Bundesministeriums für Gesundheit für einen bundesweiten elektronischen Impfausweis stehen ebenfalls technisch und organisatorisch im Einklang mit der Infrastruktur und den Abläufen beim BärCODE und können für dessen spätere Einführung weitergenutzt werden.
Also auch bundesweit geht es in diese Richtung! ]

Zunächst gleich vorneweg: Ich werde hier natürlich nicht ihren Code 1:1 verwenden, sondern ich hab ihn natürlich verändert, damit nur ja kein Unfug damit betrieben werden kann!


Beispielhafter QR-Code eines Impfpasses


Und so sieht der ausgelesene Inhalt des QR-Codes aus:
h64s4+vad944ß"5lkn1_ZZuw83DN0tlEqjMhct4GEC3gwNHdJupNAgP3iJs9FyMEGIXJnBohx5fApJiiuBrmsKWz6yV+Q93eXeLg55i8Tt1glf8KsCUJICrBdKJRgZknEDHJWxvimgnm6W1JoKOiQhwQvu0t5SeEaMZNZvZxhKDtyJ/kzjVP41iyyölkfjq8afXmywXHULAbj0FyVwVBjfqoaf70aföajhz7vUGt6Qz1voHXrBsspE60x+0TxQgnFA5dD8+X43J6B/Vfc7dISpEaWtQJ3kVxmPIBxEEHHlVLimZ5cEgRReNxFtQAWFePXL+x/g==#
{"id":"01/IL/26096BAET4GK9NI4C6EAA994F118A747C#AB0E4F1D","et":1,"c":"IL MOH","ct":2,"cn":null,"fn":null,"g":"VORNAME","f":"NACHNAME","gl":"VORNAME","fl":"NACHNAME","idl":null,"idp":"Q1234711","b":"19xx-xx-xx","e":"2021-09-07","a":"2021-03-11","d1":{"d":"2021-02-10","vv":"Pfizer","vt":"BNT162b2","vb":"EL7834","vc":null,"o":"","ol":"","oc":null,"c":null},"d2":{"d":"2021-03-04","vv":"Pfizer","vt":"BNT162b2","vb":"ER0866","vc":null,"o":"","ol":"","oc":null,"c":null}}

Da fallen auf den ersten Blick gleich einmal die beiden großen Blöcke auf:
  • Der erste Block beginnend mit "h64s4+" sieht sehr nach einem Krypto-Zertifikat aus. Also einem Text, der mit kryptografischen Methoden verschlüsselt wurde.
  • Der zweite Block beginnend mit "{"id":"01/IL/" ist dann der Infoblock im Klartext, der für einen menschlichen Leser nur noch hübscher angezeigt werden muss. Aber die Daten sind alle da.
Dazu kommt noch die Info von Kathi, dass sie diesen QR-Code per Email zugesandt bekommen hat und dass es eine reine Offline-Lösung ist. Der Code enthält also keinen Link zu einer zentralen Impf- oder Ausgabestelle, die Überprüfung ist auch mit einem Stück Papier möglich, auf dem der QR-Code abgedruckt ist. In keinem der beiden Blöcke ist so ein Link erkennbar.

Der Ablauf eines Zutritts sieht so aus:
  • Der Gast zeigt den QR-Code seines Grünen Passes her (Papier oder Handy)
  • Der Gastgeber scannt mit seiner Scan-App diesen Code
  • Die Scan-App prüft diesen Code und gewährt bzw. verweigert daraufhin den Zutritt
  • Zusätzlich muss der Gastgeber noch überprüfen, ob der vorgezeigte Lichtbildausweis zu den Daten des QR-Codes passt

Wie der QR-Code zu den Geimpften kommt, ist also bekannt. Offen sind noch die Fragen
  • Wer erstellt diesen QR-Code und wie
  • Wie spielen die Scan-App und die ausgebende Stelle zusammen
  • Wie überprüft die Scan-App den Code

Wenn man sich die beiden oben genannten Blöcke des Codes ansieht, ist relativ klar, wie das ganze Daten-Ringelspiel funktioniert – oder funktionieren könnte. Wobei allerdings schon sehr viel für meine Theorie spricht: genauso könnte man es machen.


Wer stellt den QR-Code aus und wie?


Das "wer" ist auch wiederum klar. Es kann nur die zentrale Impfstelle (zIS) sein, denn außer den Geimpften kennt nur sie diese Daten.

Wenn der Pass seinen Namen auch verdienen soll, muss er fälschungssicher sein. Dh. niemand außer der zIS soll solche Pässe herstellen können. Die zIS muss die Daten quasi elektronisch unterschreiben können.

Und da kommt jetzt der erste Block des Codes ins Spiel. Das muss ein Zertifikat sein, das genau auf die konkreten Impfdaten der Einzelperson zugeschnitten ist. Am besten, man nimmt den gesamten zweiten Block und verschlüsselt ihn; mit "verschlüsselt" ist jetzt tatsächlich ein Kryptoverfahren gemeint! 

Der Schlüssel, mit dem der zweite Block (ich nenne ihn ab jetzt den Datenblock / DB), verwurstet wird, muss naturgemäß geheim sein – streng geheim, sonst könnte sich wieder jeder seinen QR-Code selbst basteln.

Wenn der Schlüssel aber so geheim ist, wie entschlüsselt dann jemand diesen Kryptoblock (KB)?

Die Antwort lautet: Indem man ein asymmetrisches Kryptoverfahren anwendet. Solche Methoden sind seit Jahrzehnten bekannt, Stand der Technik und werden jeden Tag millionenfach angewendet. Stichwort "https://", bei dem der Transportweg vom Browser zum Server eben verschlüsselt abläuft.

Der Clou an solchen asymmetrischen Verfahren ist, dass hier nicht nur ein Schlüssel mitspielt, sondern deren zwei: Ein streng geheimer privater Schlüssel und ein "öffentlich bekannter". Das sind aber nicht irgendwelche Zahlen, sondern das Schlüsselpaar muss aufeinander so abgestimmt sein, dass der öffentliche Schlüssel Kryptotexte entschlüsseln kann, die mittels seines privaten Pendants verschlüsselt wurden. Jedes asymmetrische Kryptoverfahren bietet daher ein Programm an, das solche Schlüsselpaare erzeugen kann. Solche Schlüssel sind meist sehr große Primzahlen (wirklich große: 100 Stellen und mehr!), die mathematisch so mit dem Klartext verknüpft werden, dass eben ein komplett wirrer Text herauskommt wie im oben dargestellten KB. Ohne öffentlichen Schlüssel ist dieser Block nicht zu knacken.

Und jetzt wird auch schon klar, wie der QR-Code entsteht:
  • Die zIS sucht sich ein gängiges asymmetrisches Kryptoverfahren aus und generiert sich ein Schlüsselpaar.
  • Der öffentliche Schlüssel wird irgendwie bekannt gemacht, zB auf einer eigenen Webseite, von der man ihn beziehen kann.
  • Die zIS erzeugt für einen konkreten Geimpften den Datenblock
  • verschlüsselt diesen mit ihrem privaten Schlüssel
  • stellt den DB und den KB hintereinander
  • und erzeugt aus diesen beiden Blöcken einen gemeinsamen QR-Code
  • der dann auf geeignetem Weg dem Geimpften zugestellt wird (Email, Briefpost)
  • dann nimmt sie sich den nächsten Geimpften her
  • erzeugt für diesen den DB
  • usw.

Wie spielen die Scan-App und die ausgebende Stelle zusammen?


Diese Frage beantwortet sich inzwischen von selbst. Die Scan-App muss den öffentlichen Schlüssel irgendwie bekommen. Entweder hat sie ihn bei sich fix eingebaut, oder sie bezieht ihn von der zIS online. Egal wie, der öffentliche Schlüssel muss der Scan-App bekannt sein. Ebenso das verwendete Kryptoverfahren (es gibt ja mehrere).

Die Methode mit den öffentlichen Schlüsseln, die auf einer Webseite hinterlegt sind, hat noch den Vorteil, dass dann diese Scan-App auch länderübergreifend funktionieren würde. Es muss nur irgendwo im Netz ein Server vorhanden sein, der die landesspezifischen Schlüssel bereit hält. Das den Pass ausstellende Land ist im DB ersichtlich, zB "id":"01/IL/26096...: IL, wie Israel.

Die Scan-App wird allen, die sie brauchen, im Playstore zum Download angeboten.


Wie überprüft die Scan-App den Code?


Das geht jetzt ganz einfach:
  • Die Scan-App scannt den QR-Code
  • entschlüsselt mit dem (landesspezifischen) öffentlichen Schlüssel den KB
  • und erhält somit den Klartext
Dieser Klartext muss natürlich exakt der gleiche sein wie der im DB, denn der war ja Grundlage der Verschlüsselung. Falls hier beim Vergleich nur die geringste Abweichung vorkommt, ist der gesamte QR-Code kompromittiert und die Scan-App verweigert den Zutritt!

Falls aber der entschlüsselte KB und der DB genau übereinstimmen, ging alles mit rechten Dingen zu und die App kann den Zutritt gewähren.

Und das alles, ohne dass eine zIS online befragt hätte werden müssen (abgesehen vom öffentlichen Schlüssel). Die Methode funktioniert somit mittels Handy als auch mittels auf Papier gedrucktem QR-Code!


Grüner Pass in der EU


Das was bisher bekannt ist, deutet darauf hin, dass eine ähnliche Lösung wie in Israel angestrebt wird. Auch in Österreich scheint jetzt dieser Weg gegangen zu werden. Damit sind ein reiner QR-Code ohne Zertifikat oder die zentrale Datensammelstelle vom Tisch!

Insgesamt, finde ich, ein einfacher, pragmatischer, fälschungssicherer und handhabbarer Weg, der noch dazu auf dem Stand der Technik ist!


Keine Kommentare:

Kommentar veröffentlichen