XML messaging and security



Samankaltaiset tiedostot
XML messaging and security

Avointa verkkoa kuten Internetiä hyödyntävä viestinvälitys saattaa olla riskialtista tiedon monistus- ja muuntamisriskin vuoksi.

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n suojaama sähköposti

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Olet vastuussa osaamisestasi

OHJ-5201 Web-palveluiden toteutustekniikat. Kurssisisällöstä. Tarja Systä

Salasanan vaihto uuteen / How to change password

Capacity Utilization

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Tietoturva P 5 op

Security server v6 installation requirements

Security server v6 installation requirements

XML:n turvallisuus web-palveluissa

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Curriculum. Gym card

Tietoturvan perusteet - Syksy SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S)

Internet Protocol version 6. IPv6

Salausmenetelmät 2015/Harjoitustehtävät

Yritysturvallisuuden perusteet. 11. Luento Tietotekninen turvallisuus

C++11 seminaari, kevät Johannes Koskinen

Efficiency change over time

812336A C++ -kielen perusteet,

Software Signing System System overview and key domain concepts

Attribuuttipohjainen käyttövaltuuksien hallinta Case Dreamspark Premium

SOA/.NET oppitunti siitä, miten johtoasema säilytetään

Varmennepalvelu - testipenkki. Kansallisen tulorekisterin perustamishanke

in condition monitoring

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

The CCR Model and Production Correspondence

Tietorakenteet ja algoritmit

Microsoft Lync 2010 Attendee

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

LYTH-CONS CONSISTENCY TRANSMITTER

Tiedon salaaminen tallennusverkossa Luottokorttinumeroiden tokenisointi

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Verkottunut suunnittelu

EUROOPAN PARLAMENTTI

7.4 Variability management

Choose Finland-Helsinki Valitse Finland-Helsinki

Tiedonsiirto- ja rajapintastandardit

Sisällysluettelo Table of contents

Group 2 - Dentego PTH Korvake. Peer Testing Report

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n turvaama HTTP. TLS:n suojaama sähköposti

Luento 12: XML ja metatieto

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Miehittämätön meriliikenne

Telecommunication Software

SOAPin nimen Object on harhaanjohtava, koska SOAPissa ei ole objektiviittauksia. Tähän ja muihin SOAPin puutteisiin palataan niin ikään myöhemmin.

VUOSI 2015 / YEAR 2015

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Collaborative & Co-Creative Design in the Semogen -projects

Tutkimusdata ja julkaiseminen Suomen Akatemian ja EU:n H2020 projekteissa

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

MUSEOT KULTTUURIPALVELUINA

Pretty Good Privacy eli näin kryptaat sähköpostisi

Tietuekuva. Aineistosiirrot XML ISO XML pain MT101 sanomasäännöt

Results on the new polydrug use questions in the Finnish TDI data

Kvarkki XUA: sähköisen allekirjoituksen määritys 1 (6) V 1.0. Kvarkki XUA: sähköisen allekirjoituksen määritys

Portugalin tasavallan aloite neuvoston päätökseksi Schengenin konsultointiverkoston (tekniset eritelmät) osan 1 muuttamisesta

BLOCKCHAINS AND ODR: SMART CONTRACTS AS AN ALTERNATIVE TO ENFORCEMENT

Kuva-aineistojen arkisto XUA-allekirjoituksen määritys

Harjoitustehtävät. Laskarit: Ti KO148 Ke KO148. Tehtävät viikko. VIIKON 42 laskarit to ko salissa IT138

The Viking Battle - Part Version: Finnish

LX 70. Ominaisuuksien mittaustulokset 1-kerroksinen 2-kerroksinen. Fyysiset ominaisuudet, nimellisarvot. Kalvon ominaisuudet

.NET 2006 ja sen jälkeen

Rekisteröiminen - FAQ

Web-palvelukonsepti tarjoaa yhden tavan toteuttaa SOA. Tämä tapa perustuu Web-palvelustandardien käyttöön: palvelut kuvataan WSDL-kielen avulla ja

Bounds on non-surjective cellular automata

Alternative DEA Models

truck Check In. truck Check Net. ewaybill ja ajat suoraan terminaaliin

Käytön avoimuus ja datanhallintasuunnitelma. Open access and data policy. Teppo Häyrynen Tiedeasiantuntija / Science Adviser

FIS IMATRAN KYLPYLÄHIIHDOT Team captains meeting

Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Sisällys. Valtion tietotekniikan rajapintasuosituksia. XML:n rooleja sähköisen asioinnin tavoitearkkitehtuurissa. dbroker - asiointialusta

Vuosi Jukka Rinnevaara Toimitusjohtaja

F-SECURE TOTAL. Pysy turvassa verkossa. Suojaa yksityisyytesi. Tietoturva ja VPN kaikille laitteille. f-secure.com/total

Kryptovaluuttoista ja lohkoketjuista osa 3. Jyväskylä Henri Heinonen

Lisensointikuulumisia - Kustannustehokkuus Oracle lisensoinnissa

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

7. Product-line architectures

Tikon Ostolaskujenkäsittely versio SP1

Palvelun rekisteröinti Virtu - luottamusverkostoon / testipalveluun

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Innovative and responsible public procurement Urban Agenda kumppanuusryhmä. public-procurement

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Other approaches to restrict multipliers

anna minun kertoa let me tell you

Rekisteriseloste. Rekisterinpitäjä. Yhteyshenkilö rekisteriä koskevissa asioissa. Rekisterin nimi. Henkilötietojen käsittelyn tarkoitus


Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) ja Secure Shell (SSH)

Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto

Osavuosikatsaus JUKKA RINNEVAARA CEO

Yritysturvallisuuden perusteet

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Transkriptio:

XML messaging and security 168

IT systems and security B2B data exchange Internet is an open network, data flowing through can be monitored or altered XML and Java are not enough to ensure security (reliably enough) Security can be thought as a chain that canbebrokenbythe weakestlink 169 Avointa verkkoa kuten Internetiä hyödyntävä viestinvälitys saattaa olla riskialtista tiedon monistus- ja muuntamisriskin vuoksi. On syytä muistaa, että 100% turvallisuutta ei voida koskaan taata. Turvallisuus voidaankin ajatella ketjuna, jonka kestävyys on sama kuin sen heikoimman lenkin kestävyys. Käytännössä kyse on siitä, että tiedonsiirto on turvallista riittävän suurella todennäköisyydellä. Niinpä yritysten tulee päättää turvallisuuspolitiikasta, jota määriteltäessä tulee huomioida (ainakin) seuraavat asiat: arvioida/määrittää mahdolliset vahingot siinä tapauksessa, että tietoturvariski realisoituu, arvioida/määrittää itse tietoturvateknologian aiheuttamat haitat (esim. käyttömukavuus) ja määritellä proseduurit mahdollisia tietoturvahyökkäyksiä ja niihin reagoimista varten.

Security of communication Confidentiality message content cannot be read or copied by any unauthorized party Integrity message contents cannot be changed by any unauthorized party Authentication no party can disguise itself as a legitimate (authorized) party Nonrepudiation the message sender cannot deny the content of the message or that it has sent the message 170 Confidentiality: luottamuksellisuus Integrity: koskemattomuus Authentication: autentikointi Nonrepudiation: kiistämättömyys Luottamuksellisuudella tässä yhteydessä tarkoitetaan sitä, että mikään ulkopuolinen osapuoli ei pysty lukemaan tai kopioimaan viestin sisältöä. Luottamuksellisuus voidaan toteuttaa esimerkiksi käyttämällä kryptausmenetelmiä. Koskemattomuus puolestaan tarkoittaa sitä, että mikään ulkopuolinen osapuoli ei pysty muuttamaan tai manipuloimaan viestin sisältöä. Autentikointi takaa sen, että mikään ulkopuolinen osapuoli ei pysty näyttäytymään virallisena osapuolena. Ja lopuksi kiistämättömyys takaa sen, että viestin lähettäjä ei pysty kieltämään lähettäneensä viestiä. Seuraavaksi tarkastelemme näitä viestinvälityksen turvallisuusvaatimuksia hieman tarkemmin, erityisesti Web-palveluiden näkökulmasta.

