Apache Santuario, crittografia e firma XML in Java

13 marzo 2014

La diffusione di utilizzo dell’XML (eXtensible Markup Language) ha portato alla richiesta di misure di sicurezza volte a proteggere privacy, confidenzialità e integrità dei documenti XML, sfruttandone le peculiarità e salvaguardandone i vantaggi. Ad esempio, può nascere l’esigenza o l’opportunità di criptare solo alcuni elementi, o di criptare elementi diversi con chiavi diverse per poter distribuire lo stesso documento a diversi soggetti. Il W3C (World Wide Web Consortium) ha definito di conseguenza una serie di standard di sicurezza integrati con le soluzioni XML attraverso vocabolari e regole di elaborazione, in modo da soddisfare i crescenti requisiti di sicurezza.

Tra i principali standard per la sicurezza vi sono quelli volti a garantire integrità e autenticazione (XML Digital Signature) e confidenzialità (XML Encryption). In questo articolo, dopo un’introduzione all’XML Security, presenteremo Apache Santuario, un progetto che punta ad offrire un’implementazione di questi standard XML proponendo librerie sia per Java che per C++. Per mostrare le potenzialità del framework, affronteremo alcuni esempi di utilizzo in Java coprendo i principali casi d’uso, ossia crittografia con chiave simmetrica e asimmetrica e firma digitale.

L’articolo è costituito dalle seguenti sezioni:

  • XML Security: introduzione
  • Crittografia e firma XML in Java, Apache Santuario
  • Apache Santuario: crittografia XML
  • Apache Santuario: firma XML

Apache Santuario richiede Java 1.5 (o superiore). Nell’articolo verranno presentati esempi programmatici dell’utilizzo del framework. Per svolgerli bisognerà assicurarsi di avere correttamente installato il Java Development Kit 1.5 (o superiore). Nell’archivio che verrà allegato a fine trattazione sarà possibile trovare un progetto Eclipse con gli esempi successivamente descritti.

XML Security: introduzione

La sicurezza è fondamentale per garantire il corretto svolgimento delle transazioni, per mantenere privacy e confidenzialità e per assicurare che le informazioni siano usate nel modo appropriato. I vecchi sistemi di sicurezza basati su uno strato fisico non scalano efficacemente su Internet a causa della natura eterogenea dei sistemi hardware e software e dei conflitti amministrativi, applicativi, o più generale per le diverse regole di sicurezza. Ne è derivata la richiesta per standard estensibili in grado di venire incontro o adattarsi a requisiti che cambiano costantemente, in grado di interagire con i vecchi sistemi ereditati e di essere utilizzati in modo modulare, evitando cioè di dovere essere vincolati alle porzioni inutilizzate.

Il requisito essenziale di questi standard è che siano perfettamente in grado di lavorare con contenuti creati usando l’XML, con l’obiettivo di salvaguardare nel migliore modo possibile i vantaggi e le funzionalità proprie dell’XML.

Le vecchie tecnologie per la sicurezza fornivano un set di algoritmi e tecnologie che spesso risultano inappropriate per le applicazioni di sicurezza per l’XML. Tra i principali motivi vi è il fatto che spesso queste tecnologie utilizzano formati binari, a scapito della leggibilità dei documenti e dell’utilizzo dei comuni parser XML, o non ne supportano funzionalità di gestione dei contenuti, ad esempio l’XPath.

L’idea alla base dell’XML Security è quella di definire strutture e regole di elaborazione che possano essere condivise dalle applicazioni utilizzando tools comuni ed evitando customizzazioni eccessive delle applicazioni che ne dovrebbero garantire la sicurezza. Nell’XML Security vi è quindi il riuso di concetti e algoritmi al fine di garantire interoperabilità tra una vasta scala di applicazioni.

Tra i principali XML Security standards possiamo annoverare:

StandardDescrizione
Integrità e firmaXML Signatures
ConfidenzialitàXML Encryption
CanonizzazioneCanonical XML
Gestione delle chiaviXML Key Management Specification
Autenticazione e autorizzazioniSecurity Assertion Markup Language
Regole per l’autorizzazioneXML Access Control Markup Language

Tra le principali applicazioni dell’XML Security possiamo annoverare la sicurezza per i Web Services, privacy (Platform for Privacy Preferences) e DRM (Digital Rights Management, ad esempio l’eXtensible Rights Markup Language 2.0).

Se vuoi aggiornamenti su Apache Santuario, crittografia e firma XML in Java inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Apache Santuario, crittografia e firma XML in Java

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy