Kaputt bleibt kaputt: Flickschusterei bei Ladekarten


Die Abrechnung von Elektroauto-Ladevorgängen bleibt auch 2020 so kaputt wie eh und je. Effektiv kann man sich als Elektromobilist auch zwei Jahre nach meinem Vortrag vom 34C4 nicht sinnvoll vor Missbrauch der eigenen Ladekarte schützen. Exemplarisch für den Umgang der Branche mit dem Problem sind die jüngsten Schwachstellen bei Produkten von Compleo Charging Solutions.

Die gestiegenen eichrechtlichen Anforderungen an Ladestationen haben zu einigen neuen Produkten am Markt geführt. Eines davon, das “Speicher- und Anzeigemodul” SAM, beschreibt der Hersteller Compleo CS so:

“Wie beim Tanken möchten sich die Verbraucher auch beim Laden darauf verlassen können, dass nur der Strom abgerechnet wird, der beim Laden geflossen ist. […] Mit der Innovation SAM werden unsere AC- und DC-Ladesäulen ganz einfach eichrechtskonform: keine Wartung, keine aufwendige Cloud-Software, keine monatlichen Kosten, keine Backendbindung.”

Kurzgefasst: Das SAM-Modul bietet Compleo zur eichrechtskonformen Nachrüstung von Ladesäulen an. Das Modul ist eine Messkapsel, das alle Ladevorgänge speichert. Hat man nach dem Laden Zweifel an der Abrechnung, kann man als Kunde erneut zur Ladesäule fahren und seinen Ladevorgang wieder abrufen. Anders als bei anderen Produkten ist also keine Online-Anbindung nötig, das reduziert den Umsetzungsaufwand für die Ladestellenbetreiber erheblich.

“Hört sich cool an” dachte sich wohl auch Allego, als sie in Berlin auf die SAM-Lösung setzten. Vergangenen Oktober hat allerdings mich Friedhelm Greis von Golem kontaktiert. Er hatte eine Schwachstelle beim SAM-Modul gefunden (Golem berichtete): Dooferweise zeig das SAM-Modul auch die Karten-UID an, d.h. die Nummer der Ladekarte, auf deren Basis die Ladevorgänge freigeschaltet und abgerechnet werden. Das ist quasi alles, was jemand braucht, der auf fremde Kosten laden möchte. Und es ist Herrn Greis gelungen, nicht nur die eigenen, sondern auch Ladevorgänge von Fremden abzurufen. Er konnte — quasi im Vorbeigehen — die Protokolldaten eines fremden Ladevorgangs fotografieren:

Bild: Ladevorgangsanzeige SAM-Modul

Mit diesem Bild konnte ich dann von Kaiserslautern aus einen Kartenklon bauen. Wie das geht hatte ich ja schon 2017 beschrieben. Mit dem Kartenklon konnte ich dann sowohl eine ENBW-Ladestation als auch einen Allego-Schnelllader freischalten. Geladen habe ich natürlich nicht, ich will dem echten Karteninhaber ja keine Kosten verursachen.

Nach einem Hinweis an Compleo und Allego hat Compleo das SAM-Modul überarbeitet. Offenbar auch mit dem Segen der Physikalisch-Technischen Bundesanstalt (PTB), die für das Thema Eichrecht zuständig ist und zuvor das SAM zertifiziert hatte. Mittlererweile hat Compleo die SAM-Module bei Allego zumindest teilweise ausgetauscht und “verschlüsselt” die UID. Das Verfahren ist mir nicht vollständig bekannt; ich habe nur anhand diverser Dokumente und Emails einen oberflächlichen Einblick in das Verfahren. Die folgenden Überlegungen sind daher eher als Risikoabschätzung zu verstehen. Für mich steht jedoch fest: Vertrauen würde ich der neuen Umsetzung auf der Basis meines jetzigen Informationsstands auch nicht.

“Verschlüsselung”

Die Änderung von Compleo ist zunächst recht simpel: Statt die UID direkt anzuzeigen wird ein Hash der UID angezeigt. Viel mehr Information steht dem SAM ja auch nicht zur Verfügung. Der Hash wird über eine Einwegfunktion (SHA256) berechnet und macht es sehr schwer, die UID aus dem Hashwert zurückzurechnen. So zumindest die Argumentation von Compleo CS in einem mir vorliegenden, nicht-öffentlichen Dokument.

Das Verfahren beschreibt Allego in einer Email so:

“Für die Prüfung von Ladevorgängen mit RFID gibt der Kunde die Unique ID in einen Online-Hashgenerator ein (SHA-256) und vergleicht die ersten 19 Stellen des Hashes mit dem angezeigten Wert. Bereits im Speicher- und Anzeigemodul vorhandene Ladevorgangsdaten können prinzipbedingt nicht mehr geändert werden.