Access control For determining which operations the client is allowed to apply to process the data An example access control policy: all properly authenticated companies can access the database all companies in the trusted category can submit a request a company can review its prior actions 171 Käyttöoikeus (access control) sekoitetaan silloin tällöin autentikointiin (authentication). Tämä on toisaalta ymmärrettävää, sillä näitä kahta tukevat mekanismit on usein integroitu yhdeksi mekanismiksi. Esimerkiksi joissain tilanteissa palvelimen salasanasuojattuja Web-sivuja pääsevät käyttämään/selaamaan vain asianmukaisilla oikeuksilla autentikoidut asiakkaat. Kyseessä eivät kuitenkaan ole synonyymit: autentikointia käytetään todistamaan kommunikointikumppanin identiteetti, kun taas käyttöoikeudet määräävät tietoturvapolitiikan (ts. asiakkaalle sallittavat operaatiot määräytyvät asiakkaan identiteetin perusteella). Web-palveluiden tapauksessa eri käyttäjille eri käyttöoikeuksin voi näkyä erilaiset rajapinnat palveluun.

Encryption Symmetric cryptosystems if the encryption key K is known, the decryption key D=K -1 can be (relatively) easily determined Asymmetric cryptosystems (K,D) D cannot be concluded in a reasonable time -> K can be published without a danger or any third party to be able to decrypt the encrypted information T = K(T), where T is the original data and T is the encrypted data 172 Kryptosysteemit voivat olla symmetrisiä tai ei-symmetrisiä. Mikäli kryptausavaimen K perusteella voidaan helposti määrittää sen käänteisoperaatio D, on kyseessä symmetrinen kryptosysteemi. Käänteisoperaatiolla tarkoitetaan tässä sellaista operaatiota, jonka avulla kryptatun tiedon T (ts. K(T)) kryptaus voidaan purkaa ja näin ollen saada selville alkuperäinen tieto T. Ts., D(K(T)) = T. Mikäli taas käänteisoperaatiota ei voida helposti selvittää kryptausavaimen perusteella, on kyseessä eisymmetrinen kryptosysteemi. Ei-symmetrisen kryptosysteemin etuna on se, että kryptausavain voidaan huoletta julkaista.

Needham-Schroeder Public Key Protocol määrittelee ei-symmetrisen kryptosysteemin käyttöön perustuvan kommunikaation A:nja B:n välillä seuraavasti: 1. A ->B: {NA, A} KB 2. B ->A: {NA, NB} KA 3. A->B: {NB}KB missä NA on A:n salainen sanoma, NB on B:n salainen sanoma, KA on A:n julkinen avain ja KB on B:n julkinen avain Onko edellä oleva julkisiin avaimiin perustuvat identiteetin varmistus aukoton? Ts., voivatko A ja B olla varmoja toistensa henkilöllisyydestä ja voivatko he välittää turvallisesti viestejä toisilleen?

Asymmetric cryptosystems Example: A wants to store information T, ment for B only, in a public place 1) A stores T in a form K B (T) 2) Only B knows D B and can thus decrypt K B (T): T=D B (K B (T)) Example (digital signatures): A wants to store information T, equipped with its signature and ment for B only, in a public place 1) A stores T in a form S =K B (D A (T)) (this is possible, since K B is publically known) 2) B first applies D B and then K A to S (note again that K A is either public or, at least, known by B) 173 Kalvolla on esitetty kaksi esimerkkiä ei-symmetrisen kryptosysteemin käytöstä. Ensimmäisessä esimerkissä A:n tarkoitus on välittää informaatiota B:lle tallentaen sen julkiseen paikkaan B:n haettavaksi. Tällöin A kryptaa ko. informaation T käyttäen B:n julkista avainta. Koska vain B tietää miten kryptattu tieto puretaan, on kryptatun tiedon K B (T) tallettaminen julkiseen paikkaan mahdollista. Jälkimmäinen esimerkki koskee digitaalista allekirjoittamista. Digitaalisissa allekirjoituksissa käytetään vain allekirjoittajan tiedossa olevaa avainta (private key) allekirjoittamiseen. Sen lisäksi on olemassa joko vain tietyn luotettavan osapuolen (tai mahdollisesti useampien) tiedossa oleva avain (public key), jota käytetään digitaalisen allekirjoituksen varmistamiseen. Tässäkin tapauksessa on kyseessä eisymmetrinen kryptosysteemi. Esimerkissä A haluaa tallettaa B:lle tarkoitetun digitaalisesti allekirjoittamansa tiedon T julkiseen paikkaan. Tällöin A kryptaa B:n julkista avainta käyttäen allekirjoittamansa tiedon ja tallettaa lopputuloksen julkiseen paikkaan. B pystyy tällöin käyttämään digitaalisen allekirjoituksen varmistamiseen käytettävää avainta käyttämällä ensin omaa avaintaan kryptauksen purkamiseen.

Edellä esitetty Needham-Schroeder Public Key Protocol kommunikaatio ei ole turvallinen, sillä se ei toteuta autentikointivaatimusta. Esimerkki tästä on ns. Lowen hyökkäys (Lowe s attack), jossa oletetaan A:ksi naamioitu tunkeilija Z. Lowe osoitti, että B ei voi olla varma siitä, että viesti tulee A:lta. Huomaa myös, että protokollassa A ei eksplisiittisesti julista haluavansa kommunikoida nimenomaan B:n kanssa. Hyökkäyksessä ilkeä agentti Z huijaa rehellistä A:ta antamaan B:n salaisen sanoman NB. Tämän jälkeen ilkeä Z voikin huijata B:tä. Lowen hyökkäyksessä käytetään kaksi samanaikaista protokollaa, toinen A:n ja Z:n välillä (1) ja toinen Z:n ja B:n välillä (2). 1.1 A ->Z: {NA, A} KZ 2.1 Z(A) ->B: {NA, A} KB 2.2 B ->Z(A): {NA, NB} KA 1.2 Z ->A: {NA, NB} KA 1.3 A->Z: {NB}KZ 2.3 Z(A)->B: {NB}KB

Security in Web services 174

