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

O seguro morreu de bits

Qui

25

Ago

2005


20:07

(9 votos, média 4.56 de 5) 


Preocupações

A primeira preocupação é com a qualidade do algoritmo de encriptação. Todos os cálculos citados levam em consideração que os algoritmos usam as chaves que recebem e as usam com perfeição. Se existirem falhas no algoritmo, isto reduz a entropia das chaves. Por exemplo, o algoritmo A5/l, usado nos telefones celulares GSM da Europa, tem uma chave de 64 bits, mas o tempo para quebrá-lo é o mesmo necessário para quebrar uma chave de 40 bits pela força bruta. Isto significa que, mesmo que se tenha fornecido ao algoritmo uma chave de 64 bits de entropia, ele usa apenas 40 bits de entropia na chave. Num caso como este, também é possível usar um algoritmo que use efetivamente uma chave de 40 bits.

O mesmo problema está atrasando a implantação do algoritmo AES. O governo dos EUA quer substituir o DES (que tem uma chave de 56 bits) por um novo algoritmo que aceite chaves de até 256 bits. A esta altura há cinco semifinalistas, mas será que qualquer um deles fornece a entropia de 256 bits que alega possuir? Este também é o motivo pelo qual fica difícil levar a sério os anunciantes de produtos com chaves de mil bits - eles não entendem como funcionam as chaves e a entropia.

A segunda preocupação é com a origem das chaves. Todos os cálculos de comprimento de chave que acabei de fazer consideram que cada chave tenha o máximo de entropia quando ela é gerada. Em outras palavras, considerei que cada chave é igualmente provável. Isto simplesmente não corresponde à realidade.

Muitas chaves são geradas a partir de senhas ou frases-senha. Um sistema que aceita senhas de 10 caracteres ASCII pode necessitar de 80 bits para representá-los, porém possui muito menos do que 80 bits de entropia. Caracteres ASCII estendidos nem vão aparecer e senhas que são palavras reais (ou próximas de palavras reais) são muito mais prováveis do que strings de caracteres randômicos. Tenho visto que a entropia estimada do Inglês padrão é de 1,3 bits por caracter; as senhas, provavelmente, têm menos de 4 bits de entropia por caracter. Isto significa que uma frase-senha é algo como uma chave de 32 bits e que, se você quiser uma chave de 128 bits, vai precisar de uma frase-senha em Inglês que tenha 98 caracteres.

Como você pode perceber, um motor para quebrar senhas através da força bruta não vai testar pela ordem cada uma das chaves possíveis. Vai testar primeiro as mais prováveis e depois testar as restantes de acordo com um critério semelhante. Vai testar as senhas mais comuns, do tipo "password" e "1234", depois o dicionário de Inglês inteiro e finalmente maiúsculas e números extras variados, e assim por diante. L0phtcrack é um programa de quebra de senhas que faz isto; num Pentium Pro 200 ele pode comparar um arquivo de 200 senhas com um dicionário de 8 Megabytes de senhas comuns em menos de um minuto. Testar todo o espaço do alfabeto de 26 caracteres leva 26 horas e o espaço alfanumérico de 36 caracteres leva cerca de 250 horas.

A Segurança

É por isso que é hilário quando companhias como a Microsoft coletam encriptações de 128 bits e depois baseiam a chave na senha (isto caracteriza muito bem toda a segurança do Windows NT). Os algoritmos que eles usam até podem aceitar uma chave de 128 bits, mas a entropia de uma senha está longe, muito longe disso. Na verdade, não importa o quanto a criptografia seja boa ou qual seja o comprimento da chave - senhas fracas irão quebrar este sistema.

