# XML/XML Encryption

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
Obiettivi di apprendimento
* Conoscere le basi della crittografia XML
* Imparare la sintassi base per la crittografia XML
La crittografia XML è stata sviluppata per affrontare due comuni aspetti non previsti dal protocollo TLS/SSL (Transport Layer Security / Secure Socket Layer). TLS/SSL è un protocollo molto sicuro e affidabile che fornisce sessioni di sicurezza end-to-end tra due parti. XML aggiunge un ulteriore livello di sicurezza a TLS/SSL crittografando una parte o tutti i dati scambiati e consentendo sessioni sicure tra più di due parti. In altre parole, ogni parte può mantenere sessioni sicure o non sicure con una qualsiasi delle parti che comunicano, e i dati, sia sicuri che non sicuri, possono essere scambiati nello stesso documento. Inoltre, la crittografia XML è in grado di gestire sia dati XML sia non XML (ad esempio binari).

## Sintassi

Tutti i file XML crittografati devono iniziare con il preambolo, la dichiarazione, le entità interne e l'import:

### EncryptedType

EncryptedType è il tipo astratto da cui derivano EncryptedData e EncryptedKey.
ds:KeyInfo è un elemento facoltativo che contiene informazioni sulla chiave utilizzata per crittografare i dati. Le sezioni successive di questa specifica definiscono nuovi elementi che possono essere visualizzati come elementi figlio di ds:KeyInfo.
CipherData è un elemento obbligatorio che contiene il CipherValue o CipherReference con i dati criptati.
EncryptionProperties può contenere informazioni aggiuntive sulla generazione di EncryptedType (ad esempio: data e ora).
Id è un attributo facoltativo che fornisce il metodo standard di assegnazione di un stringa ID all'elemento all'interno del contesto del documento.
Type è un attributo facoltativo che identifica le informazioni sul tipo sul modulo in testo non crittografato del contenuto crittografato. Sebbene facoltativa, questa specifica ne trae vantaggio per l'elaborazione obbligatoria in dycryption. Se l'elemento EncryptedData contiene dati di tipo 'elemento' o elemento 'content' e sostituisce tali dati in un contesto di documento XML, è consigliabile fornire l'attributo Type. Senza queste informazioni, il decryptor non sarà in grado di ripristinare automaticamente il documento XML nel formato non crittografato originale.
MimeType è un attributo facoltativo che descrive il tipo dei dati che sono stati crittografati. Il valore di questo attributo è una stringa con valori definiti da [MIME]. Ad esempio, se i dati crittografati sono un file PNG codificato in base 64, la codifica di trasferimento può essere specificata come http://www.w3.org/2000/09/xmldsig#base64 e MimeType come image/png. Questo attributo è puramente informativo, non richiede alcuna convalida delle informazioni MimeType e non indica che l'applicazione di crittografia deve eseguire ulteriori elaborazioni. Si noti che queste informazioni potrebbero non essere necessarie se sono già associate all'identificatore nell'attributo Type. Ad esempio, i tipi Element e Content definiti in questa specifica sono sempre testo con codifica UTF-8.

### EncryptionMethod

EncryptionMethod è un elemento facoltativo che descrive l'algoritmo di crittografia applicato ai dati di crittografia. Se l'elemento è assente, l'algoritmo di crittografia deve essere noto al destinatario o la decriptazione avrà esito negativo. Gli elementi figlio consentiti di EncryptionMethod sono determinati dal valore specifico dell'URI dell'attributo Algorithm.

### CipherData

CipherData è un elemento obbligatorio che fornisce i dati crittografati. Deve contenere la sequenza crittografata di ottetti dell'elemento CipherValue come testo codificato in base 64, oppure fornire un riferimento a una posizione esterna contenente la sequenza di ottetti crittografata tramite l'elemento CipherReference.

### CipherReference

CipherReference identifica un sorgente che, una volta elaborato, produce la sequenza di ottetti crittografati CipherReference, che viene utilizzata quando CipherValue non viene fornito direttamente. Il valore effettivo viene ottenuto come indicato di seguito. L'URI CipherReference contiene un identificatore dereferenziato. Se l'elemento CipherReference contiene una sequenza opzionale di trasformazioni, i dati risultanti dalla dereferenziazione dell'URI vengono trasformati come specificato, in modo da restituire il valore di crittografia previsto. Ad esempio, se il valore è codificato in base 64 all'interno di un documento XML, le trasformazioni potrebbero specificare un'espressione XPath seguita da una decodifica a base 64 in modo da estrarre gli ottetti.

### EncryptedData

EncryptedData è l'elemento principale nella sintassi. Non solo il suo elemento figlio CipherData contiene i dati crittografati, ma è anche l'elemento che sostituisce l'elemento crittografato o funge da nuova radice del documento.