beA-Panne: Welche Daten enthält die Signatur?

by Volker Weber

Eine Analyse zu meinem Artikel bei Heise.de: Wieder eine beA-Panne: Archive ohne Signatur

Wenn der Rechtsanwalt ein Schreiben aus beA herunterlädt, bekommt er eine ZIP-Datei und eine PKCS #7 Signaturdatei, die die Echtheit der ZIP-Datei rechtssicher nachweisen soll:

Im Rahmen der Speicherung fasst das beA-System nun den Nachrichteninhalt sowie den Anhang in der ZIP-Datei zusammen (1). Gleichzeitig bringt das beA eine gesonderte Signaturdatei (mit einem fortgeschrittenen Zertifikat) an die ZIP-Datei an (2). Diese Signaturdatei stellt sicher, dass der Inhalt dieser ZIP-Datei nicht mehr geändert werden kann, ohne dass eine Signaturprüfung zu einem Fehler führen würde. Mit anderen Worten: Der Inhalt der ZIP-Datei kann nicht mehr unbemerkt verändert werden (vgl. beA-Newsletter 50/2017). Sowohl ZIP-Ordner als auch Signaturdatei müssen gemeinsam abgespeichert werden, um zu einem späteren Zeitpunkt einen rechtssicheren Nachweis führen zu können.

Versucht man diese Prüfung bei einer beliebigen aus beA archivierten Nachricht, heißt es, die Signaturdatei sei ungültig.

f72073048aecba0740d336d3ffc43848

Das ist nicht ganz richtig. In der Datei ist tatsächlich eine Signatur, der eine Statusmeldung "Operation Okay" vorangestellt ist. PKCS #7 sind als ASN.1 kodiert, man braucht also einen passenden Editor, um sie zu lesen. Man erkennt zwei Nodes, erst die Statusmeldung, dann die Signatur:

5f54b4844c8734de16320e69ffa93892

Wenn man den Knoten mit der Signatur als neue Datei exportiert, erhält man eine gültige Datei, die sich prüfen lässt:

d7e3fd07b72d1fe17df6fd7e32a08d64

Das Ergebnis dieser Prüfung ist allerdings unbefriedigend:

d848280dee8ed9755c4b9822fc873a48

Der entscheidende Teil steht in der mittleren rosa Zeile:

bcfab2993f262ee218a999a611e7744d

Die Signatur enthält also einen Zeitstempel mit dem Datum, zu dem diese Signatur erstellt wurde. Mit anderen Worten: Sie beweist lediglich, wann eine Nachricht als ZIP-Datei heruntergeladen wurde. Für jeden Download der selben Nachricht enthält man einen neuen Wert. Bislang ist es mir nicht gelungen, eine Bestätigung zu erhalten, dass diese Datei unversehrt ist.

Ich habe nicht die geringste Ahnung, was das soll, hege aber den Verdacht, dass sich hier ein Debug-Test aus der Anwendungsentwicklung bis in die Produktion gerettet hat, ohne dass dies jemandem aufgefallen wäre.

Update: Die Signaturdatei ist zwar ungültig, aber nicht verloren. Man kann sie retten, denn sie enthält alle wichtigen Informationen. Ich zitiere einen SAP-Sicherheitsexperten, der sich das genauer angeschaut hat:

Die signierten Daten im PKCS#7 entsprechen der ZIP-Datei. Die sind dann mit einem qualifizierten Zeitstempel signiert. Damit kann man sowohl die Integrität des Inhalts als auch den Zeitpunkt des Zugriffs bestätigen, was für den Anwendungsfall durchaus sinnvoll ist.

Qualifizierte Zeitstempel nimmt man gerne, weil man dann nicht jeden Endpunkt mit Signaturinfrastruktur versorgen muss, sondern das an einen Dienstleister auslagern kann.

Jetzt braucht es nur noch ein Hilfsprogramm, das nachträglich defekte Signaturdateien repariert sowie ein Update für beA, damit das in Zukunft korrekte Signaturen produziert. Und natürlich eine viel bessere Qualitätssicherung beim Hersteller und beim Abnehmer.

Comments

Interessante Analyse. Wäre nen ordentlicher weiterer QS Fail. Eventuell passte da halt dann die Zeitplanung und Budgetierung des Auftragnehmers nicht zu den Vorstellungen des Auftraggebers. Soll vorkommen.

Off-Topic: Wäre es möglich Screenshots im Blog in Zukunft auch in nicht runterskaliertem Format (verlinkt oder halt per rechte Taste öffnen in neuem Tab) einzubetten? Meine Augen werden mittlerweile zu alt um die hier ordentlich entziffern zu können. Geht vermutlich anderen langjährigen Bloglesern ähnlich.