Secure Sockets Layer (SSL) SSL was defined by Netscape Communications Corporation for securing HTTP connections Confidentiality achieved by using a symmetric cryptosystem Integrity achieved by using a message authentication code based on a secure hash function Client authentication is optional and server authentication mandatory in a SSL connection i.e., client always knows the server s identity, but not necessarily the other way round 175 Web-palveluissa turvallisuusnäkökulmat voidaan huomioida eri tasoilla (kts. kalvo 111, Layers of Web Services ). Kuljetusprotokollatasolla voidaan käyttää esimerkiksi Netscapen määrittelemää SSL:ää HTTP-yhteyden turvaamiseksi. Toisaalta SOAP-viestien turvallisuus voidaan varmentaa käyttämällä kryptausmenetelmiä ja digitaalisia allekirjoituksia. Käytännössä kaikki selaimet ja HTTP-palvelimet tukevat nykyisin SSL:ää. Transport Layer Security 1.0 (TLS), joka on IETF:n (Internet Engineering Task Force) määrittelemä, on lähes identtinen SSL versio 3 :lle. SSL:ssä luottamuksellisuus toteutetaan käyttämällä symmetristä kryptausta (esim. Data Encryption Standard (DES)). Koskemattomuus varmistetaan puolestaan käyttämällä turvallisiin hashfunktioihin perustuvaa viestin autentikointia (esim. Message Digest 5 (MD5) ja Secure Hash Algorithm 1 (SHA-1)). SSL-yhteydessä asiakaspään autentikointi on optionaalista, kun taas palvelimen autentikointi on pakollista. Tämä perustuu siihen, että asiakas tietää aina palvelimen identiteetin, mutta päinvastainen ei välttämättä päde.

SSL server authentication 1) The Web server first needs to acquire server s digital certificate from a certification authority (CA) (a third party organization) the certificate contains e.g. a public encryption key K S 2) The server and the client agrees on the encryption mechanism and on the SSL version, and the server sends the client a session id 3) The server sends its certificate to a client 4) The client generates a premaster secret (ps) (a random number), encrypts the number using K S, and sends the encrypted ps to the server 5) The server decrypts the encrypted ps using its private key 6) The server and client now sharing ps generate symmetric keys for message encryption from ps and start communicating using the generated keys 176 SSL:ssä palvelimen autentikointi koostuu seuraavista askeleista: 1) Ennen kommunikoinnin aloittamista Web-palvelin hankkii kolmannelta osapuolelta (ns. certification authority) ns. digitaalisen sertifikaatin, joka sisältää mm. julkisen salausavaimen, tiedon palvelimesta jolle sertifikaatti on myönnetty sekä allekirjoituksen, joka varmistaa palvelimen pitäjän olevan se mikä se väittää olevansa. Sertifikaatti voidaan tallettaa julkiseen paikkaan. 2) Asiakassovellus ja Web-palvelin sopivat salausmenetelmän sekä SSL-version käytöstä, palvelin lähettää asiakkaalle istunnon tunnuksen (id). 3) Palvelin lähettää sertifikaatin asiakkaalle. 4) Asiakas generoi ns. premaster-avaimen (satunnaisluku), kryptaa sen käyttämällä julkista avainta K S ja lähettää sen palvelimelle. 5) Palvelin purkaa kryptauksen (yksityisellä) avaimella D S (jolloin D S (K S (premaster))=premaster). Tässä vaiheessa palvelimella ja asiakkaalla on tieto yhteisestä premaster-luvusta, josta muodostetaan symmetriset kryptausavaimet ko. istuntoa varten. Tämän jälkeen molemmat (asiakas ja palvelin) lähettävät vielä viestin vahvistaakseen, että ovat valmiita suojatun liikenteen aloittamiseen käyttäen sovittua symmetristä salausmenetelmää ja istuntoavainta.

SSL client authentication When communicating with a Web browser, the anonymity can (typically) be allowed In B2B communication the client authentication is often critical and needed Two approaches for client authentication are often used: HTTP basic authentication combined with SSL without client authentication HTTP basic authentication is based on user ids and passwords, both are sent without encryption SSL provides confidentiality SSL certificate-based client authentication cf. server authentication the client first needs to acquire a digital certificate 177 SSL:ää käytettäessä asiakaspään autentikointi toisin kuin palvelimen autentikointi - ei siis ole pakollista. Esimerkiksi selaimen anonyymisyys tyypillisesti sallitaan. Toisaalta liiketoiminnan kannalta tärkeässä kommunikoinnissa sitä usein edellytetään. Asiakaspään autentikointi on yleisesti käytössä kaksi tapaa: (1) HTTP perusautentikointi yhdistettynä palvelimen SSL-autentikointiin ja (2) SSL:n sertifikaatti-perustainen autentikointi (samaan tapaan kuin edellä esitettiin palvelimelle). HTTP perusautentikointi (HTTP basic authentication, RFC 2617) on osa HTTP protokollan spesifikaatioita ja se perustuu käyttäjätunnuksen ja salasanan käyttöön. Huomaa, että ne molemmat lähetetään kryptaamattomana. Tässä vaihtoehdossa SSL tarjoaa luottamuksellisuuden. Jälkimmäinen tapa on puolestaan vastaava kuin edellä esitettiin palvelimen tapauksessa. Tässäkin tapauksessa asiakkaan tulee siis ensin pyytää digitaalinen sertifikaatti kolmannelta osapuolelta.

WS-Security A joint proposal by IBM, Microsoft, and Verisign in 2002 WS-Security 1.0 standard was released by OASIS in April 2004 WS-Security Core Specification 1.1. was released by OASIS in February 2006 describes enhancements to SOAP messaging to provide quality of protection through message integrity, message confidentiality, and single message authentication WS-Security is extensible Provides mechanisms to construct security protocols, instead of providing certain explicit fixed security protocol 178 Web-palveluteknologioiden kehittäjinä Microsoft ja IBM ovat olleet tärkeissä rooleissa. Turvallinen viestinvälitys on myös viime aikoina ollut näiden sekä monien muiden osapuolien tärkeänä kehityskohteena. Microsoft, IBM ja Verisign tekivätkin ehdotuksen, jonka nimeksi tuli WS-Security, SOAP-pohjaisen viestinvälityksen turvallisuuteen liittyvien ongelmien ratkaisemiseksi. WS-Security pyrkii erityisesti turvaamaan luottamuksellisuuden ja koskemattomuuden viestinvälityksessä. Vuonna 2004 OASIS teki WS-Security ehdotuksesta version 1.0 ja samalla siitä tuli OASIS-organisaation ylläpitämä standardi. Helmikuussa 2006 OASIS julkaisi siitä version 1.1. WS-Security on laajennettava standardi. Se tarjoaa mekanismit turvallisuusprotokollien määrittämiseksi sen sijaan että se tarjoaisi tietyt eksplisiittiset turvallisuusprotokollat. Tämä tarkoittaa sitä, että on käyttäjien vastuulla suunnitella omat haavoittumattomat protokollat.

WS-Security Use of security tokens a security token represents a set of claims made by a client that might include a name, password, identity, key, certificate, group, privilege, and so on WS-Security provides a mechanism to associate security tokens with message content An authority can use its key to sign or encrypt security tokens, thus enabling the authentication of the claims in the token Builds on XML Encryption and XML Signature message integrity uses XML Signature in conjunction with security tokens to ensure that messages are transmitted without modifications Message confidentiality uses XML Encryption in conjunction with security tokens to keep portions of a SOAP message confidential 179 WS-Security käyttää hyväkseen W3C:n XML Encryption ja XML Signature spesifikaatioita, joihin tutustutaan seuraavaksi. Koska voisi ehkä sanoa, että SW-Security-spesifikaation takana on Webpalvelutekniikoiden pääkehittäjät, voi sen käyttöönoton olettaa lisääntyvän yleisemminkin. Työkalutukea SW-Security-spesifikaatioille on jo nyt olemassa. WS-Security käyttää XML Signature -spesifikaatioita sekä ns. turvallisuusavaimia (security tokens) viestin koskemattomuuden varmistamiseksi. Nämä turvallisuusavaimet ovat viestin lähettäjän määräämiä väitteitä, joita käytetään varmistamaan viestin koskemattomuus. Tällainen väite voi sisältää esimerkiksi nimen, salasanan, avaimen, sertifikaatin jne. Viestin luotettavuuden varmistamiseen puolestaan käytetään XML Encryption kieltä yhdessä turvallisuusavaimien kanssa.

