Antes de abrir, recuperar ou reproteger um arquivo ZIP, ajuda saber exatamente o que você tem em mãos: se ele está criptografado ou não e, em caso afirmativo, com qual esquema. Uma solicitação de senha responde à primeira pergunta, mas não à segunda, e um arquivo pode ser comprimido sem ser criptografado.
Sinais rápidos de que um ZIP está criptografado
- Extraí-lo solicita uma senha.
- Algumas ferramentas mostram um ícone de cadeado, ou uma coluna “criptografado”, ao lado das entradas.
- Uma tentativa de abrir um arquivo falha com uma mensagem sobre senha errada ou ausente.
Qualquer um desses sinais confirma a criptografia. Nenhum deles diz qual esquema está em uso, e essa distinção decide o quanto o conteúdo está protegido e como será uma tentativa de recuperação.
Criptografado não é o mesmo que comprimido
Todo ZIP comprime, ou pelo menos armazena, suas entradas. Compressão não é proteção: um ZIP meramente comprimido abre para qualquer pessoa com qualquer ferramenta de ZIP, enquanto a criptografia é uma camada separada aplicada por cima, e só essa camada pede uma senha. O tamanho de um arquivo, ou o fato de ele estar claramente comprimido, não diz nada sobre estar criptografado.
O que o próprio formato revela
O cabeçalho de cada entrada registra se ela está criptografada e como, então a estrutura resolve a questão mesmo quando a interface do compactador não resolve.
O sinalizador de criptografia
Toda entrada tem um sinalizador de bits de uso geral (general purpose bit flag), e seu bit mais baixo é ativado quando essa entrada está criptografada. Se esse bit estiver desativado em todas as entradas, o arquivo não está protegido de forma alguma, independentemente do que o nome do arquivo sugira.
Marcadores do ZipCrypto
Uma entrada ZipCrypto tem o bit de criptografia ativado, mas, no restante, usa um método de compressão comum, e antepõe um cabeçalho de criptografia de 12 bytes aos seus dados. A pista está no que falta: não há campo extra de AES para encontrar. Uma entrada criptografada que, fora isso, parece comum é ZipCrypto.
Marcadores do WinZip AES
Uma entrada AES é mais distinta:
- Seu método de compressão é registrado como 99, um espaço reservado que significa “procure o método real no campo extra do AES”.
- Ela carrega um campo extra com o identificador 0x9901.
- Dentro desse campo, um byte de força contém 1, 2 ou 3 (ou seja, AES-128, AES-192 ou AES-256), e um campo de versão separado de dois bytes indica se a entrada usa a variante AE-1 ou AE-2.
| Marcador | ZipCrypto | WinZip AES |
|---|---|---|
| Bit de criptografia ativado | Sim | Sim |
| Método de compressão | Normal (armazenado ou deflate) | 99 |
| Campo extra 0x9901 | Ausente | Presente |
| Registra a força da chave | Não | Sim (byte de força 1, 2 ou 3 = AES-128, -192, -256) |
AE-1 versus AE-2
O byte de variante no campo extra do AES distingue dois formatos intimamente relacionados que compartilham a mesma criptografia. No AE-1, o campo CRC-32 armazenado da entrada ainda contém a soma de verificação real dos dados não comprimidos, o que permite uma verificação de integridade contra o original. O AE-2 zera esse campo. O código de autenticação HMAC já garante a integridade, e um CRC armazenado poderia vazar uma pequena quantidade de informação sobre o conteúdo oculto. Ambas as variantes usam o mesmo tamanho de chave AES e a mesma derivação PBKDF2, então a escolha afeta detalhes de verificação e não a força da própria criptografia.
Ferramentas que relatam a criptografia
Listagens detalhadas expõem os mesmos campos sem um editor hexadecimal.
- Linha de comando: zipinfo -v (ou unzip -Z -v) mostra o sinalizador de criptografia e o método de compressão de cada entrada, e o 7z l -slt do 7-Zip lista um método de criptografia para cada arquivo. O unzip -l sozinho lista apenas nomes.
- A versão gráfica do 7-Zip mostra uma coluna de método de criptografia quando você abre o arquivo.
- No macOS, o Utilitário de Arquivo integrado solicita uma senha em arquivos ZipCrypto, mas não consegue abrir entradas WinZip AES (falha com um erro); o comando zipinfo revela os sinalizadores em ambos os casos.
- Um detector local: você pode abrir o arquivo em uma ferramenta de navegador que o analisa no dispositivo e nomeia o esquema para você. Nosso guia sobre arquivos ZIP criptografados explica o que esse relatório significa, e a análise acontece localmente, então o arquivo não é enviado.
Por que os nomes dos arquivos ainda podem estar visíveis
Muitas vezes você consegue listar o conteúdo de um ZIP criptografado sem a senha, o que surpreende muita gente. É assim que o formato funciona. A criptografia padrão do ZIP criptografa os dados de cada entrada, mas deixa o diretório central legível, de modo que nomes, tamanhos e datas permanecem visíveis mesmo quando o conteúdo está bloqueado. Se esses nomes são, por si só, sensíveis, o formato ZIP simples não é suficiente sozinho.
Conhecer o esquema orienta o seu próximo passo
- Com ZipCrypto, trate o conteúdo como levemente protegido e considere recriptografar com AES. Os mecanismos e as fraquezas são abordados em ZipCrypto explicado.
- Um arquivo AES está fortemente protegido, e qualquer tentativa de recuperação será lenta por design. Nossa visão geral sobre criptografia AES explica por que isso é intencional.
- Seja qual for o esquema, se o arquivo é seu e você perdeu a senha, pode tentar a recuperação local a partir da página de recuperação.
Identifique e recupere apenas arquivos que você possui ou está autorizado a acessar; essa regra vale para cada passo acima.
Fontes
- PKWARE, .ZIP File Format Specification (APPNOTE.TXT). A seção 4.4.4 define o sinalizador de bits de uso geral (general purpose bit flag) (o bit 0 marca uma entrada criptografada); a seção 6.1 documenta a criptografia tradicional da PKWARE.
- WinZip, especificação de criptografia AES (AE-1 e AE-2). Método 99, campo extra 0x9901, byte de força, comprimentos do sal, PBKDF2-HMAC-SHA1 com 1000 iterações, valor de verificação de 2 bytes e HMAC-SHA1 de 10 bytes.
- 7-Zip. Compactador gratuito e de código aberto; seu menu de criptografia ZIP oferece ZipCrypto e AES-256.
- Manual do zipinfo(1) do Info-ZIP. Listagem em linha de comando do método de compressão e do estado de criptografia de cada entrada.