Registrierkassenpflicht

28. September 2015

Unser Kassensystem WWPlus ist fit für die Registrierkassenpflicht 2016. Darüber hinaus, bieten wir für die Registrierkassen Softwareanbieter eine Signaturerstellungslösung die den gesetzlichen Anforderungen entspricht. - Einfacher Funktionsaufruf von einem beliebigen POS-System - Mandantenfähig, Mehrere Kassen pro Mandant/Firma - Verschlüsselung und Signatur der für die Finanzbehörde relevanten Daten und Ablage in einer Datenbank - Auswertung über die gesamten verschlüsselten Daten - Export im von der Finanzbehörde definierten Format

 

HSM – Hardware Security Module

 

Das HSM dient als Speicher für sensible Informationen (Schlüssel) und führt Verschlüsselungs- bzw. Signaturoperationen durch ohne die Schlüssel jemals nach außen zu geben. Es existiert eine breite Palette an kompatiblen Modulen. Sie unterscheiden sich durch die bereitgestellten Algorithmen, die Anzahl an Schlüsseln, die in einem sicheren Speicher abgelegt werden können und natürlich durch die Performance.

 

Für die Registrierkassensicherheitsverordnung werden benötigt:

 

  • Verschlüsseln des Umsatzzählers mittels AES256 – ICM(CTR)-Modus
  • Signieren der Daten mittels ES256 (ECDSA – Elliptic Curve Digital Signature Algorithm mit p-256 Kurve)

 

Je nach Anzahl der gewünschten Kassen müssen entsprechende Security-Module gewählt werden um pro Kassa einen AES-256-Key und ein ES256-Zertifikat im sicheren Speicher ablegen zu können.

Die ITG Consulting stellt kompatible Module zur Verfügung.

 

RKV-Service

 

Das RKV-Service ist ein Windows-Service, das über einen HSM und eine sichere Verbindung zur Datenbank verfügt. Es stellt natürlich auch eine Schnittstelle für den Client bereit. Die Kommunikation zwischen RKV-Service und RKV-Client findet verschlüsselt statt.

 

 

Abb. 1 - Gesamtsystem

 

RKV-Client

 

Der RKV-Client (dll) stellt Funktionen bereit, die mit einem voreingestellten RKV-Service kommunizieren und die Vorgaben der Registrierkassensicherheitsverordnung umsetzen.

 

Ablauf einer Signaturerstellung:

 

  • Client schickt eine Anfrage an das Service (username/password, Rechnungsdaten)
  • Service verifiziert den User. Bei Misserfolg wird hier abgebrochen und dem Client ein Fehlercode mitgeteilt
  • Service verkettet die Rechnungsdaten, verschlüsselt den Umsatzzähler, signiert das gesamte Paket
  • Service legt das signierte Paket in verschlüsselter Form in der Datenbank ab
  • Service extrahiert die zum Andruck auf der Rechnung vorgesehenen Teile der Signatur
  • Service antwortet dem Client mit einem Antwortsatz in dem die Daten zum Andruck auf der Rechnung enthalten sind.

 

 

RKV-Admin

 

RKV-Admin ist ein Frontend für den Systemadministrator. Darin können alle Systemrelevanten Einstellungen vorgenommen werden.

  • User Management
  • HSM – Verwaltung
  • Key- bzw. Zertifikat-Verwaltung für jedes HSM
  • Export der signierten Rechnungsdaten für die Finanzbehörde

 

Berechtigungen

 

Das RKV-Service kennt 3 Stufen der Berechtigung.

  • User: darf System Nutzen, kann keine administrativen Tätigkeiten durchführen
  • Administrator: kann keine Security-einstellungen verändern, darf administrative Tätigkeiten durchführen wie User verwalten, Auswertungen durchführen
  • Key-Administrator: Hat alle Rechte, kann auch die Security-einstellungen ändern, hat Zugriff auf die Einstellungen des HSMs, kann z.B. Bestehende Keys löschen oder neue Keys einspielen, ein anderes HSM zur Verwendung freigeben

 

 

Erforderliche Felder

 

Für die Registrierkassensicherheitsverordnung werden auf Seiten des Kassensystems folgende Felder benötigt:

 

  • Kassen-ID: Fixe Bezeichnung einer Kassa (keine Formatvorgabe, darf sich aber nicht ändern)
  • Belegnummer: Fortlaufende Rechnungsnummer
  • Beleg-Datum-Uhrzeit: Format „JJJJ-MM-TT’T’hh:mm:ss“
  • Betrag-Satz-Normal: Wert bzw. „0,00“
  • Betrag-Satz-Ermaessigt-1: Wert bzw. „0,00“
  • Betrag-Satz-Ermaessigt-2: Wert bzw. „0,00“
  • Betrag-Satz-Null: Wert bzw. „0,00“
  • Betrag-Satz-Besonders: Wert bzw. „0,00“
  • Stand-Umsatzzähler: Dieser Wert wird vom RKV-Service AES-256-CTR verschlüsselt

 

Folgende Felder werden vom RKV-Service an die Signaturdaten angehängt:

 

  • Zertifikat-Seriennummer
  • Signatur-Voriger-Beleg

 

Diese Felder werden nach der von der österreichischen Finanzbehörde vorgegebenen Methode verkettet:

„Wert(Kassen-ID)_Wert(Belegnummer)_Wert(Beleg-Datum-Uhrzeit)_

Wert(Betrag-Satz-Normal)_Wert(Betrag-Satz-Ermaessigt-1)_Wert(Betrag-Satz-Ermaessigt-

2)_Wert(Betrag-Satz-Null)_Wert(Betrag-Satz-Besonders)_

Wert(Stand-Umsatz-Zaehler-AES256-CTR)_Wert(Zertifikat-Seriennummer)_

Wert(Sig-Voriger-Beleg)“

 

Diesem String wird noch ein Präfix vorangestellt, welcher folgende Punkte beschreibt:

  • Signaturalgorithmus
  • ZDA, der das Zertifikat ausgestellt hat
  • Hashalgorithmus und die Anzahl der Bytes, die extrahiert wurden
  • Kompressionsalgorithmus der für die Erstellung des Maschinenlesbaren Codes verwendet wurde (Obsolet, da die Finanzbehörde den QR-Code durch einen simplen OCR-A-Andruck ersetzt hat)

 

 

 

Ergebnis der Signaturerstellung

 

Das Ergebnis der JWS-Signatur ist die nach dem JWS-Standard definierte kompakte Repräsentation.

Diese Zeichenkette besteht dabei aus drei BASE64-URL-kodierten Elementen, die durch das Zeichen „.“ voneinander getrennt sind. Die drei Elemente entsprechen den Elementen in der gegebenen Reihenfolge

 

1. den Metainformationen über den verwendeten Hash- bzw. Signaturalgorithmus

2. den signierten Daten (JWS Payload) und

3. dem berechneten Signaturwert.

 

Kann aufgrund des Ausfalls der Signaturerstellungseinheit keine digitale Signatur erstellt werden, wird statt dem berechneten Signaturwert (drittes Element der kompakten JWS Repräsentation) die UTF-8 kodierte Zeichenkette „Sicherheitseinrichtung ausgefallen“ BASE64-URL-kodiert eingetragen.

 

Dieses Ergebnis der Signaturerstellung wird nochmals verschlüsselt und in der RKV-Database abgelegt. An den Client wird lediglich der zum Andruck auf der Rechnung vorbereitete, extrahierte Teil der Signatur übermittelt.

 

Export der Signaturdaten

 

Die Signaturdaten können jederzeit auf ein externes Medium im von der Finanzbehörde definierten Format exportiert werden. Diese Sicherung muss von einem Key-Admin zumindest vierteljährlich durchgeführt werden.

 

Zertifikate

 

Für die Signatur mittels ES256 wird pro Kassa ein entsprechendes Zertifikat benötigt welches bei verschiedenen Zertifizierungsdienstanbietern (ZDA) erworben werden kann. Dabei wird die Identität des Käufers überprüft indem ein gültiger Lichtbildausweis vorgelegt werden muss. Das Zertifikat muss in den HSM mittels RKV-Admin eingespielt werden und sollte vernichtet bzw. an einem sicheren Ort (Bankschließfach) abgelegt werden. Bei Vernichtung des Zertifikates und einem Ausfall des HSMs muss in weiterer Folge ein neues Zertifikat erworben werden. Wird das Zertifikat sicher aufbewahrt, kann es bei Ausfall des HSMs verwendet werden um ein neues Modul aufzusetzen.