WS-Security WS-Security markup is placed inside element <Security> in a SOAP header WS-Security specification introduces different kinds of security tokens, e.g. <UsernameToken> for providing a user name <BinarySecurityToken> for security tokens in binary format 180 SW-Security merkkaus laajentaa SOAP-viestiä lisäämällä sopivia elementtejä SOAP-viestin headerosaan. Tämä merkkaus sijoitetaan elementtiin <Security>. SW-Security-spesifikaatio määrittelee joukon eri elementtejä erityyppisten turvallisuusavaimien merkkaamiselle. Esimerkiksi elementtiä <UsernameToken> voidaan käyttää käyttäjänimen antamiseen ja elementtiä <BinarySecurityToken> binääri-formaatissa olevan turvallisuusavaimen antamiseen. Alla on SW-Security spesifikaatiossa esitetty esimerkki elementin <UsernameToken> käytöstä: <S11:Envelope xmlns:s11="..." xmlns:wsse="..."> <S11:Header>... <wsse:security> <wsse:usernametoken> <wsse:username>zoe</wsse:username> </wsse:usernametoken> </wsse:security>... </S11:Header>... </S11:Envelope>

Hash functions A hash function is an algorithm that creates a digital representation (also called a fingerprint ) of the original data in the form of a hash value that is of standard length the standard length is typically much smaller than the length of the original data Hash value is unique representation of the original data -> any changes to the original data lead to producing a different hash value, if the same hash function is used For a secure hash function, it is computationally impossible or very difficult to derive the original message from its hash value. Hash functions are used e.g. in digital signatures 181 Ns. hash-funktioita käytetään esimerkiksi digitaalisissa allekirjoituksissa helpottamaan ja tehostamaan digitaalisten allekirjoitusten tekemistä sekä niiden verifiointia. hash-funktio on algoritmi, joka muodostaa alkuperäisestä tiedosta yksikäsitteisen esityksen, ns., sormenjäljen, joka on huomattavasti lyhyempi kuin alkuperäinen data. Tässä yksikäsitteisyys on oleellista sormenjäljen aitouden varmentamiseksi ja mahdollisten muutosten havaitsemiseksi: mikäli alkuperäistä tietoa on muutettu, samaa hash-funktioita sovellettaessa saadaan erilainen sormenjälki. Puhuttaessa turvallisista hash-funktioista, tarkoitetaan tilannetta, jossa hash-funktion käänteisfunktio on mahdotonta tai hyvin vaikea muodostaa alkuperäisen datan muodostamiseksi sormenjäljestä. Tilanne on siis vastaava kuin ei-symmetrisissä kryptosysteemeissä.

Using hash functions with digital signatures Instead of encrypting the whole data, a much smaller fingerprint is generated using a hash function The fingerprint is then encrypted (using an asymmetric cryptosystem) and attached to the original data, when sent to the receiver The receiver decrypts the encrypted fingerprint and generates a new fingerprint from the original data: if the fingerprints are identical, the signature is valid 182 hash-funktioita käytetään esimerkiksi digitaalisissa allekirjoituksissa, erityisesti tapauksissa, joissa sähköisessä muodossa olevaa asiakirjaa ei haluta kryptata vaan ainoastaan allekirjoittaa se. Ts., tarkoitus ei ole välttämättä salata tietoa vaan ainoastaan todistaa, että lähettäjä on oikea tai tarkemmin sanottuna että lähettäjä ja viesti liittyvät yhteen. Tällöin hash-funktiolla muodostetaan ensin lyhyt sormenjälki alkuperäisestä asiakirjasta. Sen jälkeen tämä sormenjälki kryptataan (alkuperäisen asiakirjan sijaan). Vastaanottajalle lähetetään asiakirja alkuperäisessä muodossaan sekä kryptattu sormenjälki. Allekirjoituksen varmentamiseksi vastaanottaja purkaa ensin kryptauksen käyttäen lähettäjän julkista avainta. Tässä julkisuus voi myös rajoittua rajoitettuun joukkoon vastaanottajia. Sen jälkeen vastaanottaja generoi samalla hash-funktiolla alkuperäisestä dokumentista toisen sormenjäljen. Mikäli uusi sormenjälki ja viestin mukana lähetetty sormenjälki ovat identtiset, on allekirjoitus validi. Tällöin siis vastaanottaja tietää, että kryptaus on suoritettu avaimella, jota ko. julkinen avain vastaa.

XML Encryption 183

XML Encryption XML Encryption specification specifies a process for encrypting data and representing the result in XML the encrypted data may be, e.g. an XML document, an XML element, or XML element content (namely, sequence of characters), or binary image data The result is presented with element EncryptedData, which replaces the original data XML namespace URI that MUST be used by implementations of the specification (Dec 2002) is: xmlns:xenc='http://www.w3.org/2001/04/xmlenc#' 184 XML Encryption on W3C suositus tiedon kryptaamiseksi ja kryptatun tiedon esittämiseksi XMLmuodossa. Kryptattava tieto voi olla mitä vain, esimerkiksi XML-dokumentti, yksi tai useampi XMLdokumentin elementeistä tai vaikkapa XML-elementin sisältö (merkkijono). Kryptattava tieto voi olla myös binääridataa, esimerkiksi png-formaatissa oleva kuva. XML Encryption kieli on periaatteessa melko yksinkertainen. Kryptauksen tulos esitetään elementin EncryptedData sisältönä. Ko. elementti korvaa alkuperäisen kryptattavan tiedon ja sisältää alielementeissään tai viittaa kryptattuun tietoon. Lisäksi EncryptedData-elementti voi sisältää tietoa kryptauksessa käytetyistä avaimista. Sovelluksien tulee käyttää URIa xmlns:xenc='http://www.w3.org/2001/04/xmlenc#' identifioimaan, että ne toteuttavat voimassa olevan XML Encryption suosituksen (joulukuulta 2002). XML-dokumenttien kryptaus saattaa aiheuttaa myös ongelmia. Esimerkiksi eri tyyppiset haut kryptatusta XML-dokumentista saattavat olla vähintäänkin ongelmallisia. Lisäksi saattaa olla vaikea valita mitkä osat XML-dokumentista on tarkoituksenmukaista kryptata ja mitkä ei. Myös XML Scheman/DTD määrittelyjen käyttö saattaa aiheuttaa ongelmia. Kryptatun lohkon sisältämät elementit voidaan kuitenkin päätellä kielioppimäärityksestä (mikäli sellainen on käytettävissä).

EncryptedData element Four optional attributes Id : a string value to assign id to the element within the document context in a standard way Type: an URI valueto identify type information about the plaintext form of the encrypted content Note! If the data included in EncryptedData element is replacing the data in an XML document context and is of type element or content, then it is highly recommended that Type attribute value is given, otherwise the decryptor will not be able to automatically restore the XML document to its original cleartext form (c.f. decryption requirements in XML Encryption spec.) 185 EncryptedData-elementillä on neljä attribuuttia, joista kaikki ovat optionaalisia. Id-attribuuttia voidaan käyttää identifioimaan EncryptedData-elementti string-tyyppisellä arvolla. Type-attribuutti määrittelee kryptatun tiedon tyypin. Se voi olla Element (elementti) tai Content (elementin sisältö): 1) Tyyppi Element a) kryptataan tietty elementti b) super-encryption : kryptattu tieto (elementti) sisältää EncryptedData tai EncryptedKey elementtejä. Huom! Elementti EncryptedData ei kuitenkaan voi olla isä- tai lapsielementti toiselle EncryptedData-elementille. Itse kryptattu tieto sen sijaan voi olla mitä vain...ja siis sisältää esim. EncryptedData tai EncryptedElement elementtejä. Esim.: <EncryptedData Id='ED1' xmlns='http://www.w3.org/2001/04/xmlenc#' Type= http://www.w3.org/2001/04/xmlenc#element > 2. Tyyppi Content a) kryptataan joukko elementtejä (elements) b) kryptataan elementin sisältö (character data) Esim. <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'>

