Vorgaben für kryptographische Verfahren
Treten die Schlüsselwörter "MUSS"/"MÜSSEN", "DARF NICHT"/"DÜRFEN NICHT", "SOLLTE"/"SOLLTEN", "SOLLTE NICHT"/"SOLLTEN NICHT" und "KANN"/"KÖNNEN" in Großbuchstaben auf, handelt es sich um Implementierungsvorgaben, die entsprechend den Begriffen "MUST", "MUST NOT", "SHOULD", "SHOULD NOT" und "MAY" gemäß RFC 2119 zu interpretieren sind.
FIT-Connect verwendet zur Übertragung von Antragsdaten und Metadaten mit direktem Bezug zu Anträgen eine Ende-zu-Ende-Verschlüsselung. Diese ist auf Basis des Standards JSON Web Encryption (JWE) unter Verwendung von Schlüsseln gemäß des Standards JSON Web Keys (JWK) umgesetzt.
Zudem bietet FIT-Connect digital signierte Eingangsbestätigungen für Anträge. Die ausgestellten Signaturen werden auf Basis von Security Event Tokens (SET) erzeugt und die dazugehörigen Schlüssel gemäß des Standards JSON Web Keys (JWK) implementiert.
Die Liste der standardisierten Algorithmen für Signaturen und Verschlüsselung mit JWE/JWS wird für die Nutzung in FIT-Connect unter Berücksichtigung der Vorgaben des BSI gemäß der Richtlinie TR-02102-1 eingeschränkt. Diese Einschränkung der zu unterstützenden Algorithmen senkt die Komplexität in Implementierungen der angebundenen Systeme und erfolgte unter Berücksichtigung der praktischen Nutzbarkeit der Algorithmen durch eine breite Unterstützung in Implementierungen der Standards.
Vorgaben für eingesetzte X.509-Zertifikate
Dem JSON Web Key zur Verschlüsselung von Antragsdaten sowie dem JSON Web Key zur Signaturprüfung von digitalen Eingangsbestätigungen muss ein für die Empfangsbehörde der Einreichung signiertes X.509-Zertifikat zugrundeliegen. Bei der Erstellung von Zertifikaten und der Zertifikatsprüfung sind die Regelungen und Standards aus BSI TR-02103 zu beachten.
Die verwendeten X.509-Zertifikate müssen der Verwaltungs-PKI entstammen. CA-Zertifikate der Zertifizierungsstellen innerhalb der Verwaltungs-PKI werden gemäß den Vorgaben des BSI zur Verwaltungs-PKI durch die Wurzelzertifizierungsstelle des BSI ausgestellt. Für Zertifikate müssen CRL Distribution Points (siehe BSI TR-02103, Abschnitt 8.5) oder ein OCSP-Endpunkt (siehe BSI TR-02103, Abschnitt 8.5.5) mit signierten Antworten gemäß RFC 6125 bereitstehen.
Für die den JSON Web Keys zugrundeliegenden X.509-Zertifikate gelten die folgenden kryptographischen Vorgaben:
Bezeichner | Vorgabe | Erläuterung |
---|---|---|
Hashfunktion | SHA-512 | Hashfunktion, die bei der Signatur des Zertifikats verwendet werden muss. (vgl. BSI TR-02102-1 Tabelle 4.1). |
asym. Schlüssellänge | 4096 Bit | Schlüssellänge des zugrundeliegenden RSA-Schlüssels. Vorgabe gemäß BSI TR-02102-1, Tabelle 3.1) |
Signaturalgorithmus | RSASSA-PSS | Entspricht dem Standard, der beschrieben ist in RFC 4056 und vom BSI empfohlen in BSI TR-02102-1 Abschnitt 5.3.1. |
Schlüsselverwendung (Key Usage) | keyEncipherment für (asymmetrische) Verschlüsselung; digitalSignature sowie nonRepudiation für Signaturen | Erlaubte Schlüsselverwendungen gemäß RFC 5280, Abschnitt 4.3.1.3 |
Vorgaben zur Ver- und Entschlüsselung von Daten
Vorgaben für JSON Web Keys zur Verschlüsselung
Eine Verschlüsselung erfolgt in FIT-Connect auf Basis des Standards JSON Web Encryption gemäß RFC 7516.
Zur Nutzung von Zertifikaten in FIT-Connect müssen diese in das JSON Web Key (JWK)-Format konvertiert werden. Das eingesetzte Zertifikat, alle Zertifikate im Zertifizierungspfad und das Wurzelzertifikat MÜSSEN dabei im Attribut x5c
des JSON Web Key hinterlegt werden.
Die Auswahl, welcher JSON Web Key aus der Liste der zur Verfügung gestellten Keys bei der Verschlüsselung verwendet werden muss, wird anhand der kid
(Key ID) entschieden. Deshalb MUSS im JSON Web Key eine Key-ID angegeben sein.
Der JSON Web Key muss über die folgenden Attribute gemäß RFC 7517, Abschnitt 4 verfügen:
Feld | Inhalt | Erläuterung |
---|---|---|
kty | "RSA" | Keytype gemäß RFC 7517, Abschnitt 4.1 |
key_ops | ["wrapKey"] | Funktion des Keys (Verschlüsselung des symmetrischen Verschlüsselungskeys) gemäß RFC 7517, Abschnitt 4.3 |
alg | "RSA-OAEP-256" | Vorgesehener Algorithmus zur Ver- und Entschlüsselung in Kombination mit diesem JWK. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 4.1. Vorgabe gemäß BSI TR-02102-1, Abschnitt 3.6. |
x5c | Die gemäß RFC kodierte Zertifikatskette | Zertifikatskette vom Teilnehmer:innen-Zertifikat bis zum Wurzelzertifikat einschließlich aller Zwischenzertifikate gemäß Abschnitt 4.7 RFC 7518. Hinweis: Gem äß RFC muss das erste Zertifikat der hinterlegten Zertifikatskette dem Teilnehmer:innen-Zertifikat entsprechen. |
kid | Eindeutige ID des Keys | Eindeutige ID zur Referenzierung des JSON Web Key gemäß RFC 7516, Abschnitt 4.1.6. |
n | Modulus des Public Key zum Zertifikat | Der Modulus des Public Key gemäß RFC 7518, Abschnitt 6.3.1.1 ("Base64urlUInt" enkodiert) |
e | "AQAB" | Der Exponent des Public Key gemäß RFC 7518, Abschnitt 6.3.1.2) |
Das bedeutet, der JSON Web Key zur Verschlüsselung muss diesem Format entsprechen:
{
"kty": "RSA",
"key_ops": [
"wrapKey"
],
"alg": "RSA-OAEP-256",
"n": "……(Public Key)……",
"e": "AQAB",
"kid": "……(Key ID)……",
"x5c": [
"……(base64 encoded cert)……",
"……(base64 encoded intermediate cert)……",
"……(base64 encoded root cert)……"
]
}
Algorithmen zur Verschlüsselung des Antragsinhalts mit JSON Web Encryption
Zur Verschlüsselung des eigentlichen Antragsinhalts wird ein symmetrisches Verschlüsselungsverfahren mit symmetrischem Schlüssel verwendet. Dieser symmetrische Schlüssel wird mit den asymmetrischen JSON Web Keys, die vom Verwaltungssystemhersteller generiert werden und die Verwendungsart "wrapKey" haben müssen, asymmetrisch verschlüsselt.
Der Content im verschlüsselten JSON Web Encryption Objekt muss mit den folgenden Methoden verschlüsselt werden:
- Symmetrisches Verschlüsselungsverfahren zur Verschlüsselung der Formularinhalts- sowie der Metadaten ("Payload"): AES-256 mit der Betriebsart Galois/Counter-Mode (GCM) gemäß TR-02102, Abschnitt 2.1
- Asymmetrisches Verschlüsselungsverfahren, um den symmetrischen Schlüssel zu verschlüsseln: RSA-OAEP-256 (RSA mit Optimal Asymmetric Encryption Padding (OAEP) unter Verwendung der Mask Generation Function MGF1 und der Hashfunktion SHA-256). Vorgabe gemäß BSI TR-02102-1, Abschnitt 3.6
Zu Übermittlung der verschlüsselten Daten wird das in RFC 7516 Abschnitt 7.1 beschriebene Verfahren "JWE Compact Serialization" verwendet.
JSON Web Encryption Header
Im Header des JSON Web Encryption Objektes werden die Verschlüsselungs-Metadaten zu den verschlüsselten Inhaltsdaten übergeben. Header-Attribute werden in RFC 7516 definiert.
Die folgenden Attribute müssen im JOSE-Header bei der Übertragung verschlüsselter Daten zwingend definiert sein:
Feld | Inhalt | Erläuterung |
---|---|---|
alg | "RSA-OAEP-256" | Asymmetrisches Verschlüsselungsverfahren, um den "Content Encryption Key" (CEK) zu verschlüsseln, mit dem der Payload über das in "enc" angegebene Verfahren symmetrisch verschlüsselt wurde. Hierfür wird der im Header per "kid" referenzierte öffentliche Schlüssel genutzt. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 4.1. Vorgabe gemäß BSI TR-02102-1, Abschnitt 3.6 |
enc | "A256GCM" | Symmetrisches Verschlüsselungsverfahren zur Verschlüsselung des Payloads. Bezeichner gemäß RFC 7518 5.1. Vorgabe gemäß TR-02102, Abschnitt 2.1 |
zip (deprecated) | "DEF" | Der Komprimierungsalgorithmus für die Inhaltsdaten nach RFC 7516 Abschnitt 4.1.3 Anstelle von 'zip' sollte zukünftig 'DEF' genutzt werden. Bitte beachten Sie, dass wir von der Verwendung von Kompression im Rahmen der Verschlüsselung abraten. |
kid | ID des Public Keys | Die ID des JSON Web Keys mit dem Attribute "wrapKey", der zur Verschlüsselung des symmetrischen Keys verwendet wurde. Gemäß RFC 7516, Abschnitt 4.1.6). |
cty | MIME-Type der Inhaltsdaten | MIME-Type der Inhaltsdaten (Fachdaten, Metadaten) nach RFC 7516, Abschnitt 4.1.12 |
Vorgaben zur Signaturerstellung und -prüfung
Vorgaben für JSON Web Keys zur Signaturprüfung
Eine Signaturprüfung erfolgt in FIT-Connect auf Basis des Standards JSON Web Signature gemäß RFC 7515.
Zur Nutzung von Zertifikaten in FIT-Connect müssen diese in das JSON Web Key-Format konvertiert werden. Das eingesetzte Zertifikat, alle Zertifikate im Zertifizierungspfad und das Wurzelzertifikat müssen dabei im Attribut x5c
des JSON Web Key hinterlegt werden.
Der JSON Web Key muss über die folgenden Attribute gemäß RFC 7517, Abschnitt 4 verfügen.
Feld | Inhalt | Erläuterung |
---|---|---|
kty | "RSA" | Keytype gemäß RFC 7517, Abschnitt 4.1 |
key_ops | ["verify"] | Funktion des Keys (Prüfung von digitalen Signaturen) gemäß RFC 7517, Abschnitt 4.3 |
alg | "PS512" | Legt RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 als Algorithmus zur Erstellung und Prüfung von Signaturen in Kombination mit diesem JWK fest. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 3.5. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.1. |
x5c | Die gemäß RFC kodierte Zertifikatskette | Zertifikatskette vom Teilnehmer:innen-Zertifikat bis zum Wurzelzertifikat einschließlich aller Zwischenzertifikate gemäß Abschnitt 4.7 RFC 7518. Hinweis: Gemäß RFC muss das erste Zertifikat der hinterlegten Zertifikatskette dem Teilnehmer:innen-Zertifikat entsprechen. |
kid | Eindeutige ID des Keys | Eindeutige ID zur Referenzierung des JSON Web Key gemäß RFC 7515, Abschnitt 4.1.4. |
n | Modulus des Public Key zum Zertifikat | Der Modulus des Public Key gemäß RFC 7518, Abschnitt 6.3.1.1 ("Base64urlUInt" enkodiert) |
e | "AQAB" | Der Exponent des Public Key gemäß RFC 7518, Abschnitt 6.3.1.2) |
Das bedeutet, der JSON Web Key zur Prüfung von digitalen Signaturen muss dem folgenden Format entsprechen:
{
"kty": "RSA",
"key_ops": ["verify"],
"alg": "PS512",
"n": "……(Public Key)……",
"e": "AQAB",
"kid": "……(Key ID)……",
"x5t": "……(Fingerprint)……",
"x5c": [
"……(base64 encoded cert)……"
"……(base64 encoded intermediate cert)……",
"……(base64 encoded root cert)……",
]
}
Nicht mehr verwendete JSON Web Keys für Signaturen müssen nach Ende der Verwendung weiterhin bis zum Ende ihrer Gültigkeitsdauer über die Submission API abrufbar sein. Das soll sicherstellen, das auch der Antragsstatus bereits versendeter Anträgen weiterhin verifiziert werden kann.
Algorithmen zur Signaturerstellung
Für die Bereitstellung von signierten Statusinformationen über Security Event Tokens gemäß RFC 8417 wird der Standard JSON Web Signature eingesetzt.
Zur Signatur der Event Tokens verfügt der Server, der die Tokens ausstellt, über einen Signaturschlüssel. Bei der Verwaltung der Signaturschlüssel sind insbesondere die Hinweise in BSI TR-03116-4, Abschnitt 6 und BSI TR-02102-1, Abschnitt 8 zu beachten. Der zu dem auf dem Server verwendeten Signaturschlüssel zugehörige Public Key muss als JSON Web Key bereitgestellt werden.
Als Algorithmus für die Signatur MUSS RSASSA-PSS in Verbindung mit SHA-512 und MGF1 in Verbindung mit SHA-512 eingesetzt werden ("PS512"
). Das entspricht dem Standard beschrieben in RFC 7518 Abschnitt 3.5 und wird vom BSI als Signaturverfahren in BSI TR-02102-1 Abschnitt 5.3.1 empfohlen.
Zu Übermittlung der Signatur wird das in RFC 7515, Abschnitt 7.1 beschriebene Verfahren "JWS Compact Serialization" verwendet.
JSON Web Signature Header
Die folgenden Attribute müssen im JOSE-Header bei der Übertragung signierter Daten zwingend definiert sein:
Feld | Inhalt | Erläuterung |
---|---|---|
alg | "PS512" | Legt RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 als Algorithmus für die Signatur fest. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 3.5. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.1. |
kid | ID des öffentlichen Schlüssels | Die ID des öffentlichen Schlüssels (JSON Web Key) aus dem Schlüsselpaar, mit dem die JWS signiert wurde. Gemäß RFC7515, Abschnitt 4.1.4. |
cty | MIME-Type der Inhaltsdaten | MIME-Type der Inhaltsdaten (Fachdaten, Metadaten) nach RFC 7515, Abschnitt 4.1.10 |
JSON Web Signature Payload
Die zu signierenden Daten werden gemäß RFC 8259 JSON-kodiert im Signatur-Payload hinterlegt.
Vor der Signaturanbringung MÜSSEN alle semantisch unbedeutenden nicht-druckbaren Zeichen (Leerzeichen, Tabs, Line Feed \n
, Carriage Return '\r') vor und nach den strukturierenden Zeichen ([
, {
, ]
, }
, :
, ,
) aus dem JSON-Payload entfernt werden.
Vorgaben für JSON Web Token (JWT)
Alle generierten JWT-Tokens MÜSSEN den Vorgaben aus RFC 7519 entsprechen und über folgende Header-Attribute verfügen:
Feld | Inhalt | Erläuterung |
---|---|---|
alg | PS512 | Zur Signaturerstellung wird der Signaturalgorithmus RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 verwendet. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 3.5. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.1. |
kid | ID des öffentlichen Schlüssels | Die ID des öffentlichen Schlüssels (JSON Web Key) aus dem Schlüsselpaar, mit dem der JWT signiert wurde. Gemäß RFC7515, Abschnitt 4.1.4. |
cty | nicht vorhanden | Abweichend von den Vorgaben für JSON Web Signatures SOLLTE das Feld cty gemäß RFC 7519, Abschnitt 5.2 nicht gesetzt sein. |
Vorgaben für Security Event Token (SET)
Alle generierten JWT-Tokens MÜSSEN den Vorgaben aus RFC 8417 entsprechen und über folgende Header-Attribute verfügen:
Feld | Inhalt | Erläuterung |
---|---|---|
typ | secevent+jwt | Legt gemäß RFC 8417, Abschnitt 2.3 fest, dass es sich bei diesem JSON Web Token um einen Security Event Token handelt. |
alg | PS512 | Zur Signaturerstellung wird der Signaturalgorithmus RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 verwendet. Bezeichner des Algorithmus gemäß RFC 7518, Abschnitt 3.5. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.1. |
kid | ID des öffentlichen Schlüssels | Die ID des öffentlichen Schlüssels (JSON Web Key) aus dem Schlüsselpaar, mit dem der JWT signiert wurde. Gemäß RFC7515, Abschnitt 4.1.4. |
cty | nicht vorhanden | Abweichend von den Vorgaben für JSON Web Signatures SOLLTE das Feld cty gemäß RFC 7519, Abschnitt 5.2 nicht gesetzt sein. |
Vorgaben für OAuth Tokens
Abweichend von den kryptographischen Vorgaben für die Erstellung von JSON Web Token (JWT) gelten für die vom FIT-Connect Autorisierungsdienst (auch: OAuth-Server) ausgestellten OAuth Access Tokens die folgenden Vorgaben:
Alle generierten Access-Tokens MÜSSEN in Form von JSON Web Tokens (JWT) ausgestellt werden und MÜSSEN den Vorgaben aus RFC 9068 entsprechen.
Darüber hinaus gelten für die Werte der Header-Attribute der Access Tokens die folgenden Einschränkungen:
Feld | Inhalt | Erläuterung |
---|---|---|
alg | EdDSA | Zur Signaturerstellung wird der Signaturalgorithmus Edwards-curve Digital Signature Algorithm (EdDSA) verwendet. Bezeichner des Algorithmus gemäß RFC 8037, Abschnitt 3.1. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.3. |
Der für die Signatur des Access Tokens genutzte JSON Web Key (JWK) des Autorisierungsdienstes muss über die folgenden Attribute gemäß RFC 7517, Abschnitt 4 verfügen.
Feld | Inhalt | Erläuterung |
---|---|---|
kty | "OKP" | Keytype "OKP" (Octet Key Pair) für ECC-Schlüssel gemäß RFC 7517, Abschnitt 4.1. Bezeichner gemäß RFC 8037, Abschnitt 2. |
use | "sig" | Funktion des Keys (Prüfung von digitalen Signaturen) gemäß RFC 7517, Abschnitt 4.2 |
crv | "Ed25519" | Legt EdDSA mit SHA-512 unter Verwendung der Kurve Curve25519 als Algorithmus zur Erstellung und Prüfung von Signaturen in Kombination mit diesem JWK fest. Bezeichner des Algorithmus gemäß RFC 8037, Abschnitt 3.1. Vorgabe gemäß BSI TR-02102-1, Abschnitt 5.3.3. |
kid | Eindeutige ID des Keys | Eindeutige ID zur Referenzierung des JSON Web Key gemäß RFC 7515, Abschnitt 4.1.4. |
x | Parameter x des öffentlichen Schlüssels | Der öffentliche Parameter x des Public Key gemäß RFC 8037, Abschnitt 2 |
Für den genutzten JSON Web Key (JWK) des Autorisierungsdienstes gilt zusätzlich die folgenden kryptographische Vorgabe:
Bezeichner | Vorgabe | Erläuterung |
---|---|---|
asym. Schlüssellänge | >= 250 Bit | Schlüssellänge des zugrundeliegenden ECC-Schlüssels. Vorgabe gemäß BSI TR-02102-1, Abschnitt 3.4) |