Zum Hauptinhalt springen

7.3.7. Signing Signature Values (Signaturwerte signieren)

7.3.7. Signing Signature Values (Signieren von Signaturwerten)

Mit Parameter req (Abschnitt 2.4) oder mehreren Signaturen (Abschnitt 4.3) kann der Wert eines bestehenden Signature-Feldes in eine neue Signatur einbezogen werden. Das suggeriert transitiven Schutz der ursprünglich signierten Komponenten — die in [JACKSON2019] beschriebenen Angriffe erlauben jedoch, einen Signaturwert so zu wählen, dass er wie ein anderer wirkt.

Kurz: Alice signiert Req_A mit Sig_A. Mallory erzeugt Req_M und Schlüssel, sodass Sig_M byteweise Sig_A entspricht, und sendet Req_M an Bob. Bob antwortet Res_B und signiert u. a. Sig_M, ohne weitere Anfragekomponenten. Mallory leitet Res_B an Alice; Alice verifiziert mit Bobs Schlüssel und glaubt, Bob habe auf ihre ursprüngliche Anfrage geantwortet — tatsächlich antwortete Bob auf Mallory.

Abhilfe: Bob signiert mehr als nur das Signature-Feld, um Req_A und Req_M zu unterscheiden. Für Nichtabstreitbarkeit sollten alle für die erste Signatur erforderlichen Komponenten auch in der zweiten Signatur abgedeckt sein; Abdeckung des zugehörigen Signature-Input der ersten Signatur bindet Nonces und Zeitstempel ein.