XML Signature

Thema 6 Brünnler

Thema 6 Brünnler


Fichier Détails

Cartes-fiches 22
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 18.01.2019 / 18.01.2019
Lien de web
https://card2brain.ch/box/20190118_xml_signature
Intégrer
<iframe src="https://card2brain.ch/box/20190118_xml_signature/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Wie viele Signaturen kann ein XML document enthalten?

Und was wird signiert?

- mehrere

- es kann ein ganzes Dokument oder nur Teile davon signiert werden

Aus welchen drei Teilen besteht eine XML Signatur?

- XML element

- XML schema

- namespace

Was sind die unterschiede zwischen Enveloping, Enveloped und Detached Signatures?

- enveloping: behinhaltet das signierte element innerhalb der signature, die signatur packet quasi das zu signierende element in sich ein

- enveloped: die signatur ist innerhalb des signiereten elements, das element umschliesst die signatur

- detached: die signatur ist separiert vom zu signierenden element, so liegt die signatur am beispiel "internal" innerhalb desselben xml documents, jedoch unabhänig vom zu signierenden dokument, dies kann aber auch ein externes file/ eine externe url sein, wo die signatur liegt.

Was ist mit Canonicalization bei XML gemeint?

Was macht man damit und wozu wird dies gebraucht?

- Die Canonicalization wird gebraucht, damit die Signatur erfoglreich geprüft werden kann. Denn XML Dokumente verändern sich, wenn sie geparsed werden. Line endings oder zusätzliche white Spaces, wie auch die Reihenfolge kann geändert werden, was die Signatur invalide macht. Mit Hilfe der Canonicalization können XML Dokumente, welche identisch sind auf den gleichen Stand gebracht werden. Sie werden sortiert, white spaces gelöscht und line endings entsprechend immer gleich formatiert.

XML Signaturen Struktur

Wo befindet sich die Definition der Canonicalization?

Welche Art von Signatur wird hier angewendet?

- auf einer externen URL

- detached (external)

Was steht im Signed Info Teil der XML Signatur drin?

- welche Methoden verwendet werden um z.b. zu canonicalization oder signaturen zu machen + weitere referenz objekte

Was steht in der Referenz der Signed info drin?

- ein referenz auf ein objekt, auf welches gezeigt wird, entweder intern oder extern. dies ist das objekt, welches referenziert und anschliessend signiert wird. zur überprüfung, ob das objekt nicht abgeändert worden ist, steht noch ein digest value zur verfügung

Was ist die XML Transformation?

gömer vomene xml document us, wo z.b. whitespaces (usserhalb vo de element) und komischi line endings und nid sortiert isch. ner wott me das la signiere. aber me weiss, dass de wos empfaht das gern in base-64 und kanonikalisiert wott...
de git me die 2 transformatione im signature teil ah und wo me die findet.
den passiert magic... ds referenzierte zu signierende file wird canonicalizated und base-64 encodiert und ersch danach wird dr digest vo dem "transofmierte" file erstellt?

Einfach, was ist der Signature Value?

- Der Wert der Signatur, welche über die referenzierten Objekte erstellt wurde.

Was steht genau im KeyInfo Teil der Signatur drin?

- der öffentliche Schlüssel oder eine referenz darauf, welchen man gebrauchen kann, um die signatur zu validieren

Was passiert auf dem Bild?

Nenne als erstes die beiden Hauptaufgaben/tätigkeiten

Referenz Generierung

1. erhalte die ressourcen, welche referenziert wurden

2. wende alle transformationen an

3. berechne den digest value nach dem transformieren

4. kreiere das referenz element

---

Signature Generierung

1. erstelle die signed info

2. canonicalize der signed info (inkl. referenzen und deren digest)

3. berechne die hauptsignature der signed info mittels der signatur methode

4. bündle signedinfo und signaturevalue in das signature element

Wie passiert die Signature Validierung?

Reference validierung (erste drei punkte, wie bei generierung)

1. erhalte die referenzierten daten

2. transfomiere die daten

3. berechne den hash wert mittels der angegebenen digestmethod

4. vergleiche den wert mit dem erhaltenen hash

signature validierung

1. canonicalize die signedinfo

2. erhalte den validation key mittels info von keyinfo

3. validiere die signatur

XML Encryption

Was kann von einem XML document verschlüsselt werden und wie?

Was ist speziell mit bzgl. den keys, welche zum verschlüsseln gebraucht werden? was ist deren vorteil?

Welche Art (symmetrisch/asymmetrisch) von Keys werden verwendet?

- Es können wie auch bei der Signature, einzelne Teile oder das ganze XML doc verschlüsselt werden

- es ist möglich mehrere keys zu brauchen, ein teil wird mit key a verschlüsselt und ein weiterer teil mit key b. der vorteil ist, dass einzelne teile nur von einzelnen empfängern gelesen werden kann.

- oft werden symmetrische schlüssel in verschlüsselter from mitgeschickt auf Grund der effizienz.

Was befindet sich in der Struktur der XML Encyption? Und welche Felder davon sind optional?

- optional der encryption algorithm

- optional informationen über den decryption key

- must cipher data

- optional encryption properties z.b. timestamp

KeyInfo Structure

Was wird in der KeyInfo hinzugefügt?

- ein verschlüsselter Key (EncryptedKey) typischer weise symmetrisch, welcher mit dem Public key des Empfängers verschlüsselt wurde.

- encryption method

Was enthält die CipherData?

- CipherValue - base 64 encodiert

- oder ein CipherReference, von wo man die CipherDaten kriegt und ein Set von Transformationen

Wie funktioniert die Encryption?

- algorithmus wählen

- erhalte einen encryption key und optionales einfügen in keyinfo

- serialisierung des xml in utf-8 octets

- encrypt the data

- encodierung der encrypted data in base-64

- deserialisierung der daten als base-64

- ersetzen der original daten mit der encrypted data

Wie funktioniert Decryption?

- erhalte den encryption algo

- erhalte den decryption key via keyinfo

- erhalte encrypted data und decodiere mit base-64

- decrypt der daten

- transcodiere utf-8 octets in xml document

- ersetze encrypted data mit decrypted data

Wie ist XML Encryption angreifbar? Wie heisst die Attacke?

Welches Sicherheitsprinzip wird dadurch verletzt?

Was kann dagegen gemacht werden?

- Mit der padding oracle attacke

- Integrity wird dadurch nicht mehr sichergestellt

- Da integrity durch XML signature sichergestellt wird sollte die encryption nur mit xml signatur verwendet werden oder XML als bit string mit einem authenticated encryption verschlüsseln

Welche Möglichkeiten gibt es XML Signature und XML Encryption anzuwenden?

Nenne die drei und deren Schwachstelle, falls vorhanden.

- First sign then encypt -> intergrity not guaranteed, vulnerable to Padding oracle attack

- Encrypt and sign -> signature leaks information about plaintext

- encrypt then sign -> working approach but signature is visible, see what you sign is not fulfilled

Gibt es eine Möglichkeit eine der nicht empfohlenen Lösungen anzuwenden?

- ja, es kann eine decryption transromation in einer signatur angewendet werden.
diese sagt der processing engine, dass die daten erst entschlüsselt werden sollen, bevor die signatur validiert wird.

Es gibt neben den genannten Möglichkeit, eine potentiell bessere Lösung.

Welche ist diese? Was sind die Vorteile?

Welches ist der nachteil?

- Sign, then encrypt then sign again

- integrity and authenticity of the encrypted data is guaranteed
- see what you sign is fulfilled for the inner signature 
- die innere signatur ist nicht sichtbar

- overhead