diff options
author | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2004-08-27 15:00:23 +0000 |
---|---|---|
committer | gregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2004-08-27 15:00:23 +0000 |
commit | 02ab7cf1162deb256fd5cc8fa56781ed9734c9fe (patch) | |
tree | cd43511fabed884bdfdb9111409b2b6db5d4673c | |
parent | f40743438f08ad7abb8671fa2f62fded9cd3ee0b (diff) | |
download | moa-id-spss-02ab7cf1162deb256fd5cc8fa56781ed9734c9fe.tar.gz moa-id-spss-02ab7cf1162deb256fd5cc8fa56781ed9734c9fe.tar.bz2 moa-id-spss-02ab7cf1162deb256fd5cc8fa56781ed9734c9fe.zip |
Beschreibung der XML-Prüfbeispiele fertiggestellt.
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@193 d688527b-c9ab-4aba-bd8d-4036d912da1d
-rw-r--r-- | spss.handbook/handbook/usage/usage.html | 154 |
1 files changed, 153 insertions, 1 deletions
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> <p>Das zweite Element SupplementProfile enthält analog das Ergänzungsobjekt für das oben beschriebene XML-Schema. <code>Content/@Reference</code> enthält die Referenz genau so, wie sie oben im Attribut <code>xsi:schemaLocation</code> angegeben wurde. </p> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.resp.xml" target="_blank">VerifyXMLSignatureRequest.Supplements.resp.xml</a></code> 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.</p> -<h4><a name="webservice_xmlrequests_pruefungxml_ergaenzungsobjekte"></a>2.1.3.5 Signatur-Manifest des Security-Layers </h4> +<h4><a name="webservice_xmlrequests_pruefungxml_signaturmanifest" id="webservice_xmlrequests_pruefungxml_signaturmanifest"></a>2.1.3.5 Signatur-Manifest des Security-Layers </h4> <h5>Request</h5> +<p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml" target="_blank"><code>VerifyXMLSignatureRequest.SigManifest.xml</code></a>) demonstriert die Überprüfung des Zusammenhangs zwischen den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Referenz-Eingangsdaten" target="_blank">Referenz-Eingangsdaten</a> und den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Hash-Eingangsdaten" target="_blank">Hash-Eingangsdaten</a> für die <code>dsig:Reference</code>-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. <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_blank">Implizite Transformationsparameter</a>) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer <code>dsig:Reference</code> 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.</p> +<pre> +<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> +</pre> +<p>Das Element <code>VerifySignatureEnvironment</code> 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 <code>dsig:SignedInfo</code> der XML-Signatur drei <code>dsig:Reference</code>-Elemente enthält. </p> +<p>Die erste <code>dsig:Reference</code> bezieht sich auf die eigentlich signierten Nutzdaten. Das zweite <code>doc:Paragraph</code>-Element stellt die Referenz-Eingangsdaten für diese <code>dsig:Reference</code> 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).</p> +<p>Die zweite <code>dsig:Reference</code> bezieht sich auf das von der Bürgerkarten-Umgebung angefertigte Signaturmanifest. Das Signaturmanifest ist vorhanden, weil die XSLT-Transformation der ersten <code>dsig:Reference</code> einen weiteren Stylesheet inkludiert, und die Daten dieses weiteren Stylesheets ansonsten nicht von der XML-Signatur abgedeckt wären (vgl. <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_blank">Implizite Transformationsparameter</a>). Das Signaturmanifest enthält eine einzige <code>dsig:Reference</code>, die den inkludierten Stylesheet referenziert und so in die XML-Signatur einbindet.</p> +<p>Die dritte <code>dsig:Reference</code> bezieht sich auf die von der Bürgerkarten-Umgebung angefertigten Signatureigenschaften, die hier nicht näher betrachtet werden. </p> +<pre> + <VerifySignatureLocation xmlns:doc="urn:document">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation> + </VerifySignatureInfo> +</pre> +<p>Das Element <code>VerifySignatureLocation</code> wählt die zu prüfende Signatur innerhalb des in <code>VerifySignatureEnvironment</code> angegebenen XML-Dokuments aus.</p> +<pre> + <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> +</pre> +<p>Mit Angabe des optionalen Elements <code>SignatureManifestCheckParams</code> wird MOA SP angewiesen, den oben skizzierten Zusammenhang zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten zu überprüfen. Wird das Attribut <code>ReturnReferenceInputData</code> wie im Beispiel auf den Wert <code>true</code> gesetzt, liefert MOA SP in der Response die Hash-Eingangsdaten für alle Referenzen in <code>dsig:SignedInfo</code> 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.</p> +<p>Die Prüfung des Zusammenhangs untergliedert sich in zwei Teilprüfungen:</p> +<ul> + <li>Überprüfung, ob jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der Signatur eine vorgegebene Transformationskette inkludiert;</li> + <li>Überprüfung, ob die in der vorgegebenen Transformationskette ggf. enthaltenen inkludierten Stylesheets (implizite Transformationsparameter) durch ein Signaturmanifest mitsigniert sind.</li> + </ul> +<p>Damit MOA SP die erste Teilprüfung durchführen kann, muss in <code>SignatureManifestCheckParams</code> je <code>dsig:Reference</code> Element in <code>dsig:SignedInfo</code> der XML-Signatur ein Element <code>ReferenceInfo</code> angeben. Ausgenommen sind <code>dsig:Reference</code>-Elemente, die auf ein Signaturmanifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest</code>), auf ein XMLDSIG-Manifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.w3.org/2000/09/xmldsig#Manifest</code>) oder auf Signatureigenschaften (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://uri.etsi.org/01903/v1.1.1#SignedProperties</code>) verweisen. </p> +<p>Das Element <code>ReferenceInfo</code> enthält eine oder mehrere erlaubte Transformationsketten, die jeweils durch ein Element <code>VerifyTransformsInfoProfile/dsig:Transforms</code> repräsentiert werden. Im konkreten Beispiel werden für die einzige zu prüfende <code>dsig:Reference</code> zwei erlaubte Transformationsketten angegeben. Die Transformationen in der <code>dsig:Reference</code> müssen einer dieser beiden Ketten entsprechen; im konkreten Beispiel entsprechen sie der ersten. </p> +<p>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 <code>VerifyTransformsInfoProfile/TransformParameter</code>. Das Attribut <code>TransformParameter/@URI</code> enthält die Referenz auf den Stylesheet genau so, wie er im Stylesheet-Parameter der zu prüfenden Signatur verwendet wird (<code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code>). Für den Inhalt dieses Elements hat die Anwendung drei Möglichkeiten: </p> +<ul> + <li>Die Anwendung lässt den Inhalt leer. Dies wird sie dann machen, wenn sie darauf vertrauen kann, dass die Auflösung der in <code>TransformParameter/@URI</code> angegebenen Referenz bei der Signaturprüfung zum gleichen Resultat führt wie seinerzeit beim Erstellen der Signatur (z.B. weil die Referenz auf einen Webserver unter Kontrolle der Anwendung zeigt);</li> + <li>Die Anwendung gibt im Element <code>TransformParameter/Base64Content</code> explizit den inkludierten Stylesheet an. MOA SP verwendet dann diesen Stylesheet, um den Hashwert der <code>dsig:Reference</code> im Signaturmanifest zu kontrollieren;</li> + <li>Die Anwendung gibt im Element <code>TransformParameter/Hash </code>den Hashwert des inkludierten Stylesheets an. MOA SP löst dann die Referenz in <code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code> auf und stellt sicher, dass der über das Auflösungsergebnis gebildete Hashwert jenem in <code>TransformParameter/Hash </code>entspricht. Diese Möglichkeit wird die Anwendung dann verwenden, wenn es sich um einen sehr umfangreichen Stylesheet handelt, der nicht im Request mitübertragen werden soll.</li> + </ul> +<h5>Response</h5> +<p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml" target="_blank">VerifyXMLSignatureRequest.SigManifest.resp.xml</a></code> 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. </p> +<pre> +<VerifyXMLSignatureResponse + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" + xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <SignerInfo>...</SignerInfo> +</pre> +<p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>). </p> +<pre> + <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> +</pre> +<p>Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle <code>dsig:Reference</code>-Elemente von <code>dsig:SignedInfo</code> der geprüften XML-Signatur übermittelt werden sollen, enthält die Response nach <code>SignerInfo</code> drei <code>ReferenceInputData</code>-Elemente. Das erste <code>ReferenceInputData</code>-Element enthält das zuvor besprochene <code>doc:Paragraph</code> Element, das zweite das Signaturmanifest, das dritte die Signatureigenschaften.</p> +<pre> + <SignatureCheck> + <Code>0</Code> + </SignatureCheck> +</pre> +<p>Das Element<code> SignatureCheck</code> enthält das Resultat der kryptographischen Prüfung der Signatur (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> +<pre> + <SignatureManifestCheck> + <Code>0</Code> + </SignatureManifestCheck> +</pre> +<p>Das Element <code>SignatureManifestCheck</code> enhält das Resultat der Prüfung des Zusammenhangs zwischen Referenz-Eingangsdaten und Hash-Eingangsdaten. Der Kode <code>0</code> 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 <a href="../spec/MOA-SPSS-1.2.pdf" target="_blank">Spezifikation zu MOA SP/SS</a>, Abschnitt 5.1.3.1.4.</p> +<pre> + <CertificateCheck> + <Code>0</Code> + </CertificateCheck> +</VerifyXMLSignatureResponse> +</pre> +<p>Das Element<code> CertificateCheck</code> enthält das Resultat der Zertifikatsprüfung (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> <p> </p> </body> </html> |