Hay muchas suposiciones en tu pregunta, así que no creo que sea posible una respuesta general, pero intentaré explorarla un poco.
Supongo que ha cifrado el archivo usando el modo estándar "protegido por contraseña" que está integrado en las herramientas zip. No soy un experto en el formato de archivo zip, pero parece que no hay un estándar para qué cifrado utilizar; RC4
(cifrado de flujo) y DES
, 3DES
y AES
(cifrados de bloque) son todas opciones comunes. Para responder a esta pregunta, necesitaremos explorar cómo funcionan los cifrados de encriptación.
Cifras de flujo
RC4
es un cifrado de flujo, que de acuerdo con wikipedia , funciona así:
Un cifrado de flujo hace uso de una clave mucho más pequeña y conveniente, como 128 bits. Sobre la base de esta clave, genera una secuencia de claves pseudoaleatoria que se puede combinar con los dígitos de texto sin formato de manera similar al teclado de una sola vez.
Nunca he estudiado RC4
, pero tengo entendido que el cifrado se realiza de un byte a la vez mediante XOR'ing un byte de la secuencia de claves con un byte del texto sin formato.
Esto significa que, suponiendo que conozcas la clave, los 5 bytes que has manipulado se descifrarán y serán irrecuperables, pero todos los bytes antes y todos los bytes después de que se descifre bien.
Bloquear cifrados
Los cifrados de bloque funcionan de manera totalmente diferente a los cifrados de flujo. Es un poco más difícil de explicar, pero podemos ver el modo más común: cifrar el encadenamiento de bloques con esta imagen desde wikepedia :
Loimportanteatenerencuentaesqueeltextocifradoparaunbloquedadodependedeltextocifradodeesebloqueydelbloqueanterior.Porlotanto,estosecomportaengranmedidadelamismamaneraqueloscifradosdeflujoenquelosbytesquemodificó(yunbloquedespuésdeél)sedescifrarányseránirrecuperables,perotodoslosbytesantesdeélytodoslosbytesdespuésdequesedescifrebien.(gracias@dave_thompson_085)
Brutaforzandolacontraseña
Entérminosgenerales,amenosqueinviertalamutilación,losbytesquemutilóseránirrecuperables,perolosbytesantesydespuéssedescifraránbien(silosbytesdespuésdedescomprimirbiensonunahistoriadiferente,gracias@dave_thompson_085,peroyaquelacompresiónesnoestádiseñadoparalaseguridad,estoysegurodequeunbuenanalistaforensepodríaobtenerinformacióndeella).
Enelcontextodeunatacantequefuerzalaclavedecifrado(esdecir,lacontraseña),cifrarelencabezadozipenrealidadfacilitasutrabajo:todoloquedebenhaceresintentardescifrarconcontraseñasaleatoriashastaquelosprimerosbytessedescifrenaunelencabezadozipválido(oelencabezadodearchivodelprimerarchivoenelarchivosedescifraaunencabezadodearchivoválido).
¿Quéproblemaestástratandoderesolver?
El problema XY
Retrocediendo un paso, parece que desea mejorar el cifrado basado en contraseña de ZIP y posiblemente agregar una negación plausible inventando una técnica de ofuscación, o si desea poder revertirla, inventando una técnica de cifrado.
Como @TTT coloque en un comentario , no estoy seguro de que pueda hackear de forma convincente la negación plausible del sistema de cifrado de ZIP.
En cuanto a mejorarlo, ¿por qué no usar AES
y tirar (o no tirar) la llave? O, ¿por qué no omitir el uso del terrible cifrado basado en contraseña de ZIP y simplemente ejecutar el archivo .zip
a través de GPG
o openssl
o alguna otra herramienta mejor y más moderna que admita el cifrado de clave pública? (pista: el cifrado zip nativo fue un truco mal hecho cuando se escribió, y ahora es un truco desactualizado. Si desea una seguridad adecuada, ejecute el archivo zip a través de una herramienta adecuada en lugar de intentar rescatar el truco) .