BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

Fragen zu Zertifikaten #610

Open Ralf-Friedl opened 7 years ago

Ralf-Friedl commented 7 years ago
  1. Die Funktion des Hash des Vorbelegs ist soweit klar. Es gibt eine lückenlose Folge von Belegen, und es ist nicht möglich, einen Beleg zu entfernen, einzufügen oder zu verändern, ohne dass sich der Hash von allen folgenden Belegen ändern würde. Somit kann man sicher sein, dass der Export aus dem DEP mit den tatsächlichen Belegen übereinstimmt.

  2. Was genau ist der Nutzen bzw. die Funkion der digitalen Signatur auf dem Kassenbeleg? Normalerweise zeigt eine Signatur, dass eine Email tatsächlich von dem Absender stammt, oder ein Server, zu dem man eine Verbindung aufbaut, tatsächlich der ist, der er vorgibt zu sein. Hier aber ist der Kunde selbst anwesend beim Verkäufer, sonst würde der Verkauf nicht über eine Kasse abgewickelt werden. Es kann also kein Nutzen für den Kunden sein, zumal dieser kein Zertifikat hat, gegen das er die Signatur prüfen könnte. Weiterhin könnte auf dem Beleg auch "Sicherheitseinrichtung ausgefallen" stehen, und dann gibt es sowieso keine Signatur. Die einzigen Belege, wo die Signatur vorgeschrieben ist, sind Startbeleg und Jahresbeleg, und beide sind nicht für den Kunden bestimmt. Auch bei einer Prüfung wird man kaum davon ausgehen, dass das Unternehmen Belege vorlegt, die es nicht selbst erstellt hat. Selbst wenn das Ziel ist, dass das Unternehmen sich gegenüber dem Finanzamt ausweist, ließe sich dies leicht dadurch erreichen, dass man den AES Key dafür nutzt, der bereits bei FinanzOnline hinterlegt ist. Zum Verschlüsseln des Umsatzzählers wurden sowieso schon 16 Bytes generiert, von denen maximal 8 verwendet wurden. Mit den restlichen Bytes könnte man zum Beispiel (einen Teil der) Steuernummer oder etwas ähnliches verschlüsseln, was das Vorliegen des AES Keys beweisen würde, und damit die Identität des Unternehmens. Beim Umsatzzähler wird darauf hingewiesen, dass der maschinenlesbare Code so kurz wie möglich sein soll und 5 Bytes ausreichen sollten. Wenn hier also schon empfohlen wird, 3 Bytes einzusparen (4 in BASE64), dann müssen die 64 Bytes für die Signatur eine wichtige Funktion haben, aber welche?

  3. Die Regelung zu "Sicherheitseinrichtung ausgefallen" zeigen meiner Meinung nach zwei Punkte: Zum einen wird der Ausfall als wahrscheinlich genug betrachtet, dass es überhaupt wert ist, sich darüber Gedanken zu machen. Zum anderen ist die Signatur nicht wichtig genug, um deswegen die Kasse als nicht funktionsfähig zu deklarieren.

  4. Angeblich darf zur Erstellung der Signatur nur eine externe Karte verwendet werden. Allerdings stammt diese Information von den Anbietern, die ein Interesse daran haben, diese Karten verkaufen. Ist dies korrekt? In der RKSV selbst steht unter § 3 Abkürzungen und Begriffsbestimmungen: Ziffer 23: Signaturerstellungseinheit: konfigurierte Software oder Hardware, ... Ziffer 24: Siegelerstellungseinheit: konfigurierte Software oder Hardware, ... Natürlich kann eine Signatur nicht ohne Hardware erstellt werden, aber hier steht nichts davon, dass es eine spezielle Hardware sein muss, vielmehr wird Software explizit erwähnt. Ziffer 12 definiert zwar HSM als Hardware-Sicherheitsmodul, im gesamten Text wird jedoch kein Bezug mehr darauf genommen.

  5. Wie man auch am Mustercode sieht, gibt es keine Möglichkeit, dass die Sicherheitseinrichtung ausgefallen sein kann, wenn man das Zertifikat und den Key hat, um die Signatur zu berechnen. (Ausnahme ist, wenn zum Test ein Ausfall simuliert wird.) Ist es also zulässig, einen eigenen Key zu verwenden? Gibt es einen ZDA, der ein Zertifikat für einen eigenen Key ausstellt? Das Einfachste wäre, wenn man den öffentlichen Schlüssel direkt in FinanzOnline hinterlegen könnte, so wie man auch schon jetzt den AES Key hinterlegt. Der Aufwand beim Ausstellen von Zertifikaten ist nicht die Erstellung eines Schlüsselpaars, sondern den Inhaber zu identifizieren. Dies ist durch die Anmeldung bei FinanzOnline schon geschehen. Bei geschlossen Systemen ist es sowieso vorgesehen, den öffentlichen Schlüssel zu übergeben, warum nicht bei offenen Systemen?

  6. Wenn es nur Zertifikate auf externen Karten gibt, mit der daraus folgenden Gefahr, dass diese Karte nicht ansprechbar ist, wie soll die Kasse darauf reagieren? Der Teil mit "Sicherheitseinrichtung ausgefallen" ist soweit klar. Auf der Karte ist jedoch auch das Zertifikat zum Key gespeichert, und aus diesem ergibt sich der ZDA und die Seriennummer des Zertifikats, und diese gehören immer auf den Beleg, auch wenn die Karte nicht ansprechbar ist. Was soll die Kasse also in die Felder ZDA und Seriennummer schreiben, wenn sie nicht auf das Zertifikat auf der Karte zugreifen kann?

  7. In Erweiterung dazu, das Zertifikat enthält einen Key für EC256 gemäß Registrierkassenalgorithmus "R1". Es ist zumindest angedacht, dass es irgendwann einen Nachfolger geben könnte, falls "R1" als nicht mehr sicher genug gilt. Es ist auch davon auszugehen, dass es dann eine Übergangszeit geben wird, in der sowohl "R1" als auch der potentielle Nachfolger "R2" verwendet werden können. Auch dies hängt dann davon ab, was für ein Key auf der Karte ist, und folglich davon, dass die Karte ansprechbar ist.