Wie sieht der Ablauf aus:

  1. Mittels Android-App NFC TagInfo die Unique ID aus der Ladekarte auslesen. Ergebnisbeispiel: 0B2BD6C9
  2. Wert in den Online-SHA-Generator eingeben und Hashwert auslesen. Dabei Groß- und Kleinschreibung beachten (sonst kommt ein anderes Ergebnis raus). Ergebnisbeispiel: 5c8c6f9b6805bd51844f12d41041a6d83915b4be334829bb11795190a57db7b1
  3. Die ersten 19 Stellen mit dem Wert aus dem SAM vergleichen. Beispiel: 5c8c6f9b6805bd51844 ist gleich 5C8C6F9B6805BD51844. (Hier ist Groß- und Kleinschreibung egal.)

Übersetzt in Pseudocode soll derjenige, der seine Daten nachprüfen möchte, also Folgendes tun:

Algorithmus: Verifikation des Hashes

Die UID wird als String encodiert, und nicht als Bytefolge in Hexschreibweise. Das hat mich zunächst etwas verwirrt, ist aber eigentlich egal. Es ist in der Tat schwierig, aus dem Hashwert die UID der Ladekarte abzuleiten, also quasi rückwärts zu rechnen. Aber es gibt einen viel einfacheren Weg, an die Karten-UID zu kommen.

Vorwärts statt rückwärts

Die Ladekarten basieren auf der Mifare-Chipfamilie, und die UID (also die Kartennummer) ist entweder vier oder sieben Byte lang. Dabei sind die Kartennummern nicht beliebig, sondern in Nummernkreise je nach Hersteller aufgeteilt. Die UIDs müssen ja eindeutig einem Kunden zugeordnet werden können, d.h. in der Praxis wird nicht der volle Zahlenraum genutzt. Stattdessen werden die Emobility Service Provider (EMP) für ihre Ladekarten einen Nummernkreis nutzen. Für eine UID gibt es also gar nicht so viele Kombinationen — und deshalb muss ich aus einem Hashwert auch gar nicht die UID zurückrechnen. Es genügt, einfach für alle in Frage kommenden UIDs den Hashwert zu berechnen und zu schauen, bei welcher UID der Hashwert übereinstimmt. Der Algorithmus sieht so aus:

Algorithmus: Brute-force Angriff auf UID

Mein Proof of Concept (Download) parallelisiert dieses Problem trivial und braucht etwa 12 Minuten, um den ganzen Zahlenraum einer Vier-Byte-UID abzusuchen — auf der CPU meines alten Desktoprechners, und ohne weitere Informationen über zulässige Nummernkreise. Auf einer schnellen Grafikkarte sollte man um zwei bis drei Größenordnungen schneller sein, das habe ich allerdings nicht ausprobiert. Karten mit einer Vier-Byte-UID bieten einfach nicht genügend Werte, um diesen Angriff zu verhindern. Bei Sieben-Byte-UIDs braucht man eine schnellere Implementierung und eben genügend Informationen über gültige Nummernkreise, damit ein Angriff in sinnvoller Zeit funktionieren kann. Eine Ladekarte mit einer Sieben-Byte-UID bietet also einen geringfügig höheren Schutz. Von wirklicher Sicherheit würde ich aber auch da nicht sprechen.

Was sagt Compleo CS?

Herr Greis, aber auch ich haben Compleo CS über diesen Angriff bereits im November informiert und auch den Code oben zugänglich gemacht. Ich würde die Reaktion als “höfliches Desinteresse” beschreiben. Compleo CS beschreibt die o.a. Lösung als “nicht optimal”, und sieht mittelfristig die Notwendigkeit, etwas anderes umzusetzen. Compleo CS hat offenbar bereits mit dem Rollout der neuen SAM-Module begonnen und will nun nicht nachbessern. Das ist, gelinde gesagt, eine frustrierende Reaktion.

Compleo CS verweist auf die Bemühungen einer VDE-Arbeitsgruppe, die (angeblich, ich habe da keinen Einblick) nach sicheren Authentifizierungslösungen sucht. Das zuständige DKE-Gremium “DKE/K 461 Messeinrichtungen und -systeme für Elektrizität” hat mit dem Entwurf der VDE-AR-E 2418-3-100:2018-07 (PDF des Inhaltsverzeichnisses) versucht, mess- und eichrechtskonforme Messsysteme für Ladestationen zu entwerfen. Ich habe keinen Zugang zu diesem Dokument, aber im Inhaltsverzeichnis findet sich nur der Hinweis auf eine grob einseitige Einschätzung der Authentifizierungsthematik im Anhang B9, “Anforderungen bezüglich der Software und des Schutzes gegen Manipulation”. Der Rest des Dokuments beschäftigt sich mit elektrisch relevanten Fragestellungen wie den “klimatischen Bedingungen” oder den “Zähleraufschriften”. Der Entwurf ist von Mitte 2018 und gibt natürlich nur den Diskussionsstand zu diesem Zeitpunkt wieder. Dennoch: Die Lücken bei den Ladekarten sind spätestens Ende 2017 bekannt geworden. Die Diskussion müsste daher erheblich weiter gediehen sein.

