Compresión de archivos de esteganografía

En un mundo con almacenamiento limitado y una necesidad inagotable de más espacio de almacenamiento, la compresión de datos se está convirtiendo en un problema muy necesario. Varios algoritmos para la compresión de datos pueden ser más conocidos (codificación Huffman, compresión LZW) y algunos algo más arcanos.

[Labunsky] decidió utilizar su conocimiento de la esteganografía para crear una forma completamente única de compresión de archivos, quizás una que podría ganar mayor notoriedad entre otros teóricos de la información.

La esteganografía se refiere al método de ocultar mensajes o archivos dentro de otro archivo, derivado de las palabras griegas steganos para "cubierto u oculto" y grafico escribir." La práctica ha existido durante siglos, desde escribir con tinta invisible hasta almacenar mensajes en pasteles de luna. Los métodos utilizados van desde ocultar mensajes en imágenes para evitar la censura hasta ocultar virus en archivos para causar masacres.

100% no [via xkcd]El programador explica que, dado que cada archivo es solo un fragmento de una secuencia, la observación de los archivos lleva a la conclusión de que la mayoría de los bits serán iguales en las mismas ubicaciones. En lugar de guardar todas las partes de un archivo, realizar modificaciones en el disco duro en algunos lugares puede ahorrar espacio de almacenamiento. Sin embargo, lo que es importante evitar es la pérdida de compresión del archivo, que puede destruir la calidad durante la etapa de compresión.

La técnica de compresión que terminaron implementando se basa en el algoritmo F5, que inserta datos binarios en archivos JPEG para reducir el espacio total de memoria. La compresión se usa libjpeg para decodificación y codificación JPEG, pcre para el soporte de expresiones regulares POSIX, y tinydir para el recorrido del sistema de archivos independiente de la plataforma. Una de las principales modificaciones fue ahorrar recursos de la computadora al deshabilitar el cifrado de permutación de contraseñas, que distribuye los datos de manera uniforme en muchos archivos.

