blob: 7d4b28dfe71d13a2e9802c46106326d9b5c0d5eb [file] [log] [blame]
<html xmlns:sec="http://www.xml-sicherheit.de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../format.css">
</head>
<body>
<h1>Signierung</h1>
<p>Die Erzeugung von digitalen Signaturen (<em>core generation</em>) mit der Extensible Markup Language verläuft in zwei aufeinander folgenden Schritten. Zuerst wird das zu signierende XML-Dokument
aufbereitet und für die Signierung vorbereitet (<em>reference generation</em>), anschließend folgt die Generierung der Signatur (<em>signature generation</em>).
</p>
<p>
<strong>Reference Generation (Generierung der Reference-Elemente)</strong>
</p>
<p>Für jedes zu signierende Datenobjekt werden nach dem Laden der Ressource</p>
<ol>
<li>alle angegebenen <a href="signatures_transform.html">Transformationen</a> angewandt,
</li>
<li>wird aus dem Ergebnis der letzten <a href="signatures_transform.html">Transformation</a> für jede kanonisierte Ressource der Hashwert berechnet
</li>
<li>und zuletzt das <a href="signatures_syntax_signedinfo.html#Reference">Reference</a> Element zusammen mit Angabe der angewandten Transformationen, einer optionalen ID, der <a href="signatures_syntax_signedinfo.html#DigestMethod">DigestMethod</a> und des <a href="signatures_syntax_signedinfo.html#DigestValue">DigestValue</a> Elements erzeugt.
</li>
</ol>
<p>
<strong>Signature Generation (Generierung der Signatur)</strong>
</p>
<ol>
<li>Zunächst wird das <a href="signatures_syntax_signedinfo.html">SignedInfo</a> Element zusammen mit den Kindelementen <a href="signatures_syntax_signedinfo.html#SignatureMethod">SignatureMethod</a>, <a href="signatures_syntax_signedinfo.html#CanonicalizationMethod">CanonicalizationMethod</a> und ein bis mehreren <a href="signatures_syntax_signedinfo.html#Reference">Reference</a> Elementen generiert.
</li>
<li>Die Elemente werden in das Element <a href="signatures_syntax_signedinfo.html">SignedInfo</a> eingeschlossen und die Kanonisierung dieses Elements durchgeführt. Über diese kanonische Form wird dann der <a href="signatures_syntax_signaturevalue.html">SignatureValue</a> basierend auf den in <a href="signatures_syntax_signedinfo.html">SignedInfo</a> angegebenen Algorithmen berechnet.
</li>
<li>Mit diesen Daten wird das vollständige <a href="signatures_syntax_signature.html">Signature</a> Element erstellt und der Wert der Signatur im Base-64 encoding in SignatureValue abgelegt. Optional können noch weitere Schlüsselinformationen
(der öffentliche Schlüssel des Signierenden) mittels des Elements <a href="signatures_syntax_keyinfo.html">KeyInfo</a> zur Signatur hinzugefügt werden. Der öffentliche Schlüssel wird für eine spätere Verifizierung der Signatur benötigt. Im
Falle einer qualifizierten Signatur fordert das Gesetz, dass das Zertifikat mit in die Signaturberechnung eingeht. Daher kann
an dieser Stelle auch das gesamte Zertifikat und nicht nur der öffentliche Schlüssel angegeben werden. Mit einer Referenz
auf dieses Element wird dieses dann ebenfalls mit in die Signaturberechnung einbezogen.
</li>
</ol>
<p>Mit einem Manifest können mehrere Ressourcen auf ein Mal signiert werden. Hierbei hat auch die Anwendung die Kontrolle über
die weiteren Aktionen, wenn z.B. die Verifizierung einer Referenz fehlschlägt. Normalerweise würde bei nur einer ungültigen
oder nicht erreichbaren Ressource automatisch die gesamte Signatur ungültig. Mit einem Manifest ist es außerdem möglich, mit
mehreren Schlüsseln effizient dieselben Ressourcen zu signieren.
</p>
</body>
</html>