Torsten Pinkert, 2019-08-09

Die meisten Screenshots sind doppelt so groß, wie Du sie hier siehst.

Volker Weber, 2019-08-09

Das ist so nicht ganz richtig. Ein Zeitstempel hat zwar die Funktion zu bestätigen, wann eine Datei (mit diesem Zeitstempel) signiert wurde, aber auch die Funktion die Integrität der Daten sicherzustellen, weil die gehashten Daten mit dem Zeitstempel verknüpft werden. Es ist also ein technischer Fehler bei der Erstellung, grundsätzlich ist ein Zeitstempel aber das Mittel der Wahl bei dieser Funktionalität des beA.

Tobias Warken, 2019-08-11

Danke für die Erklärung. Dann besteht ja noch Hoffnung, dass man die erstellten Signaturen retten kann.

Volker Weber, 2019-08-11

Tjo, dann mal her mit den passenden Editoren... wenn "es" denn - richtig? - verknüpft hat.

Eine Software, die beim Archivieren, beim Weiterleiten an EGVP und wo sonst noch so eklatant daneben haut, soll ernsthaft für sich in Anspruch nehmen können, dass das, was sie ansonsten produziert, definitiv und immer das Maß und die Grundlage aller davon abhängenden Rechtsstaatlichkeit ist? Wo soll das Vertrauen noch herkommen?

Wenn eine Signatur mal nicht passt, passt sie dann wegen Manipulation nicht - oder wegen einer sporadischen Fehlfunktion der Software irgendwo davor? Wie viel Murks braucht es, um diese und entsprechende Fragen ernst zu nehmen?

Thomas Schulz, 2019-08-11

Danke. Ich kann das auch so bestätigen. Um zumindest eine valide Signatur-Datei zu bekommen, genügt es, die ersten 27 Byte zu entfernen. Mit Bord-Mitteln von Windows ist das leider nicht möglich.

Ansonsten kann ich die Angabe des SAP-Experten auch nachvollziehen. In der Original-Datei ab Offset 115 (bzw. in der validen Signatur-Datei ab Offset 88) die SHA256-Prüfsumme des ZIP-Archives der beA-Nachricht abgelegt.

Rene Schmidt, 2019-08-12

Recent comments

Volker Weber on Stuff that works :: Skyroam Solis at 11:12
Markus Mews on Stuff that works :: Skyroam Solis at 11:09
Volker Weber on Stuff that works :: Skyroam Solis at 10:57
Christian Heindel on Stuff that works :: Skyroam Solis at 10:56
Roland Dressler on A long Razr day in London at 10:51
Sami Bahri on Free Basecamp Personal at 22:11
Abdelkader Boui on tizi hat die Tankstation neu aufgelegt at 21:28
Manfred Wiktorin on iOS 13 wasn't done :: And it still is not at 20:22
Roland Dressler on Unterwegs in mehreren Microsoft Teams verschiedener Microsoft 365 Tennants at 19:39
Peter Meuser on Unterwegs in mehreren Microsoft Teams verschiedener Microsoft 365 Tennants at 16:28
Roland Dressler on Unterwegs in mehreren Microsoft Teams verschiedener Microsoft 365 Tennants at 14:56
Volker Barth on Free Basecamp Personal at 16:31
Volker Barth on Free Basecamp Personal at 16:20
Volker Weber on From my inbox at 18:05
Amy Blumenfield on From my inbox at 18:01
Thomas Cloer on tizi hat die Tankstation neu aufgelegt at 13:39
Volker Weber on tizi hat die Tankstation neu aufgelegt at 00:44
Peter Meuser on Unterwegs in mehreren Microsoft Teams verschiedener Microsoft 365 Tennants at 18:54
Volker Weber on tizi hat die Tankstation neu aufgelegt at 15:22
Michael Weiss on tizi hat die Tankstation neu aufgelegt at 14:16
Tobias Vogel on tizi hat die Tankstation neu aufgelegt at 08:50
Volker Weber on tizi hat die Tankstation neu aufgelegt at 18:40
Stipe Sumic on Building custom apps in Teams with Power Apps at 18:24
Alexander Hüls on tizi hat die Tankstation neu aufgelegt at 17:38
Axel Seifried on tizi hat die Tankstation neu aufgelegt at 16:20

Ceci n'est pas un blog

I explain difficult concepts in simple ways. For free, and for money. Clue procurement and bullshit detection.

vowe

Contact
Publications
Stuff that works
Amazon Wish List
Frequently Asked Questions

rss feed  twitter  amazon

Local time is 04:44

visitors.gif

buy me coffee

Paypal vowe