[go: up one dir, main page]

Saltar para o conteúdo

Chave (criptografia)

Origem: Wikipédia, a enciclopédia livre.
 Nota: Para outros significados de Chave, veja Chave (desambiguação).

Uma chave é um pedaço de informação que controla a operação de um algoritmo de criptografia. Na codificação, uma chave especifica a transformação do texto puro em texto cifrado, ou vice-versa, durante a decodificação. Chaves são também usadas em outros algoritmos criptográficos, tais como esquemas de assinatura digital e funções hash (também conhecidas como MAC), algumas vezes para autenticação.

Para um algoritmo bem projetado, cifrar o mesmo texto mas com uma chave diferente deverá produzir um texto cifrado totalmente diferente. Igualmente, decifrar o texto cifrado com a chave errada deverá produzir um texto aleatório ininteligível. Se a chave de decriptação for perdida, o dado cifrado praticamente não pode ser recuparado pelo mesmo algoritmo de criptografia.

As chaves usadas na criptografia de chave pública têm uma certa estrutura matemática. Por exemplo, as chaves públicas usadas no sistema RSA são o produto de dois números primos. Por isso, sistemas de chave pública requerem chaves maiores do que os sistemas simétricos para um nível equivalente de segurança. 3072bits é o tamanho de chave sugerido para sistemas baseados em fatoração e algoritmos discretos inteiros que visam ter segurança equivalente a da cifra simétrica de 128bits. A criptografia de curva elíptica (CCE) pode permitir chaves de tamanhos menores para uma segurança equivalente, mas estes algoritmos são conhecidos há pouco tempo e, pelas estimativas atuais para a dificuldade de se encontrar suas chaves, eles não devem sobreviver. Recentemente, uma mensagem codificada usando uma chave de 109bits do algoritmo de curva elíptica foi quebrada por força bruta. A regra atual é usar uma chave de CCE com o dobro da segurança da chave simétrica para o nível desejado. Exceto para o one time pad aleatório, a segurança desses sistemas não foi provada matematicamente. Portanto, um ponto fraco teórico poderia fazer de tudo que você codificou um livro aberto. Esta é uma outra razão para se valorizar a escolha de chaves longas.

A escolha da chave

[editar | editar código-fonte]

Para evitar que uma chave seja adivinhada, as chaves precisam ser geradas aleatoriamente e conterem entropia suficiente. O problema de como gerar seguramente chaves verdadeiramente aleatórias é difícil e tem sido encarado de várias formas por vários sistemas criptográficos. Existe um RFC sobre a geração de aleatoriedade (RFC 1750, Randomness Recommendations for Security [Recomendações de Aleatoriedade para Segurança]). Alguns sistemas operacionais incluem ferramentas para "coletar" entropia a partir da medição do tempo de certas operações imprevisíveis como os movimentos da cabeça do drive de disco. Para a produção de pequenas quantidades de material, um dado comum é uma boa fonte de aleatoriedade de alta qualidade.

Quando uma senha é usada como chave de codificação, os sistemas de criptografia bem projetados primeiro usam um algoritmo de derivação da chave, que adiciona um "sal" (salt) e o reduz ou o expande para o tamanho de chave desejado, por exemplo, através da redução de uma frase longa a um valor de 128bits apropriado para o uso em um bloco cifrado.