Skip to content
Snippets Groups Projects
Commit 42173ec7 authored by Marco Holz's avatar Marco Holz
Browse files

Kleinere Formulierungsanpassungen zur Verschlüsselung

parent 14825e4c
No related branches found
No related tags found
No related merge requests found
--- ---
title: Anlagen title: Anlagen hochladen
--- ---
import ApiLink from '@site/src/components/ApiLink' import ApiLink from '@site/src/components/ApiLink'
...@@ -9,7 +9,9 @@ import TabItem from '@theme/TabItem' ...@@ -9,7 +9,9 @@ import TabItem from '@theme/TabItem'
Anlagen sind Bestandteil einer Einreichung und müssen nicht zwingend maschinenlesbar sein. Anlagen sind Bestandteil einer Einreichung und müssen nicht zwingend maschinenlesbar sein.
Anlagen können [beim Anlegen einer Einreichung angekündigt werden](start-submission.mdx) und anschließend über den Endpunkt <ApiLink api="submission-api" to="/v1/submissions/{submissionId}/attachments/{attachmentId}" withMethod="put" /> hochgeladen werden. Anlagen können [beim Anlegen einer Einreichung angekündigt werden](start-submission.mdx) und anschließend über den Endpunkt <ApiLink api="submission-api" to="/v1/submissions/{submissionId}/attachments/{attachmentId}" withMethod="put" /> hochgeladen werden.
In dem folgenden Ausschnitt wird dargestellt, wie eine bereits verschlüsselte Datei über den Endpunkt <ApiLink api="submission-api" to="/v1/submissions/{submissionId}/attachments/{attachmentId}" withMethod="put" /> hochgeladen werden kann: Vor dem Hochladen von Anlagen müssen diese durch den Sender [verschlüsselt werden](encrypt.mdx).
Eine bereits verschlüsselte Datei kann über den Endpunkt <ApiLink api="submission-api" to="/v1/submissions/{submissionId}/attachments/{attachmentId}" withMethod="put" /> hochgeladen werden:
<Tabs <Tabs
defaultValue="curl" defaultValue="curl"
......
...@@ -10,14 +10,14 @@ import TabItem from '@theme/TabItem' ...@@ -10,14 +10,14 @@ import TabItem from '@theme/TabItem'
Eine Übertragung über FIT-Connect besteht aus Eine Übertragung über FIT-Connect besteht aus
* einem Metadatensatz * einem Metadatensatz
* einem Fachdatensatz (optional) * einem Fachdatensatz
* beliebig vielen Anlagen (optional) * beliebig vielen Anlagen (optional)
Alle drei Datensatzarten müssen mit [JSON Web Encryption (JWE)](https://tools.ietf.org/html/rfc7516) verschlüsselt und mit [JWE-Compact Serialisierung](https://tools.ietf.org/html/rfc7516#section-7.1) serialisiert werden. Alle drei Datensatzarten müssen mit [JSON Web Encryption (JWE)](https://tools.ietf.org/html/rfc7516) verschlüsselt und mit [JWE-Compact Serialisierung](https://tools.ietf.org/html/rfc7516#section-7.1) serialisiert werden.
Dokumente müssen als Binärdateien und nicht als Zeichenketten kodiert verschlüsselt werden. Dokumente müssen als Binärdateien und nicht als Zeichenketten kodiert verschlüsselt werden.
Der [vorher abgerufene Zustellpunkt](../responsibilities/get-destination.mdx#informationen-des-zustellpunktes-erhalten) beinhaltet die Schlüssel-ID des Verschlüsselungsschlüssels unter dem Feld `encryptionKid`. Der [vorher abgerufene Zustellpunkt](../responsibilities/get-destination.mdx#informationen-des-zustellpunktes-erhalten) beinhaltet die Schlüssel-ID des öffentlichen Verschlüsselungsschlüssels unter dem Feld `encryptionKid`.
Damit können wir den JWK des Zustellpunktes abrufen um Daten zu verschlüsseln. Damit können wir den öffentlichen Schlüssel des Zustellpunktes im JSON Web Key (JWK)-Format abrufen um Daten zu verschlüsseln.
```shell title="Beispiel: Abruf des JWK eines Zustellpunktes" ```shell title="Beispiel: Abruf des JWK eines Zustellpunktes"
$ KID=... # Wert des Feldes `encryptionKid` $ KID=... # Wert des Feldes `encryptionKid`
...@@ -37,7 +37,7 @@ $ curl -X GET "$SUBMISSION_API/v1/destinations/$DESTINATION_ID/keys/$KID" ...@@ -37,7 +37,7 @@ $ curl -X GET "$SUBMISSION_API/v1/destinations/$DESTINATION_ID/keys/$KID"
} }
``` ```
Mit diesem Schlüssel könnten jetzt die oben genannten Datenssätze verschlüsselt werden. Mit diesem Schlüssel könnten jetzt die oben genannten Datensätze verschlüsselt werden.
Die so verschlüsselten Daten können ausschließlich von diesem Zustellpunkt gelesen werden. Die so verschlüsselten Daten können ausschließlich von diesem Zustellpunkt gelesen werden.
Bevor wir mit der Verschlüsselung loslegen können müssen wir den eben abgerufenen JWK noch auf Gültigkeit überprüfen. Bevor wir mit der Verschlüsselung loslegen können müssen wir den eben abgerufenen JWK noch auf Gültigkeit überprüfen.
...@@ -48,7 +48,7 @@ In der Testumgebung ist die Absicherung der öffentlichen Schlüssel eines Zuste ...@@ -48,7 +48,7 @@ In der Testumgebung ist die Absicherung der öffentlichen Schlüssel eines Zuste
Eine Prüfung der Zertifikate kann in diesem Fall zu Testzwecken entfallen. Eine Prüfung der Zertifikate kann in diesem Fall zu Testzwecken entfallen.
::: :::
JWKs MÜSSEN vor der Verwendung zwingend im Client auf Gültigkeit geprüft werden. Diese Prüfung umfasst folgende Schritte: Öffentliche Schlüssel MÜSSEN vor der Verwendung zwingend im Client auf Gültigkeit geprüft werden. Diese Prüfung umfasst folgende Schritte:
- Überprüfung, dass der JSON Web Key für die Verschlüsselung geeignet ist (`"keyops": ["wrap_key"]`) - Überprüfung, dass der JSON Web Key für die Verschlüsselung geeignet ist (`"keyops": ["wrap_key"]`)
- Überprüfung, dass der öffentliche Schlüssel mit dem im JSON Web Key hinterlegten Zertifikat übereinstimmt (Attribute `n` und `e`) - Überprüfung, dass der öffentliche Schlüssel mit dem im JSON Web Key hinterlegten Zertifikat übereinstimmt (Attribute `n` und `e`)
...@@ -61,7 +61,7 @@ Weitere Informationen zur Gültigkeitsprüfung finden sich in der technischen Ri ...@@ -61,7 +61,7 @@ Weitere Informationen zur Gültigkeitsprüfung finden sich in der technischen Ri
An dieser Stelle werden noch detailliertere Informationen und konkrete Implementierungsbeispiele zur Prüfung der JSON Web Keys ergänzt. An dieser Stelle werden noch detailliertere Informationen und konkrete Implementierungsbeispiele zur Prüfung der JSON Web Keys ergänzt.
::: :::
## Nutzung von JSON Web Keys zur Verschlüsselung ## Nutzung des öffentlichen Schlüssels zur Verschlüsselung
<Tabs <Tabs
defaultValue="js" defaultValue="js"
...@@ -91,7 +91,6 @@ const publicKey = await parseJwk({ ...@@ -91,7 +91,6 @@ const publicKey = await parseJwk({
}) })
``` ```
## Verschlüsselung von Inhaltsdaten
Mit dem zuvor eingelesenen Schlüssel können nun Zeichenketten und Binärdaten verschlüsselt werden. Mit dem zuvor eingelesenen Schlüssel können nun Zeichenketten und Binärdaten verschlüsselt werden.
Für die verschlüsselung von Zeichenketten (z.B. serialisierte JSON- oder XML-Objekte) kann die in Browser verfügbare [TextEncoder-API](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) verwendet werden, die den String UTF8-kodiert in ein `Uint8Array` umwandelt. Für die verschlüsselung von Zeichenketten (z.B. serialisierte JSON- oder XML-Objekte) kann die in Browser verfügbare [TextEncoder-API](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) verwendet werden, die den String UTF8-kodiert in ein `Uint8Array` umwandelt.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment