Web Service - Security: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Web Service==
==Web Service==


===Definition===
===Definition===

Eine Definition von Web Services gibt folgender Satz:

"Ein Webservice ist ein Dienst, der heterogen in Websystemen
verteilt und in beliebigen Anwendungen benutzbar ist." [3]

Durch Web Services soll das Anbieten von Dienstleistungen und deren Nutzung unabhängig von verwendeten
Websystemen automatisierbar möglich sein.


===Verwendete Technologien/Protokolle===
===Verwendete Technologien/Protokolle===

Folgende Technologien finden eine Anwendung im Bereich von Web Services:

* XML
* SOAP
* HTTP
* WSDL
* UDDI

Als grundlegender Bestandteil von Web Services ist XML zu nennen. Der Aufbau der zu übertragenden
Nachrichten ist durch XML spezifiziert. Messages zwischen Serviceanbieter und Servicenachfrager werden über
das SOAP (Simple Object Access Protocol) übertragen. Diese SOAP-Messages werden über das im Internet verbreitete
HTTP Protokoll weitergegeben. Neben HTTP können auch andere Protokolle genutzt werden. HTTP hat sich als Standard
etabliert, da Port 80 Verkehr bei den meisten Firewalls nicht blockiert wird.
Mit Hilfe von WSDL (Web Service Description Language) werden Web Services beschrieben, insbesondere die erwartete
Eingaben,zu liefernde Ausgaben sowie die Schnittstelle zu dem Web Service.
UDDI (Universal Description, Discovery and Integration) ist ein Verzeichnisdienst der Informationen über bei dem
Dienst registrierten Web Services sowie deren Anbieter liefert.



===Architektur===
===Architektur===


Folgendes Bild stellt die Architektur einer Web Service Umgebung dar:
==Web Service - Security==

[[Image:ArchitekturWS.png]]

Der Service Provider veröffentlicht eine Beschreibung in WSDL seines Web Services in dem
Service Directory. Der Service Requestor sucht für sein Anliegen einen entsprechenden Service
im Service Directory. Wurde ein passender Service gefunden, verbindet sich der Requestor mit
dem Provider und tauschen die nötigen Informationen aus.


===Schutzziele und deren Realisierung===
===Schutzziele und deren Realisierung===

Als Schutzziele in der Datenkommunikation werden Vertraulichkeit, Integrität, Nichtabstreitbarkeit
und Autenzität gefordert. Vertraulichkeit beschreibt das Ziel der Geheimhaltung von Informationen
vor unberechtigter Einsichtnahme durch Dritte. Integrität fordert den Nachweis der Unverändertheit von
Daten, d. h. eine Manipulation der Informationen während der Übermittlung soll festellbar sein.
Die Zielstellung Nichtabstreitbarkeit umfasst die Verbindung einer Nachricht zu seinem Ersteller. Der Erzeuger
kann bei einer von ihm erstellen Nachricht nicht abstreiten, dass er sie erstellt hat. Ihm Rahmen
des Web Service - Security Standards werden Integrität sowie Nichtabstreitbarkeit durch XML-Signature garantiert,
Vertraulichkeit durch XML-Encryption realisiert und Authenzität durch die Verwendung verschiedener Security Token
ermöglicht.

==Web Service - Security==

===Beschreibung===

Der Web Service - Security Standard beschreibt die Realisierung der oben beschriebenen Schutzziele
bei der Verwendung von SOAP. Im speziellen definiert Web Service - Security den SOAP Header als Security Header
zur Sicherung der SOAP Message. Security Token, XML-Encryption sowie XML-Signature wird im SOAP Header verwendet
zur Sicherung der SOAP Nachricht


===XML-Signature===
===XML-Signature===

XML-Signature erlaubt das Signieren von XML-Dokumenten und anderen Daten.

Es gibt folgende drei Typen von XML-Signaturen:

* Enveloping Signatures
* Enveloped Signatures
* Detached Signatures


Eine XML Signatur ist folgendermaßen aufgebaut:

<Signature ID?>
<SignedInfo>
<CanonicalizationMethod/>
<SignatureMethod/>
(<Reference URI?>
(<Transforms>)?
<DigestMethod>
<DigestValue>)
</Reference>)+
</SignedInfo>
<SignatureValue>
(<KeyInfo>)?
(<Object ID?>)
</Signature>

Die Signatur ist in einem <Signature> Tag eingeschlossen. Innerhalb des <SignedInfo> Tag werden zusätzliche Informationen
präsentiert. Als erstes wird eine Standardisierungsmethode durch das Tag <CanonicalizationMethod/> festgelegt. Mit diesem Verfahren
werden die zu signierenden Daten in eine kanonische Form überführt. Das Tag <Reference URI?> kann einen Verweis auf die zu signierenden Daten enthalten, wenn sie nicht innerhalb des <Signature> Tag stehen. Der Tag <DigestMethod> verweist auf die verwendete
Hashfunktion und <DigestValue> enthält den Hashwert.
Die digitale Signatur steht innerhalb der Tags <SignatureValue> und </SignatureValue>.


===XML-Encryption===
===XML-Encryption===

Mit Hilfe von XML-Encryption können Dokumente verschlüsselt werden. Der Einsatz verschiedener Verfahren der symmetrischen und asymmetrischen Kryptografie können eingesetzt werden.

<EncryptedData Id? Type? MimeType? Encoding?>
<EncryptionMethod>?
<ds:KeyInfo>
<EncryptedKey>?
<AgreementMethod>?
<ds:KeyName>?
<ds:RetrievalMethod>?
</ds:KeyInfo>?
<CipherData>
<CipherValue>?
<CipherReference URI?>?
</CipherData>
<EncryptionProperties>?
</EncryptedData>

Ein zu XML-Encryption zugehöriger Abschnitt befindet sich innerhalb des Tag <EncryptedData>. Mit Hilfe von <EncryptionMethod> wird der Verschlüsselungsalgorithmus spezifiziert. Der Tag <ds:KeyInfo> beschreibt den verwendeten Schlüssel für die Chiffrierung. Innerhalb der Tags <CipherData> und </CipherData> befindet sich der Kryptotext oder ein Verweis auf die verschlüssselten Informationen. Die Tags <EncryptedData> und <EncryptedKey> sind von dem selben Eltern Tag abgeleitet worden. Durch diesen Umstand kann das <EncryptedKey> Tag beliebig oft verschachtelt werden und der Schlüssel kann wiederum mit einem anderen Key chiffriert werden. Dies ermöglicht den kombinierten Einsatz von asymmetrischen und symmetrischen Kryptoverfahren.


===Security Token===
===Security Token===

Als Security Token zur Authentifizierung können folgende Techniken verwendet werden:

* Benutzername/Passwort
* Zertifikate
* SAML Assertions
* Kerberos Token
* XrML Token
* XCBF Token


==Quellen==
==Quellen==

* [1] Rosenberg,J./Remy,D.: Securing Web Services with WS-Security. Demystifying WS-Security, WS-Policy, SAML, XML-Signature and XML-Encryption. 2004.
* [2] Gustavo/A.: Web Services. Concepts, Architectures and Applications. 2004.
* [3] IT-Wissen: Definition Web Service. URL http://www.itwissen.info/definition/lexikon/Webservice-WS-web-services.html

Latest revision as of 21:54, 16 June 2010

Web Service

Definition

Eine Definition von Web Services gibt folgender Satz:

"Ein Webservice ist ein Dienst, der heterogen in Websystemen verteilt und in beliebigen Anwendungen benutzbar ist." [3]

Durch Web Services soll das Anbieten von Dienstleistungen und deren Nutzung unabhängig von verwendeten Websystemen automatisierbar möglich sein.

Verwendete Technologien/Protokolle

Folgende Technologien finden eine Anwendung im Bereich von Web Services:

  • XML
  • SOAP
  • HTTP
  • WSDL
  • UDDI

Als grundlegender Bestandteil von Web Services ist XML zu nennen. Der Aufbau der zu übertragenden Nachrichten ist durch XML spezifiziert. Messages zwischen Serviceanbieter und Servicenachfrager werden über das SOAP (Simple Object Access Protocol) übertragen. Diese SOAP-Messages werden über das im Internet verbreitete HTTP Protokoll weitergegeben. Neben HTTP können auch andere Protokolle genutzt werden. HTTP hat sich als Standard etabliert, da Port 80 Verkehr bei den meisten Firewalls nicht blockiert wird. Mit Hilfe von WSDL (Web Service Description Language) werden Web Services beschrieben, insbesondere die erwartete Eingaben,zu liefernde Ausgaben sowie die Schnittstelle zu dem Web Service. UDDI (Universal Description, Discovery and Integration) ist ein Verzeichnisdienst der Informationen über bei dem Dienst registrierten Web Services sowie deren Anbieter liefert.


Architektur

Folgendes Bild stellt die Architektur einer Web Service Umgebung dar:

ArchitekturWS.png

Der Service Provider veröffentlicht eine Beschreibung in WSDL seines Web Services in dem Service Directory. Der Service Requestor sucht für sein Anliegen einen entsprechenden Service im Service Directory. Wurde ein passender Service gefunden, verbindet sich der Requestor mit dem Provider und tauschen die nötigen Informationen aus.