Vaikka Type-attribuutin käyttö onkin optionaalista, sen käyttöä suositellaan vahvasti tapauksessa, jossa kryptattu data (EncryptedData-elementin sisältö) korvaa osan alkuperäisen XML-dokumentin sisällöstä ja on tyypiltään element (eli korvaa tietyn elementin) tai content (korvaa tietyn elementin sisällön, esim. luottokortin numero: <creditcardnumber>123 </creditcardnumber>). Jos tällöin Typeattribuutille ei anneta arvoa, saattaa dekryptauksessa tulla ongelmia, ts. dekryptaaaja ei pysty automaattisesti purkamaan kryptausta alkuperäiseen XML-dokumentin muotoon. Tämä johtuu dekryptaukselle määritellyistä vaatimuksista XML Encryption spesifikaatioissa ja siitä, että tyyppiinformaatio saattaa muussa tapauksessa sisältää tulkinnan tai prosessoinnin kannalta oleellista tietoa.

EncryptedData element Four optional attributes (cont d) MimeType : a string value defining the media type of the encrypted data, e.g. an XML document: MimeType="text/xml" a sequence of characters: MimeType="text/plain" binary image data: MimeType="image/png" Encoding : an URI value defining the encoding style Subelements EncryptionMethod (optional) describes the encryption algorithm applied to the cipher data if the element is absent, the encryption algorithm must be known by the recipient or the decryption will fail 186 MimeType-attribuutti määrittelee kryptatun datan mediatyypin string-muodossa ja Encoding-attribuutti määrittelee käytetyn koodaustavan URI-arvon avulla. Jos esimerkiksi kryptattu data on base64- koodattua PNG-muotoa, voidaan koodaus määritellä Encoding= http://www.w3.org/2000/09/xmldsig#base64 ja mediatyyppi MimeType= image/png. Attribuuttien lisäksi EncryptedData-elementillä on joukko alielementtejä, joista osa on optionaalisia. Sen ensimmäinen optionaalinen alielementti on EncryptionMethod. Se kuvaa käytetyn kryptausalgoritmin. Mikäli tämä alielementti puuttuu, täytyy vastaanottajan (dekryptaajan) tietää entuudestaan käytetty kryptausalgoritmi. Muuten dekryptaus ei luonnollisestikaan onnistu.

EncryptedData element Subelements (cont d) ds:keyinfo (optional) carries information about the key used to encrypt the data may be used to transport public keys subelements: EncryptedKey, AgreementMethod, KeyName, and RetrievalMethod CipherData (mandatory) envelopes or references to the raw encrypted data If enveloping, the raw encrypted data is the CipherValue element's content if referencing, the CipherReference element's URI attribute points to the location of the raw encrypted data EncryptionProperties (optional) can contain additional information concerning the generation of the EncryptedData or EncryptedKey (e.g., date/time stamp) 187 Optionaalinen alielementti KeyInfo sisältää informaatiota kryptaukseen käytetyistä julkisista avaimista. Sillä on muutamia alielementtejä, joita käytetään tämän informaation merkkaamiseen. Koko KeyInfoelementin rakenne on määritelty XML Signature spesifikaatiossa, johon tutustumme seuraavaksi. EncryptedData-elementin CipherData-alielementti on pakollinen. Se joko sisältää kryptatun tiedon CipherValue-alielementissään tai viittaaa siihen CipherReference-alielementissä URI-arvon avulla. EncryptionProperties on myös optionaalinen alielementti. Siinä voidaan antaa lisäinformaatiota EncryptedData tai EncryptedKey elementtien generoinnista prosessointia varten (esim. aika tai päivämäärä). Tarkkaan ottaen EncryptionProperties antaa lisäinformaatiota EncryptedType-elementtien generointiin liittyen, joka puolestaan on abstrakti tyyppi, josta EncryptedData ja EncryptedKey on johdettu.

EncryptedData element structure: <EncryptedData Id? Type? MimeType? Encoding?> (<EncryptionMethod/>)? (<ds:keyinfo> (<EncryptedKey>)? (<AgreementMethod>)? (<ds:keyname>)? (<ds:retrievalmethod>)? (<ds:*>)? </ds:keyinfo>)? <CipherData> (<CipherValue>)? (<CipherReference URI?>)? </CipherData> (<EncryptionProperties>)? </EncryptedData> where? denotes zero or one occurence + denotes one or more occurences * denotes zero or more occurences an empty element tag means that the element must be empty 188 Esimerkki (XML Encryption spesifikaatio): 1. Alkuperäinen XML-dokumentti: <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith</Name> <CreditCard Limit='5,000' Currency='USD'> <Number>4019 2445 0277 5567</Number> <Issuer>Example Bank</Issuer> <Expiration>04/02</Expiration> </CreditCard> </PaymentInfo>

2. Versio, jossa luottokortti-informaatio (CreditCard elementti) on kryptattu <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith</Name> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element' xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </PaymentInfo>

XML Signature 189

XML Signature XML Signature, 2nd edition became a W3C Recommendation in June 2008 XML Signature specification specifies XML syntax and processing rules for creating and representing digital signatures Can be applied to sign any digital content, e.g., XML A method for associating a key with referenced data Support for integrity, message authentication and/or signer authentication 190 XML Signature suositus on IEFT:n ja W3C:n yhdessä kehittämä. Se määrittelee XML-pohjaisen syntaksin digitaalisten allekirjoitusten merkkaamiseen sekä prosessointiohjeet niiden käsittelemiseksi. XML Signature kieltä voidaan käyttää monentyyppisen digitaalisen sisällön allekirjoittamiseen. Se tarjoaa periaatteessa tavan liittää avaintietoa sisältöön. XML Signature kielen sisältöön tutustuimme osin jo edellä: XML Encryption kielen KeyInfo-määritykset on määritelty XML Signature spesifikaatiossa. XML Signature tarjoaa tuen koskemattomuudelle sekä viestin ja/tai allekirjoittajan autentikoinnille..

XML Signature (cont d) A signature may includes, for instance, cryptographic functions involved in the signature operation e.g. hashing and public key algorithms Information on algorithms used Key information (optional) indicates the key to be used to validate the signature XML Signature may be Enveloped: XML signature located in source XML Enveloping: XML signature wraps around the source XML External: XML signature in a separate document to the source XML represented by Signature element 191 Digitaalinen allekirjoitus voi sisältää tietoa käytetyistä kryptografisista funktioista, joita käytetään allekirjoituksissa. Näitä voivat olla esimerkiksi sormenjäljen muodostamiseen käytetyt hash-funktiot ja julkisiin avaimiin perustuvat algoritmit. Lisäksi viestin vastaanottajalle voidaan välittää tietoa (julkisesta) avaimesta, jota se voi käyttää allekirjoituksen varmentamiseen. Digitaalinen allekirjoitus voi koskea paikallisesti jotain tiettyä osaa XML-dokumentista (envoloped), se voi koskea koko XML-dokumenttia (enveloping) tai se voi olla ulkoinen (external), jolloin erillisenä annettuun allekirjoitukseen ainoastaan viitataan itse dokumentista. XML Signature spesifikaation mukainen allekirjoitus annetaan Signature-elementin avulla. Sen sisäiseen rakenteeseen perehdymme myöhemmin.

