Cifrado ZIP
ZipCrypto: el cifrador ZIP original
El cifrado tradicional de PKWARE es rápido y compatible universalmente, pero débil según los estándares modernos. Un ataque de texto plano conocido de 1994 recupera su estado interno sin tocar la contraseña, y por eso los archivos nuevos deberían usar AES.
El cifrador ZIP original
ZipCrypto es el nombre que se le suele dar al método de cifrado tradicional que PKWARE integró en el formato ZIP entre finales de los años ochenta y principios de los noventa. Durante muchos años fue la única forma de proteger un ZIP con contraseña y, como forma parte de la especificación original, prácticamente cualquier herramienta de archivado puede leerlo. Ese soporte universal es la razón principal por la que todavía se ve hoy, mucho después de que sus debilidades se entendieran bien.
Lo verás con varios nombres. La especificación original de PKWARE lo llama cifrado tradicional; algunas herramientas lo etiquetan como ZipCrypto, otras simplemente Standard o Zip 2.0. Todos se refieren al mismo cifrador descrito aquí, así que la etiqueta que muestre un programa concreto no cambia cómo se comporta la protección ni cómo se recupera.
Cómo funciona
ZipCrypto es un cifrador de flujo. Mantiene un pequeño estado interno de tres valores de 32 bits, inicializado a partir de tu contraseña y luego actualizado continuamente usando la misma función CRC-32 que el formato ZIP ya usa para sumas de comprobación. Por cada byte de datos, el estado produce un byte pseudoaleatorio, que se combina con el texto plano para producir el texto cifrado. El descifrado ejecuta el proceso idéntico a la inversa.
Antes de los datos reales de una entrada, ZipCrypto antepone una cabecera de cifrado de 12 bytes. Esos doce bytes se cifran como el resto de la entrada y sirven para aleatorizar aún más el estado del cifrador, de modo que dos entradas protegidas con la misma contraseña no produzcan flujos de clave idénticos.
La comprobación rápida de contraseña
La cabecera de cifrado también proporciona una forma rápida de rechazar una contraseña incorrecta. Cuando se descifra la cabecera, su último byte, y en algunas versiones los dos últimos bytes, se compara con un valor que la herramienta ya conoce. Normalmente ese valor es el byte más significativo del CRC-32 de la entrada. Cuando el ZIP se escribió en modo de flujo y almacena su suma de comprobación en un descriptor de datos final, se usa en su lugar el byte alto de la hora de modificación DOS de la entrada.
Esta comprobación es solo un filtro. Un único byte coincide por azar aproximadamente una vez de cada 256 intentos, así que en una búsqueda larga también la pasan muchas contraseñas incorrectas. Una herramienta fiable confirma una candidata superviviente descifrando por completo la entrada y verificando su CRC-32. ZipRecover lo hace con las entradas de al menos 4 bytes guardadas sin compresión (Store) o comprimidas con Deflate, lo que cubre casi todos los ZIP; cuando solo puede probar una entrada más corta, el resultado indica que la contraseña solo superó una comprobación rápida. No puede confirmar una entrada comprimida con otro método, como BZip2, LZMA o Deflate64 (opciones de herramientas como 7-Zip): en esos casos solo compara la longitud descifrada con el tamaño que figura en el ZIP, con el que una entrada comprimida casi nunca coincide. Por eso, cuando todas las entradas cifradas usan uno de esos métodos, la búsqueda suele terminar sin resultado aunque se pruebe la contraseña correcta. La secuencia completa se describe en cómo funciona.
Rápido de probar, débil por diseño
Como la preparación de la clave es solo una pasada corta sobre la contraseña y la cabecera de 12 bytes, sin ralentización deliberada, las contraseñas de ZipCrypto pueden probarse con extrema rapidez. Una máquina moderna puede probar cantidades muy grandes de candidatas por segundo. Esa velocidad es cómoda durante la recuperación, pero es también exactamente lo que hace débil al esquema: no se impone ningún coste a quien quiera adivinar.
El problema más profundo es estructural. En 1994, Eli Biham y Paul Kocher publicaron un ataque de texto plano conocido sobre el cifrador de flujo de PKZIP. Si conoces al menos 12 bytes de una entrada cifrada tal como se guarda, es decir, después de cualquier compresión, con 8 de ellos seguidos, el ataque puede recuperar el estado interno del cifrador directamente, sin probar contraseñas en absoluto. Esos bytes conocidos existen cuando un ZIP contiene un archivo sin comprimir con una cabecera predecible, o un archivo cuya copia también existe sin cifrar en otro lugar y puede volver a comprimirse del mismo modo. Una vez recuperado el estado interno, puede descifrarse toda entrada cifrada con la misma contraseña.
Débil no significa abierto de par en par
Un archivo ZipCrypto no es legible por un observador casual, y su contenido no queda simplemente expuesto. La cuestión es que la protección es endeble: resiste a una persona curiosa, no a una decidida que disponga del texto plano conocido adecuado.
Una comparación y una recomendación
Propiedad por propiedad, la comparación completa de ZipCrypto y WinZip AES está en la introducción a los archivos ZIP cifrados, y qué seguridad tienen los ZIP protegidos con contraseña explica qué significa esa brecha en la práctica.
Para cualquier archivo nuevo, prefiere WinZip AES, que sustituye el cifrador de flujo por AES, añade una derivación de clave lenta con PBKDF2 y autentica cada entrada con un HMAC. Si solo intentas abrir un archivo que ya tienes, la velocidad de ZipCrypto juega a tu favor, y ZipRecover detecta el esquema automáticamente cuando eliges el archivo.
Solo uso autorizado
Usa esta herramienta solo en archivos ZIP que te pertenecen o que estás autorizado a abrir. Intentar abrir archivos sin permiso puede infringir las leyes aplicables. Consulta nuestra Política de uso aceptable y las Condiciones de uso.
Preguntas frecuentes
¿Es seguro usar ZipCrypto?
Es cómodo y compatible universalmente, pero criptográficamente débil. Un ataque de texto plano conocido de 1994 puede romperlo cuando se conocen al menos 12 bytes de una entrada tal como se guarda (ya comprimida), 8 de ellos seguidos, por ejemplo si aún tienes una copia sin cifrar de un archivo de tu propio ZIP, y su preparación rápida de clave no ofrece resistencia a la adivinación. Prefiere WinZip AES para archivos nuevos.
¿Para qué sirve la cabecera de 12 bytes?
ZipCrypto antepone una cabecera de cifrado de 12 bytes a cada entrada para aleatorizar el estado del cifrador, de modo que las entradas que comparten contraseña no produzcan flujos de clave idénticos. Su último byte también actúa como una comprobación rápida de contraseña, derivada del CRC-32 de la entrada o, con un descriptor de datos, de la hora de modificación del archivo.
¿Por qué ZipCrypto es mucho más rápido de probar que AES?
ZipCrypto no tiene estiramiento de clave deliberado; preparar la clave es una pasada corta sobre la contraseña y la cabecera. WinZip AES ejecuta 1000 iteraciones de PBKDF2 por conjetura, lo que en nuestra medición con un solo hilo lo hizo unas 375 veces más lento de probar (consulta cuánto tarda la recuperación).
¿Un byte de cabecera coincidente significa que la contraseña es correcta?
No con certeza. El byte de cabecera coincide por azar aproximadamente una vez de cada 256 intentos, así que es solo un filtro. En una entrada de al menos 4 bytes guardada sin compresión (Store) o comprimida con Deflate, lo que cubre casi todos los ZIP, ZipRecover confirma una candidata descifrando la entrada y comprobando su CRC-32 antes de mostrar la contraseña. Cuando todas las entradas que puede probar miden menos de 4 bytes, esa comprobación es tan corta que una contraseña incorrecta puede superarla, así que el resultado indica que la contraseña solo superó una comprobación rápida. Cuando todas las entradas cifradas usan otro método, como BZip2, LZMA o Deflate64, ZipRecover no puede confirmar la contraseña, así que la búsqueda suele terminar sin resultado aunque se pruebe la contraseña correcta.
Cifrado ZIP
Sigue explorando este tema
Temas relacionados: Recuperación de contraseñas ZIP Privacidad y procesamiento local
¿Todo listo para recuperar tu contraseña ZIP?
Se ejecuta localmente en tu navegador. Tu archivo nunca sale de tu dispositivo.