Schutzziele und deren Realisierung

Als Schutzziele in der Datenkommunikation werden Vertraulichkeit, Integrität, Nichtabstreitbarkeit und Autenzität gefordert. Vertraulichkeit beschreibt das Ziel der Geheimhaltung von Informationen vor unberechtigter Einsichtnahme durch Dritte. Integrität fordert den Nachweis der Unverändertheit von Daten, d. h. eine Manipulation der Informationen während der Übermittlung soll festellbar sein. Die Zielstellung Nichtabstreitbarkeit umfasst die Verbindung einer Nachricht zu seinem Ersteller. Der Erzeuger kann bei einer von ihm erstellen Nachricht nicht abstreiten, dass er sie erstellt hat. Ihm Rahmen des Web Service - Security Standards werden Integrität sowie Nichtabstreitbarkeit durch XML-Signature garantiert, Vertraulichkeit durch XML-Encryption realisiert und Authenzität durch die Verwendung verschiedener Security Token ermöglicht.

Web Service - Security

Beschreibung

Der Web Service - Security Standard beschreibt die Realisierung der oben beschriebenen Schutzziele bei der Verwendung von SOAP. Im speziellen definiert Web Service - Security den SOAP Header als Security Header zur Sicherung der SOAP Message. Security Token, XML-Encryption sowie XML-Signature wird im SOAP Header verwendet zur Sicherung der SOAP Nachricht

XML-Signature

XML-Signature erlaubt das Signieren von XML-Dokumenten und anderen Daten.

Es gibt folgende drei Typen von XML-Signaturen:

  • Enveloping Signatures
  • Enveloped Signatures
  • Detached Signatures


Eine XML Signatur ist folgendermaßen aufgebaut:

<Signature ID?>
 <SignedInfo>
  <CanonicalizationMethod/>
  <SignatureMethod/>
  (<Reference URI?>
  (<Transforms>)?
  <DigestMethod>
  <DigestValue>)
  </Reference>)+
 </SignedInfo>
 <SignatureValue>
 (<KeyInfo>)?
 (<Object ID?>)
</Signature>

Die Signatur ist in einem <Signature> Tag eingeschlossen. Innerhalb des <SignedInfo> Tag werden zusätzliche Informationen präsentiert. Als erstes wird eine Standardisierungsmethode durch das Tag <CanonicalizationMethod/> festgelegt. Mit diesem Verfahren werden die zu signierenden Daten in eine kanonische Form überführt. Das Tag <Reference URI?> kann einen Verweis auf die zu signierenden Daten enthalten, wenn sie nicht innerhalb des <Signature> Tag stehen. Der Tag <DigestMethod> verweist auf die verwendete Hashfunktion und <DigestValue> enthält den Hashwert. Die digitale Signatur steht innerhalb der Tags <SignatureValue> und </SignatureValue>.

XML-Encryption

Mit Hilfe von XML-Encryption können Dokumente verschlüsselt werden. Der Einsatz verschiedener Verfahren der symmetrischen und asymmetrischen Kryptografie können eingesetzt werden.

<EncryptedData Id? Type? MimeType? Encoding?>
 <EncryptionMethod>?
 <ds:KeyInfo>
  <EncryptedKey>?
  <AgreementMethod>?
  <ds:KeyName>?
  <ds:RetrievalMethod>?
 </ds:KeyInfo>?
 <CipherData>
  <CipherValue>?
  <CipherReference URI?>?
 </CipherData>
 <EncryptionProperties>?
</EncryptedData>

Ein zu XML-Encryption zugehöriger Abschnitt befindet sich innerhalb des Tag <EncryptedData>. Mit Hilfe von <EncryptionMethod> wird der Verschlüsselungsalgorithmus spezifiziert. Der Tag <ds:KeyInfo> beschreibt den verwendeten Schlüssel für die Chiffrierung. Innerhalb der Tags <CipherData> und </CipherData> befindet sich der Kryptotext oder ein Verweis auf die verschlüssselten Informationen. Die Tags <EncryptedData> und <EncryptedKey> sind von dem selben Eltern Tag abgeleitet worden. Durch diesen Umstand kann das <EncryptedKey> Tag beliebig oft verschachtelt werden und der Schlüssel kann wiederum mit einem anderen Key chiffriert werden. Dies ermöglicht den kombinierten Einsatz von asymmetrischen und symmetrischen Kryptoverfahren.

Security Token

Als Security Token zur Authentifizierung können folgende Techniken verwendet werden:

  • Benutzername/Passwort
  • Zertifikate
  • SAML Assertions
  • Kerberos Token
  • XrML Token
  • XCBF Token

Quellen