Canonical forms A canonical form of an XML document is a physical representation of the document produced by a canonicalization method. Canonilized forms are often used instead of the original forms when the actual content is of interest. The reason is that XML applications tend to make (cosmetic) changes, which have no impact on the information content of the document but make text-based comparisons unapplicable. 192 Kaksi XML dokumenttia saattavat erota toisistaan puhtaan tekstuaalisen vertailun perusteella, vaikkakin ne voivat olla loogisesti ekvivalentit. Tällaisissa tapauksissa kryptografiset hash-algoritmit, joita käytetään digitaalisissa allekirjoituksissa, antavat eri arvot. Niin sanottu kanoninen XML spesifikaatio kuvaa menetelmän, jolla voidaan generoida sellainen fyysinen esitys XML-dokumentista (ns. kanoninen muoto), joka ottaa huomioon sallittavat variaatiot (eivät vaikuta loogiseen sisältöön) annetussa sovelluskontekstissa. Tämä luonnollisestikin auttaa edellä mainittuun ongelmaan, koska tällöin esimerkiksi epäilyjä autentikoinnin tai luottamuksellisuuden suhteen ei nouse esille loogisesti samanlaisten XML-varianttien esiintyessä. Kanoninen muoto tarkoittaa siis sellaista XML-dokumentin fyysistä esitystä, joka on tuotettu jollain kanonisointimenetelmällä. Kahden fyysisesti hieman erilaisen mutta sisällöltään ja rakenteeltaan samanlaisesta dokumentista kanonisointi tuottaa identtiset dokumentit. Digitaalisissa allekirjoituksissa käytetään tyypillisesti XML-dokumentin kanonista muotoa. Digitaalisten allekirjoitusten lisäksi sitä käytetään tapauksissa, jolloin dokumentin tarkalla fyysisellä rakenteella on vaikutusta sen käyttöön. Tällaisissa tapauksissa esimerkiksi välilyöntien tai tabulointien käyttö vaikuttaa siihen miten dokumenttia tulkitaan tai käytetään. Esimerkki (W3C: Canonical XML Recommendation):

Alkuperäinen XML dokumentti: <?xml version="1.0"?> <?xml-stylesheet href="doc.xsl" type="text/xsl"?> <!DOCTYPE doc SYSTEM "doc.dtd"> <doc>hello, world!<!-- Comment 1 --></doc> <?pi-without-data?> <!-- Comment 2 --> <!-- Comment 3 --> b) Kanoninen muoto (ilman kommentteja): <?xml-stylesheet href="doc.xsl" type="text/xsl"?> <doc>hello, world!</doc> <?pi-without-data?> c) Kanoninen muoto (kommentteineen): <?xml-stylesheet href="doc.xsl" type="text/xsl"?> <doc>hello, world!<!-- Comment 1 --></doc> <?pi-without-data?> <!-- Comment 2 --> <!-- Comment 3 -->

Signature s subelements SignedInfo (mandatory) contains the information that is actually signed subelement CanonicalizationMethod (mandatory) the algorithm used to canonicalize the SignedInfo element before it is digested as a part of the signature operation subelement SignatureMethod (mandatory) specifies the algorithm used for signature generation and validation the algorithm that is used to convert the canonicalized SignedInfo into the SignatureValue this algorithm identifies all cryptographic functions involved in the signature operation public key algorithms, hashing, padding, etc. a private key is used to form the signature from the digest value, the receiver can then use the corresponding public key to verify the signature for example, the signature algorithm could be RSA-SHA1 193 Digitaaliset allekirjoitukset merkataan XML Signature kieltä käytettäessä elementin Signature avulla. Sillä on neljä alielementtiä, joista kaksi on pakollista ja kaksi optionaalista. Elementti SignedInfo sisältää sen informaation, joka allekirjoitetaan. SignedInfo-elementillä on kolme alielementtiä. Alielementti CanonicalizationMethod on pakollinen ja se määrittelee käytetyn kanonisointialgoritmin, jonka avulla tieto muutetaan kanoniseen XML-muotoon. Itse allekirjoitus tehdään kanonisoidulle muodolle. Seuraava pakollinen alielementti on SignatureMethod. Se puolestaan määrittelee algoritmin, jolla kanonisoidusta muodosta muodostetaan itse allekirjoitus. SignatureMethod identifioi kaikki kryptografiset funktiot, joita allekirjoitusoperaatiossa tarvitaan. Allekirjoituken tekeminen voi olla monimutkainenkin kombinaatio erilaisia funktioita, kuten ensin käytetty kanonisointialgoritmi, padding (ja mahdollisesti muita käytettyjä transformaatioalgoritmeja) sekä hash-funktiota käyttävä sormenjäljen muodostava pakkausalgoritmi (digest-funktio). Jotkut kryptauksessa käytetyt algoritmit edellyttävät tietynmittaisia syötteitä, padding tarkoittaa (yksikertaistetusti) merkkijononlisäystä, jonka avulla syöte saadaan määrämittaiseksi (tai sen monikerraksi). Kryptausta avattaessa tulee luonnollisesti tietää miten ko. lisätty merkkijono tulee poistaa.

Yksinkertaisessa allekirjoitusprosessissa siis ensin tulee kanonisoida allekirjoitettava tieto. Sitten siitä muodostetaan lyhyt sormenjälki, joka sen jälkeen allekirjoitetaan käyttäen salaista omaa avainta (julkisiin avaimiin perustuva kryptosysteemi). Allekirjoitus sijoitetaan Signature-elementin SignatureValue-alielementin sisällöksi. Viestin vastaanottaja voi myöhemmin käyttää julkista avainta varmistaakseen allekirjoituksen. XML Signature spesifikaatio sallii siis sen, että usealla osapuolella voi olla julkinen avain hallussaan allekirjoituksen verifiointia varten. Tämä julkinen avain voidaan välittää viestin mukana tai se voi olla muutoin tietyn vastaanottajajoukon hallussa. Spesifikaatio painottaa, että yksityinen avain tulee olla vain pienen joukon ja mieluiten vain yhden osapuolen hallussa. Julkinen avain voi olla suuremman joukon (osapuolet, jotka voivat tai joiden odotetaan varmentavan allekirjoitus) tiedossa, mutta se ei kaikissa tapauksissa ole täysin julkinen. Yksi tärkeä esille nouseva kysymys on vastaanottajaosapuolten luottamus julkiseen avaimeen. Tätä on pyritty varmentamaan käyttämällä sertifikaatteja.