ErichFreitag commented 7 years ago

Zu 2) die Signatur zeigt, dass die Daten des maschinenlesbaren Codes korrekt sind und vom Zertifikatsinhaber stammen, entsprechend einer Unterschrift. Der Kunde ist dabei irrelevant. Was man sonst noch könnte ist müßig - es ist so.

zu 3) die Signatur ist sehr wohl wichtig, darum müssen sie ja auch bei Ausfall Behebungsmaßnahmen einleiten, und zwar ohne unnötige Verzögerung

zu 4) Karte oder HSM-Anbindung. Software-Signatur ist nur für geschlossene Gesamtsysteme zulässig.

zu 5) nein, sie müssen (außer bei geschlossenen Gesamtsystemen) die Signaturbildung über die Signaturerstellungseinheit führen. Zum warum - siehe oben

zu 6) den VDA und die Seriennummer des zuletzt funktionierenden Zertifikats

zu 7) das kann wohl erst besprochen werden wenn es soweit ist

Ralf-Friedl commented 7 years ago

Vielen Dank für die schnelle Antwort.

Zu 2: Die Signatur zeigt nur, dass die Daten vom Zertifikatsinhaber stammen, es könnte auch korrekt signierter Unsinn sein. Gibt es einen realistischen Fall, wo man bezweifeln würde, dass die Daten vom Unternehmen stammen, das den Beleg ausgestellt hat?

Die Signatur ist wichtig, weil sie gesetzlich vorgeschrieben ist. Das ist nachvollziehbar, und war mir auch vorher schon klar. Das erklärt aber nicht, warum sie gesetzlich vorgeschrieben ist.

ErichFreitag commented 7 years ago

Ich formuliere es mal salopp: die Signatur ist eine Kennung, dass die signierten Daten unverfälscht sind und dass die Daten von jener (natürlichen/juristischen) Person stammen, die mit der Signatur "unterschrieben" hat. Eine Signatur hat immer die Aspekte Authenzität (Zuordnung zum Unternehmen) und Integrität (keine nachträgliche Datenänderung möglich). Die Signatur kann nur auf Gültigkeit mit dem öffentlichen Schlüssel geprüft werden - nicht mehr und nicht weniger.

Die signierten Daten enthalten neben Barbeträgen und Umsatzzähler auch die Belegverkettung. Mit der Signatur wird daher bestätigt, dass die Manipulationssicherheit betreff Unveränderbarkeit der Daten - besonders bezüglich Umsatzzähler und Verkettung - gegeben ist.

Zusätzlich ist damit gewährleistet, dass die Signatur auch vom signierenden Unternehmen stammt. Der hat ja über einen Vertrauensdiensteanbieter ein entsprechendes Zertifikat erworben, das über die Seriennummer eindeutig mit dem Unternehmen verbunden ist.

Man muss also das Ganze sehen. Sie könnten zwar einen Unsinn signieren, dann ist aber der Unsinn eben Unsinn und damit wären auch die Inhalte des maschinenlesbaren Codes Unsinn. Es geht nicht um Zweifel, dass der Unternehmer den Beleg ausgestellt hat, sondern um den Nachweis, dass der Beleg von ihm ist und dass die Manipulationssicherheit gegeben ist.

ztp-mino commented 7 years ago

Zu 2. möchte ich noch hinzufügen, dass ein HMAC mit einem symmetrischen Schlüssel zur Prüfung der Integrität zwar möglich ist, hierbei aber jeder, der in der Lage sein soll diese "Signatur" zu prüfen (also zumindest die Finanz), automatisch auch in der Lage ist, die "Signatur" zu fälschen.

Ein solches Verfahren würde nur die Integrität, nicht aber die Authentizität der Belege garantieren.

Ralf-Friedl commented 7 years ago

hierbei aber jeder, der in der Lage sein soll diese "Signatur" zu prüfen (also zumindest die Finanz), automatisch auch in der Lage ist, die "Signatur" zu fälschen. Da war ich wohl nicht paranoid genug um das als Problem zu erkennen. Der Gesetzgeber schützt den Steuerpflichtigen.

Gibt es Vorgaben zum Aussehen von Startbeleg und den Null-Belegen zum Ende des Monats bzw. Jahres und bei wieder Inbetriebnahme der Signiereinheit, über den Inhalt des QR-Codes hinaus?

ErichFreitag commented 7 years ago

Der Sinn der in der RKSV verwendeten asymmetrischen Signatur ist, dass man sie nicht fälschen kann.

Vorgaben zu den Belegen gibt es im Erlass zur RKSV vom 04.08.2016.