From 02ab7cf1162deb256fd5cc8fa56781ed9734c9fe Mon Sep 17 00:00:00 2001 From: gregor Date: Fri, 27 Aug 2004 15:00:23 +0000 Subject: =?UTF-8?q?Beschreibung=20der=20XML-Pr=C3=BCfbeispiele=20fertigges?= =?UTF-8?q?tellt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@193 d688527b-c9ab-4aba-bd8d-4036d912da1d --- spss.handbook/handbook/usage/usage.html | 154 +++++++++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 1 deletion(-) diff --git a/spss.handbook/handbook/usage/usage.html b/spss.handbook/handbook/usage/usage.html index 38844c786..f8f0e60d2 100644 --- a/spss.handbook/handbook/usage/usage.html +++ b/spss.handbook/handbook/usage/usage.html @@ -928,8 +928,160 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>

Das zweite Element SupplementProfile enthält analog das Ergänzungsobjekt für das oben beschriebene XML-Schema. Content/@Reference enthält die Referenz genau so, wie sie oben im Attribut xsi:schemaLocation angegeben wurde.

Response

VerifyXMLSignatureRequest.Supplements.resp.xml ist eine typische Response des SP Webservices auf den obigen Request. Er wird an dieser Stelle nicht näher analysiert, da er keine für das Thema des Beispiels relevanten Besonderheiten aufweist.

-

2.1.3.5 Signatur-Manifest des Security-Layers

+

2.1.3.5 Signatur-Manifest des Security-Layers

Request
+

Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.SigManifest.xml) demonstriert die Überprüfung des Zusammenhangs zwischen den Referenz-Eingangsdaten und den Hash-Eingangsdaten für die dsig:Reference-Elemente einer XML-Signatur. Mit Hilfe dieser Prüfung kann eine Anwendung feststellen, ob bei der Erstellung einer XML-Signatur jene Transformationen bzw. auch jene inkludierten Stylesheets (vgl. Implizite Transformationsparameter) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer dsig:Reference als gesichert ansehen, obwohl eigentlich die Hash-Eingangsdaten durch die Signatur gesichert sind. Dies ist jenen Fällen sinnvoll, in denen die Anwendung grundsätzlich mit XML-Daten arbeitet, diese Daten jedoch für das Signieren durch eine Person in ein für diese Person verständliches Format wie z.B. HTML umgewandelt werden sollen.

+
+<VerifyXMLSignatureRequest 
+  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
+  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+  <VerifySignatureInfo>
+    <VerifySignatureEnvironment>
+      <XMLContent>
+        <doc:XMLDocument xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="urn:document http://localhost:8080/referencedData/XMLDocument.xsd">
+          <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph>
+          <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument.
+Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
+          <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1-1">
+            <dsig:SignedInfo>
+              ...
+              <dsig:Reference Id="reference-1-1" URI="#Para2">
+                <dsig:Transforms>
+                  <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+                      <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/>
+                    </xsl:stylesheet>
+                  </dsig:Transform>
+                  <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+                </dsig:Transforms>
+                ...
+              </dsig:Reference>
+              <dsig:Reference 
+                Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest" 
+                URI="#manifest-1-1">
+                ...
+              </dsig:Reference>
+              <dsig:Reference Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" ...>...</dsig:Reference>
+            </dsig:SignedInfo>
+            <dsig:SignatureValue>jnXc/X+hUY...uBxo9q</dsig:SignatureValue>
+            <dsig:KeyInfo>...</dsig:KeyInfo>
+            <dsig:Object>
+              <dsig:Manifest Id="manifest-1-1">
+                <dsig:Reference URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl">
+                  ...
+                </dsig:Reference>
+              </dsig:Manifest>
+            </dsig:Object>
+            <dsig:Object Id="etsi-signed-1-1">
+              <etsi:QualifyingProperties Target="#signature-1-1" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#">
+              ...
+              </etsi:QualifyingProperties>
+            </dsig:Object>
+          </dsig:Signature>
+        </doc:XMLDocument>
+      </XMLContent>
+    </VerifySignatureEnvironment>
+
+