Signature s subelements SignedInfo (cont d) Reference (mandatory) specifies a digest algorithm and digest value, and optionally an identifier of the object being signed, the type of the object, and/or a list of transforms to be applied prior to digesting attributes ID (optional): identifier» permits a Reference to be referenced from elsewhere URI (optional): identifies a data object being signed using a URI reference» since this information is used for validation, URI attribute should be omitted only if the receiving application is expected to know the identity of the object Type (optional): contains information about the type of object being signed, represented as an URI 194 SignedInfo-elementin kolmas alielementti Reference on pakollinen. Sillä on kolme optionaalista attribuuttia. ID-attribuutti ja Transforms-alielementti (josta lisää seuraavaksi) kuvaavat miten syöte sormenjäljen ottamiselle on muodostettu. Type-attribuutti puolestaan kuvaa tämän syötteen tyypin ja auttaa siten ko. tiedon prosessoinnissa. URI-attribuuttia käytetään allekirjoituksen validoinnissa (josta lisää myöhemmin). Sen vuoksi se tulisi yleensä antaa. Sen pois jättäminen on perusteltua vain silloin, kun voidaan olettaa, että viestin vastaanottaja pystyy selvittämään allekirjoitettavan tiedon jollain muulla tavoin. ID-attribuutti puolestaan identifioi Reference-elementin (normaaliin ID-attribuutin käytön tapaan). Tämä puolestaan mahdollistaa turvallisen viittauksen Reference-elementtiin ulkopuolelta. Type-attribuutti kertoo minkä tyyppistä allekirjoitettava data on. Esim.: Type= http://www.w3.org/2000/09/xmldsig#object

Signature s subelements SignedInfo (cont d) Reference (mandatory) DigestMethod subelement (mandatory) the algorithm applied to the data after Transforms is applied (if specified) to yield the DigestValue signing of the DigestValue is what binds a resources content to the signer's key. DigestValue subelement (mandatory) contains the encoded value of the digest (hash) Transforms subelement (optional) ordered list of processing steps that were applied to the resource's content before it was digested» e.g., canonicalization, encoding, XSLT, XPath, XML Schema validation or XInclude 195 Reference sisältää kolme alielementtiä. Pakollinen DigestMethod-alielementti määrittelee allekirjoitusalgoritmin, jota käytetään allekirjoitettavalle tiedolle sen jälkeen, kun se on ensin käsitelty Transforms-algoritmeilla. DigestMethod-alielementin määrittelemä algoritmi muodostaa allekirjoitettavasta (ja kanonisoidusta) tiedosta hash-funktion avulla muodostetun sormenjäljen. Pakollinen DigestValue-alielementti sisältää itse sormenjäljen. Optionaalinen Transforms-alielementti sisältää listan esiprosessointiaskeleista, joita sovelletaan allekirjoitettavalle tiedolle ennen kuin se allekirjoitetaan. Tällaisia esiprosessointiaskeleita voivat olla esimerkiksi kanonisointi, koodaustavan soveltaminen, XSLT-transformaatio, XPath-määritys, XML Schema validointi tai XInclude-määritys.

Signature s subelements SignatureValue (mandatory) contains the actual value of the digital signature it is always encoded using base64 Object (optional) may contain any data Three optional attributes: MimeType, ID, and Encoding KeyInfo (optional) enables the recipient(s) to obtain the key needed to validate the signature 196 Signature-elementin SignatureValue-alielementti on pakollinen ja sisältää lopullisen allekirjoituksen. Se käyttää aina base64-koodaustapaa. Signature-elementin kaksi jäljellä olevaa alielementtiä Object ja KeyInfo ovat molemmat optionaalisia. KeyInfo-alielementin avulla viestin vastaanottajalle välitetään tietoa avaimesta, joita se voi käyttää allekirjoituksen verifiointiin. Object-alielementtejä voi puolestaan esiintyä useampia ja ne voivat periaatteessa sisältää millaista dataa hyvänsä. Object-elementtiä käytetään kirjekuorena toimivaa allekirjoitusta (enveloping signature) käytettäessä kuljettamaan allekirjoitettava tieto. Tällöin sormenjälki (digest) lasketaan koko Objectelementistä, mukaanlukien alku- ja lopputagit. Object-elementillä on kolme optionaalista attribuuttia: MimeType, ID, ja Encoding. Jos esimerkiksi Object sisältää base64-koodattua PNG-mutoista tietoa, voisi attribuutin MimeType arvo olla image/png ja attribuutin Encoding arvo base64. Objectelementin ID-attribuuttiin viitataan usein esimerkiksi SignedInfo-elementistä.

Signature element structure: <Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference URI? > (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)* </Signature> where? denotes zero or one occurence + denotes one or more occurences * denotes zero or more occurences an empty element tag means that the element must be empty 197 Esimerkki (XML Signature specification): <Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo> <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue> <KeyInfo> <KeyValue> <DSAKeyValue> <P>...</P><Q>...</Q><G>...</G><Y>...</Y> </DSAKeyValue> </KeyValue> </KeyInfo> </Signature>

Validation A data object is signed by computing its digest value and a signature over that value The signature is later checked via two required steps of core validation: i. reference validation: the verification of the digest contained in each Reference in SignedInfo ii. signature validation: cryptographic validation of the signature calculated over SignedInfo 198 Kuten jo aiemmin on mainittu, digitaalista allekirjoitusta tehtäessä kanonisoinnin ja mahdollisten muiden transformaatio operaatioiden jälkeen lasketaan allekirjoitettavasta datasta lyhyt sormenjälki (digest) käyttäen hash-algoritmeja. Tämän jälkeen saatu sormenjälki allekirjoitetaan käyttäen allekirjoittajan yksityistä avainta. Vastaava julkinen avain voidaan välittää viestin vastaanottajalle sanomassa (KeyInfo-elementissä) tai vastaanottaja voi saada sen muuten tietoonsa. Allekirjoituksen tarkistamiseen (perusvarmistus) liittyy kaksi pakollista vaihetta, jotka liittyvät em. allekirjoitusprosessiin: sormenjäljen varmistus (digest verification) ja allekirjoituksen varmistus (signature validation). Allekirjoituksen varmistus tehdään, jos sormenjäljen varmistus on onnistunut.

Validation (cont d) i. Reference validation: the verification of the digest contained in each Reference in SignedInfo 1. Canonicalize the SignedInfo element based on the CanonicalizationMethod in SignedInfo 2. For each Reference in SignedInfo: 1. Obtain the data object to be digested. e.g., the signature application may dereference the URI and execute Transforms provided by the signer in the Reference element 2. Digest the resulting data object using the DigestMethod specified in its Reference specification 3. Compare the generated digest value against DigestValue in the SignedInfo Reference; if there is any mismatch, validation fails 199 Varmistettaessa XML Signature kielellä tehtyä digitaalista allekirjoita tehdään ensin sormenjäljen varmistus. Aluksi kanonisoidaan SignedInfo-elementin arvo käyttäen annettua kanonisointimenetelmää (CanonicalizationMethod ). Sen jälkeen jokaiselle SignedInfo-elementin Reference-alielementille tehdään sormenjäljen varmistus käyttäen sen alielementtejä DigestMethod, DigestValue ja Transforms. Tämä tehdään puolestaan kolmessa vaiheessa. Aluksi tulee selvittää tieto, jolle allekirjoitus on tehty. Kuten aiemmin Signature-elementin alielementtejä läpi käydessä selvitettiin, SignedInfo-alielementin Reference-alielementin URI-attribuutti identifioi tiedon, jolle sormenjälki muodostetaan. Tässä vaiheessa voidaan siis käyttää apuna sitä tietoa sekä Transforms-alielementin määrittelemiä transformointifunktioita. Seuraavassa vaiheessa saadusta tiedosta muodostetaan sormenjälki käyttäen DigestMethod-elementissä annettua menetelmää. Lopuksi verrataan laskettua arvoa DigestValuealielementin arvoon. Mikäli ne ovat täsmälleen samat, on sormenjälki todettu oikeaksi (koskemattomuus).

