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.