XML biztonság
Aláírás W3C és IETF közös munkája W3C IETF XML-Signature Syntax and Processing / 2002. IETF sok RFC a részletekről
Mit biztosít? Hiteles marad Változtatás azonnal észrevehető Az előállító nem tudja letagadni
Szükséges algoritmusok kanonizáló szemantikailag azonos XML ua. bytesorozat legyen kivonat készítő hash készítés aláíró hash titkosítása titkosító szimmetrikus kulccsal az XML kódolása transzformáló pl. bináris adatok base64 kódolása
Aláírás, mint objektum ( ): valamilyen leírás kell ?: 0 vagy 1 előfordulás +: 1 vagy több előfordulás *: 0 vagy több előfordulás
Az aláírás előállítása Forrásadat: leírás a Reference-ben URI-val
Az aláírás előállítása Kanonizálás (normalizálás) kommentárok elhagyása üres sorok kiszedése szóközök megtartása a szövegben cimkék normalizása karakterhivatkozások feloldása betűkészlet UTF-8-ra
Kanonizálás
Az aláírás előállítása Lenyomat(hash) az aláirandó elemekről benne az algoritmus hash értéke
Az aláírás előállítása Előkészítés a közvetlen aláíráshoz milyen a kanonizálás milyen a titkosító algoritmus (itt SHA1)
Az aláírás előállítása Aláírás elkészítése
Az aláírás előállítása Opcionális kulcsinfo hozzáadása
Az aláírás előállítása Opcionális object-info hozzáadása pl. időpecsét
Az aláírás előállítása Transzformáció: pl. bináris info base64-be
Alkalmazás Honnan tudjuk, hogy Alice cége küldte a megrendelőt Bob cégének? Válasz: Alice írja alá
Megrendelés <bp:pencilOrder xmlns:bp="http://bobspencils.com/pencilOrders"> <bp:pencilType>bp:StandardNumberTwo</bp:pencilType> <bp:quantity>100,000</bp:quantity> </bp:pencilOrder>
Aláírt szerkezet <bp:signedPencilOrder xmlns:bp="http://bobspencils.com/pencilOrders"> <Signature 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#rsa-sha1"/> <Reference URI=""/> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo> <SignatureValue>aiYECAxNqK2PivQaRweWajXup5zJa...</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIH1zCCBr+gAwIBA...</X509Certificate> </X509Data> </KeyInfo> </Signature> <bp:pencilOrder> <bp:OrderID>64B4A0D1-814E-4FF6-918A-DD7E7E1AECEA</bp:OrderID> <bp:pencilType>bp:StandardNumberTwo</bp:pencilType> <bp:quantity>100,000</bp:quantity> </bp:pencilOrder> </bp:signedPencilOrder> eredeti anyag
Aláírás kifejtése kanonizálás algoritmus itt az aláírás mit kell aláírni?* kanonizálás <Signature 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#rsa-sha1"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo> <SignatureValue>aiYECAxNqK2PivQaRweWajXup5zJa...</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIH1zCCBr+gAwIBA...</X509Certificate> </X509Data> </KeyInfo> </Signature> algoritmus itt az aláírás ""= az egészet!
Elemzés pencilOrder fölé egy új elem került signedPencilOrder gyereke Signature és az eredeti pencilOrder Signature, mint előzőekben pencilOrder kibővült bp:OrderID hogy uaz a rendelés ne mehessen be kétszer
Titkosítás Itt is W3C és IETF együtt W3C IETF XML Encryption Syntax and Processing / 2002. IETF sok RFC a részletekről
Titkosítás <--> titkosított adatforgalom SSL (Secure Socket Layer) kiegészítő réteg az Internet Modellben akkor kell, ha az egész beszélgetés titkos Ha csak XML-adatokat akarunk titkosítani XML-Encryption pl. bankkártya-adatok átvitele
Megrendelés fizetéssel <?xml version='1.0' ?> <purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <Payment> <CardId>123654-8988889-9996874</CardId> <CardName>visa</CardName> <ValidDate>12-10-2004</ValidDate> </Payment> </purchaseOrder>
Az egész titkosítása <?xml version='1.0' ?> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#’ type='http://www.isi.edu/in-notes/iana/.../text/xml'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData>
Részlet titkosítása <purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#’ type='http://www.w3.org/2001/04/xmlenc#Element’> <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> </EncryptedData> </purchaseOrder> <Payment> <CardId>123654...</CardId> <CardName>visa</CardName> <ValidDate>12-...</ValidDate> </Payment>
Szöveg titkosítása <purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <Payment> <CardId> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' type='http://www.w3.org/2001/04/xmlenc#Content’> <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> </EncryptedData> </CardId> <CardName>visa</CardName> <ValidDate>12-10-2004</ValidDate> </Payment> </purchaseOrder> 123654-8988889-9996874
Mit lehet XML-titkosítani? Szöveget azon belül XML-t: type='http://www.isi.edu/.../media-types/text/xml' Nem-szöveget pl. képet: type='http://www.isi.edu/.../media-types/jpeg'
Kulcsok Aszimmetrikus kulcs Szimmetrikus kulcs átviteli folyamatban kicserélve Szimmetrikus kulcs előzetesen már kicserélve
Kulcs elhelyezése <purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <Payment> <CardId> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' type='http://www.w3.org/2001/04/xmlenc#Content’> <EncryptionMethod Algorithm='http://www.w3.org/2001/04/xmlenc#tripledes-cbc '/> <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'> <ds:KeyName>John Doe</ds:KeyName> </ds:KeyInfo> <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> </EncryptedData> </CardId> <CardName>visa</CardName> <ValidDate>12-10-2004</ValidDate> </Payment> </purchaseOrder> algoritmus neve
Titkosított információ helye 2 megoldás XML dokumentumba ágyazva <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> külön dokumentumban <CipherData> <CipherReference>...</CipherReference> </CipherData>
Hivatkozás külső anyagra <?xml version='1.0' ?> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#’ type='http://www.isi.edu/in-notes/iana/.../text/xml'> <EncryptionMethod Algorithm='http://www.w3.org/2001/04/xmlenc#tripledes-cbc '/> <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'> <ds:KeyName>John Doe</ds:KeyName> </ds:KeyInfo> <CipherData> <CipherReference URI="www.a.b/secureData/waxFile.txt"/> </CipherData> </EncryptedData>
Megrendelés fizetéssel <bp:pencilOrder xmlns:bp="http://bobspencils.com/pencilOrders"> <bp:pencilType>bp:StandardNumberTwo</bp:pencilType> <bp:quantity>100,000</bp:quantity> <bank:paymentInfo xmlns:bank=“http://www.bank.com/payspec/1.0”> <bank:PaymentAmount>$999.95</bank:PaymentAmount> <bank:CrediCardNumber>1234123412341234</bank:CrediCardNumber > </bank:paymentInfo> </bp:pencilOrder>
Összeg titkosítva <bp:pencilOrder xmlns:bp="http://bobspencils.com/pencilOrders"> <bp:OrderID>64B4A0D1-814E-4FF6-918A-DD7E7E1AECEA</bp:OrderID> <bp:pencilType>bp:StandardNumberTwo</bp:pencilType> <bp:quantity>100,000</bp:quantity> <bank:paymentInfo xmlns:bank="http://www.megabank.com/payspec/1.0"> <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:RetrievalMethod URI="#SessKey" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/> </ds:KeyInfo> <CipherData> <CipherValue>9oATk2hDK2+HcTVHg...</CipherValue> </CipherData> </EncryptedData> <EncryptedKey Id="SessKey" xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <ds:KeyName>Bob's Pencil Manufacturing Company's Public/Private Key</ds:KeyName> <CipherValue>CCBPowCwYDVR0PBA...</CipherValue> <ReferenceList> <DataReference URI="#SessKey"/> </ReferenceList> </EncryptedKey> </bank:paymentInfo> </bp:pencilOrder> <bank:PaymentAmount>$999.95</...> <bank:CrediCardNumber>123...</...>
Elemzés Csak a bankkártya-rész van titkosítva Titkosításhoz szimmetrikus kulcs 3DES kódolással <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> Szimmetrikus kulcs RSA-val titkosítva <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
Aláírás és titkosítás együtt SOAP bevezetése Simple Object Application Protocol, mint XML boríték formában: fejléc és törzs SOAP-header aláírás Signature szerkezettel SOAP-body tartalom titkosítva