Was macht Allego?

An der Stelle von Allego würde ich ja nun sorgfältig prüfen, ob ein weiterer Rollout dieser Lösung überhaupt ökonomisch sinnvoll sein kann. Technisch sinnvoll ist das SAM jedenfalls nicht. Zumal die SAMs, die bislang im Feld waren, ja die Aufzeichnungen der ersten, ungehashten Ladevorgänge weiterhin speichern müssen. Da die Aufzeichnungen im Nachhinein nicht mehr verändert werden dürfen bleiben diese also im Klartext sichtbar. Die einzig sinnvolle Massnahme wäre, die betroffenen Ladekarteninhaber zu benachrichtigen und ihre Karten auszutauschen. Ich bezweifele jedoch, das es in der Branche überhaupt einen Prozess für einen solchen Kartentausch gibt. Wir werden sehen.

Zweifelhafte Laderechnungen

Die Akzeptanz der Elektromobilität leidet ganz erheblich, wenn man sich bei jeder Rechnung fragt, ob man übervorteilt wurde. Das ist derzeit ein reales Problem:

Ausschnitt aus einer Rechnung: Absolut nicht plausibel

Der Ausschnitt oben stammt aus einer Abrechnung von “Einfach Strom Laden” (sic!) für einen Ladevorgang an einer Ladesäule der Stadtwerke Kaiserslautern. Mal abgesehen davon, das die Standortdaten albern sind: Ich stand 54 Minuten an der Säule, sagen wir der Einfachheit halber eine Stunde. Mein BMW i3 kann mit 11kW an einer AC-Ladesäule laden, sprich: Mehr wie 11kWh sind nicht drin. Ich kann mit diesem Fahrzeug also gar nicht die 25kWh geladen haben. Noch lustiger: Die Ladesäule kann nur 22kW liefern, d.h. sie schafft selbst auch keine 25kWh in unter einer Stunde. Selbst wenn ich unterstelle, das die Spannung kurzfristig am oberen Ende des zulässigen Bereichs ist: 3 * 253V * 32A * 1 Stunde = 24,2 kWh. Auf 25,6 kWh komme ich in keinem Fall.

Fazit: Der reinste Affenzirkus

Das Thema Sicherheit der Ladekarten wird nicht alt. Nach meinem Congress-Vortrag von 2017 hat sich exakt nichts bewegt, die Branche konnte sich bislang noch nicht auf ein vernünftiges Verfahren zur sicheren Freischaltung von Ladevorgängen einigen. Es wird oft auf die ISO 15118 verwiesen, die aber noch nicht in den Fahrzeugen verfügbar sind. Allerdings habe ich wenig Hoffnung, das diese Techniken wesentlich sicherer sind: Kürzlich haben Baker und Martinovic (Oxford) gezeigt, das sie den Datenverkehr von CCS-Ladestationen problemlos über einen Seitenkanalangriff auf die Powerline-Kommunikation abhören können. Aus dem Paper:

By examining the recovered traffic, we further find a host of privacy and security issues in existing charging infrastructure including plaintext MAC-layer traffic recovery, widespread absence of TLS in public locations and leakage of private information, including long-term unique identifiers. Of particular concern, elements of the recovered data are being used to authorise billing in existing charging implementations.

Insofern: Die Systeme, die derzeit im Einsatz sind, taugen leider nicht wirklich. Jetzt kann man sich natürlich auf den Standpunkt stellen das alles halb so wild ist und man erst einmal genügend Ladestationen braucht. Allerdings zeigt das Beispiel Allego in Berlin ja auch, das die Nachrüstung bestehender, unsicherer Ladestationen im Feld sehr teuer und aufwändig werden kann.

Unterm Strich heisst das: Weiter gehts mit der Flickschusterei. Auch große Unternehmen der Branche sehen sich momentan nicht in der Lage, den peinlichen Status quo zu verändern. Ob Missbrauch der Ladekartennummer oder unplausible Abrechnungsdaten: Beides zerstört das Vertrauen in die Ladeinfrastruktur. Es ist höchste Zeit, endlich ein eichrechtlich und sicherheitstechnisch fundiertes Konzept für das Laden in den Markt zu bringen. Denn: Den momentanen Affenzirkus tolerieren nur echte Elektromobilitäts-Enthusiasten.


Proudly made using vim, jekyll, bootstrap (cosmo theme) & coffee. Last update: 25 Feb 2020