Validation (cont d) ii. Signature validation: Does the SignatureValue match the result of processing SignedInfo with CanonicalizationMethod and SignatureMethod as specified? 1) Obtain the keying information from KeyInfo or from an external source. 2) Obtain the canonical form of the SignatureMethod using the CanonicalizationMethod and use the result (and previously obtained KeyInfo) to confirm the SignatureValue over the SignedInfo element. 200 Allekirjoituksen tarkistaminen tapahtuu luonnollisesti allekirjoittajan julkista avainta käyttäen. Tarkoituksena on tarkistaa vastaako SignatureValue-elementin arvo sitä arvoa, joka saadaan kun käytetään kanonisointimenetelmää (CanocicalizationMethod ) ja allekirjoitusmenetelmää (SignatureMethod ). Tässä tulee siis tarkistettua, että SignedInfo-elementin arvoa ei ole muutettu ja että käytetyt avaimet ja menetelmät/muunnokset ovat oikeita. Allekirjoituksen validoinnissa toimitaan kuten allekirjoitettaessakin. Ensin siis tehdään kanonisointi allekirjoitettavalle tiedolle ja sen jälkeen käytetään kuvattua allekirjoitusmenetelmää. Laskettua allekirjoitusta verrataan sitten SignatureValueelementin sisältämään allekirjoitukseen. Tässä tulee muistaa, että SignatureMethod kuvaa mahdollisesti useita kryptografisia funktiota, joita allekirjoitusalgoritmi käyttää.

Security in Web services Applying digital signatures to messaging e.g., applying XML Signature to SOAP messaging Applying encryption (e.g., XML Encryption) mechanisms Applying SSL or TLS if the SOAP middleware supports HTTPS connections, SSL can be used Security service as a Web service? providing security functions (key management, certificate management, authentication, authorization) as Web services -> freeing application developers and administrators from these tasks 201 SOAP ei itsessään ota kantaa tai sisällä mekanismeja viestin turvallisuuden takaamiseksi, mutta se sallii niiden toteuttamisen laajennosmekanisminsa kautta (header-osa). Turvallinen viestinvälitys voidaan Web-palvelukonseptissa taata usealla eri tavalla ja usealla eri tasolla. Digitaalisia allekirjoituksia ja kryptausta voidaan käyttää laajentaen SOAP-viestejä sopivasti. Toisaalta kuljetusprotokollatasolla voidaan käyttää vaikkapa SSL:ää tai TLS:ää. Mikäli näin saatu lisäturvallisuus on riittävää, on se monissa tapauksissa parempi vaihtoehto kuin käyttää digitaalisia allekirjoituksia ja kryptausta XMLtasolla. On arvioitu, että SSL:n käyttö on n. 10 kertaa tehokkaampaa kuin XML-tasolla tehty kryptaus ja allekirjoitus. Kuten edellä esitetystä voi päätellä, on esimerkiksi digitaalisen allekirjoituksen tekeminen että sen verifiointi monivaiheinen aikaa vievä prosessi. Itse allekirjoitukseen ja kryptaukseen liittyvä merkkaus voi jopa moninkertaistaa viestin koon. Tällöin jo pelkkä jäsentäminenkin vie enemmän aikaa. Mielenkiintoinen vaihtoehto on myös toteuttaa tietyt turvallisuusominaisuudet, kuten avainten hallinta, sertifikaattien hallinta, jne., erillisenä palveluna, joita (tietyt?) Web-palvelut voisivat käyttää. Tämä toisaalta vapauttaisi Web-palveluiden toteuttajan näiden melko monimutkaistenkin asioiden hallinnalta, mutta sisältää myös omat hankaluutensa. Mitkä?

Some research topics on SOA and Web services (Web) service composition modeling support many workflow and service composition languages transformations (methods and tools) Web services and Semantic Web Semantic Web techniques can make Web service systems more efficient Especially Internet-based messaging is always slow Transferring only essential information Semantic Web techniqes can be used for finding the essential information metainformation descriptions Not many real applications available 202 Yksi ehkä tällä vilkkaimmin tutkituista palvelujen käyttöön liittyvistä ongelma-alueista on palveluiden yhdistämisen ja workflow-kuvausten mallintaminen. Vaikka BPEL-kieli onkin saavuttanut tietyssä mielessä käytännön standardin aseman palveluperustaisten järjestelmien liiketoimintaprosessien kuvauskielenä, muitakin kieliä on toki ehdotettu ja niitä käytetään. Eri kielet on kehitetty hieman eri tarkoituksiin ja hieman erilaisia vaatimuksia silmällä pitäen. Tämän vuoksi tällä hetkellä kehitetään runsaasti sekä työkaluja ja menetelmiä varsinaisten palveluiden koordinointikuvausten tuottamiseksi korkean tason workflow-malleista. Myös muuntimia eri workflow-kielten välille on kehitetty. Tällä kurssilla ei käsitellä tarkemmin Semanttista Webiä. Siihen voi kuitenkin tutustua esimerkiksi W3C:n Suomen toimiston sivuilla, jonka esitelmäarkistosta löytyy useita esityksiä aiheesta. Perusideana Semanttisessa Webissä on kuvata (Webissä esitettävälle) tiedolle annettava metatieto tavalla, joka on ohjelmallisesti käsiteltävissä ja hyödynnettävissä esimerkiksi tiedon hakua varten. Koska tiedonsiirto erityisesti Internetissä on aina hidasta, on tarkoituksen mukaista siirtää vain oleellinen tieto. Tämä puolestaan edellyttää sen, että tämä oleellinen tieto voidaan helposti löytää. Tiedon tehokasta löytämistä taas tukee metatiedon mahdollisimman hyvä ja kattava esittäminen, jota erilaiset hakukriteerit voivat hyödyntää. Semanttisen Webin tekniikoiden hyödyntäminen Webpalvelujärjestelmissä tarjoaakin näin ollen mahdollisuuden ko. järjestelmien tehostamiseksi. Rekisterit (kuten UDDI) tavallaan hyödyntävätkin metatiedon käyttöä eri kategorisointimekanismeillaan. Käytännössä ei vieläkään ole useita Web-palveluiden ja Semanttisen Webin yhdistämistä tukevia sovelluksia olemassa.

Some research topics on SOA and Web services Migrating old legacy systems to SOA/Web services identification of the services decision on the communication mechanism wrapping techniques methods Support for modeling and software development methods SOA governance Mobile Web services 203 Yksi tärkeä tutkimus- ja sovelluskohde on vanhojen legacy-järjestelmien toiminnallisuuden tarjoaminen Web-palveluina. Käytännön tarve sille on tällä hetkellä suuri. Tämä edellyttää ensinnäkin sen, että päätetään mikä toiminnallisuus tarjotaan palveluna. Se puolestaan edellyttää palveluiden identifioinnin. Tämän jälkeen tulee päättää kommunikointitavasta ja kommunikoinnin abstraktiotasosta sekä valita sopiva käärimistapa. Yksi ohjelmistotuotannon näkökulmasta kiinnostava ja oleellinen haaste on myös ohjelmistosuunnitteluprosessin eri vaiheiden huomion ottaminen Web-palveluja toteutettaessa. Tämä edellyttää myös mm. tukea palveluiden ja palveluiden koordinoinnin mallintamiselle. SOA-pohjaisten järjestelmien hallinta kaiken kaikkiaan on myös laaja kysymys. Myös palveluiden tarjoaminen mobiililaitteissa on kiinnostava ja tällä hetkellä akuutti tutkimus- ja kehityskohde. Mobiililaitteita käytetään tällä hetkellä pääasiassa asiakassovellusten ajamiseen. Mobiilius tuo mukanaan myös muita kiinnostavia ja Web-palvelukonseptissa hyödynnettäviä näkökulmia, kuten kontekstisensitiivisyyden.