Una advertencia: cambiar incluso un bit del archivo comprimido podría provocar la corrupción total de todos los datos almacenados, ¡así que úselo con precaución!

  • Lucas dice:

    Re: el comic xkcd.

    A veces, PNG está justificado. La mayoría de las personas intentan cargar las fotos de sus vacaciones como archivos PNG de 20 megabytes. Además, una buena compresión JPEG es indistinguible.

    • Homero Simpson dice:

      No se trata de que sea indistinguible, sino de obtener la máxima calidad para el tamaño de archivo más pequeño.

      Además, incluso si es indistinguible, sigue destruyendo información. Como dice el cómic xkcd, quédese con PNG para logotipos / etc. y JPEG para fotos reales.

      • Lucas dice:

        Los datos no son lo mismo que la información. Si no puede distinguir, se ha guardado toda la información relevante.

        • Lucas dice:

          La otra queja es la “pérdida generacional” en la que se pierden datos cada vez que se guarda el archivo nuevamente.

          Bueno, resulta que si guarda un JPEG de buena calidad, se necesitan unas cien generaciones antes de que aparezca.

      • Lucas dice:

        Y PNG realmente lo hace con algunos ruidos no correlacionados y características aleatorias. Todo lo que incluso _como_ una foto, como gráficos de juegos de computadora o capturas de pantalla en general, no se comprime muy bien. Se sentirá mejor con JPEG y el resultado será el mismo para casi todos los propósitos.

        Por ejemplo, escanear una página de un libro. ¿Qué compresión funciona mejor? Una respuesta ingenua sería "Es texto, entonces PNG". Intentalo. Haga ambas cosas y luego compare los resultados. El archivo PNG se hinchará terriblemente debido a que no hay diferencias visibles en la calidad.

        • Ken N dice:

          Si realiza un posprocesamiento muy simple (mejorar el contraste para saturar el blanco y negro, publicar, etc.), el archivo PNG será más pequeño.

        • Enero 42 dice:

          escanear una página de un libro. ¿Qué compresión funciona mejor?

          - TIFF ..

          • JCG dice:

            LOC

      • Cierto dice:

        No sé, para un logotipo, creo que SVG sería mejor que PNG. Porque puede extraerlo sin artefactos de píxeles (o artefactos de compresión que obtendría a través de JPEG).

        Siempre visualizo escenas naturales con pocos bordes nítidos de alto contraste - Joint Group of Photographic Experts (JPEG)
        Escenas artificiales creadas por el hombre con bordes nítidos de alto contraste - Gráficos de red portátiles (PNG)
        Algo que desea que tenga la capacidad de verse bien como, por ejemplo, un ícono de 32 × 32 e igualmente, digamos una resolución de 16K (15360 × 8640): Gráficos vectoriales escalables (SVG).

        • Ostraco dice:

          No conozco ningún foro que acepte SVG. Los otros estándares de imagen que hacen, generalmente JPG y, a veces, los demás.

    • Steven Clark dice:

      Por ejemplo, jpeg es realmente malo para el texto y el lineart, tanto de forma cualitativa como de compresión.

  • J. dice:

    Entonces, ¿solo almacena la información de un archivo en los coeficientes de Fourier más pequeños de muchos archivos jpeg? No está del todo claro a partir de este o del artículo vinculado.

    ¿Qué plantea la pregunta obvia, si es así, cuánto espacio ahorraría si simplemente comprimiera más los jpegs?

  • Tux2000 dice:

    ¡Oye, buenas noticias! Nuevo compresor con mayores velocidades de compresión. Y puedo hacerlo aún mejor, con unas pocas líneas de script de shell. Más rápido, mejor compresión y resultado garantizado:

    #! / bin / sh
    echo -nx> salida.lossyzip

    El tamaño de salida no superará los 8 bits, incluso cuando se proporcionen gigabytes de datos.
    El tiempo de ejecución es constante, incluso cuando se proporciona con gigabytes de datos.
    Solo hay dos casos de borde: una entrada de longitud cero desperdicia 8 bits y, por alguna extraña razón, si una entrada consta de una sola "x", no se comprimirá en absoluto.
    Y a diferencia de esa divertida herramienta, mi compresor tiene una tasa de éxito de casi el 100% en datos dañados.

  • sin nombre dice:

    este cómic es 100% non-xkcd.

    • Tú quieres dice:

      Este se parece al autor:

      http://lbrandy.com/blog/2008/10/my-first-and-last-webcomic/

    • cráter dice:

      Exactamente lo que pensaba ...

  • svofski dice:

    El texto en su publicación central es dolorosamente legible, parece traducido automáticamente. ¿Alguien podría resumirlo en unas pocas oraciones legibles en uno de los lenguajes humanos comunes?

    • Jonathan dice:

      Ciertamente ...

      Es una forma de deduplicación muy complicada e ineficaz.

      • svofski dice:

        Gracias Jonathan, eso resume muy bien el artículo.

      • tof dice:

        ¡Gracias !, es claro como el agua de una roca;)

  • Ostraco dice:

    "Una advertencia: cambiar incluso un bit del archivo comprimido podría provocar la corrupción total de todos los datos almacenados, ¡así que tenga cuidado!"

    Mi reino por un rato.

    • Bobbymac99 dice:

      Mi risa del día. Se compara con los viejos discos de 8 pulgadas, que tendrían una sola lectura con un CRC malo y fallarían todo el disco. Ahhh, los viejos tiempos. Pero este nuevo trae buenos recuerdos de una primavera perdida y días de trabajo; no puedo esperar.

  • magia efervescente dice:

    Esta técnica es casi exactamente idéntica a simplemente guardar el JPEG con una calidad inferior, lo que (¡ta-da!) También hace que el archivo sea más pequeño.

    La esteganografía F5 funcionó reduciendo los valores absolutos de los coeficientes DCT a cero. Esto tenía la intención de dificultar la detección (aunque la detección resultó ser bastante fácil), pero también tuvo el efecto secundario de aumentar la compresión del archivo a expensas de la calidad de la imagen.

    Lo siento, pero lo que han hecho estos investigadores es como demostrar que el agua está húmeda.

    • Labunsky dice:

      En realidad, no es lo mismo: los cambios de densidad son mucho más pequeños. Pero todo lo demás está completamente bien. Esta fue una forma divertida y original (¿alguna vez has oído hablar de algo como esto?) Forma de explotar el "agua húmeda" 🙂

  • Andrew Hooper dice:

    En el momento de llamar a módems y faxes, una empresa publicó un programa realmente agradable que se usaba para codificar documentos grandes e insertar los datos en una imagen. A continuación, puede imprimir la imagen, enviarla por fax a alguien que la escaneará y utilizará el programa en el otro extremo para recuperar los datos. Jugué con la aplicación varias veces y funcionó bien, considerando los límites que se impusieron con el marcado en el día y el hecho de que se le cobró por la transferencia de datos y las llamadas locales eran gratuitas, pudimos enviar archivos de esta manera a una fracción del costo de enviar el mismo archivo por correo electrónico. Se volvió aún más fácil cuando tenía un módem que manejaba un fax y podía enviar el fax directamente a otra persona.
    IIRC es alrededor de 1984 jugamos con este concepto.

    • Gregg Eshelman dice:

      Se llamó "FAX 3D". Los mejores resultados se obtuvieron con un módem de FAX para enviar a otro módem de FAX de modo que la transmisión sea en TIFF puro de 1 bit.

      Todavía sería útil enviar archivos a lugares sin conexión a Internet y sin un servicio de telefonía móvil. Podría mantener todos sus documentos de procesamiento de texto fuera de línea e imposibles de copiar por medios digitales, y aún así poder escanearlos y hacer cambios y luego imprimirlos como imágenes de FAX 3D en papel.

  • StephaneAG dice:

    después de leer el artículo anterior, esto me recordó una jugada que hice hace algún tiempo durante el desenfoque de los monitores EDID (principalmente para cambiar los datos existentes y actualizar la suma de comprobación, después de anular un código encontrado en línea para extraer dichos datos, es decir: mes de fabricación y año, nombre, razón social, s / n, ..)

    Para los lectores con tendencia a la esteganografía, aquí hay algo de diversión: ¿podrán descifrar lo siguiente?

    0x1d 0x0e 0x0f

    sugerencias: para asegurarse de que su decodificación sea correcta, la decodificación de las siguientes cosas debería devolver lo mismo que "0x1d 0x0e 0x0f"
    0x1c 0x0d 0x4e
    0x1b 0x0c 0x8d
    0x1a 0x0b 0xcc
    0x19 0x4a 0x0b
    0x18 0x49 0x4a
    0x17 0x48 0x89
    0x16 0x47 0xc8
    0x15 0x86 0x07
    0x14 0x85 0x46
    0x13 0x84 0x85
    0x12 0x83 0xc4
    0x11 0xc2 0x03
    0x10 0xc1 0x42

    ; pag

    Además, si alguien tiene un truco de piratería en mente para "almacenar" 2 números de [0..27] dentro de un número de [0..255], no dudes en responder 🙂

  • reg dice:

    "El programador explica que debido a que cada archivo es solo un fragmento de una secuencia, la observación de los archivos lleva a la conclusión de que la mayoría de los bits serán iguales en las mismas ubicaciones".

    ¿De qué diablos están hablando? Sí, cada archivo es una secuencia de bits, pero todavía encontré "que la mayoría de los bits coincidirán en los mismos sitios".

    Suena más como si estuvieran hablando de un sistema de control de revisión que mantiene los cambios como diferencias.

    Me cuesta creer que el motor de compresión jpeg (1) pueda devolverle los datos que ingresó y (2) procesar de manera efectiva lo que en realidad son datos aleatorios, porque depende de encontrar elementos en las imágenes. que se presentan como datos que se pueden simplificar. Está configurado para un tipo específico de entrada. Sospecho que si encuadrara los datos de audio para poder proporcionarlos con jpeg, el archivo resultante no sonaría realmente bien. También sospecho que si enmarca datos gráficos y usa mp3 para comprimirlos, no se vería realmente bien. Sería interesante verlo y escucharlo, pero aunque jpeg y mp3 hacen cosas similares tanto como usar compresión con pérdida para reducir archivos, creo que hacen diferentes suposiciones sobre qué datos de entrada se pueden simplificar o eliminar. Si recuerdo correctamente, un zip para compresión sin pérdidas tenía algunos trucos diferentes que podía realizar, algunos de ellos específicos para un tipo de archivo.

Nora Prieto
Nora Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.