Corona Cringe

Was ist in diesen Zeiten eigentlich noch super-super-sicher?

geschrieben von Janni Dienstag, 2. März 2021 um 22:18 Uhr

/Update (6.3.): Ich hatte mich nach diesem Blogpost (der Text zwischen den nächsten beiden Trennlinien) an den NDR gewendet mit einer Zusammenfassung dieses Blogposts. Die haben die Nachricht am Mittwochmittag an die Redaktion und dann an den Entwickler weitergeleitet. Von dem erhielt ich heute (um kurz nach 02) eine Antwort an meine Mailadresse. Äh, hallo NDR, Datenschutz?

In der E-Mail wurde auf meine Kritik eingegangen und Sicherheitsaspekte wie eine Animation unter dem QR-Code (die in dem Beitrag nicht vorhanden war) genannt. Das erhöht die Fälschungssicherheit des QR-Codes ungemein, sofern die Animation prozedural erstellt wird und nicht einfach aus der App-Datei extrahiert werden kann. Außerdem enthalte der QR-Code inzwischen (anders als im Beitrag) einen Zeitstempel, der übereinstimmen muss. Auch das ist ein gutes Mittel – unter bestimmten Voraussetzungen, die ich nicht überprüfen kann. Ich habe die Entwicklern mal gefragt.

Zu kritisieren ist in dem Fernsehbeitrag somit, welche sicherheitsrelevanten Aspekte genannt und wie sie priorisiert werden. Dies betrifft die Redaktion, aber auch den interviewten Mitarbeiter, dessen erstes Argument das eingangs verwendete Zitat ist. Dies war schnell zu widerlegen und somit einfach ein Cringe-Moment für mich. Entsprechend habe ich den Titel geändert. Virulogen haben vermutlich auch viele Cringe-Momente, wenn sie sich Nachrichten schauen. Mein Beileid.

Hier der Originalpost:


Zunächst möchte ich mich vorstellen. Ich bin Mayleen und ich bin Corona-negativ.

Nein Quatsch, hier ist natürlich Janni. (Corona-negativ bin ich hoffentlich trotzdem.) [/Update 7.3.: Ich war zumindest am 5.3. gegen 10 Uhr tatsächlich Corona-negativ.] Aber ich wäre gern Mayleen, weil die nämlich erwiesenermaßen Corona-negativ ist und jetzt sogar Sport machen darf. Das sagt zumindest ein Beitrag der NDR-Sendung Das Abend-Studio. Kennt keiner unter dem Namen, ist aber egal.

Da haben einige ganz schlaue Leute eine App namens Corona TestApp entwickelt, die bei positivem Coronaschnelltest einen QR-Code anzeigt, mit dem man dann bestimmte Orte betreten kann. Ein Mitarbeiter macht die folgende Aussage, die ich jetzt heute mal einschätzen möchte:

Unsere App ist zu 100% fälschungssicher, da wir auch eine Screenshot-Sperre mit einbauen. Das heißt man kann den QR-Code nicht weitergeben.

Ob das mit der Screenshot-Sperre auf Android überhaupt geht, wage ich zu bezweifeln. Ist aber auch egal. Denn QR-Codes kann man auch anders kopieren. Zum Beispiel einfach aus dem Fernsehen abfotografieren. Also Fernsehbeitrag nehmen und ein Foto machen:

Eine Frau hält ein Handy mit einem QR-Code
Screenshot aus der Sendung DAS! vom 2. März 2021 (Bild: NDR)

Nun ja, nativ in voller HD-Auflösung auszustrahlen, schaffen die Öffentlich-Rechtlichen auch im Jahr 2021 nicht. Den QR-Code wiederherzustellen, ist somit nicht so mega einfach. Und noch etwas macht es kompliziert: Es ist die niedrigste Fehlerkorrektur. Das erkennt man an den beiden Pixeln, die sich in der Spalte rechts neben den linken Ausrichtungsmustern ganz unten befinden. Sind beide schwarz, ist es die niedrigste Fehlerkorrektur. Die drei Pixel darüber (hier schwarz-weiß-schwarz) geben das Maskenmuster an, das dazu genutzt wird, dass der QR-Code möglichst zufällig aussieht. Dazu später mehr.

