debianopenssl
Chaves privadas vulneráveis ao bug do OpenSSL do Debian (CVE-2008-0166)
Em 2008, um bug no pacote OpenSSL do Debian e Ubuntu gerou chaves privadas previsíveis.
Embora o número de chaves seja limitado, algumas considerações são necessárias para criar uma lista
adequada de todas as chaves plausivelmente afetadas. Este repositório contém as chaves usadas para a
lista de bloqueio na ferramenta badkeys.
Notas sobre o bug do OpenSSL do Debian:
- As chaves dependem do ID do processo (PID). PIDs válidos variam de 0 a 32767. Chaves
criadas com PID 0 são improváveis, mas estão incluídas. Em plataformas de 64 bits, é
possível configurar o kernel para permitir PIDs maiores, mas isso é improvável.
- As chaves da ferramenta de linha de comando openssl e do ssh-keygen do OpenSSH são diferentes.
- As chaves geradas com os comandos genrsa e req do openssl são as mesmas.
- O openssl cria chaves diferentes dependendo se o arquivo .rnd está presente ou ausente
no diretório home.
- Sem o arquivo .rnd, versões mais antigas (ex.: 0.9.8c do etch) e mais recentes (ex.: 0.9.8g do lenny)
do openssl produzem chaves diferentes.
- O ssh-keygen não cria chaves RSA de 512 bits (768 é o tamanho mínimo).
- O openssl suporta alterar o valor do expoente para 3, mas isso não altera o
módulo. Portanto, apenas chaves com o valor de expoente padrão estão incluídas. Ao
criar uma lista de bloqueio, é recomendado verificar o módulo e não a
chave completa.
- O ssh-keygen só suporta chaves DSA com tamanho de 1024 bits.
- Gerar chaves DSA com o openssl é um processo de duas etapas (primeiro gerando parâmetros,
depois a chave), portanto o número de chaves possíveis é muito maior. Elas não são
consideradas aqui, pois o uso de chaves DSA em SSL/TLS nunca foi comum.
- As chaves criadas nas arquiteturas big endian PowerPC, SPARC e HPPA são idênticas.
- As chaves criadas em MIPS são diferentes. No entanto, dado o uso raro dessa plataforma, elas
não são consideradas.
- As chaves de curva elíptica / ECDSA são suportadas pelo openssl, mas não pelo openssh. Um grande
número de curvas possíveis é suportado, mas apenas as curvas NIST P-256 e P-384 são
comumente usadas em certificados TLS.
Este repositório atualmente inclui:
- Chaves RSA com 1024, 2048, 3072 e 4096 bits.
- Chaves DSA com 1024 bits (apenas openssh).
- Chaves ECDSA com as curvas P-256 e P-384 (apenas openssl).
- Criadas com PIDs de 0 a 32767.
- Chaves criadas tanto com openssl quanto com ssh-keygen (diretórios ssl/ssh).
- Chaves criadas em arquiteturas little endian de 32 bits (x86) e 64 bits (amd64) e arquiteturas
big endian comuns de 32 bits (PowerPC/SPARC/HPPA).
- Todas as três variações do openssl (com/sem .rnd, versões antiga/nova).
Não inclui tamanhos de chave incomuns, valores de PID não padrão, valores de expoente não padrão,
chaves criadas em MIPS, ou chaves DSA criadas com openssl.
A estrutura de diretórios é:
rsa2048
ssl
le32
$pid-rnd.key
$pid-nornd-old.key
$pid-nornd-new.key
le64...
be32...
ssh
le32
$pid.key
le64...
be32...
rsa...
dsa1024
ssh
...
ecp256
ssl
...
links