Criptografia de ZIP
ZipCrypto: a cifra original do ZIP
A criptografia PKWARE tradicional é rápida e universalmente suportada, mas fraca pelos padrões modernos. Um ataque de texto claro conhecido de 1994 recupera seu estado interno sem tocar na senha, e é por isso que arquivos novos devem usar AES.
A cifra original do ZIP
ZipCrypto é o nome comumente dado ao método de criptografia tradicional que a PKWARE incorporou ao formato ZIP entre o fim dos anos 1980 e o início dos anos 1990. Por muitos anos, foi a única forma de proteger um ZIP com senha e, por fazer parte da especificação original, praticamente toda ferramenta de arquivamento consegue lê-lo. Esse suporte universal é a principal razão pela qual ele ainda é visto hoje, muito depois de suas fraquezas se tornarem bem compreendidas.
Você o verá com vários nomes. A especificação original da PKWARE o chama de criptografia tradicional; algumas ferramentas o rotulam como ZipCrypto, outras simplesmente como Standard ou Zip 2.0. Todos se referem à mesma cifra descrita aqui, então o rótulo que um programa específico mostra não muda como a proteção se comporta ou como é recuperada.
Como funciona
O ZipCrypto é uma cifra de fluxo. Ele mantém um pequeno estado interno de três valores de 32 bits, inicializado a partir da sua senha e depois continuamente atualizado usando a mesma função CRC-32 que o formato ZIP já usa para somas de verificação. Para cada byte de dados, o estado produz um byte pseudoaleatório, que é combinado com o texto claro para produzir o texto cifrado. A descriptografia executa o processo idêntico ao contrário.
Antes dos dados reais de uma entrada, o ZipCrypto acrescenta um cabeçalho de criptografia de 12 bytes. Esses doze bytes são criptografados como o restante da entrada e servem para aleatorizar ainda mais o estado da cifra, de modo que duas entradas protegidas com a mesma senha não produzam fluxos de chave idênticos.
A verificação rápida de senha
O cabeçalho de criptografia também fornece uma maneira rápida de rejeitar uma senha incorreta. Quando o cabeçalho é descriptografado, seu byte final, e em algumas versões os dois bytes finais, é comparado com um valor que a ferramenta já conhece. Normalmente esse valor é o byte mais significativo da soma de verificação CRC-32 da entrada. Quando o arquivo compactado foi gravado em fluxo e armazena sua soma de verificação em um descritor de dados ao final, é usado o byte alto do horário de modificação DOS do arquivo.
Essa verificação é apenas um filtro. Um único byte coincide por acaso aproximadamente uma vez a cada 256 tentativas, então, ao longo de uma busca longa, muitas senhas erradas também passam por ela. Uma ferramenta confiável confirma uma candidata sobrevivente descriptografando totalmente a entrada e verificando seu CRC-32. O ZipRecover faz isso com entradas de pelo menos 4 bytes armazenadas (Store) ou comprimidas com Deflate, o que cobre quase todos os arquivos; quando só uma entrada mais curta pode ser testada, o resultado informa que a senha passou apenas por uma verificação rápida. Ele não consegue confirmar uma entrada comprimida com outro método, como BZip2, LZMA ou Deflate64 (opções de ferramentas como o 7-Zip): nesses casos ele só compara o tamanho dos dados descriptografados com o tamanho registrado no arquivo, algo que dados comprimidos quase nunca igualam. Por isso, quando todas as entradas criptografadas usam um desses métodos, a busca normalmente termina sem resultado mesmo quando a senha certa é testada. A sequência completa é descrita em como funciona.
Rápido de testar, fraco por design
Como a configuração da chave é apenas uma passagem curta pela senha e pelo cabeçalho de 12 bytes, sem lentidão deliberada, as senhas do ZipCrypto podem ser testadas extremamente rápido. Uma máquina moderna pode tentar números muito grandes de candidatas por segundo. Essa velocidade é conveniente durante a recuperação, mas é também exatamente o que torna o esquema fraco: nenhum custo é imposto a quem quer tentar por tentativa e erro.
O problema mais profundo é estrutural. Em 1994, Eli Biham e Paul Kocher publicaram um ataque de texto claro conhecido sobre a cifra de fluxo do PKZIP. Se você conhece pelo menos 12 bytes de uma entrada criptografada como ela é armazenada, ou seja, depois de qualquer compressão, com 8 deles seguidos, o ataque pode recuperar o estado interno da cifra diretamente, sem tentar senha alguma. Esses bytes conhecidos existem quando um arquivo compactado contém um arquivo sem compressão com um cabeçalho previsível, ou um arquivo cuja cópia também existe em texto claro em outro lugar e pode ser comprimida de novo do mesmo jeito. Uma vez recuperado o estado interno, toda entrada criptografada com a mesma senha pode ser descriptografada.
Fraco não significa totalmente aberto
Um arquivo ZipCrypto não é legível por quem apenas o abre, e seu conteúdo não fica simplesmente exposto. Acontece que essa proteção é rasa: ela barra uma pessoa curiosa, não alguém determinado que tenha o texto claro conhecido certo.
Uma comparação, e uma recomendação
Propriedade por propriedade, a comparação completa entre ZipCrypto e WinZip AES está na visão geral de arquivos ZIP criptografados, e quão seguros são os ZIPs protegidos por senha explica o que essa diferença significa na prática.
Para qualquer arquivo novo, prefira o WinZip AES, que substitui a cifra de fluxo pelo AES, adiciona derivação de chave PBKDF2 lenta e autentica cada entrada com um HMAC. Se você está apenas tentando abrir um arquivo compactado que já possui, a velocidade do ZipCrypto joga a seu favor, e o ZipRecover detecta o esquema automaticamente quando você seleciona o arquivo.
Apenas uso autorizado
Use esta ferramenta apenas em arquivos ZIP que você possui ou está autorizado a acessar. Tentar abrir arquivos sem permissão pode violar as leis aplicáveis. Consulte nossa Política de Uso Aceitável e os Termos de Uso.
Perguntas frequentes
O ZipCrypto é seguro de usar?
É conveniente e universalmente suportado, mas criptograficamente fraco. Um ataque de texto claro conhecido de 1994 pode quebrá-lo quando se conhecem pelo menos 12 bytes de uma entrada como armazenada (já comprimida), 8 deles em sequência, por exemplo se você ainda tem uma cópia sem criptografia de um arquivo do seu próprio ZIP, e sua configuração de chave rápida não oferece resistência à tentativa e erro. Prefira o WinZip AES para novos arquivos.
Para que serve o cabeçalho de 12 bytes?
O ZipCrypto acrescenta um cabeçalho de criptografia de 12 bytes a cada entrada para aleatorizar o estado da cifra, de modo que entradas que compartilham uma senha não produzam fluxos de chave idênticos. Seu byte final também atua como uma verificação rápida de senha, derivada do CRC-32 da entrada ou, com um descritor de dados, do horário de modificação do arquivo.
Por que o ZipCrypto é tão mais rápido de testar do que o AES?
O ZipCrypto não tem alongamento de chave deliberado; configurar a chave é uma passagem curta pela senha e pelo cabeçalho. O WinZip AES executa 1000 iterações de PBKDF2 por tentativa, o que, na nossa medição com uma única thread, o tornou cerca de 375 vezes mais lento de testar (veja quanto tempo leva a recuperação).
Um byte de cabeçalho correspondente significa que a senha está correta?
Não com certeza. O byte de cabeçalho coincide por acaso aproximadamente uma vez a cada 256 tentativas, então é apenas um filtro. Em uma entrada de pelo menos 4 bytes armazenada (Store) ou comprimida com Deflate, o que cobre quase todos os arquivos, o ZipRecover confirma uma candidata descriptografando a entrada e verificando seu CRC-32 antes de informar a senha. Quando todas as entradas que ele pode testar têm menos de 4 bytes, essa verificação é curta o bastante para uma senha errada passar, então o resultado informa que a senha passou apenas por uma verificação rápida. Quando todas as entradas criptografadas usam outro método, como BZip2, LZMA ou Deflate64, o ZipRecover não consegue confirmar a senha, então a busca normalmente termina sem resultado mesmo quando a senha certa é testada.
Criptografia ZIP
Continue explorando este tema
Temas relacionados: Recuperação de senha ZIP Privacidade e processamento local
Pronto para recuperar sua senha de ZIP?
Tudo é executado localmente no seu navegador. Seu arquivo nunca sai do seu dispositivo.