Erklärung des QR-Code-Formatinfo-Bereichs
QR-Code-Formatinfo anhand des obigen Screenshots

Wegen der niedrigen Fehlerkorrektur und dem ungünstigen Winkel muss man bei den meisten Scannern nachhelfen. Erster Schritt ist in jedem Fall die so genannte Perspektivkorrektur. Man markiert in einem Grafikprogramm je zwei Linien, die eigentlich senkrecht oder waagerecht rein müssten. Das Ergebnis sieht so aus:

Eine Frau hält ein Handy mit einem QR-Code
Screenshot nach Anwendung der Perspektivkorrektur (Bild: NDR)

Einige Apps möchten vielleicht noch ein bisschen mehr Hilfe, indem man den Konstrast über das Histogramm oder die Gammakorrektur anhebt. Die Standard-Scanner-App auf meinem Mi 9T Pro hat es dann beim ersten Versuch geschafft. Danach habe ich es allerdings nie wieder hinbekommen, nicht einfach eine Zahl angezeigt zu bekommen. Tatsächlich sind folgende Daten, die beim ersten Mal gescannt wurden (Absätze von mir künstlich eingefügt):

WplbuWSNGlXasGqjRsDyBsMLo+68xKv4GoB23hUxlq1b7MH+GiEuI7hBTWZuVU1wJNT+XfW9UuWyLF5l
hnDaQ1MS1tYA82b3f7RZE5nCCUZ+AVZxzfbbaPgoI+X4Tnwe8LMvDSm1q+xDVxyapvwv7S+BrQt5NrZT
pPG+UL/DWuB8mJkrEAzxHnVBz2I6ySt76PtmEs5+29L38nr3h7i9Wzjm5RqmhGW6tkNxjOfgPvGnL4bM
tDjwm2cVK4jI7mSE5pfs3ytMJkE01zCfw6mqdwWSdX/AT2h8WJQlSfcTAXvZqiwncvN3xxLd0DphQMWh
9bJ5eYqImIPfp0weVUmVB7ouOZxkIPVR4ewGBef0+TBaY/eNGnzLujkPQFpv1uQFN42gMIYLRwgOQxIA
ye5Goe7e66zgFDowNne2KsxZ2P0op0jXHLZL5+gKdRiGpg5BLr7aM78YWO74bColIzeO8yfb7Vrjqlhl
U4vswk6UzIlN/7umoOpfoukhgrMZlyF93KzUZ5Gld2QK3+sHRvsQ4dHge8YIKF4QcUgS1KuKi/SR/dF8
GZDMQZU47vznRn1TN1ueAll1POgrEYc0lkaDgFLRj/8wuVOWt4DsfeXjUl/ksGL6w+VknxAtfe12fGGi
P/xlfjznq8VdSP+5Pht3puwt3uarzuagmVBPVJCmxYZ5Z2L6mWCs8KgdFMnSewR1n6n9gDYAD2bosQJ/
jVWq3JX2AV9GrgfjAZEZ31eWc/DyS/LPrVof+pNRg70kvaGzr0lNc1jzV5s2/j4HmkfCt20NheVjvipq
iEnFkzsdSKaP578N92xiinEBkKiC9MUZTeu1n1cA8DUV7wnmtHQBIcq69CBqd44Pm8P7mlLyrUwmtsAD
15vR7pJNfZDNlSlqWJEur7TfR0hGtFZQY8zxew/ANYV8L44UZs+MU5gIc3ai+Q2aSGqQ3DimGrvZpqTR
MSWsxUwUrFxpCA27sRBI+gtU6umxlmtSdsz8fNS20Kja4sEsBM3v0vqspoT+RJRSg6ZyUVtIUilFFxcG
Y1jutIrB6CV5eB4LomrntkRH6IYGGmOsg+Z5WQekjGfhalwUyzkrMichE6mkcKENOHIkFB06IWdUMIw/
0iwwcf8YLL3KUTOhFrTW0EpcWsEmMHcqVcVBf84fQ4c1VcrAq3J1XA==

Diese Kodierungsart heißt Base64, einen Angriffspunkt auf die dahinterliegenden binären Daten finde ich spontan nicht. Ich bin kein Experte für Verschlüsselung mit einer Ausnahme:

