Controlo de Integridade e Assinatura Digital

Controlo de Integridade

Em poucas palavras o "Controlo de Integridade" destina-se a verificar se uma mensagem sofreu algum tipo de altera��o de conte�do entre a origem e o destino. Neste aspecto pode fazer recordar o problema da detec��o de erros durante a transmiss�o de dados. O controlo de integridade � contudo muito mais complexo porque temos de entrar em considera��o com todo o tipo de ac��es de terceiros no sentido de "furar" o sistema.

Para implementar o controlo de integridade � adicionada � mensagem alguma informa��o adicional que representa o resultado da aplica��o de algum tipo de algoritmo ao conte�do da mensagem.

Quando a mensagem chega ao destino o algoritmo � novamente aplicado e compara-se o resultado obtido com aquele que a mensagem transporta. At� este ponto este mecanismo � semelhante a uma vulgar "detec��o de erro".

Implementado deste modo, nada impede que um terceiro capture a mensagem, produza altera��es no seu conte�do e aplique o algoritmo para gerar o resultado correcto a adicionar � mensagem, a entidade de destino n�o vai poder detectar este tipo de situa��o.

Sob o ponto de vista de seguran�a, os mecanismos de controlo de integridade s� s�o v�lidos quando associados a algum tipo de autentica��o.

Cifragem

A simples aplica��o de cifragem � capaz de garantir tanto a integridade como a autentica��o. Considere-se a o envio de uma mensagem cifrada de A para B:

Criptografia Convencional (sim�trica)
Como apenas A e B conhecem a chave secreta, se a decifragem em B produz texto legivel isto indica que a mensagem veio de A e que n�o se produziram altera��es ao seu conteudo.

� necess�rio ent�o implementar um mecanismo autom�tico para determinar se uma mensagem � ou n�o legivel, isto pode ser complicado, ou mesmo imposs�vel se os dados n�o s�o texto.

Em casos limite em que as mensagens n�o possuem qualquer tipo de estrutura que possa ser reconhecida, a solu��o � adicionar � mensagem um bloco que de algum modo represente o conteudo da mensagem antes da cifragem. As fun��es que s�o usadas para produzir estes blocos s�o conhecidas por fun��es "hash".

Criptografia de Chave-Publica
Para proporcionar integridade e autentica��o a entidade A ter� de cifrar a mensagem com a sua chave secreta, a entidade B tenta decifrar com a chave publica de A, se obtiver algo que fa�a sentido tal indica que a mensagem veio de A e que n�o se produziram altera��es ao seu conteudo.

Colocam-se aqui os mesmo problemas quanto a determinar se a mensagem obtida faz ou n�o sentido.

Como se ver� adiante a utiliza��o deste mecanimo proporciona uma capacidade adicional: "assinatura digital". Note-se tamb�m que n�o existe confidencialidade, para tal acontecer A teria de aplicar a chave publica de B depois de aplicar a sua chave secreta.

"Checksum" Criptogr�fico

Esta t�cnica envolve a utiliza��o de uma chave secreta, em conjunto com um algoritmo s�o aplicados � mensagem e produzem um bloco de dados de dimens�o fixa conhecido por "Checksum" Criptogr�fico ou "Message Authentication Code" (MAC).

MAC = checksum(MENSAGEM,CHAVE SECRETA)

O MAC � enviado em conjunto com a mensagem da entidade A para a entidade B, a entidade B gera tamb�m um MAC e verifica se coincide com o que chegou juntamente com a mensagem. Como apenas A e B conhecem a chave secreta, B sabe que a mensagem veio de A e n�o foi adulterada.

Como sempre algu�m pode recorrer � for�a bruta para tentar obter a chave secreta. Supondo que n�o se implementa confidencialidade, ent�o existe acesso p�blico � mensagem M e ao respectivo MAC, basta executar MAC1 = checksum(MENSAGEM,CHAVE) para todas as chaves poss�veis, tentando obter MAC = MAC1. Sendo k o n�mero de bits da CHAVE, ent�o existe um total de 2k chaves poss�veis, este ser� tamb�m o n�mero de MAC's obtidos, contudo sendo n o n�mero de bits do MAC, se n < k ent�o apenas ser�o produzidos 2n < 2k MAC's diferentes.

Nestas condi��es ao empregar a for�a bruta v�o ser obtidas 2(k-n) chaves poss�veis. Ser� necess�rio recorrer a outro exemplar (M,MAC) e aplicar a mesma t�cnica, agora apenas ser�o testadas as 2(k-n) chaves obtidas no passo anterior, ser�o ent�o obtidas 2(k-2xn) chaves possiveis. Em m�dia ser�o necess�rios k/n passos destes at� obter uma chave �nica.

Uma implementa��o comum de "Checksum" Criptogr�fico � o FIPS PUB 113 ou ANSI X9.17. O X9.17 basia-se no DES em modo CBC, com um vector inicial zero. Este algoritmo tamb�m � conhecido por DAA ("Data Authentication Algotithm"), usa uma chave DES de 56 bits e produz um resultado de 64 bits, neste algoritmo o MAC � tamb�m designado de DAC ("Data Authentication Code").

