La crittografia XML e la firma digitale vengono utilizzate per la sicurezza dei documenti XML. La crittografia XML e l'implementazione della firma digitale esistono per diversi linguaggi di programmazione. Tuttavia, implementazione della crittografia XML e della firma digitale in C il linguaggio è molto completo. Supporta molte funzioni e si basa sulla libreria LibXML2. PyXMLSec è l'implementazione Python per le funzionalità di sicurezza XML, tuttavia non supporta ancora tutte le funzioni. La versione corrente della libreria supporta i seguenti standard di sicurezza XML in Python.
a) Firma e crittografia XML
b) XML canonico
Prerequisito per la libreria PyXMLsec
La libreria PyXMLSec richiede i seguenti pacchetti per l'installazione.
1) Python 2.2 o versioni successive
2) LibXML
3) Libreria di sicurezza XML
Python è già installato sulla distribuzione Ubuntu. LibXML può essere installato digitando il seguente comando nel terminale mostrato in Figura
$sudo apt-get install python-libxml2

La libreria di sicurezza XML può essere installata utilizzando il seguente comando nel terminale. L'installazione della libreria XML è mostrata nella seguente istantanea.
$sudo apt-get install libxmlsec1-dev

L'installazione della libreria di sviluppo C è mostrata nella figura seguente.
$sudo apt-get install libxml-security-c-dev

L'implementazione Python della sicurezza XML viene installata utilizzando il terminale indicato di seguito, mostrato anche in figura.
$sudo apt-get install xmlsec1

Dopo l'installazione delle dipendenze, scaricare la versione recente di PyXMLSec (0.3.1) utilizzando il seguente comando nella directory Download. La figura seguente mostra il processo di download.
$cd Downloads
$sudo wget labs.libre-entreprise.org/frs/download.php/897/pyxmlsec-0.3.1.tar.gz

Dobbiamo compilare PyXMLSec dal pacchetto sorgente perché i pacchetti deb (pacchetto binario) non sono disponibili. Estrai il pyxmlsec-0.3.1.tar.gz scaricato pacchetto utilizzando il seguente comando nel terminale.
$ sudo tar -xvzf pyxmlsec-0.3.1.tar.gz

Entra nella directory estratta usando il comando cd mostrato in figura.
$cd pyxmlsec0.13.1

Una volta entrato nella directory principale del pacchetto, esegui sudo setup.py nel terminale per l'installazione di PyxmlSec. Il processo di installazione di PyXMLSec è mostrato nella figura seguente. Selezionare l'opzione 1 per la creazione di PyXMLsec dal sorgente. La libreria PyXMLsec supporta i motori crittografici OpenSSL, NSS e GnuTLS. OpenSSL è un noto motore crittografico che è normalmente installato in quasi tutte le distribuzioni Linux.
$sudo ./setup.py

Dopo il completamento del passaggio di compilazione, eseguire nuovamente lo stesso comando e selezionare l'opzione 2 per l'installazione della libreria mostrata di seguito.

Esempio
Alcuni esempi sono disponibili sul sito Web PyXMLsec nella sezione documentazione. Abbiamo selezionato esempi di firma XML (sign3.py) e di verifica (verify3.py) a scopo dimostrativo. Esempio di firma richiede il file di input (nel nostro caso document.xml) in formato XML, chiavi e certificati in formato PEM. Quindi, prima di tutto, nel processo di firma sono richiesti coppia di chiavi e certificato autofirmato. OpenSSL è un'utilità ampiamente utilizzata per la generazione di coppie di chiavi RSA e certificati. Il comando seguente genera una coppia di chiavi RSA di 2048 bit e le memorizza nel file "key.pem". Memorizza anche il certificato X509 nel file cer.pem.
#openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Firma XML
Dopo la generazione delle chiavi e del certificato, il passaggio successivo è la firma del file di input. L'esempio di firma XML accetta gli argomenti nel seguente formato dall'utente.
#./sign.py <xml-doc> <key-file> <cert-file>
Nel nostro caso, il file di input per la firma XML è document.xml e la firma del file risultante archiviata in output.xml file che viene mostrato di seguito.
#./sign.py document.xml key.pem cert.pem > output.xml
Verifica XML
In questo passaggio, l'esempio di verifica XML prende il file output.xml con i certificati per la verifica delle firme XML. L'esempio di verifica XML accetta gli argomenti nel seguente formato dall'utente.
#./verify.py <signed-file> <trusted-cert-pem-file1> [<trusted-cert-pem-file2> [...]]
Nel nostro caso, il file di input per la verifica XML è output.xml e lo verifica come mostrato di seguito.
#./verify.py output.xml cert.pem

Conclusione
Spero che questo articolo ti sia piaciuto. Per aggiungere , PyXMLsec è un'implementazione Python della sicurezza XML che fornisce crittografia e firma digitale per i documenti XML. Supporta motori Crypto open source come OpenSSL, GnuTLS e NSS per algoritmi simmetrici e asimmetrici.