Das Element VerifySignatureEnvironment enthält das XML-Dokument mit der zu prüfenden XML-Signatur. Die XML-Signatur wurde von einer Bürgerkarten-Umgebung erstellt. Man erkennt, dass das Element dsig:SignedInfo der XML-Signatur drei dsig:Reference-Elemente enthält.

+

Die erste dsig:Reference bezieht sich auf die eigentlich signierten Nutzdaten. Das zweite doc:Paragraph-Element stellt die Referenz-Eingangsdaten für diese dsig:Reference dar, welche mit Hilfe einer XSLT-Transformation in ein kleines HTML-Dokument übergeführt wird, worüber dann der Hashwert der dsig:Reference gebildet wird (Hash-Eingangsdaten).

+

Die zweite dsig:Reference bezieht sich auf das von der Bürgerkarten-Umgebung angefertigte Signaturmanifest. Das Signaturmanifest ist vorhanden, weil die XSLT-Transformation der ersten dsig:Reference einen weiteren Stylesheet inkludiert, und die Daten dieses weiteren Stylesheets ansonsten nicht von der XML-Signatur abgedeckt wären (vgl. Implizite Transformationsparameter). Das Signaturmanifest enthält eine einzige dsig:Reference, die den inkludierten Stylesheet referenziert und so in die XML-Signatur einbindet.

+

Die dritte dsig:Reference bezieht sich auf die von der Bürgerkarten-Umgebung angefertigten Signatureigenschaften, die hier nicht näher betrachtet werden.

+
+    <VerifySignatureLocation xmlns:doc="urn:document">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation>
+  </VerifySignatureInfo>
+
+

Das Element VerifySignatureLocation wählt die zu prüfende Signatur innerhalb des in VerifySignatureEnvironment angegebenen XML-Dokuments aus.

+
+  <SignatureManifestCheckParams ReturnReferenceInputData="true">
+    <ReferenceInfo>
+      <VerifyTransformsInfoProfile>
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+            <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+              <xsl:include href="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/>
+            </xsl:stylesheet>
+          </dsig:Transform>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+        </dsig:Transforms>
+        <TransformParameter URI="http://localhost:8080/referencedData/XMLDocument.Para.xsl"/>
+      </VerifyTransformsInfoProfile>
+      <VerifyTransformsInfoProfile>
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+        </dsig:Transforms>
+      </VerifyTransformsInfoProfile>
+    </ReferenceInfo>
+  </SignatureManifestCheckParams>
+  <TrustProfileID>Test-Signaturdienste</TrustProfileID>
+</VerifyXMLSignatureRequest>
+
+

Mit Angabe des optionalen Elements SignatureManifestCheckParams wird MOA SP angewiesen, den oben skizzierten Zusammenhang zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten zu überprüfen. Wird das Attribut ReturnReferenceInputData wie im Beispiel auf den Wert true gesetzt, liefert MOA SP in der Response die Hash-Eingangsdaten für alle Referenzen in dsig:SignedInfo der XML-Signatur an die Anwendung zurück, was in der Regel von der Anwendung wohl gewünscht wird, wenn MOA SP schon den Zusammenhang zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten prüfen soll.

+

Die Prüfung des Zusammenhangs untergliedert sich in zwei Teilprüfungen:

+ +

Damit MOA SP die erste Teilprüfung durchführen kann, muss in SignatureManifestCheckParams je dsig:Reference Element in dsig:SignedInfo der XML-Signatur ein Element ReferenceInfo angeben. Ausgenommen sind dsig:Reference-Elemente, die auf ein Signaturmanifest (Attribut Type ist gesetzt und hat den Wert http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest), auf ein XMLDSIG-Manifest (Attribut Type ist gesetzt und hat den Wert http://www.w3.org/2000/09/xmldsig#Manifest) oder auf Signatureigenschaften (Attribut Type ist gesetzt und hat den Wert http://uri.etsi.org/01903/v1.1.1#SignedProperties) verweisen.

+

Das Element ReferenceInfo enthält eine oder mehrere erlaubte Transformationsketten, die jeweils durch ein Element VerifyTransformsInfoProfile/dsig:Transforms repräsentiert werden. Im konkreten Beispiel werden für die einzige zu prüfende dsig:Reference zwei erlaubte Transformationsketten angegeben. Die Transformationen in der dsig:Reference müssen einer dieser beiden Ketten entsprechen; im konkreten Beispiel entsprechen sie der ersten.

+

Nachdem die erste erlaubte Transformationskette eine XSLT-Transformation mit einem inkludierten Stylesheet enthält, muss MOA SP auch überprüfen, ob dieser inkludierte Stylesheet korrekt durch ein Signaturmanifest mitunterschrieben wurde. Nachdem wichtig ist, dass nicht irgendein beliebiger Stylesheet verwendet und mitunterschrieben wurde, sondern genau jener, den die Anwendung bei der Signaturerstellung vorgegeben hat, muss die Anwendung MOA SP mitteilen, welcher Stylesheet das sein muss. Die Anwendung verwendet dazu das Element VerifyTransformsInfoProfile/TransformParameter. Das Attribut TransformParameter/@URI enthält die Referenz auf den Stylesheet genau so, wie er im Stylesheet-Parameter der zu prüfenden Signatur verwendet wird (dsig:Transform/xsl:stylesheet/xsl:inlcude/@href). Für den Inhalt dieses Elements hat die Anwendung drei Möglichkeiten:

+ +
Response
+

VerifyXMLSignatureRequest.SigManifest.resp.xml ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

+
+<VerifyXMLSignatureResponse 
+  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
+  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+  <SignerInfo>...</SignerInfo>
+
+

Die Response enthält zunächst in SignerInfo/dsig:X509Data Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe Einfaches Beispiel).

+
+  <ReferenceInputData>
+    <XMLContent xml:space="preserve">
+      <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" 
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">...</doc:Paragraph>
+    </XMLContent>
+  </ReferenceInputData>
+  <ReferenceInputData>
+    <XMLContent xml:space="preserve">
+      <dsig:Manifest Id="manifest-1-1" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        ...
+      </dsig:Manifest>
+    </XMLContent>
+  </ReferenceInputData>
+  <ReferenceInputData>
+    <XMLContent xml:space="preserve">
+      <etsi:SignedProperties xmlns:doc="urn:document" 
+        xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        ...
+      </etsi:SignedProperties>
+    </XMLContent>
+  </ReferenceInputData>
+
+

Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle dsig:Reference-Elemente von dsig:SignedInfo der geprüften XML-Signatur übermittelt werden sollen, enthält die Response nach SignerInfo drei ReferenceInputData-Elemente. Das erste ReferenceInputData-Element enthält das zuvor besprochene doc:Paragraph Element, das zweite das Signaturmanifest, das dritte die Signatureigenschaften.

+
+  <SignatureCheck>
+    <Code>0</Code>
+  </SignatureCheck>
+
+

Das Element SignatureCheck enthält das Resultat der kryptographischen Prüfung der Signatur (siehe Einfaches Beispiel).

+
+  <SignatureManifestCheck>
+    <Code>0</Code>
+  </SignatureManifestCheck>
+
+

Das Element SignatureManifestCheck enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode 0 im konkreten Beispiel bedeutet, dass alle Referenzen die in der Anfrage zur Überprüfung der XML-Signatur gemachten Einschränkungen bezüglich der erlaubten Transformationskette(n) einhalten, sowie dass die Anforderungen hinsichtlich des Signaturmanifests werden eingehalten. Für eine Übersicht der möglichen Kodes siehe die Spezifikation zu MOA SP/SS, Abschnitt 5.1.3.1.4.

+
+  <CertificateCheck>
+    <Code>0</Code>
+  </CertificateCheck>
+</VerifyXMLSignatureResponse>
+
+

Das Element CertificateCheck enthält das Resultat der Zertifikatsprüfung (siehe Einfaches Beispiel).

 

-- cgit v1.2.3