Para DAC pode utilizar-se menos do que os 64 bits produzidos pelo DAA. Neste caso utilizam-se pelo mesnos os 16 bits da esquerda.

Fun��es "Hash"

Uma fun��o "hash" tipica recebe como "input" uma mensagem de comprimento vari�vel e produz um bloco de comprimento fixo que representa o conte�do da mensagem. A fun��o deve ser tal que a minima altera��o da mensagem produz uma altera��o no bloco de saida. Por outro lado a probabilidade de duas mensagens diferentes produzirem o mesmo bloco deve ser praticamente nula.

Os algoritmos "hash" mais conhecidos s�o:

  • "Message-Digest" (MD2; MD4 e MD5)(RFC 1320) - aceita mensagens de qualquer tamanho e produz um bloco de 128 bits ("digest"), a mensagem � inicialmente dividida em blocos de 512 bits que s�o processados.
  • SHA ("Secure Hash Algorithm") - aceita mensagens de comprimento inferior a 264 e produz um "digest" de 160 bits. Baseado no MD4, o facto de gerar mais 32 bits do que o MD4 torna-o � partida mais seguro.

Um fun��o "hash" n�o proporciona autentica��o, qualquer um pode criar uma mensagem e gerar o respectivo "message digest" ou "hash code", para se conseguir autentica��o � necess�rio usar conjuntamente algum mecanismo de cifragem, convencional ou n�o:

  • O conjunto mensagem/hash-code s�o cifrados. Neste caso existe confidencialidade.
  • Apenas o "hash-code" � cifrado. Se � usada cifragem de chave secreta, torna-se equivalente a um "checksum" criptogr�fico. Se � usada cifragem de chave p�blica temos ainda uma assinatura digital(*).
  • Uma outra op��o poss�vel � usar um valor secreto que � concatenado � mensagem para efeitos de c�lculo do "hash-code", mas n�o � enviado.

(*) este tipo de assinatura pode ser atacado do seguinte modo ("birthday attack"):

  • A entidade X pretende realizar a fraude, ent�o produz um conjunto de varia��es da mensagem licita. Produz tamb�m um conjunto de varia��es da mensagem fraudulenta.
  • De entre os dois conjuntos procura um par que produza o mesmo "hash-code", envia ent�o o exemplar licito a entidade A para esta "assinar".
  • A entidade A acrescenta a assinatura digital, ou seja calcula o "hash-code" e cifra-o com a sua chave secreta.
  • A entidade X pode agora usar esta assinatura para a mensagem ilicita, como os "hash-code" s�o os mesmos, ent�o as assinaturas s�o iguais.

O grau de dificuldade com que este tipo de fraude � realizado depende do n�mero de "bits" do "hash-code", para m bits ser� necess�rio come�ar por gerar dois conjuntos de 2m/2 mensagens, nesta situa��o a probabilidade de se conseguir um par adequado (mesmo hash-code) � de 0,5 (50%).

Assinatura Digital

Anteriormente foram j� abordados mecanimos que permitem a implementa��o da assinatura digital. A assinatura digital tem objectivos equivalentes aos das assinaturas manuscritas. As principais propriedades de uma assinatura digital s�o:

  • Deve usar informa��o que apenas o autor da assinatura possua, tipicamente a chave secreta de criptografia de chave publica. Esta propriedade autentica a proveniencia e impede o repudio (autor negar a autoria).
  • Deve depender de toda a mensagem, sendo impraticavel encontrar duas mensagens com a mesma assinatura.

A estas propriedades adicionam-se algumas da caracter pr�tico: "deve ser f�cil produzir a assinatura", "deve ser f�cil verificar a assinatura", "deve ser f�cil armazenar assinaturas".

"Direct Digital Signature"

A implementa��o directa ("Direct Digital Signature") envolve a cifragem da mensagem com a chave privada do autor ou a gera��o de um "hash-code" que � depois cifrado da mesma forma. Este tipo de implementa��o tem um ponto fraco, em caso de disputa o autor pode negar a autoria alegando que a sua chave privada foi roubada ou forjada por algu�m.

"Arbitrated Digital Signature"

A solu��o para o problema apontado envolve o recurso a uma entidade na qual todas as partes s�o obrigadas a confiar ("Arbitrated Digital Signature").

A entidade A assina a mensagem e envia-a � entidade C ("�rbitro"), esta entidade � ent�o respons�vel por tomar todas as medidas e verifica��es necess�rias para autenticar a origem da mensagem, adiciona-lhe uma etiqueta temporal e envia-a � entidade de destino. Todas as transa��es (A para C e de C para B) s�o devidam autenticadas e com confidencialidade garantida. Existem inumeras implementa��es, em algumas C tem acesso ao conte�do decifrado da mensagem, noutras n�o.