Alguns lidaram com este problema exigindo senhas cada vez mais fortes, mas isto também não é efetivo. Nas últimas décadas, a lei de Moore tornou possível usar a força bruta em chaves cada vez maiores e com mais entropia. Ao mesmo tempo, existe um máximo de entropia que o usuário comum de computadores (ou mesmo o usuário acima da média) queira lembrar. Você não pode esperar que ele guarde na memória uma string de 32 caracteres hexadecimais randômicos, mas é isso que precisa acontecer se ele tiver que decorar uma chave de 128 bits. Estes dois números chegaram no limite. Quebradores de senhas, agora, podem quebrar qualquer coisa que possivelmente seja razoável esperar que um usuário memorize. O usuário vai reclamar que as senhas boas são difíceis de guardar, mas é justamente por isso que são consideradas boas.

Mas as chaves geradas randomicamente também não são necessariamente as melhores porque dependem de um programa gerador de números randômicos que produza chaves com um máximo de entropia. Foi exatamente uma falha no gerador de números randômicos o que quebrou a encriptação do Netscape versão 1.1. Apesar do gerador de números randômicos ter sido usado para gerar chaves de 128 bits, a entropia máxima estava ao redor de 20 bits. Desta forma, o algoritmo não era melhor do que um que gerasse uma chave de 20 bits.

As soluções existem, porém requerem renúncias da engenharia. A biometria pode gerar senhas melhores, mas não porque contenham mais entropia. Por exemplo, uma impressão digital (meu palpite é de que seja equivalente a uma chave de cerca de 60 bits) é melhor porque não existe algo como uma impressão digital ruim da forma como existe uma senha ruim. Smart cards oferecem um jeito conveniente de transportar uma chave de alta entropia, porém possuem as restrições associadas a um dispositivo físico. E, para alguns sistemas de comunicação, protocolos de chave pública podem gerar segredos de alta entropia usando apenas informação pública. A verificação on-line de senhas, que previne os ataques de dicionário off-line, também funciona em algumas circunstâncias.

Senhas são um grande negócio. Vejo sistemas PKI complexos onde a chave privada é protegida por uma senha. Praticamente todos os produtos de encriptação em HD baseiam sua segurança numa chave a ser lembrada pelo usuário. Praticamente toda a segurança do Windows NT entra em colapso porque foi construída sobre senhas que precisam ser lembradas pelo usuário. Até a PGP se abre se o usuário escolher uma frase-senha ruim. Não interessa quais sejam os algoritmos ou de que tamanho sejam as chaves que usem - segredos que precisam ser lembrados por usuários não são seguros.

Observações sobre algoritmos de chave pública

Este texto fala sobre algoritmos simétricos (cifras de bloco e de fluxo), os quais usam strings com um número arbitrário de bits como chaves. Os sistemas de chave pública com chaves matemáticas, como o produto de dois números primos grandes, são diferentes. Ainda existem ataques pela força bruta contra sistemas de chave pública, porém eles envolvem a solução de problemas matemáticos como a fatoração. O grupo que acabou de fatorar uma chave RSA de 512 bits disse que o cálculo representou cerca de 2% do esforço na procura de uma chave de 56 bits. Estimativas para a futura segurança das chaves RSA são muito mais difíceis de se estabelecer porque é preciso considerar os avanços na matemática de fatoração, assim como os avanços na velocidade e na conectividade na rede de computadores.

Estimativas conservadoras indicam que chaves de 1024 bits são boas o suficiente para mais alguns poucos anos e que, chaves de 2048 bits, deveriam ser boas o suficiente para os próximos dez anos (aproximadamente). Mas, uma vez que ninguém nem mesmo sabe se a fatoração é "difícil", certamente é possível que um matemático brilhante possa aparecer e tornar estes tamanhos de chave inseguros.

As chaves RSA, é claro, têm entropia demais para se memorizar. Ou elas são encriptadas com uma frase-senha e armazenadas no HD, ou são armazenadas em um token como um smart card. Algumas vezes são até mesmo deixadas abertas.

Fonte

Texto de Bruce Schneier publicado em 15.10.99 no CRYPTO-GRAM.

Логофет Вадимпосуда с антипригарным покрытиемцены никас моисея горапосуда магазинхарьков сегодня новости последнего часалобановский александр

Informações adicionais