Nebengeschichte: Im Dezember 2016 habe ich ein größeres deutsches Hostingunternehmen gehackt, das das Vigenère-Verfahren einsetzte, um die Rechte eines Nutzers zu speichern. Der Nutzer konnte diese Datei herunterladen, aber auch wieder hochladen. Die Datei wurde erstellt, indem man die Daten zunächst mit Vigenère verschlüsselt, dann mit Base64 kodiert und mit zlib komprimiert hat. Die letzten beiden sind Sachen, die man sofort sieht und umdrehen konnte. Die dann erhaltenen kodierten Daten bestanden fast ausschließlich aus Bytes im oberen Wertebereich. Da mir bekannt war, dass die ursprüngliche Nachricht aus größtenteils Kleinbuchstaben bestand, könnte dies bedeuten, dass das Vigenère-Verfahren mit einem Schlüssel aus ausschließlich ASCII-Zeichen verwendet wurde. Der Kasiski-Test bestätigte die Vermutung und ergab die Schlüssellänge 39. Da mir Ausschnitte aus der ursprünglichen Nachricht bekannt waren und wo diese zu finden waren, konnte ich an diesen Stellen den Schlüssel berechnen. In der dekodierten Nachricht machte ich mich zum Superadmin, führte alle Algorithmen rückwärts durch und schon war ich auch auf der TeamSpeak-Instanz des Hosters Superadmin.

Eigentlich schreibt der QRCode-Standard vor, dass das Maskenmuster so gewählt werden muss, dass der QR-Code möglichst „zufällig“ aussieht, um das Scannen zu erleichtern. Das Muster ist wie oben gezeigt Muster 0 (von den oben grün markierten Pixel sind die äußeren schwarz und die inneren weiß), aber ich erhalte bei automatischer Bestimmung des optimalen Musters ein anderes. Im Internet gibt es nur wenig QR-Code-Enkoder, bei denen man die Fehlerkorrekturstufe selbst einstellen kann. Da das gewählte Muster nicht das optimale ist (sieht man an vielen zusammenhängenden Flächen) muss man auch das Maskenmuster selbst angeben können. Jetzt streicht das Internet endgültig die Segel und ich greife zum Äußersten. Mein Chef versteht darunter die Nutzung des Telefons („Herr Kettenburg, greifen Sie zum Äußersten ... rufen Sie da an!“), ich hingegen die Verwendung meiner eigenen Software. Denn zum Glück habe ich vor einem Jahr selbst einen QR-Code-Enkoder geschrieben. Und der spuckt tatsächlich ein binär identisches Bild aus, wenn man die Zeilen zur automatischen Bestimmung des Maskenmusters (843 bis 852) auskommentiert:

QR-Code
In diesem QR-Code hat unser Entwickler 0 Fehler versteckt.

Wie man sieht, man kann den QR-Code nicht weitergeben und die App ist zu 100% fälschungssicher. *hust*

Immerhin hat der Mitarbeiter der Firma, die das entwickelt hat, danach noch gesagt, dass bei der Überprüfung der Name angezeigt wird und man den Personalausweis kontrollieren kann. Wie gesagt, man kann. Wird im Video aber nicht gemacht. Wenn einer auf den Namen achtet (was bei einem Allerweltsnamen auch nicht sicher ist), würde ich vermutlich schon nicht als Mayleen durchgehen. Vorausgesetzt, die würden mein Gender einfach einschätzen. Aber das macht 2021 doch keiner mehr, oder?

Egal, ich drifte schon wieder in den Gendergaga ab. Kürzlich hat der BND seine Kampagne Follow the Glitch Karnickel gestartet, um Talente zu finden. Ob ich mich dafür qualifiziere? Wohl eher nicht.

Statt auf die Corona TestApp setze ich dann lieber auf Schließfächer. Die sind nämlich wirklich super-super-sicher.

Übermorgen kommt dann wenigstens wieder was Hochwertiges im Fernsehen: #gntm.



Kommentare

Es gibt noch keine Kommentare zu dieser News.

Kommentar schreiben

Gib eine Zahl zwischen dreiundvierzig und einhundertdreizehn ein:
(in Ziffern)