nunojob:~ dscape/08$ echo The Black Sheep

De acordo com o RFC2828 uma assinatura digital define-se como sendo um valor calculado com um algoritmo criptográfico e anexado ao objecto de dados de tal forma que se possa usar essa assinatura para verificar a autenticidade e integridade dos dados.Então o que é uma assinatura digital XML (W3C XMLDSIG)? É, como seria de esperar, uma assinatura digital mas adaptada a assinar documentos XML.A forma como funcionam é extremamente fiável.Logo para começar a assinatura não só assegura que a pessoa assinou aquele documento é de facto quem se espera – através de um certificado – como também que o mesmo se manteve inalterado até ao momento em que foi apresentado. Uma mensagem encriptada com uma chave pública apenas pode ser desencriptada com a correspondente chave privada.

Começamos por processar o documento. Para isso precisamos de transformar o ficheiro XML em um ficheiro que seja igual na fonte e no destino. Como sabem em XML ter

<nome>   Nuno Pinto</nome>

É igual a

<nome>Nuno Pinto</nome>

Logo surge a necessidade de criar uma representação única para cada documento XML. A este processo chamamos canonicalização. Numa assinatura digital XML existe a necessidade de explicitamente declarar qual foi o algoritmo usado para criar esta representação. Agora podemos processar o documento XML e criar, através de um algoritmo criptográfico num processo normalmente chamado de digest, uma impressão digital do documento. Em seguida, com a chave privada, encriptamos essa impressão digital e enviamos para o destinatário a nossa assinatura (que contém a chave pública, certificados, impressão digital assinada e os algoritmos que foram usados para o digest e a canonicalização).Ao receber o documento assinado pode-se verificar o resultado do digest do documento (usando os algoritmos contidos na assinatura). Depois podemos desencriptar a impressão digital assinada e comparar os dois valores. Se coincidirem é valido dizer que o documento é autentico e não foi alterado. Fixe!Por fim resta dizer que existem três tripos de assinaturas XMLDSIG.

  1. Detached: O documento XML a ser assinado e a assinatura estão são dois ficheiros distintos, sendo que esta tem uma referência ao documento que se propõe a assinar.
  2. Enveloped: O documento XML e a assinatura surgem no mesmo ficheiro de uma forma sequencial.
  3. Enveloping: O documento e a assinatura estão contidos em um envelope XML.

Se este artigo serviu para vos aguçar o apetite sobre este assunto, podem ler mais sobre o assunto no artigo Programing with Java XML Digital Signature API feito pelo Sean Mullan da Sun.

Comments on: "Uma pequena introdução as assinaturas digitais XML" (1)

  1. Porreiro Nuno, bom trabalho em documentares estas coisas :o)

    Hugz,
    Luís Silva

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: