Controlo de Integridade e Assinatura DigitalControlo de IntegridadeEm 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. CifragemA 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:
"Checksum" Criptogr�ficoEsta 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:
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:
(*) este tipo de assinatura pode ser atacado do seguinte modo ("birthday attack"):
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 DigitalAnteriormente 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:
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. |