A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Criptografia Numaboa

As funções hash

Ter

13

Set

2005


00:44

(34 votos, média 4.24 de 5) 


Aplicações de funções hash e de MACs

Funções hash e MACs têm as mais diversas aplicações. Entre outras, podem ser utilizadas na autenticação de mensagens, assinaturas digitais, datação (timestamping) de documentos e sistemas de senhas.

Autenticação de mensagens com hash

O problema da proteção da autenticidade de informações tem dois aspectos: a integridade dos dados e a autenticação da origem dos dados. A integridade dos dados é a garantia de que os dados não tenham sido alterados, sem autorização, desde o momento em que foram criados, transmitidos ou armazenados por uma fonte autorizada. Já a autenticação da origem dos dados é um tipo de autenticação que garante a fonte (origem) dos dados. Por definição, a autenticação da origem dos dados inclui a integridade dos dados (informação que tenha sido modificada com autorização tem uma nova fonte).

Digamos que um remetente queira enviar uma mensagem para determinado destinatário através de um canal de comunicação inseguro. Para garantir que o destinatário esteja recebendo a mensagem da fonte correta e que a mensagem não foi modificada durante a transmissão, o remetente cria um hash da mensagem e transmite esta pequena sequência de bits através de um canal autêntico. Um canal autêntico não é necessariamente um canal seguro, ele pode ser interceptado e o segredo não é garantido. O telefone, por exemplo, é um canal deste tipo onde a autenticação é feita através do reconhecimento da voz. Depois disso, o remetente pode enviar a mensagem através de um canal inseguro. O destinatário, por sua vez, usando o mesmo algoritmo hash, cria um resultado hash para a mensagem recebida e o compara com o hash que lhe foi enviado. Se os dois hashes coincidirem, o destinatário tem a certeza de que a mensagem não foi alterada durante o trajeto.

Autenticação hash combinada com criptografia

Uma outra forma de enviar mensagens autenticadas é adicionar o hash à mensagem clara e cifrar o conjunto com algum método criptográfico cuja chave seja conhecida tanto pelo remetente quanto pelo destinatário. O destinatário decifra o conjunto, obtendo o hash e a mensagem. Este método precisa de um canal autêntico e com privacidade para poder transmitir a chave do método criptográfico.

Autenticação de mensagens com MAC

Neste caso, o remetente cria um resultado MAC usando uma chave. Depois, adiciona este MAC à mensagem e a envia através de um canal inseguro. Também aqui existe a necessidade de usar um canal autêntico e com privacidade para transmitir a chave do algoritmo MAC.

Otimização de assinaturas digitais

Esquemas de assinatura digital são um tipo diferente de primitivo criptográfico. São usados para a proteção da autenticidade, só que, adicionalmente, oferecem o serviço de não repúdio. Isto significa que é impossível para um remetente negar a autoria de uma mensagem autenticada. Assinaturas digitais baseiam-se em criptografia de chave pública.

Por exemplo, o usuário A possui o par de chaves SA e PA, onde SA é a chave privada (secreta) e PA é a chave pública. Inicialmente ele comprime sua mensagem M com a função hash h. O resultado hash h(M) é usado como entrada do algoritmo de assinatura. Este algoritmo depende da chave privada SA e calcula um valor assinaturaSA( h(M) ), que pode ser expresso como s(M). O usuário associa a assinatura s(M) à mensagem M e envia o conjunto através de um canal inseguro. O destinatário separa a assinatura s(M) e a usa como entrada do algoritmo de verificação. Este algoritmo depende da chave pública PA e calcula o valor verPA( s(M) ). A assinatura e o algoritmo de verificação são projetados de tal forma que, se o par de chaves PA e SA estiver correto, o resultado hash h(M) corresponde à mensagem M. O destinatário calcula o hash da mensagem, compara os dois hashes e, se coincidirem, tanto a assinatura, quanto a mensagem, são autênticas.

Aplicações como funções de mão única (one-way)

Funções de mão única são parecidas com as funções hash de mão única - a diferença é que a entrada tem um comprimento fixo. Estas funções podem ser obtidas de vários modos, por exemplo, a partir de funções hash criptográficas ou de cifras de bloco.

Nos sistemas de identificação baseados em senhas, ao invés de armazenar a senha, armazena-se para cada usuário o resultado de uma função de mão única. Para verificar se uma senha informada pelo usuário (identificação) está correta, o sistema aplica a função de mão única na senha fornecida e compara o resultado obtido com o resultado armazenado.

Uma outra aplicação, também muito útil para identificações, é a chamada confirmação de conhecimento. Neste caso, as partes provam que conhecem um segredo S sem revelar o segredo. Para isto, basta cada um enviar para o outro uma função de mão única de S.

Funções de mão única também podem ser aplicadas para calcular uma sequência de chaves que são usadas para proteger sessões de comunicação sucessivas. Começando com uma chave mestra K0, a chave da primeira sessão é calculada como K1 = f(K0), a da segunda sessão como K2 = f(K1) e assim sucessivamente. Um exemplo típico é a derivação de chaves usada em sistemas de pagamento em terminais de pontos de venda onde a divulgação de uma chave atualmente ativa não pode comprometer a segurança de transações anteriores. Esta propriedade é chamada de segurança futura. Outro exemplo é a geração de senhas num sistema de senhas de uso único. Neste caso, cria-se uma sequência de senhas que serão usadas na ordem inversa da criação. Aplicando-se a função de mão única a uma das senhas, o resultado precisa coincidir com a senha anterior. A propriedade de mão única impede que um adversário, que conheça a senha atual, possa calcular qualquer uma das senhas futuras.

Datação digital

A datação digital é um serviço que fornece uma autenticação temporal. Em particular, uma datação digital fornece provas da existência de certos fragmentos de informação antes da data e da hora indicada na datação. Isto tem aplicação na proteção de direitos de propriedade intelectual e em procedimentos seguros de auditoria. Por exemplo:

  • Um pesquisador que queira provar um "primeiro a inventar" ou "primeiro a informar".
  • Uma empresa que queira provar a integridade de seus registros eletrônicos, mostrando que estes não foram manipulados ou tiveram suas datas alteradas.

A datação também é vital para serviços de não-repúdio confiáveis. Em documentos assinados que tenham um ciclo de validade longo, várias verificações podem ser necessárias. Entretanto, o ciclo de validade de assinaturas digitais é limitado por várias razões:

  • A chave privada da assinatura pode se tornar comprometida.
  • O certificado que prova o elo entre o usuário e sua chave pública tem prazo de validade.
  • O algoritmo criptográfico usado no esquema da assinatura pode ser quebrado.

Estes problema pode ser contornado se um serviço seguro de datação for utilizado. Um usuário que cria uma assinatura num documento e requisita uma datação da informação assinada prova que a assinatura foi gerada antes da marca temporal indicada na datação, ou seja, antes de qualquer incidente eventualmente venha a invalidar a sua assinatura.

Informações adicionais