89
Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica TRABAJO DE DIPLOMA Diseño de un Algoritmo Esteganográfico Robusto ante la Compresión JPEG Autor: Yohanner Carrete Marrero Tutor: Msc. Samuel Montejo Sánchez Santa Clara 2009 "Año del 50 aniversario del triunfo de la Revolución"

Diseño de un Algoritmo Esteganográfico Robusto ante la

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diseño de un Algoritmo Esteganográfico Robusto ante la

Universidad Central “Marta Abreu” de Las Villas

Facultad de Ingeniería Eléctrica

Departamento de Telecomunicaciones y Electrónica

TRABAJO DE DIPLOMA

Diseño de un Algoritmo Esteganográfico Robusto ante la

Compresión JPEG

Autor: Yohanner Carrete Marrero

Tutor: Msc. Samuel Montejo Sánchez

Santa Clara

2009

"Año del 50 aniversario del triunfo de la Revolución"

Page 2: Diseño de un Algoritmo Esteganográfico Robusto ante la

Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central

“Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad

de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea

utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial

como total y que además no podrá ser presentado en eventos, ni publicados sin autorización

de la Universidad.

Firma del Autor

Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de

la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un

trabajo de esta envergadura referido a la temática señalada.

Firma del Autor Firma del Jefe de Departamento

donde se defiende el trabajo

Firma del Responsable de

Información Científico-Técnica

Page 3: Diseño de un Algoritmo Esteganográfico Robusto ante la

i

PENSAMIENTO

“Sólo se ve bien con el corazón; lo esencial es invisible a los ojos…”

Antoine de Saint Exupery.

Page 4: Diseño de un Algoritmo Esteganográfico Robusto ante la

ii

DEDICATORIA

A mis padres, a mi hermano, a mi abuela y a toda mi familia que me

han apoyado incondicionalmente en cada momento de mi vida.

A todos ustedes….

Page 5: Diseño de un Algoritmo Esteganográfico Robusto ante la

iii

AGRADECIMIENTOS

A mi tutor Samuel, a mis amigos Yohansy, Yulien y Daineris, que sin

su ayuda no hubiera sido posible, a todos mis amigos y profesores que

han intervenido de muchas formas en mi desarrollo intelectual y

profesional…

¡Muchas gracias…!

Page 6: Diseño de un Algoritmo Esteganográfico Robusto ante la

iv

TAREA TÉCNICA

1. Realizar un estudio detallado de las principales técnicas esteganográficas existentes y hacer un análisis detallado de los parámetros fundamentales que las caracterizan.

2. Estudiar las técnicas de compresión de imágenes más utilizadas.

3. Profundizar en el software MATLAB, para usarlo en el diseño e implementación de un mecanismo esteganográfico.

4. Encontrar una técnica adecuada que permita recuperar la información perdida ante la compresión JPEG.

5. Utilizar técnicas de codificación, que mediante el uso de redundancia incremente la robustez del esteganograma ante el ruido.

6. Diseñar un conjunto de pruebas que puedan ser aplicados a la estegoimagen y al esteganograma con el objetivo de validar el algoritmo.

7. Confrontar los resultados durante el período de pruebas con los obtenidos por otros mecanismos esteganográficos ya existentes.

8. Documentar la investigación y la herramienta estaganográfica implementada, para facilitar la comprensión por parte de los interesados en el tema, extendiendo así su valor teórico-practico.

Firma del Autor Firma del Tutor

Page 7: Diseño de un Algoritmo Esteganográfico Robusto ante la

v

RESUMEN

En la presente investigación se implementa con el empleo de la herramienta MATLAB un

esquema de enmascaramiento de datos usando imágenes digitales, donde el mensaje secreto

es ocultado en el dominio de la DCT, pudiendo este mensaje ser extraído desde la

estegoimagen, aún después de realizar una compresión JPEG. Además de la robustez ante

la compresión, la distorsión causada por el ocultamiento de datos es mínima, ya que el

PSNR del esteganograma es mayor que 30 dB. Para aumentar los niveles de robustez y

seguridad del mensaje secreto al transmitirse por un canal de comunicación no ideal,

introducimos un codificador de Hamming (7,4), capaz de corregir errores simples.

Page 8: Diseño de un Algoritmo Esteganográfico Robusto ante la

vi

TABLA DE CONTENIDOS

PENSAMIENTO .....................................................................................................................i

DEDICATORIA .................................................................................................................... ii

AGRADECIMIENTOS........................................................................................................ iii

TAREA TÉCNICA................................................................................................................iv

RESUMEN .............................................................................................................................v

INTRODUCCIÓN ..................................................................................................................1

Estructura del informe: .......................................................................................................3

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y

CODIFICACIÓN…................................................................................................................5

1.1 Generalidades...............................................................................................................5

1.1.1 Definición .............................................................................................................5

1.1.2 Objetivo ................................................................................................................5

1.1.3 Evolución ..............................................................................................................5

1.2 Esteganografía en la era digital...................................................................................6

1.2.1 Bases de la esteganografía actual..........................................................................6

1.2.2 Estegosistemas: descripción y características.......................................................7

1.3 Compresión de imágenes ..........................................................................................13

1.3.1 Características de la imagen ...............................................................................13

1.3.2 Redundancia........................................................................................................14

1.3.3 Clasificación .......................................................................................................15

1.4 Codificación en palabras binarias y detección de error ............................................17

1.4.1 Detección y corrección de errores ......................................................................17

1.4.1.1 Método de Hamming ...................................................................................18

1.4.1.2 Código de Hamming (7,4): Características..................................................19

Page 9: Diseño de un Algoritmo Esteganográfico Robusto ante la

vii

1.5 Puntos fundamentales del capítulo ...........................................................................22

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO

ANTE LA COMPRESIÓN JPEG.........................................................................................23

2.1 Compresión en JPEG................................................................................................24

2.1.1 Características Generales del Estándar ...............................................................24

2.1.2 Esquema compresor JPEG:.................................................................................24

2.2 Herramienta MATLAB.............................................................................................34

2.3 Descripción del algoritmo propuesto........................................................................35

2.3.1 Proceso de inserción ...........................................................................................38

2.3.2 Proceso de extracción .........................................................................................41

2.4 Conclusiones del capítulo .........................................................................................42

CAPÍTULO 3. ANÁLISIS DE LOS RESULTADOS ......................................................43

3.1 Criterios de evaluación .............................................................................................43

3.2 Ataque Compresión JPEG ........................................................................................45

3.3 Ataque Ruido Impulsivo...........................................................................................50

3.4 Conclusiones del método ..........................................................................................52

CONCLUSIONES Y RECOMENDACIONES ...................................................................53

Conclusiones.....................................................................................................................53

Recomendaciones .............................................................................................................54

REFERENCIAS BIBLIOGRÁFICAS .................................................................................55

GLOSARIO DE TÉRMINOS ..............................................................................................59

ANEXOS ..............................................................................................................................61

Anexo I Historia de la esteganografía.........................................................................61

Anexo II Codificación de texto ....................................................................................62

Anexo III Función BER.................................................................................................65

Page 10: Diseño de un Algoritmo Esteganográfico Robusto ante la

viii

Anexo IV Función Imperceptibilidad............................................................................66

Anexo V Proceso de inserción del algoritmo esteganográfico.....................................67

Anexo VI Proceso de extracción del algoritmo esteganográfico...................................73

Page 11: Diseño de un Algoritmo Esteganográfico Robusto ante la

INTRODUCCIÓN 1

INTRODUCCIÓN

A través de los años, la historia ha proporcionado innumerables situaciones en las cuales la

información ha tenido que atravesar un territorio hostil para alcanzar su destino. Por este

motivo, se han utilizado muchos métodos ingeniosos para ocultar la información, entre los

que se destaca la esteganografía, un arte antiguo que consiste en ocultar información, de

forma tal que solo el emisor y el receptor conozcan de la existencia del mensaje oculto.

En la actualidad, la comunicación por Internet se ha convertido en parte integral de la

infraestructura del mundo contemporáneo. La información llega en numerosas formas y es

usada en muchas aplicaciones. Las tecnologías digitales nos dan nuevas maneras para

aplicar técnicas esteganográficas, tales como el ocultamiento de información en imágenes

digitales. El principal objetivo de los sistemas esteganográficos y en especial de la

esteganografía en imágenes digitales, es garantizar la total imperceptibilidad del mensaje

oculto. Con este propósito se han desarrollado diversas técnicas con alto grado de

complejidad y éxito, pero ninguna es totalmente invulnerable debido al continuo desarrollo

de técnicas de estegoanálisis, orientadas a quebrantar la seguridad de estas y a la extracción

del mensaje oculto.

Generalmente las técnicas esteganográficas espaciales permiten una alta capacidad de

inserción y una baja imperceptibilidad, sin embargo son vulnerables a ligeras

modificaciones de la imagen como la compresión y a la extracción de la información por

personas no autorizadas.

Debido a la gran importancia que ha adquirido el estudio de esta ciencia en la actualidad,

este trabajo surge con motivo de documentar y realizar una descripción del diseño e

Page 12: Diseño de un Algoritmo Esteganográfico Robusto ante la

INTRODUCCIÓN 2

implementación de un algoritmo esteganográfico capaz de ocultar información en imágenes

digitales de forma imperceptible, segura y que sea robusto ante la compresión de imágenes,

en especial la compresión JPEG, uno de los formatos de imágenes digitales comprimidas

más usado en nuestros días.

Situación Problémica:

¿Cómo implementar un mecanismo estaganográfico lo suficientemente robusto ante la

compresión de imagenes JPEG?.

Objetivos General:

Diseñar, implementar y validar un mecanismo esteganográfico robusto ante la compresión

de imágenes JPEG.

Objetivos específicos:

1. Estudiar las técnicas de esteganografía digital con imágenes.

2. Realizar un análisis de las características fundamentales de los estegosistemas, para definir pautas de clasificación y comparación de los esquemas que intervienen.

3. Investigar las técnicas de compresión de imágenes más usadas.

4. Analizar cantidad de información que se pierde en el proceso de compresión de imágenes digitales, específicamente la compresión JPEG.

5. Estudiar métodos de codificación que permitan recuperar información perdida o cambiada e incrementen la robustez del esteganograma ante el ruido; tomando en cuenta la razón de código y su incidencia en la capacidad de inserción.

6. Diseñar un algoritmo que permita ocultar información en imágenes y que cumpla con los niveles de seguridad y robustez requeridos, para que no se pierda la información oculta ante la compresión de la imagen.

7. Implementar el método diseñado con la ayuda de la herramienta MATLAB y validar la aplicación, poniéndola a prueba, con el objetivo de verificar su potencialidad.

Page 13: Diseño de un Algoritmo Esteganográfico Robusto ante la

INTRODUCCIÓN 3

8. Documentar tanto la investigación como la herramienta de enmascaramiento de la información implementada, extendiendo así su valor teórico-práctico.

Interrogantes Científicas:

¿De qué manera influye la compresión de imágenes en las técnicas esteganográficas

espaciales?

¿Cuánta información se pierde al comprimir una imagen?

¿Qué codificador se debe utilizar que me permita recuperar la información perdida durante

la compresión?

¿Cómo diseñar un método que sea robusto a la compresión de imágenes? ¿Qué criterios

utilizar para validarlo?

Estructura del informe:

El informe estará estructurado en introducción, capitulario, conclusiones, recomendaciones,

referencias bibliográficas, glosario de términos y anexos.

En la introducción se reflejará la importancia y la necesidad del surgimiento del tema

abordado, y además los objetivos y metas planteadas para la realización del trabajo.

El capítulo 1 mostrará el estado del arte de la esteganografía digital como ciencia,

clasificando y caracterizando los estegosistemas existentes. Además, se realiza una

introducción al estudio de la compresión de imágenes digitales y a la codificación digital.

En el capítulo 2 se describe la técnica de compresión JPEG y su influencia en la pérdida de

información de las imágenes, se describe el proceso de codificación utilizado y el diseño

del algoritmo esteganográfico realizado, como particular solución de la problemática

tratada en el trabajo. En el capítulo 3 se valida el algoritmo esteganográfico implementado

mediante el análisis de resultados obtenidos luego de la realización de ataques a los

esteganogramas, como la compresión JPEG y la inserción de ruido impulsivo.

Las conclusiones reflejan los logros obtenidos con el diseño del algoritmo esteganográfico,

mediante el cumplimiento de los objetivos trazados.

Page 14: Diseño de un Algoritmo Esteganográfico Robusto ante la

INTRODUCCIÓN 4

Las recomendaciones se realizan teniendo en cuenta las limitaciones del método descrito,

para contribuir con su perfeccionamiento en posteriores investigaciones del tema.

Se realizó una recopilación de toda la bibliografía consultada y siguiendo las normas

establecidas se incluyen las referencias bibliográficas haciendo un listado de estas, con

ayuda de la herramienta endnote.

En el glosario de términos se incluyen los significados de las siglas y términos tratados en

el trabajo. En los anexos se encuentran la historia de la esteganografía, algunas

características sobre el tema de la codificación binaria de texto y las funciones

implementadas en el MATLAB que fueron utilizadas para la realización de pruebas al

algoritmo en el capítulo 3.

Page 15: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 5

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA,

COMPRESIÓN Y CODIFICACIÓN

1.1 Generalidades

1.1.1 Definición

La esteganografía, que significa literalmente “escritura encubierta”, es el arte y la ciencia

de ocultar información de modo que solo sea percibida por quien la envía y la recibe. Su

nombre proviene del griego “Steganos” (cubierto) y “graphein” (escribir) [1].

1.1.2 Objetivo

Su utilización más amplia se encuentra en las comunicaciones seguras y transmisiones

secretas, de allí su aplicación en agencias militares y de inteligencia. Además, es utilizada

por civiles para el envío de mensajes privados en el intercambio personal y aunque los usos

típicos de la estenografía son para el espionaje industrial o militar, uno de sus objetivos más

reconocidos es la protección de derechos del autor (copyright) para ficheros de audio, video

e imágenes digitales [2].

El objetivo de la esteganografía moderna, de forma general, es incrementar la seguridad de

los enlaces de comunicaciones, haciendo imperceptibles para los intrusos los mensajes

transmitidos y brindándoles una mayor seguridad a los canales de transmisión.

1.1.3 Evolución

A través de la historia, la esteganografía ha sido empleada utilizando diversos métodos y

variantes para ocultar la información .Ya desde los tiempos de la antigua Grecia (año 474

ACC), la historia cuenta como se ocultó un mensaje enviado hacia Esparta [3-5] (ver más

información del tema en el Anexo I).

Page 16: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 6

Actualmente, con el uso de los computadores y el intercambio de información a través de

medios informáticos, se ocultan mensajes en archivos que a simple vista son comunes y

corrientes, como fotografías o archivos de música, pero que con un software adecuado

podría obtenerse un mensaje que se encuentre oculto dentro de esos archivos. Las técnicas

de esteganografía se vuelven más eficientes si los mensajes ocultos en las imágenes se

encuentran encriptados. De esta forma, no solo habría que detectar los archivos que

contengan posibles mensajes, sino que también habría que decodificar tales mensajes para

volverlos legibles [3, 6].

En los últimos años, la esteganografía ha ganado gran interés, debido en parte a la

sospecha de que esta tecnología pudiera estar siendo utilizada por los terroristas para

comunicar los planes de próximos ataques [1]. Aunque tales afirmaciones no han sido

plenamente confirmadas, este tema ha sido muy discutido en la comunidad de las

tecnologías de la información.

1.2 Esteganografía en la era digital

1.2.1 Bases de la esteganografía actual

Los avances en computación nos proporcionan medios para calcular rápidamente los

cambios necesarios en la ocultación de un mensaje, e Internet proporciona los medios

necesarios para transportar grandes cantidades de información a cualquier punto del

planeta. La esteganografía actual se basa en esconder datos binarios en los bits menos

significativos de un fichero. Los bits que componen el mensaje a ocultar se introducen

(bien sea añadiéndolos, o realizando operaciones aritméticas con los datos originales) en el

archivo ya existente, procurando que el fichero resultante después de realizar los cambios

tenga un alto parecido con el original [4, 7-9].

La esteganografía digital se basa en dos principios [5]:

Los ficheros que contienen imágenes o sonido digitalizados pueden ser alterados de

alguna forma sin que pierdan su funcionalidad.

Page 17: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 7

La imposibilidad de los seres humanos de distinguir pequeños cambios en el color

de las imágenes o la calidad del sonido, lo cual hace posible el uso de objetos que

contienen información redundante, como por ejemplo un archivo de sonido de 16

bits o una imagen de 24 bits. Intenta, como la esteganografía clásica, mantener el

método y el objeto original en secreto, para evitar comparaciones entre este y el

objeto con el mensaje insertado.

1.2.2 Estegosistemas: descripción y características

La esteganografía moderna en el proceso de ocultamiento de la información utiliza un

medio digital como un archivo de transporte, el estegomedio, donde será ocultada la

información.

Los diferentes tipos de estegomedios más utilizados son [2, 7, 10]:

• Archivos de imagen, sonido, texto, video.

• Archivos ejecutables.

• Páginas Web.

• Campos no usados de paquetes de redes (TCP/IP).

• Espacios no usados de discos.

• Particiones escondidas.

A este estegomedio se le conoce también como contenedor o cubierta y tiene la

característica de que ser un contenedor aparentemente inocente que no despierte ninguna

sospecha. Cuando el mensaje secreto es ocultado en el contenedor a través de una técnica

esteganográfica, se obtiene un esteganograma que contendrá el mensaje oculto en el

archivo de transporte o cubierta. Este proceso se muestra en la figura 1, la cual muestra el

contenedor y el mensaje secreto que puede o no hacer uso de técnicas de cifrado para darle

una mayor protección a la información. Una vez que los datos han sido ocultados, la

información puede ser transferida a través de medios de comunicación inseguros. Una vez

en el canal, aunque ninguna persona sospechara la existencia del mensaje, este está

expuesto a cualquier ataque. Finalmente, para recuperar el mensaje secreto se aplica el

proceso inverso [11].

Page 18: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 8

Figura 1: Proceso esteganográfico

En este trabajo será usada una imagen digital (secuencia determinada de bits). Una

fotografía digital es un conjunto de píxeles (picture elements), codificados mediante ceros

y unos que forman un mapa de bits. Por tanto, como cualquier secuencia binaria, puede ser

objeto de la aplicación de algoritmos de compresión, preferentemente con poca pérdida de

calidad, minimizando el tamaño del fichero y el tiempo requerido para su presentación en

páginas Web. Los formatos JPG y GIF son los más utilizados en compresión de fotografías

digitales [11].

Las características de un estegosistema representante de un algoritmo esteganográfico

específico, nos permiten evaluar la calidad del mismo, dándonos una medida de su

eficiencia. Las mismas se usan para hacer comparaciones entre los métodos existentes y

establecer pautas de superioridad o deficiencias, estas son [2, 12]:

Imperceptibilidad: mide la capacidad que posee un algoritmo esteganográfico de insertar

datos ocultos en un medio, de forma tal que no se puede distinguir por el sistema visual

humano (HVS: Human Visual System) las diferencias entre el medio con el mensaje oculto

(esteganograma) y el medio original (el estegomedio). Aunque esta capacidad es en origen

subjetiva, existen métricas de distorsión o de distancias para evaluarla [2, 13]. Como

ejemplo se tiene a la relación señal a ruido (SNR: Signal To Noise Ratio), el error

cuadrático medio (MSE: Mean Squared Error), la correlación, el error absoluto máximo

(MAE: Maximum Absolute Error).

Nótese que para poder evaluar esta capacidad es necesario comparar al esteganograma con

el estegomedio. Como normalmente se distribuye el esteganograma sin el medio portador

original, es suficiente que las modificaciones en el esteganograma pasen desapercibidas

para que el algoritmo esteganográfico utilizado sea considerado como imperceptible.

Page 19: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 9

Las principales métricas objetivas para medir la distorsión entre dos medios,

específicamente en imágenes (donde X es la imagen original de tamaño M y X’ la imagen

con el mensaje oculto de tamaño N) son [14, 15]:

1. Error cuadrático medio (MSE): Esta medida de distorsión es la más simple de calcular,

se define como:

( ) ( )(∑∑= =

′−=M

i

N

jjiXjiX

NMMSE

1 1

2,,*1 ) (1-1)

Para aumentar la imperceptibilidad del mensaje oculto es necesario disminuir los valores de

MSE.

2. Error raíz cuadrático medio (RMSE: Root Maximum Absolute Error): Esta medida de

distorsión es la raíz cuadrada del error cuadrático medio o MSE, se utiliza para darle mayor

peso a los errores MSE pequeños. Al igual que el error MSE, la imperceptibilidad del

mensaje oculto se aumenta si se disminuye el valor del error RMSE. Esta se calcula de la

siguiente manera:

MSERMSE = (1-2)

3. Relación señal a ruido (SNR): Esta medida de distorsión es la más popular, se calcula de

la siguiente forma [14, 16]:

( )( )

( ) ( )( )dB

jiXjiX

jiXSNR M

i

N

j

M

i

N

j

⎥⎥⎥⎥

⎢⎢⎢⎢

′−=

∑∑

∑∑

= =

= =

1 1

1 1

2

10

,,

,log10 (1-3)

Entre más grandes sean los valores SNR más imperceptible es el mensaje.

Page 20: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 10

4. Relación señal a ruido pico (PSNR: Peak Signal To Noise Ratio): Al igual que la SNR,

los valores más grandes de PSNR indican una mejor imperceptibilidad del mensaje. Se

calcula de la siguiente manera:

dBRMSEMax

MSEMaxPSNR ⎟

⎠⎞

⎜⎝⎛=⎟⎟

⎞⎜⎜⎝

⎛= 10

2

10 log20log10 (1-4)

donde Max es la magnitud máxima de un píxel, por ejemplo si se estuvieran comparando

imágenes de 8 bits, Max toma el valor de 255. Los valores PSNR mayores de 30dB son

considerados aceptables e indican que la diferencia entre las imágenes no es distinguible

por el HVS [14, 16, 17].

( XXMAE ′−= max ) (1-5)

Al igual que el error MSE, entre más pequeño es el error MAE, mejor es la aproximación

de los dos medios.

6. Correlación Cruzada (Corr ): Esta métrica mide la similitud del medio original con el

medio marcado, los valores que puede tomar van de 0 a 1. Estos valores indican el

porcentaje de parecido entre los dos medios. Entre mayor sea el valor, la calidad del

esteganograma será mejor. Tal medida se calcula de la siguiente manera:

( ) ( )

( )∑∑

∑∑

= =

= =

′= M

i

N

jji

ji

M

i

N

jji

X

XXCorr

1 1

2,

,1 1

,

(1-6)

Page 21: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 11

Robustez: Expresa el número de modificaciones o ataques al que puede ser sometido el

medio antes de que pierda la información oculta (antes de que el ruido del canal o un

adversario destruya o modifique la información escondida) [10, 12, 14].

Se mide como la razón de error de bit (BER: Bit Error Ratio).Un número sustancial de bits

erróneos es dado típicamente por 0.15 [14].

ostransmitidtotalBitsNúmero

ErróneosBitsNúmeroBER___

__= (1-7)

Muchas técnicas intensifican la robustez de sus mensajes implementando un codificador de

control de error cíclico para la detección de errores en la transmisión y la recuperación de

los bits perdidos del mensaje [15, 18].

Métricas para evaluar la robustez [14]:

La robustez de un esquema esteganográfico puede ser evaluada aplicando diferentes clases

de distorsiones o modificaciones al esteganograma, tales ataques deben ser de interés o

relevantes para el tipo de aplicación en donde se vaya a utilizar el esquema esteganográfico.

La robustez puede ser evaluada midiendo la probabilidad de extraer el mensaje después de

que el esteganograma haya recibido un ataque, es decir, se evalúa midiendo la precisión, la

cual es la relación del mensaje extraído con el mensaje originalmente incrustado en el

estegomedio.

Ejemplos de ataques en imágenes digitales son los siguientes: compresiones,

transformaciones geométricas, filtrados, conversiones digital-analógico (D/A) y analógico-

digital (A/D), modificaciones del histograma. Comúnmente un algoritmo esteganográfico

carece de robustez en contra ataques, tales como una simple compresión o una pequeña

modificación del histograma, si dicho ataque hace que se pierda el mensaje oculto. Sin

embargo, esta aparente debilidad hace que la aplicación de este tipo de algoritmos sea útil

para asegurar la integridad del estegomedio [14].

Page 22: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 12

Capacidad de inserción: se refiere a la cantidad de información que puede ser incrustada

en determinado estegomedio sin degradar su calidad, es decir, es el tamaño máximo del

mensaje que se puede ocultar sin que el estegomedio muestre variaciones ante el HVS [12].

La capacidad se puede medir en bytes de información respecto al estegomedio,

determinándose, de esta forma, el número de bits insertados en un byte o píxel (para el caso

de imágenes a color) de la cubierta.

La cantidad de información que se requiera ocultar en la imagen depende de la aplicación

en donde se vaya a utilizar. Existe una regla general en cuanto a la cantidad de información

que se oculta en un medio, entre más se oculte más se modifica el medio y menos robusto

es el medio marcado. Como es de esperarse, todos los requerimientos básicos están

relacionados entre sí [12, 14].

Por ejemplo, un algoritmo esteganográfico en imágenes con mucha capacidad tiende a

distorsionar la imagen, por lo que se vuelve perceptible, a la vez que la robustez se ve

afectada, ya que entre más información se guarde en la estegoimagen, más difícil es

garantizar la extracción del mensaje después de que haya sido atacada.

Seguridad: mide la dificultad de detección de la información escondida.

La seguridad va a aumentar con el nivel de dificultad del proceso de cifrado

esteganográfico y se puede incrementar con procesos criptográficos incluidos en cada uno

de los algoritmos realizados.

La seguridad de las técnicas esteganográficas digitales reside en la posesión exclusiva por

los propietarios de los datos que se pretende ocultar de una clave que controla el proceso

de inserción y extracción de los datos ocultos [2].

Un sistema esteganográfico se considera seguro cuando un oponente que entienda su

funcionamiento, es decir, los algoritmos de inserción o extracción, pero no disponga de la

clave, no pueda obtener evidencia alguna o indicios de la existencia de datos ocultos.

Page 23: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 13

1.3 Compresión de imágenes

1.3.1 Características de la imagen

Una imagen digital es un arreglo rectangular de puntos arreglados en m filas por n

columnas. La expresión m×n es llamada la resolución de imagen, y el punto es llamado

píxel (excepto en el caso de imágenes de fax y de compresión de video, donde nos

referiremos a ellas como pels). Para el propósito de la compresión de Imagen es útil

distinguir entre los siguientes tipos de imagen [19].

1) Una imagen bi-nivel (o monocromática). Esta es una imagen donde los píxeles pueden

tener uno o dos niveles, normalmente referidos como blanco y negro. Cada píxel es en este

caso representa un píxel para este tipo de imagen simple.

2) Una imagen en escala de grises. Un píxel en este caso puede tener uno de los n valores

de 0 a n-1, indicando uno de los matices de los grises (o matices de algún otro color). n2

3) Una imagen de tonos continuos. Este tipo de imagen puede tener similares colores (o

escalas de grises). Cuando píxeles adyacentes difieren por una unidad exactamente, es

difícil para el ojo humano poder percibir esta diferencia de color. Como consecuencia, tal

imagen puede contener áreas con colores que parecen variar continuamente cuando el ojo

se mueve a lo largo del área.

4) Una imagen en tono discreto (también llamada una imagen gráfica o imagen sintética) es

normalmente una imagen artificial. Esta puede tener pocos colores o muchos colores, pero

no tiene el ruido y las manchas de una imagen natural. Los objetos artificiales, el texto y los

dibujos delineados tienen los límites bien definidos y por consiguiente contrastan con el

resto de la imagen (el fondo). Los píxeles adyacentes en una imagen de tono discreto

frecuentemente son idénticos o varían significativamente en valor [19, 20].

Tal imagen no permite una alta tasa de compresión con los métodos de pérdidas, ya que

las pérdidas de algunos píxeles pueden generar en una carta ilegible. Los métodos de

compresión para imágenes de tono continuo frecuentemente hacen cambios perceptibles en

los límites abruptos de una imagen de tono discreto, además, son necesarios métodos

especiales para lograr una compresión eficiente de estas imágenes. Nótese que una imagen

Page 24: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 14

de tono discreto puede ser altamente redundante, ya que el mismo patrón o carácter puede

aparecer muchas veces en una imagen.

5) Una imagen parecida a una caricatura es una imagen de color que consiste de áreas

uniformes. Cada área tiene un color uniforme, no obstante las áreas adyacentes tienen

colores diferentes. Esta característica puede ser explotada para obtener una mejor

compresión.

Intuitivamente, es claro que cada tipo de imagen puede ofrecer redundancia, pero ellas son

redundantes en diferentes formas. Por lo tanto, cualquier método de compresión dado no se

ejecuta bien con todas las clases de imágenes y por lo tanto existen diferentes métodos de

acuerdo al tipo de imagen. Hay métodos de compresión para imágenes binivel, para

imágenes de tono continuo y para imágenes de tono discreto. Hay métodos que intentan

desintegrar una imagen en partes de tono continuo y tono discreto y así comprimirlas cada

una por separado.

1.3.2 Redundancia

Las técnicas de compresión son posibles porque los conjuntos de datos normalmente

contienen redundancias. En el caso de una imagen, dicha redundancia existe en forma de

pautas de repetición y otras formas de información de brillo común entre varios píxeles de

la imagen. El objetivo de la compresión de la imagen reside en caracterizar estas

redundancias y codificarlas de una forma distinta que requiera menos datos que la original.

Existen tres tipos de redundancia en las imágenes digitales [21]:

● Redundancia de código: El código de una imagen representa el cuerpo de la información

mediante un conjunto de símbolos. La eliminación del código redundante consiste en

utilizar el menor número de símbolos para representar la información. Las técnicas de

compresión por codificación de Huffman y codificación aritmética utilizan cálculos

estadísticos para lograr eliminar este tipo de redundancia y reducir la ocupación original de

los datos.

● Redundancia entre píxeles: La mayoría de las imágenes presentan semejanzas o

correlaciones entre sus píxeles. Estas correlaciones se deben a la existencia de estructuras

similares en las imágenes, puesto que no son completamente aleatorias. De esta manera, el

Page 25: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 15

valor de un píxel puede emplearse para predecir el de sus vecinos. Las técnicas de

compresión Lempel-Ziv implementan algoritmos basados en sustituciones para lograr la

eliminación de esta redundancia.

● Redundancia visual: El ojo humano responde con diferente sensibilidad a la información

visual que recibe. La información a la que es menos sensible se puede descartar sin afectar

la percepción de la imagen. Se suprime así lo que se conoce como redundancia visual. La

eliminación de la redundancia está relacionada con la cuantificación de la información, lo

que conlleva una pérdida de información irreversible. Además de JPEG, hay otras técnicas

de compresión como EZW o SPIHT, que hacen uso de la cuantificación.

1.3.3 Clasificación

Existen dos enfoques bien diferenciados, compresión de imágenes sin pérdida y con

pérdida de información [22]. En el caso de la compresión de imágenes sin pérdida de

información, tras el proceso de decodificación, la imagen reconstruida es idéntica a la

imagen original. Los métodos más usados en la compresión sin pérdida son el RLE (Run-

Length encoding), los métodos de diccionarios basados en Liv-Zempel y los métodos

basados en predicción.

En RLE, cada píxel se codifica mediante una tupla de la forma (valor, número de

repeticiones), con lo que se codifica de forma eficiente ristras de un mismo valor. Este

sistema funciona bien para imágenes donde haya grandes bloques de un mismo color. Los

métodos basados en LZ codifican de forma eficiente los patrones existentes en una imagen.

Un ejemplo de un formato basado en LZ (concretamente en el LZW) es el GIF. Los

métodos basados en LZ y RLE comprimen muy bien imágenes donde haya grandes bloques

de un mismo color, pero comprimen muy mal imágenes de varias tonalidades.

De hecho, GIF limita el número de tonos posibles a 256, para que de esta forma se pueda

obtener una compresión aceptable. Para poder representar con una calidad aceptable una

fotografía, se necesita usar una amplia gama de colores (en torno a 24 bpp, con los que se

obtienen unos 17 millones de colores distintos). El problema de usar estos métodos con

imágenes de varios tonos es que estas no suelen presentar ningún patrón o repetición (ya

que hay pequeñas variaciones). Aunque aparentemente en una imagen haya grandes

bloques con un mismo color, esto puede no ser cierto. Por ejemplo, la ristra 50, 51, 47, 52,

Page 26: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 16

49, 50, 49, 51 no se comprimiría nada mediante RLE, a pesar de que sea percibida por el

ojo humano como si se tratase de una ristra del mismo color.

El otro método sin pérdida de información está basado en la predicción. En este método se

hace una predicción del valor de un píxel con los valores de los píxeles adyacentes y se

codifica la diferencia. De esta forma, si el modelo de predicción es bueno, las diferencias

serán pequeñas y podrán ser codificadas con menos bits. Este método sin pérdida es mejor

que los anteriores en la compresión de imágenes de varios tonos. Por ejemplo, la ristra

anterior 50, 51, 47, 52, 49, 50, 49, 51, se convertiría en 50, 1, -4, 5, -3, 1, -1, 2, y podría ser

codificada de forma eficiente usando un método estadístico (como Huffman). Este es el

método usado en la compresión en JPEG sin pérdidas. El problema es que al trabajar sin

pérdida de información, el grado de compresión que se puede llegar a obtener es bastante

limitado (límite de Shannon) [22].

Por lo general, el grado de compresión obtenido mediante estos métodos en imágenes de

tonos continuos se sitúa en torno al 50%. Este índice de compresión puede no llegar a ser

suficiente, teniendo en cuenta que una imagen normal ocupa cerca de un mega. Para

obtener unas tasas de compresión mayores, se tiene que recurrir a los métodos con pérdida

de información, donde la imagen reconstruida no tiene porque ser idéntica a la original.

Esto puede parecer no apropiado, pero en el caso de las imágenes no lo es. Cuando se

trabaja con texto, la variación de un solo bit es fácilmente percibida por una persona. En el

caso de las imágenes, una pequeña variación no tiene porqué ser percibida por el ojo

humano.

En JPEG, la fisiología del ojo humano juega un papel muy relevante. Los métodos con

pérdida de información se basan en eliminar no solo la correlación espacial, sino también la

información que sea irrelevante para el ojo humano. La pérdida de información no es un

problema siempre que la imagen reconstruida sea percibida por el ojo humano como si se

tratase de la original. Hay que apuntar que los métodos con pérdida y sin pérdida se

complementan muy bien. Una imagen donde hay muchos bloques de un mismo color se

logrará una alta tasa de compresión sin afectar la calidad de la imagen con estos métodos

basados en RLE o LZ, pero se comprimirá con pérdidas distinguibles en la calidad de la

Page 27: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 17

imagen si se usa un método como JPEG. En cambio, una imagen con varios tonos, se

comprimirá de forma eficiente con JPEG y no con RLE o LZ [20, 22].

1.4 Codificación en palabras binarias y detección de error

Los sistemas digitales procesan la información codificada en palabras binarias, constituidas

por conjuntos ordenados de ceros y unos. Esta información puede ser cuantitativa (es decir,

una cantidad expresada por un número) o cualitativa (referida a la distinción entre diversas

posibilidades o cualidades) [23, 24].

Una cuestión importante respecto a la transferencia de información es la fiabilidad o

ausencia de error en ella. En la transmisión o almacenamiento de la información, pueden

producirse errores que afecten a uno o varios bits de algunas palabras binarias; por ello, es

necesario disponer de mecanismos que faciliten la detección de errores y, si fuera posible,

permitan corregirlos. Tales mecanismos se basan en añadir dígitos adicionales

(redundancia), para efectuar comprobaciones sobre la información recibida.

El concepto de distancia mínima (número de bits en que difieren dos palabras de un código)

es básico en el desarrollo de códigos detectores de error. Hamming introdujo un método

simple para construir códigos de distancia mínima 4 (basados en la utilización de paridades

parciales) que permiten detectar hasta tres errores y efectuar corrección cuando hay uno

solo de ellos [23].

1.4.1 Detección y corrección de errores

En los procesos de almacenamiento, transmisión y escritura de datos se pueden producir

errores. Con la detección de errores aseguramos la integración de la información y con la

corrección hay una tolerancia al fallo. Actualmente, los códigos de Hamming son

fundamentales en la teoría de la codificación y tienen una gran cantidad de aplicaciones

prácticas. En concreto, los códigos correctores de errores tienen un papel esencial en la vida

cotidiana y son usados por modems, memorias e incluso en comunicaciones vía satélite [25,

26].

Page 28: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 18

1.4.1.1 Método de Hamming

En el año 1950, el profesor Richard W. Hamming publicó un artículo sobre detección y

corrección de errores [27]. Este trabajo supuso el comienzo de una nueva área de

investigación dentro de la teoría de la información. El código Hamming es clasificado

como un código en bloque porque tiene como entrada un grupo (bloque) de k bits de datos,

a los cuales se le agrega un grupo de m bits de paridad de acuerdo a reglas preestablecidas,

dando como salidas un grupo de n bits comúnmente llamado palabra de código. Asimismo,

se dice que es lineal porque satisface la condición de que cualquier par de palabras-código

al ser sumadas en módulo 2, producen otra palabra-código existente dentro del conjunto

empleado para codificar los posibles mensajes. Además se dice que es sistemático porque

los bits de paridad se agregan sin alterar la posición de los bits del mensaje [28].

Para un código lineal de bloque (n, k) se pueden ordenar los bits de paridad a la derecha y

los del mensaje a la izquierda (y viceversa) como se muestra a continuación [25, 28, 29]:

Tabla 1.1: Código lineal de bloque

13210 ,....,,, −kmmmmm 110 ,...., −−knbbb

Bits de código Bits de paridad

Los códigos Hamming comúnmente son empleados en aplicaciones donde ocurre un solo

error por bloque, como por ejemplo en el proceso de escritura y lectura de una memoria

RAM. Una familia de estos códigos se muestra a continuación y tiene los siguientes

parámetros [28]:

Page 29: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 19

Tabla 1.2: Familia de códigos Hamming

Tamaño del bloque 12 −= mn bits

Bits de paridad )3(; ≥mm bits

Tamaño del mensaje k bits

Distancia mínima 12min +≥ td bits

Errores a corregir t bits

Como se observa en los parámetros, el número de errores t que se pueden corregir por

bloque de palabra-código está relacionado con la distancia mínima de Hamming, donde

esta distancia es la menor de las distancias entre dos combinaciones binarias cualesquiera

pertenecientes a dicho código y viene dada por el menor número de bits que hay que

cambiar en una de ellas para obtener la otra [26, 29, 30]. Asimismo, debido a la propiedad

de linealidad, la distancia Hamming mínima se puede obtener con el peso mínimo de los

vectores no ceros. A su vez, el peso Hamming es obtenido con el número de bits que

difieren los vectores de las palabras-código con respecto al vector de puros ceros. En base a

estas definiciones se concluye que un código binario debe tener al menos la distancia

mínima igual a 1 para garantizar que una combinación no represente a varias cantidades o

valores [28].

1.4.1.2 Código de Hamming (7,4): Características

El código de Hamming (7,4), visto como un código algebraico, puede construirse usando

una matriz llamada Matriz Generadora G: y decodificarse usando una Matriz

Decodificadora H [31-35]:

La matriz G realiza una transformación de k-uplas de información en n-uplas de palabras

codificadas, donde n= k+m, siendo m =3 (bits de paridad), k = 4 (bits de datos) y n= 7 (bits

de la nueva palabra codificada). Para obtener las dimensiones de G y de H, usamos la

relación [32, 34]:

Page 30: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 20

12 ++≥ mkm (1-8)

con G:[k, n] y H:[m, n]. El signo igual se alcanza solo para una máxima eficiencia (código

perfecto).

Una matriz generadora es [32, 33]:

[ ]⎥⎥⎥⎥

⎢⎢⎢⎢

=

1101000101010001100101110001

G (1-9)

y la matriz de control de paridad correspondiente (de decodificación) es [32, 33]:

[ ]⎥⎥⎥

⎢⎢⎢

⎡=

100110101010110010111

H (1-10)

Por ejemplo, dados los vectores de información I= (i , i 1 , i , i 3 ) 0 2

Entonces La palabra código se obtiene multiplicando el vector del mensaje (I) por la matriz

generadora (G) como se muestra [32, 34]:

[ ] [ cccciiiiiiii ==

⎥⎥⎥⎥

⎢⎢⎢⎢

21032103210

1101000101010001100101110001

] [ ]

(1-11)

Page 31: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 21

La palabra código [c] es generado del transmisor o el regenerador y con esto finaliza la

operación de codificación de canal en el lado transmisor de un sistema de comunicaciones

[32, 33].

Detección de error en el lado receptor

En la transmisión c puede sufrir modificaciones que lo transformen en otra palabra de

código y [33].

y=c e (1-12)

Dond

e:

ector de error, tiene un uno en la posición de error y cero en el resto

ienza con el cálculo del síndrome [s], a fin de determinar si

ecibida por la traspuesta de la matriz H:

Finalmente o

m

digo (7,4).

e es el v

⊕ significa suma módulo 2.

En el receptor, el descifre com

un error está presente. El síndrome tiene dimensiones 1 × 3 (n -k) y puede ser cualquiera

de secuencias 2n-k (incluso la secuencia todo-cero).

Este se obtiene multiplicando la palabra de código r

Y (1, 7) × H T (7, 3) = S (1, 3) (1-13)

, con el síndr me obtenido s= (s , s , s ) y el patrón de errores más comunes 1 2 3

(e) se identifica la posición del error. Por eje plo, el patrón de errores, matriz e y su

síndrome, matriz S para un código (7,4) son mostrados en la Tabla I [28].

Tabla 1.3. Patrón de errores más comunes y el síndrome para un có

Patrón de errores (e) Síndrome Posición de los bits

1 2 3 4 5 6 7s

0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1

Page 32: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN 22

Al síndrome s = 000, le o s n e v o e = 0000000, lo cual significa para el lado

1.5 Puntos fundamentales del capítulo

abordó el tema de la esteganografía en imágenes

c rre po d el al r d e

receptor que no hubo error en la transmisión, mientras que 111, indica que hay un error en

la posición uno de la palabra-código y así sucesivamente el resto de las combinaciones del

síndrome indican un error en la posición donde e vale uno. Posteriormente, para la

corrección se suma 1 en módulo 2 en la posición indicada por el patrón de errores (e) [25].

Con el desarrollo del presente capítulo se

digitales, profundizando en el análisis de las características esenciales de los sistemas

esteganográficos, tales como la inserción de la información en la estegoimagen y el

dominio en que la realizan; así como los requerimientos de capacidad, seguridad, robustez

y fundamentalmente la imperceptibilidad, dado que el cumplimiento de esta última

característica garantiza el éxito de un sistema esteganográfico. Se analizaron además las

principales formas de compresión para las imágenes digitales que existen, así como las

características esenciales de las imágenes, que determinan el tipo de compresión a utilizar

en estas, de forma tal que no se afecte en gran medida la calidad de las imágenes. Se abordó

el tema de la codificación de palabras binarias y la detección de error, en específico la

codificación mediante el método de Hamming, código capaz de corregir errores simples en

cada bloque y que tiene gran utilidad en las comunicaciones a distancia por canales

ruidosos.

Page 33: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 23

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO

ANTE LA COMPRESIÓN JPEG

Existen diferentes métodos que permiten ocultar información en imágenes digitales. El

método LSB (Least Significant Bit) es quizás el más simple y sencillo de utilizar. Este, en

la mayoría de los casos, proporciona una alta capacidad de inserción y una baja

perceptibilidad, sin embargo, es vulnerable a ligeras modificaciones de la imagen como la

compresión y a la extracción de la información por personas no autorizadas. Otros métodos

más robustos para ocultar información en imágenes hacen uso del dominio de la

transformada ya sea la DFT (Discrete Fourier Transform), la transformada DCT (Discrete

Cosine Transform) o la transformada DWT (Discrete Wavelet Transform) para transformar

una imagen en el dominio espacial al dominio espectral y así ocultar el mensaje secreto en

áreas significativas de la imagen. En general, los métodos en el dominio espacial tienden a

proporcionar mayor capacidad de inserción que los métodos en el dominio de la frecuencia,

sin embargo, los métodos en el dominio de la frecuencia son más robustos contra ataques,

tales como compresión, recorte o algún otro procesamiento de imagen [11].

En este capítulo presentamos un algoritmo esteganográfico, el cual usa una imagen digital

como encubridora de datos. Este algoritmo incluye una cuantización de coeficientes a

través de la transformada discreta coseno DCT para poder insertar el archivo secreto en los

bits menos significativos de la cuantización de los coeficientes DCT. El sistema propuesto

puede recuperar el mensaje oculto con pocas pérdidas (aun cuando la imagen encubridora

sufra la compresión JPEG), si el canal de comunicación es ideal. Sin embargo, los canales

de comunicación no son ideales, por lo que el mensaje extraído incluirá algunos bits

erróneos. En consecuencia, para incrementar la robustez del mensaje secreto al transmitirse

por un canal de comunicación no ideal, introducimos un codificador de Hamming (7,4).

Page 34: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 24

2.1 Compresión en JPEG

JPEG es un estándar de compresión de imágenes con pérdida. Dicho estándar fue creado en

el año 1992 por un grupo independiente, llamado JPEG (Joint Photographic Experts

Group), fundado en el año 1986. El estándar fue aprobado finalmente en 1994

convirtiéndose en un estándar ISO [21].

2.1.1 Características Generales del Estándar

El JPEG se caracteriza por lograr un alto grado de compresión en las imágenes sin causar

por ello un descenso en la calidad perceptible en la mayoría de las fotografías. Además, se

puede justar el grado de compresión. Si se especifica una compresión muy alta, se perderá

una cantidad significativa de calidad, pero se obtendrán ficheros de pequeño tamaño. Con

una tasa de compresión baja se obtiene una calidad muy parecida a la del original y un

fichero mayor. Esta pérdida de calidad se acumula. Esto significa que si comprime una

imagen y la descomprime, se obtendrá una calidad de imagen, pero si vuelve a comprimirla

y descomprimirla, se obtendrá una pérdida mayor. Cada vez que se comprima y

descomprima la imagen, esta perderá algo de calidad. Hoy en día el último estándar

existente es el JPEG 2000. Tiene como característica la posibilidad de comprimir sin

distorsión o pérdida. Emplea nuevas tecnologías como la transformada Wavelet en lugar de

la DCT y la codificación aritmética en lugar de Huffman [21].

2.1.2 Esquema compresor JPEG:

En la figura 2.1 se pueden ver todos los pasos a seguir en la compresión JPEG. El primer

paso (solo para imágenes en color), es pasar del espacio de colores RGB al de luminancia

(intensidad) y crominancia (información del color). El ojo humano no es demasiado

sensible a la crominancia, lo que permite hacer un submuestreo (en los componentes de la

crominancia), obteniendo una compresión de en torno a 50% de la imagen original [22].

Después se divide en bloques de 8x8. Luego se aplica la transformada del coseno a cada

bloque. Tras aplicar la transformada, se obtienen unos pocos coeficientes importantes, y

otros menos relevantes. Los coeficientes irrelevantes son eliminados en el paso de

cuantización. Finalmente, se aplica un algoritmo de RLE combinado con Huffman para

codificar de forma eficaz los valores descartados. Hay que destacar que el último paso que

Page 35: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 25

aparece en el esquema (en el que se pasa a un fichero), no está especificado en el estándar.

A continuación, veremos cada paso en detalle [21].

Figura 2.1: Esquema compresor JPEG

Transformar RGB a YCbCr.

Aclaremos una serie de parámetros importantes para comprender este apartado:

● Y: Luminancia

● Cb, Cr: Valores de Crominancia

La transformación se hace con las siguientes fórmulas [21, 22]:

BGRY 1.06.03.0 ++= (2-1)

YBU −= (2-2)

YRV −= (2-3)

5.02+=

UCb (2-4)

5.06.1+=

VCr (2-5)

Page 36: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 26

Con esta transformación conseguimos separar la información de brillo (Y) de la

información del color (Cb, Cr). Aprovechamos así la mayor sensibilidad del ojo humano a

cambios en la cantidad de brillo frente a cambios en el color.

Submuestreo de los componentes CbCr.

Ya que el ojo humano es menos sensible a los cambios de color podemos aproximar de

forma opcional los valores de crominancia de todo el bloque por los valores de una parte

del mismo. Así podemos reducir el tamaño de la información de crominancia [21, 22].

Tabla 2.1 Submuestreo de los componentes CbCr

Y1 Y2 Y3 Y4 Cr1 Cr2 Cb1 Cb2

Y5 Y6 Y7 Y8 Cr3 Cr4 Cb3 Cb4

Y9 Y10 Y12 Y12

Y13 Y14 Y15 Y16

Generación de bloques 8x8 para el procesamiento.

Un inconveniente de la DCT es que tiene un elevado coste computacional. Para acelerar el

proceso de cálculo, la imagen se divide en bloques de 8x8, ya que el cálculo de la DCT

resulta más eficiente. En el caso de que la dimensión de la imagen no sea múltiplo de 8, se

usan bits fantasma de relleno para poder tener bloques de 8x8 en los extremo. Cada bloque

de 8x8 se llama unidad de datos.

Trabajar con bloques tiene ciertos inconvenientes. Para obtener un grado de compresión

óptimo con este método, sería necesario aplicar la DCT a la totalidad de la imagen. Con

ello se conseguiría eliminar mucha más información redundante, ya que todos los píxeles

de la imagen están relacionados entre si en mayor o menor medida. El problema es que

aplicar la DCT a la totalidad de la imagen es que supone un gran número de cálculos. Por

ello, se opta por trabajar a nivel de bloque. Uno de los problemas que trabajar a nivel de

Page 37: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 27

bloque es que no se elimina la correlación existente entre los píxeles adyacentes que estén

en bloques distintos. Dos píxeles adyacentes en bloques distintos, antes de aplicar la DCT

tendrán valores parecidos, pero debido a la pérdida de información, tras aplicar la IDCT

pueden surgir algunas diferencias. Cuando se trabaja con poca calidad, estás diferencias

llegan a ser importantes, y pueden causar la desagradable sensación visual de que la imagen

está dividida en bloques [21].

Aplicación de la DCT a cada bloque de píxeles.

Lo que se realiza en este paso es transformar los valores originales que están el dominio del

espacio a valores pertenecientes al dominio de la frecuencia.

Cuantización.

Cada una de las matrices de 8x8 se divide por una tabla de factores de cuantización, con la

intención de reducir la información relativa a las altas frecuencias, que son menos

perceptibles por el ojo humano.

En esta fase es donde se produce la mayor parte de la pérdida de información de JPEG.

Esto es lo que nos permite alcanzar grandes ratios de compresión de las imágenes.

Codificación

Se emplean el código Huffman y Run-Length Encoding para compactar la información,

aprovechando el gran número de ceros presentes en las matrices después del proceso de

cuantización.

Agregación el "header info" y factores de cuantización.

El formato JPEG almacena en la cabecera del archivo cierta información útil para la

descompresión de la imagen, tales como el tamaño en píxels, píxels/pulgadas, tipo de

imagen y tablas usadas en los procesos de cuantización y codificación [21].

Transformada DCT (Transformada del Coseno Discreta). Características Generales.

Es una transformada basada en la Transformada de Fourier Discreta, pero utilizando

únicamente números reales, es decir, se trata de una transformada real debido a que los

vectores base se componen exclusivamente de funciones coseno muestreadas. La DCT

toma un conjunto de puntos de un dominio espacial y los transforma en una representación

Page 38: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 28

equivalente en el dominio de frecuencias. Además, minimiza algunos de los problemas que

surgen con la aplicación de la DFT a series de datos. La Transformada Discreta del Coseno

cuenta con una buena propiedad de compactación de energía, que produce coeficientes

incorrelados, donde los vectores base de la misma dependen solo del orden de la

transformada, y no de las propiedades estadísticas de los datos de entrada. La decorrelación

de coeficientes es muy importante para la compresión, ya que así, el tratamiento de cada

coeficiente en un momento posterior puede realizarse independientemente unos de otros,

sin que se pierda eficiencia de compresión. Otro aspecto importante de la DCT es la

capacidad de cuantificar los coeficientes utilizando valores de cuantificación que se eligen

de forma visual [22].

Esta transformada ha tenido un gran éxito en el campo del tratamiento digital de imagen,

debido a que, para los datos de una imagen convencional, se tiene una alta correlación entre

elemento. Otro motivo de utilizar la transformada del coseno en lugar de la de Fourier, de

mayor uso y aplicación, radica en que la primera puede codificar mejor funciones lineales

con menos componentes.

Propósito de la DCT.

El propósito de la DCT es el de procesamiento de las muestras originales. Se trabaja con las

frecuencias espaciales que se recogen en la imagen original. Estas frecuencias espaciales

son muy relativas al nivel de detalle que presenta dicha imagen. El espacio de las altas

frecuencias corresponde a los niveles más altos de detalle, mientras que las bajas

frecuencias corresponden a los niveles más bajos de detalle [21]. La DCT es aplicada sobre

cada matriz de 8x8 valores de píxeles y nos devuelve una matriz de 8x8 con los coeficientes

de la frecuencia. Es decir, se utiliza para codificar los valores de la imagen, devolviendo un

campo de valores transformados que serán una serie de coeficientes que multiplicarán a

funciones coseno para reconstruir la imagen.

El DC o componente de continua es el valor que se corresponde con el promedio de todos

los valores de la imagen, siendo el primer componente o coeficiente que aparece en la

matriz, resultado de la aplicación de la transformada. Los demás valores reciben el nombre

de componentes AC.

Page 39: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 29

La Transformada Discreta del Coseno da como resultado valores reales, como

mencionábamos anteriormente. Por este motivo, el paso de la aplicación de la DCT tiene

problemas para ser revertido. En una computadora no existen números reales, sino números

en punto flotante, donde se comenten errores por redondeo, por lo que al realizar el paso

inverso a la aplicación de la transformada habrá una pérdida de datos. Debido también a

uso de valores reales por parte de la DCT, puede resultar muy costoso en cuanto a tiempo

de procesamiento se refiere. En el intento de reducir este tiempo de procesamiento se suele

emplear una representación de números en punto flotante utilizando números enteros, por

lo que nuevamente se producen errores de redondeo, pero se logra una reducción

importante en el tiempo necesario para la compresión [22].

La Transformada Discreta Coseno Directa e Inversa está definida como sigue [21, 36, 37]:

( ) ( )⎥⎦⎤

⎢⎣⎡ +

⎥⎦⎤

⎢⎣⎡ +

= ∑∑−

=

= Nvy

NuxPCC

NDCT

N

x

N

yxyvuuv 2

12cos2

12cos21 1

0

1

0

ππ (2-6)

⎪⎩

⎪⎨⎧ ==

casootro

vuparaCC vu

1

0,2

1, (2-7)

donde N es el tamaño del bloque cuadrado, en este caso como los bloques de la imagen son

de 8x8 píxeles, N será igual a 8 y 'u' y 'v' son cada uno de los elementos del bloque que

van desde 0,1,2,...N, en este caso, como los bloques tienen un tamaño de 8, 'u' y 'v' irán

desde 0,1,2,...,7 y serán cada una de las componentes de una matriz de 8x8, donde la

coordenada (0,0) será la esquina superior izquierda. Luego aplicando esta transformación a

cada elemento que compone la matriz de 8x8, obtenemos otra matriz de 8x8 elementos que

son los coeficientes de las frecuencias. Un ejemplo de lo mencionado sería el que se

muestra a continuación. Tenemos como bloque inicial de 8x8 [21]:

Page 40: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 30

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

94787665686979878365615559647185755868777060657970688812610468616769701061541227158637366104144113685962726985109905559637364617066615552

Como paso siguiente se le resta 128 a cada uno de los elementos de la matriz para que

queden números entorno al 0, entre -128 y 127.

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

345052636059494145636773696457435370605158686349586040224606761595822266577065556224161560696656594319387369655564675862677376

A continuación se procede a la aplicación DCT a la matriz anterior. Se aplica un redondeo

de cada elemento al número entero más cercano [21].

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−−−−−−−−

−−−−−−−−−−−−

−−−−−−−−−−−−−

2101410014312001

24126238332241371222610153412496510292577747

597131061224022056276130415

Page 41: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 31

Si nos fijamos, el número más grande de toda la matriz resultado es el situado en la esquina

superior izquierda siendo este el coeficiente DC antes mencionado.

Cuantificación

En JPEG se usa cuantificación uniforme. Cada matriz transformada está ordenada según las

diferentes frecuencias, estando los componentes de frecuencias más bajas más cerca de la

esquina superior izquierda de la matriz, y frecuencias más altas hacia la esquina inferior

derecha. Por la propiedad de compactación de la energía de la transformada DCT, la

información se concentrará en los valores de la esquina superior izquierda de la matriz.

Además, puesto que el sistema visual humano es más sensible a variaciones de baja

frecuencia, estos valores contienen la mayor parte de la información perceptible por el ojo.

Por estos motivos, interesa preservar la información de los coeficientes de la parte superior

izquierda de la matriz, dando menos importancia al resto. Para aprovechar estas

características y lograr buenos ratios de compresión, se utilizan matrices de cuantificación

para ponderar los coeficientes originales. Los valores originales obtenidos de la

transformada se dividen por los valores de la matriz de cuantificación, logrando así

ponderar los más importantes, y reduciendo considerablemente los que son poco

perceptibles [22].

Una matriz de cuantificación suele tener valores altos para los componentes de alta

frecuencia, y valores bajos o medios para valores de baja frecuencia. Con esto se consigue

que gran parte de los valores de la matriz se vuelvan cero, lo que facilita mucho su

compresión, además de reducir la amplitud de los demás valores, lo cual será bastante útil

en la codificación. Se usan distintas matrices para las capas de luminancia y crominancia.

El estándar JPEG permite el uso de matrices personalizadas para esta tarea, pero

proporciona dos que se usan en la mayoría de los casos. Estas matrices se han obtenido

mediante diversos estudios psicovisuales y consiguen unos resultados satisfactorios para la

compresión de imágenes fotográficas. Se puede incrementar el ratio de compresión

multiplicando estas matrices de cuantificación por un factor constante, al costo de perder

calidad de imagen. Análogamente, podemos incrementar la calidad de la imagen resultante

dividiendo la matriz por un factor constante, incrementando el tamaño de la imagen [37].

Page 42: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 32

Codificación

Ya se ha dicho que los valores de la esquina superior izquierda de la matriz son más

importantes, y el primer valor, el que más. En una muestra de 8x8 píxeles del mismo color,

será el único valor distinto de cero. Por esa misma razón se procesan de distinto modo ese

valor, y el resto de los valores de la matriz. A ese primer valor de la matriz se lo conoce

como coeficiente DC, y al resto se los conoce como coeficientes AC. Los coeficientes DC

de cada uno de los bloques de 8x8 se codifican mediante DPCM, guardando el coeficiente

DC del primer bloque, y el resto como la diferencia entre el primer coeficiente DC, y el

coeficiente del bloque en cuestión, como estos coeficientes son relativamente altos y la

diferencia entre ellos no es demasiado, conseguimos guardar los mismos valores utilizando

menos bytes. Para que la compresión sea aún mejor, se utiliza codificación Huffman con

los tamaños de los coeficientes DC. Cada coeficiente DC se guarda como un par

Size/Amplitud, siendo Size el tamaño en bits necesario para codificar la Amplitud del

coeficiente DC ya codificado mediante DPCM. El valor de Size no se guarda tal cual, si no

que se utiliza una tabla de códigos Huffman para los diferentes valores que puede tomar. El

estándar JPEG propone una tabla para los tamaños de los coeficientes DC, aunque sería

posible utilizar otras. Existe una tabla Huffman diferente para los coeficientes DC de la

Luminancia y para los coeficientes AC de la crominancia.

Los coeficientes AC se codifican mediante Run-Length coding, que aprovecha la gran

cantidad de coeficientes de valor cero de la matriz para ahorrar en el tamaño final del

archivo. En primer lugar, la matriz se despliega en un vector ordenando los coeficientes en

zig-zag, tal como se muestra en la figura 2.2, ordenando los coeficientes por frecuencia, con

lo que conseguimos que los valores de la esquina inferior derecha queden hacia el final,

acumulando gran parte de los coeficientes iguales a cero [21].

Page 43: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 33

Figura 2.2: Orden de los coeficientes

Una vez ordenados de este modo los coeficientes, empezamos el Run-Length Enconding.

Para esta codificación, cada valor se guarda como un par (run/length, amplitud), el valor de

runlenght nos indica la cantidad de coeficientes iguales a cero que preceden al coeficiente

que vamos a codificar y el tamaño en bits necesario para codificar su amplitud.

Por ejemplo, para una secuencia como esta [21]:

12, 3, 0, 0, 7, 0, 5, 0, 0, 0, 0, 26…...

la codificación Run-Length sería la siguiente:

(0/4,12), (0/2,3), (2/3,7), (1/3,5), (4/5,26).....

Siendo el valor Run la cantidad de ceros antes del valor a codificar, y el valor Length el

mínimo tamaño en bits necesario para codificar ese valor. Los valores Run y Length pueden

variar entre 0 y 15, y algunos de los valores están reservados, como el 15/0 y el 0/0. Como

el valor Run está limitado a 15, no se puede representar con él una cadena de más de 15

ceros, para eso se utiliza el código 15/0, que significa que hay 15 ceros seguidos de otro

coeficiente que también es cero. De este modo se pueden representar cadenas de ceros todo

lo largas que se quieran.

El código 0/0 sirve para indicar que a partir del último valor codificado, hasta el final del

bloque todos los coeficientes son cero, como los ceros se acumulan al final con este código

Page 44: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 34

nos ahorramos mucho espacio. Este código se conoce como EOB (End of Block). Una vez

que se ha codificado mediante Run-Length, se utiliza codificación Huffman. Cada código

run/length tiene asignado en una tabla su correspondiente código Huffman. Se utilizan

tablas distintas para la Luminancia y la Crominancia. El estándar JPEG propone unas

tablas, pero se podrían crear otras.

De este modo guardamos el código Huffman del código Run-Length, seguido por el valor

de la amplitud, codificado con el número de bits indicado en el Run-Length, y aplicando

complemento a 1 (negar todos los bits) en caso de ser un valor negativo [21].

2.2 Herramienta MATLAB

MATLAB (“MATrix LABoratory”) es un programa para realizar cálculos numéricos con

vectores y matrices [38]. Como caso particular, puede también trabajar con números

escalares, tanto reales como complejos, con cadenas de caracteres y con otras estructuras de

información más complejas. Una de sus capacidades más atractivas es la de realizar una

amplia variedad de gráficos en dos y tres dimensiones. MATLAB además es un gran

programa de cálculo técnico y científico que tiene un lenguaje de programación propio y

para ciertas operaciones es muy rápido, cuando puede ejecutar sus funciones en código

nativo con los tamaños más adecuados para aprovechar sus capacidades de vectorización.

Constituye una de las aplicaciones más útiles que existen para poner a punto métodos

numéricos en distintas asignaturas de ingeniería. Por ser una herramienta de alto nivel, el

desarrollo de programas numéricos con MATLAB puede requerir hasta un orden de

magnitud menos de esfuerzo que con lenguajes de programación convencionales, como

Fortran, Pascal, C/C++, Java o Visual Basic [38].

En cualquier caso, el lenguaje de programación de MATLAB siempre es una magnífica

herramienta de alto nivel para desarrollar aplicaciones técnicas, fácil de utilizar y que

aumenta significativamente la productividad de los programadores respecto a otros

entornos de desarrollo.

Este lenguaje de programación dispone de un código básico y para el trabajo con

imágenes, y contiene varias librerías especializadas (toolboxes), que permiten leer,

modificar y crear imágenes en formatos RGB, interpretándolas como una matriz

Page 45: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 35

tridimensional, es decir, tres matrices bidimensionales representantes de los colores rojo,

verde y azul, facilitando de esta forma el trabajo con las imágenes [38].

Todas estas características hacen que MATLAB sea la herramienta adecuada para el

método esteganográfico a implementar, tanto por el desarrollo y la variedad de sus

funciones, que especialmente en el proceso de codificación del mensaje secreto, necesitan

de una ejecución rápida que incluye lectura, recorrido y análisis del fichero gráfico portador

del mensaje; así como por la facilidad que brinda en el trabajo con los bits de información,

a nivel de píxel en todo el dominio espacial y espectral de la imagen.

2.3 Descripción del algoritmo propuesto

El siguiente algoritmo esteganográfico utiliza una imagen digital como encubridora de

datos en escala de grises. Si la imagen es a color (RGB), se considera como matrices de

profundidad 3, por lo que el píxel esta formado por 3 valores entre 0 y 255 (24 bits)

representantes del nivel de luminancia de cada color, y al transformarla en escala de grises

obtendremos una matriz bidimensional de píxeles con valores entre 0 y 255 [19].

El mensaje oculto será un texto en código ASCII y para ocultarlo es necesario convertirlo

en una secuencia de números binarios (ceros y unos), pues el trabajo a nivel de bits se

simplifica significativamente [23].

Este algoritmo se divide en dos partes esenciales: el proceso de inserción y de extracción

del mensaje oculto que se muestran en la figura 1 y 2 respectivamente y serán explicados

con más detalle más adelante:

Proceso de inserción:

1. La imagen es dividida en bloques de 8x8 píxeles para acelerar el proceso de cálculo de la

DCT, en el caso de que la imagen no sea múltiplo de 8, se usan bit de relleno para poder

obtener bloques de 8x8 en los extremos.

2. Trabajando de izquierda a derecha y de arriba hacia abajo, se aplica la DCT a cada

bloque, transformando sus valores del dominio espacial al dominio de las frecuencias.

3. Cada bloque es dividido usando una matriz de cuantificación que esta dada con relación

al factor de calidad de compresión deseado.

Page 46: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 36

4. Se codifica el mensaje secreto utilizando un código de Hamming (7,4) con el objetivo de

incrementar la robustez del mensaje oculto y corregir algún error, en caso de que se pierda

algún bit del mensaje secreto debido a la compresión de la imagen en JPEG.

5. El mensaje codificado se inserta en el DC y en los primeros 9 AC de cada bloque de

8X8 y teniendo en cuenta que si es un “1” el bit del mensaje secreto a ocultar, el valor

absoluto del DC o AC en el que se va a insertar el “1” se convierte en impar y si es un “0”

el bit a ocultar entonces se convierte en par el DC o el AC correspondiente.

6. A cada bloque se le aplica la IDCT para hacer una reconstrucción de la imagen

obteniendo así nuestro esteganograma.

Proceso de extracción:

1. El esteganograma es dividido en bloques de 8x8 píxeles.

2. Trabajando de izquierda a derecha y de arriba hacia abajo, aplicamos la DCT a cada

bloque del esteganograma.

3. Se extraen el valor modular correspondiente al AC y a cada uno de los primeros 9 AC de

cada bloque de 8X8, si este valor es impar, indica que corresponde a un “1” el valor del bit

del mensaje secreto que estamos extrayendo y si es par corresponde a un “0” y así

sucesivamente hasta obtener todos los bits del mensaje secreto codificado.

4. Los bits obtenidos del paso anterior se hacen pasar por el decodificador de Hamming

(7,4) obteniendo como resultado nuestro mensaje secreto, el cual después de convertido en

código ASCII podemos leer en pantalla.

Page 47: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 37

Figura 2.3 Proceso de Inserción del Mensaje Secreto.

Page 48: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 38

Figura 2.4 Proceso de Extracción del Mensaje Secreto

2.3.1 Proceso de inserción

En este proceso el algoritmo esteagnográfico se encarga de la introducción del mensaje

oculto en la imagen utilizada como cubierta y en es donde se realizan los análisis más

extensos y comparaciones para la toma de decisiones de sus procesos, así como

conversiones, trabajo con matrices y se introduce un codificador para aumentar la robustez

del mensaje insertado; por lo que requiere de un mayor tiempo de ejecución.

Para garantizar la robustez ante la compresión JPEG es necesario ocultar los datos en áreas

significativas de la imagen, de forma tal que al ser comprimida esta con un factor de

calidad igual o mayor que la matriz de cuantización que usaremos en el proceso de

ocultamiento del mensaje, este se pueda recuperar sin ninguna pérdida.

El primer paso, una vez obtenida la imagen a color, consiste en convertirla a escala de

grises para obtener la matriz de luminancia con las características explicadas anteriormente.

Después al igual que en JPEG dividimos esta matriz en bloque de 8X8 para acelerar el

Page 49: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 39

proceso del cálculo de la DCT, dado que la imagen encubridora puede ser de cualquier

tamaño y se demoraría notablemente el cálculo de la DCT en una matriz con grandes

dimensiones. En caso de que las dimensiones de la imagen no sean múltiplos de 8 se usan

bits de relleno para realizar el proceso. Para realizar este paso utilizamos la función del

MATLAB: “blkproc”, ver más detalles en el Anexo V.

Posteriormente trabajando de izquierda a derecha y de arriba hacia abajo, se aplica la DCT

a cada bloque del esteganograma, con el objetivo de transformar del domino espacial al

dominio de la frecuencia, que es donde será ocultado el mensaje, porque como se explicó

en el epígrafe 2.1.2 Esquema del compresor JPEG, la DCT nos brinda una alto valor de

compactación de la energía, quedando ubicados los valores significativos de las frecuencias

de cada bloque ,que son los más significativos ante modificaciones para el HVS, ubicados

en la parte izquierda superior y los menos significativos en el resto del bloque.

Cada una de estas matrices de 8x8 se cuantifica mediante la aplicación de una matriz

máscara que se muestra a continuación:

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

=

0000000000000000000000000000000000000001000000110000011100001111

mask

donde podemos apreciar que la matriz resultante después de la cuantización va a conservar

los 10 valores de las frecuencias que se encuentren en la parte izquierda superior donde se

encuentren los “1” y el resto de los valores con menor importancia se despreciaran y se

pone en su lugar un cero. Brindándole al algoritmo propuesto una robustez equivalente a

una compresión JPEG con una tasa mayor o igual al 40%.

El mensaje secreto se convierte a binario y se le adiciona una bandera al final con el

objetivo de minimizar la sencillez del proceso de extracción del mensaje oculto como se

explicará más adelante. El mensaje oculto además se codifica mediante un código

Hamming (7,4), con ayuda de la funciones del MATLAB “hammgen y encode” (ver más

Page 50: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 40

detalles en Anexo V), brindándole así una tolerancia al error, de 1 bits por cada bloque de 7

bits incrustados en la imagen. Aumentándole de esta forma la robustez al mensaje y

evitando así pérdidas de algunos de los bits de este, en caso de tener que afrontar canales de

comunicaciones ruidosos el esteganograma.

Posteriormente el mensaje codificado se inserta en el DC y en los primeros 9 AC de cada

bloque, que se corresponden con las posiciones de los “1” en la matriz mostrada en (2-6).

Esto se logra mediante un proceso de comparación y redondeo, teniendo en cuenta que si es

un “1” el valor del bit del mensaje secreto a ocultar, el valor absoluto del DC o AC en el

que se va a insertar el “1” se convierte en impar y si es un “0” el bit a ocultar, entonces se

convierte en par el DC o el AC correspondiente. Para redondear el valor se tiene en cuenta

no afectarlo significativamente, dado que si se varía notablemente, se afectaría la

imperceptibilidad del mensaje oculto, parámetro fundamental de todo sistema

esteganográfico.

Para lograrlo se multiplica por 100 cada valor de frecuencia de todos bloques cuantizados

y se redondean sus valores, garantizando así que sean robustas ante compresión las

posiciones donde se ocultaron los bits del mensaje oculto, y que a la vez exista una

compensación entre la robustez obtenida y la imperceptibilidad sacrificada. Si se

multiplicara por un número menor se obtendría una robustez aun mayor pero se modificaría

perceptiblemente la imagen porque existirá una diferencia considerable en la modificación

del valor del píxel correspondiente; y escoger valores menos significativos para ocultar los

bits del mensaje, lo que se conseguiría multiplicando por un número mayor que 100

degradaría la robustez del algoritmo al resultar una imagen que perdería la información ante

el ruido del canal o cualquier proceso de recorte , filtrado o compresión con factores de

calidad (Qf) pequeños, entre muchos otros por los cuales se hace pasar la imágenes

digitales.

El paso anterior con el proceso de redondeo nos brinda la ventaja además de no tener que

convertir la matriz de la imagen a binario para ocultar el mensaje en los bits menos

significativos, realizando la inserción con un menor coste computacional y en un menor

tiempo requerido.

Page 51: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 41

Después a cada bloque se le aplica la IDCT para hacer una reconstrucción de la imagen

mediante la función del MATLAB “blkproc” que fue utilizada al transformar al dominio de

las frecuencias, obteniendo así nuestro esteganograma con un alto parecido a la imagen

original.

2.3.2 Proceso de extracción

El proceso de extracción del mensaje oculto es más sencillo, pues este consiste de forma

general en leer los datos que se encuentran en posiciones específicas de la imagen donde

fue ocultado el mensaje secreto y decodificar dicho mensaje para extraerlo correctamente.

Este proceso requiere de un menor número de transformaciones en la imagen y cálculos con

matrices, por lo tanto el coste computacional y el tiempo de demora serán más pequeño.

El primer paso es dividir el esteganograma salvado del proceso de inserción descrito

anteriormente en bloques de 8X8 píxeles y de igual forma que en el proceso anterior

trabajando de izquierda a derecha y de arriba hacia abajo, aplicamos la DCT a cada bloque

del esteganograma.

Después se multiplican por 100 cada uno de los valores de todos los bloques de 8X8 de la

imagen y se extraen el valor modular correspondiente al AD y a cada uno de los primeros 9

AC, mediante un proceso de comparación se analiza si el valor extraído es impar, indica

que corresponde a un “1” el valor del bit del mensaje secreto que estamos extrayendo y si

es par corresponde a un “0” y así sucesivamente se van obtienen los bits del mensaje

secreto codificado. Cada 14 bits extraídos, estos se decodifican formándose una palabra

binaria de 8 bits, la cual se compara con la bandera utilizada en el algoritmo de inserción

del mensaje oculto, y en caso de corresponderse se detiene el proceso de extracción del

mensaje, de lo contrario se siguen extrayendo bits hasta obtener el mensaje completo.

Una vez obtenidos los bits del paso anterior, se hacen pasar por el decodificador de

Hamming (7,4), mediante la funciones “hammgen y decode” (ver más información en el

Anexo VI); y obteniendo como resultado nuestro mensaje secreto, el cual después de

convertido en código ASCII podemos leer en pantalla.

Page 52: Diseño de un Algoritmo Esteganográfico Robusto ante la

CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA COMPRESIÓN JPEG 42

2.4 Conclusiones del capítulo

El esquema esteganográfico diseñado e implementado en MATLAB v7.0 es un método de

sustitución, desarrollado en el dominio frecuencial y que además selecciona áreas

significativas de la imagen que son menos afectadas al aplicar compresión JPEG a la

imagen para ocultar su mensaje secreto. Por ello, este algoritmo posibilita un alto nivel de

robustez ante la compresión JPEG, sin afectar significativamente la imperceptibilidad del

esteganograma. En comparación con muchos métodos espaciales que generalmente poseen

una mayor capacidad de empotramiento de la información oculta y una mayor

imperceptibilidad, este algoritmo sacrifica niveles de imperceptibilidad y capacidad de

inserción, para lograr una mayor robustez contra ataques tales como: compresión o recorte

de la imagen y ruido en el canal.

Page 53: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 43

CAPÍTULO 3. ANÁLISIS DE LOS RESULTADOS

Este capítulo se validará el método esteganográfico propuesto en el capitulo 2 mediante la

aplicación de algunos ataques y el análisis de los resultados alcanzados. Para la realización

de pruebas a este algoritmo implementado en MATLAB, se utilizaron cuatro imágenes con

diferentes tamaños y contenidos de detalle, con el objetivo de probar la eficiencia del

mismo en varios casos. Los resultados obtenidos se evaluaron teniendo en cuenta la

robustez, imperceptibilidad y capacidad de inserción de cada uno de los esteganogramas

obtenidos.

3.1 Criterios de evaluación

Un sistema esteganográfico tiene que generar un esteganograma suficientemente inocente,

ya que no debe de levantarse ninguna sospecha sobre la existencia del mensaje oculto. Por

lo tanto, el grado de distorsión o imperceptibilidad del esteganograma respecto a la imagen

original es un asunto muy importante. Una medida de distorsión comúnmente usada y

explicada anteriormente es el PSNR (relación señal a ruido pico) del esteganograma con

respecto a la imagen original, como se muestra en (3.1) y (3.2).

MSEPSNR

2

10255log*10= (3-1)

( ) ( )( )

NM

jiXjiXMSE

M

i

N

j

*

,,1 1

2∑∑= =

′−= (3-2)

Page 54: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 44

Donde y son la imagen encubridora y el esteganograma, respectivamente, y X X ′ M ,

son el tamaño de ambas imágenes.

N

Además de la imperceptibilidad, la capacidad de ocultamiento es sumamente importante.

Manteniendo una distorsión pequeña posible, todos sistemas esteganográficos buscan

aumentar la capacidad de ocultamiento. La capacidad de ocultamiento para un sistema

esteganográfico cuando la cubierta es una imagen, se mide en número de bits de mensaje

secreto por píxel (bpp), como se muestra en (3.3).

)(__)(__

__c

s

IBitsdeNúmeroMBitsdeNúmero

toOcultamiendeCapacidad = (3-3)

Donde es el mensaje oculto e la imagen encubridora. sM cI

Generalmente, cuando un esteganograma se transmite por un canal ideal y no recibe ningún

tipo de modificación, tal como compresión, el mensaje oculto debe de recuperarse al 100%.

Sin embargo cuando el canal de transmisión no es ideal (introduce alguna cantidad de ruido

o recibe alguna modificación), no se puede recuperar al 100% el mensaje oculto. El error de

recuperación del mensaje oculto se mide generalmente tasa de bits erróneo "Bit Error Rate"

(BER) y se calcula en (3.4).

ostransmitidtotalBitsNúmeroErróneosBitsNúmeroBER___

__= (3-4)

Los tres asuntos mencionados anteriormente forman contrapartes cuando se trata de

aumentar capacidad de ocultamiento, sacrificaría el grado de imperceptibilidad y robustez,

mientras se trata de aumentar robustez del sistema, sacrificarían capacidad o

imperceptibilidad y viceversa.

Este algoritmo de ocultamiento de datos se evalúa desde diferentes puntos de vista, usando

varias imágenes (Lenna, Pirámides, Mona Lisa, Tigre), figura 3.1.

Page 55: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 45

(a) (b) (c) (d)

Figura 3.1 Imágenes pruebas. (a) Lenna, (b) Mona Lisa, (c) Pirámide, (d) Tigre

El esteganograma resultante del proceso de inserción de cada una de las imágenes será

sometido a los siguientes ataques:

1. Compresión JPEG.

2. Ruido Impulsivo (Salt & Pepper).

Después de haber atacado el esteganograma, pasaremos a la parte de extracción del mensaje

oculto, midiendo la eficiencia del algoritmo en base a tres criterios:

1. Imperceptibilidad (PSNR).

2. Robustez (BER)

3. Capacidad de Inserción.

3.2 Ataque Compresión JPEG

Del análisis de la tabla 3.1, que muestra la tasa de bit erróneo (BER) cuando el

esteganograma sufre compresión JPEG con diferentes factores de calidad ( ), podemos

decir que el algoritmo propuesto es robusto ante la compresión JPEG, que emplea un factor

de calidad mayor o igual a 70% para todas las imágenes usadas, e incluso para un 75 % de

las imágenes pruebas. Además, coincide que para un factor de calidad de =40%, el

mensaje oculto se recupera sin errores; sin embargo, al comprimir la imagen con un factor

de calidad menor que 40%, el número de errores extraído del mensaje aumenta

significativamente, y la distorsión causada por la compresión es muy grande

fQ

fQ

Page 56: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 46

( ) para parecer una imagen inocente en la transmisión, como se muestra la

tabla 3.2 de distorsión del esteganograma para distintos valores de factor de calidad.

dBPSNR 30≤

Si observamos los valores de BER y PSNR para la imagen “Pirámides.jpg” en específico,

notaremos que es la que menos distorsión sufre para iguales factores de calidad. En cambio,

el mensaje oculto que se encuentra empotrado en esta posee mayor número de errores al

extraerlo que los del resto de las imágenes para valores de pequeños. De las tablas 3.1 y

3.2, determinamos que la matriz de cuantificación M es una buena selección para

comprimir las imágenes esteganografiadas con el algoritmo propuesto, considerando que

una compresión JPEG con =70% ocasiona una distorsión mínima que puede ser tolerada

por el sistema visual humano. Además, el mensaje extraído carece de errores.

fQ

70

fQ

Tabla 3.1 Tasa de bits erróneo (BER) cuando el esteganograma sufre compresión JPEG

con diferentes factores de calidad.

BER (%) Calidad de Compresión (%) Lenna Mona Lisa Pirámides Tigre

Qf = 100 0 0 0 0 Qf =90 0 0 0 0 Qf =80 0 0 0 0 Qf =70 0 0 0 0 Qf =60 0 0 0.5814 0 Qf =50 0 0 1.0714 0 Qf =40 0 0 1.1628 0 Qf =30 1.0714 1.25 0.71429 0.89286 Qf =20 5.7143 10.714 8.2143 - Qf =10 - - - - Qf =0 - - - -

Page 57: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 47

Tabla 3.2 Distorsión del esteganograma cuando este sufre compresión JPEG con diferentes

factores de calidad.

PSNR (dB) Calidad de Compresión (%) Lenna Mona Lisa Pirámides Tigre

Qf = 100 32.7 32.833 33.003 32.346 Qf =90 32.617 32.593 32.968 32.251 Qf =80 32.481 32.593 33.016 31.834 Qf =70 32.675 32.842 32.947 32.352 Qf =60 32.17 32.202 32.828 31.321 Qf =50 31.365 31.275 32.574 30.325 Qf =40 31.196 30.939 32.6 29.9 Qf =30 31.069 30.869 32.31 29.8 Qf =20 30.531 30.551 31.659 29.554 Qf =10 30.366 30.852 32.506 29.315 Qf =0 29.094 30.398 31.728 28.439

En las figuras 3.2 y 3.3 se muestran graficados todos los valores correspondientes a las

tablas 3.1 y 3.2.

Figura 3.2 Tasa de bits erróneo (BER) cuando el esteganograma sufre compresión JPEG

con diferentes factores de calidad.

Page 58: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 48

Figura 3.3 Distorsión del esteganograma cuando este sufre compresión JPEG con

diferentes factores de calidad.

La tabla 3.3 muestra mensajes extraídos de un esteganograma comprimido por JPEG con

factores de calidad mayores o iguales que 40% y menores que 40%, respectivamente. El

proceso de inserción y extracción del mensaje secreto se realizó en una PC con las

siguientes características: Celeron (R), CPU con 2.40GHz y 256 MB de RAM. La imagen

utilizada fue la de Lenna (512X512 píxel) que se muestra en la figura 3.4 a). El texto

oculto es un fragmento del libro “El principito” de Antoine de Saint Exupery.

Para una imagen con estas características (512X512 píxel) el algoritmo diseñado permite

ocultar un mensaje máximo de 2925 caracteres, parámetro que especifica el programa al

introducirle la estegoimagen. El proceso de inserción de dicho mensaje lo realizó en un

tiempo de 6.031 segundos y el proceso de extracción en un tiempo de 5.687 segundos. Si

utilizamos en cambio una imagen de Lenna más pequeña con resolución de 131X131 píxel,

podemos ocultar como máximo un mensaje de 191 caracteres, pero en un tiempo mucho

menor, de 0.563 segundos y extraerlo en 0.547 segundos, realizándolo en la misma PC.

Page 59: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 49

Tabla 3.3 Mensaje recuperado con y con %40≥fQ %40<fQ

Mensaje recuperado

Mensaje recuperado

40≥fQ BER=0

40<fQ BER=1.2868 %

Solo se ve bien con el corazón; lo esencial es invisible a los ojos.

Sólo sí¨ve bien con el corazûî» lo esencial es invisible a los ojos.

La tabla 3.3 muestra el mensaje recuperado después del ataque de compresión JPEG

aplicando diferentes matrices de cuantificación en el proceso de inserción y detección.

Cuando el factor de calidad de la compresión es mayor o igual a 40%, el mensaje oculto se

recupera completamente (BER=0). Sin embargo, cuando el factor de calidad se reduce a

valores menores que 40% (la tasa de compresión aumenta), el mensaje oculto no se puede

recuperar completamente (BER=0.012868) y se pierden un 1.29 % de los bits totales del

mensaje oculto.

En la figura 3.4 se muestran la imagen original y la imagen con el mensaje oculto

(esteganograma) para una calidad de compresión %40=fQ y podemos observar que la

distorsión en el esteganograma debido a la inserción del mensaje secreto es muy pequeña e

imperceptible para el HVS.

Page 60: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 50

(a) (b)

Figura 3.4 (a) Imagen original, (b) Esteganograma para una compresión JPEG con

%40=fQ .

3.3 Ataque Ruido Impulsivo

Con base a los resultados que se muestran en la gráfica 3.5 y 3.6, se concluyó que el

algoritmo es vulnerable a los taques de ruido impulsivo con densidad de ruido mayor o

igual al 0.2 %, dado que la imagen atacada con una densidad mayor o igual que 0.2 % tiene

una PSNR menor a 30 dB, la cual ya no es una imagen inocente para ser imperceptible al

HVS y además el sistema propuesto después de este ataque recupera el mensaje oculto con

mayor valor de 0.005.

Tabla 3.4 Tasa de bits erróneo para diferentes porcentajes de ruido impulsivo.

BER (%) Porcentaje de Ruido Impulsivo (%) Lenna Mona Lisa Pirámides Tigre

0 0 0 0 0 0.2 4.2279 5.3309 3.4926 7.7206 0.4 8.4559 16.176 8.6397 10.294 0.6 20.735 21.395 29.983 15.581 0.8 25.588 26.113 30.221 18.05 1.0 26.28 26.98 36.684 24.081 1.2 34.449 38.432 40.863 28.352

Page 61: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 51

Tabla 3.5 Distorsión del esteganograma para diferentes porcentajes de ruido impulsivo.

PSNR(dB) Porcentaje de Ruido Impulsivo (%) Lenna Mona Lisa Pirámides Tigre

0 32.7 32.833 33.003 32.346 0.2 29.105 29.287 29.261 28.931 0.4 27.333 27.192 27.535 27.203 0.6 25.902 25.921 25.026 25.813 0.8 24.862 24.876 24.923 24.974 1.0 24.095 24.086 24.006 24.114

Figura 3.5 Tasa de bits erróneos (BER) para diferentes densidades de ruido impulsivo.

Page 62: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANÁLISIS DE LOS RESULTADOS 52

Figura 3.6 Distorsión del esteganograma para diferentes densidades de ruido impulsivo.

3.4 Conclusiones del método

El algoritmo implementado en el capítulo anterior fue diseñado para ser robusto ante

ataques JPEG. La robustez contra ataques de compresión JPEG puede variar dependiendo

de la matriz de cuantificación que se use en el algoritmo. Esto quiere decir que si se usa una

matriz de cuantificación con un factor de calidad 40% en el algoritmo, el esteganograma

podrá resistir compresiones JPEG con factores de calidad desde un 100% hasta un 40%.

La transparencia del mensaje oculto y tasa de bits ocultos dependen ligeramente de las

imágenes encubridoras, ya que imágenes con mayor detalle, tales como 'Tigre’ se puede

ocultar más información que en imágenes planas, tales como ‘Pirámides’ y la distorsión

numérica (PSNR) se disminuye cuando aumenta la tasa de bits ocultos, lo cual se puede

observar en la gráfica 3.3 donde la imagen ‘Tigre’ es la que posee menor PSNR y la imagen

‘Pirámides’ es la que posee mayor PSNR y por tanto es la más imperceptible. Para ataques

de ruido impulsivo, en el sistema propuesto el mensaje oculto no se recupera

completamente. Considerando el nivel de distorsión que causa a la imagen y la calidad del

canal de comunicación, se puede concluir que el sistema propuesto es moderadamente

robusto.

Page 63: Diseño de un Algoritmo Esteganográfico Robusto ante la

CONCLUSIONES Y RECOMENDACIONES 53

CONCLUSIONES Y RECOMENDACIONES

Conclusiones

Con el desarrollo del presente trabajo:

Se incluyó un estudio del estado del arte de la esteganografía, principalmente la

esteganografía en imágenes digitales, así como su amplia variedad de

aplicaciones.

Se analizaron las características fundamentales de las estegosistemas, como son:

la imperceptibilidad del mensaje oculto, la capacidad de empotramiento, la

seguridad y la robustez ante la compresión de imágenes digitales.

Fueron examinadas las técnicas de compresión de imágenes digitales más

utilizadas, en específico la compresión JPEG, determinándose las posibles

pérdidas de calidad e información visual en las imágenes digitales sometidas a

dicha compresión y se ubicacaron los píxeles menos afectados en el la imagen

durante el proceso de compresión.

Se determinó que el método de Hamming (7,4) puede ser utilizado en la

implementación de un algoritmo esteganográfico, teniendo en cuenta su razón

de código e incidencia en la capacidad de inserción.

Fue diseñado un método esteganográfico que cumple eficientemente con el

enmascaramiento de información en imágenes digitales: aportando los niveles

requeridos de robustez ante la compresión JPEG, dado que el proceso de

inserción del mensaje oculto se realiza en el dominio de la DCT y en los píxel

con menos probabilidad de pérdidas de información; sin afectar notablemente la

imperceptibilidad del esteganograma.

Page 64: Diseño de un Algoritmo Esteganográfico Robusto ante la

CONCLUSIONES Y RECOMENDACIONES 54

La validación y documentación del método estudiado permitió la verificación de

sus potencialidades, la comparación con otros métodos existentes y el

incremento de su valor teórico-práctico.

Recomendaciones

Aunque el presente trabajo cumplió exitosamente los objetivos planteados, las siguientes

recomendaciones pueden orientarnos a la búsqueda de un desempeño más exitoso de la

implementación del método esteganográfico:

Continuar el estudio de las características de las imágenes y de la compresión

JPEG, que nos permita realizar una metodología para la selección de la

estegoimagen adecuada para un proceso esteganográfico determinado.

Continuar el estudio de otras formas de realizar la selección de los píxel donde

se oculta el mensaje secreto.

Investigar como poder seleccionar los bloques de 8X8 que posean mayor

energía despues de ser aplicada la DCT a la imagen , con el obetivo de ocultar el

mensaje secreto solamente en píxeles específicos de estos bloques; y garantizar

así que los bloques donde se oculten la información sean los menos afectados

por la compresión.

Continuar el estudio de otros métodos más eficientes de codificación, que

permitan detección y corrección de errores, con el objetivo de aumentar la

capacidad de incrustación del mensaje.

El tamaño de las estegoimagenes utilizadas incide significativamente en la

demora del proceso esteganográfico implementado, por lo que el mismo

representa un reto continuo para versiones posteriores de la actual

implementación.

Page 65: Diseño de un Algoritmo Esteganográfico Robusto ante la

REFERENCIAS BIBLIOGRÁFICAS 55

REFERENCIAS BIBLIOGRÁFICAS

[1] D. Master, Introducción a la Esteganografía 25 pages., 2004.Disponible en: http://www.hpn-sec.net/death/articles/int_esteg/Estega.pdf

[2] A. R. Garnacho, J. M. E. Tapiador, and J. C. H. Castro, "Esteganografía, Esteganálisis e Internet," Instituto "Juan Velázquez de Velasco" de Investigacion para la Seguridad y la Defensa. Carlos III de Madrid., 2007.Disponible en: http://commons.wikimedia.org/wiki/File:Estegosistema.JPG

[3] F. Diatel, "Esteganografía y Marcas de agua," 2002.Disponible en: http://asignaturas.diatel.upm.es/seguridad/trabajos/trabajos/curso%2001%2002/esteganografia.pdf

[4] A. P. Carlos and S. H. Eduardo, "Desarrollo de Técnicas de Esteganografía," Universidad Nacional de Trujillo Escuela Académico Profesional de Informática, 6 pages, 2004

[5] Á. T. Rodríguez, "Sistema Esteganográfico para Imágenes JPEG2000," Universidad Autónoma de Barcelona. Escuela Técnica Superior de Ingenieria, 59 pages, 2008.Disponible en: http://www.recercat.net/bitstream/2072/13807/1/PFC+Alex+Torres+Rodriguez.pdf

[6] L. J. C. Ardita, "Esteganografía," CYBSEC. Fundamentos de Seguridad Informática, Escuela Politécnica del Ejército, vol. Maestria en Gerencia de Sistemas, 23 pages, 2005.Disponible en: http://www.cybsec.com/Stegano.pdf

[7] R. G. Cárdenas, "Esteganografía língustica," Segundo Congreso de Seguridad en Cómputo ULSA 2007, 7-9 de marzo 2007.Disponible en: http://zeus.lci.ulsa.mx/congreso07/Presentaciones/Roberto%20G%F3mez%20-%20Esteganografia.pdf

[8] H.-C. Wu, N.-I. Wu, C.-S. Tsai, and M.-S. Hwang, "Image Steganographic Scheme Based on Pixel-Value Differencing and LSB Replacement Methods," IEEE Proceding -Vis. Image Signal Process, vol. 152, pp. 611-615, October 2005.Disponible en: http://ieeexplore.ieee.org/iel5/2200/32472/01515999.pdf

Page 66: Diseño de un Algoritmo Esteganográfico Robusto ante la

REFERENCIAS BIBLIOGRÁFICAS 56

[9] G. A. Isaza, C. A. Espinosa, and S. M. Ocampo, "Análisis de Técnicas Esteganográficas y Estegoanálisis en Canales Encubiertos, Imágenes y Archivos de Sonido," Vector, vol. 1, pp. 29-38, enero-diciembre 2006.Disponible en: http://vector.ucaldas.edu.co/downloads/Vector1_3.pdf

[10] K. M. Sullivan, "Image Steganalysis: Hunting & Escaping," Electrical and Computer Engineering, University of California. Santa Barbara, 178 pages, 2005.Disponible en: http://vision.ece.ucsb.edu/publications/05ThesisSullivan.pdf

[11] C. L. V. Bautista, J. C. L. Hernández, M. N. Miyatake, and H. M. P. Meana, "Esteganografía en una Imagen Digital en el Dominio DCT," Científica. Instituto Politécnico Nacional, vol. 11, pp. 169-176, 24-Febrero 2007.Disponible en: http://redalyc.uaemex.mx/redalyc/pdf/614/61411403.pdf

[12] A. G. Garrido, S. M. T. Llanera, M. E. G. Ramos, and S. O. Alías, "Marcas de Agua: Firma Digital," 2006.Disponible en: http://www.sav.us.es/formaciononline/asignaturas/asigpid/apartados/textos/recursos/firmadigital03/doc.pdf

[13] L. M. Marvel, C. T. Retter, and J. Charles G. Boncelet, "A Methodology for Data Hiding Using Images," IEEE Latin America Transactions1998.Disponible en: http://www.research.telcordia.com/society/TacCom/papers98/30_07i.pdf

[14] P. A. H. Avalos, "Algoritmo Robusto de Marcas de Agua Usando Similitudes Basado en la Codificación Fractal," Instituto Nacional de Astrofísica, Optica y Electrónica, 104 pages, 2008.Disponible en: http://ccc.inaoep.mx/~cferegrino/Publicaciones/Tesis MSc Pedro Hernandez Avalos.pdf

[15] V. H. Guzmán, C. C. Ramos, M. N. Miyatake, and H. P. Meana, "Algoritmo de Marca de Agua Basado en la DWT para Patrones Visualmente Reconocibles," IEEE Latin America Transactions, vol. 4, pp. 255-265, June 2006.Disponible en: http://ieeexplore.ieee.org/iel5/9907/4472117/04472122.pdf?arnumber=4472122

[16] J. L. Hernández, C. V. Bautista, M. N. Miyatake, and H. P. Meana, "Algoritmo Esteganografico Robusto a Compresión JPEG Usando DCT," 2005.Disponible en: http://tlapixqui.izt.uam.mx/septcol/pags/resumenes/Contrib8_Cripto_M-Nakano.pdf

[17] G. V. Ginneken, T. Christiaensen, W. Vloeberghs, and T. Dams, "Survey of Quantization Index Modulation Techniques in Digital Watermarking.," Digital Watermarking2004.Disponible en: http://www.asci.tudelft.nl/General_Information/AnnualReport2004.pdf

[18] V. V. C. S. I. Limited, "Multiresolution Watermark Based on Wavelet Transform for Digital Images," 2005.Disponible en: http://www.mathworks.com/matlabcentral/fileexchange/3508?controller=file_infos&download=true

[19] J.Ruiz, "Compresión de Imagen," Universidad Distrital Francisco Jose de Caldas, 75 pages, 2004.Disponible en: http://www.udistrital.edu.co/comunidad/profesores/jruiz/jairocd/texto/uit/compimage.pdf

Page 67: Diseño de un Algoritmo Esteganográfico Robusto ante la

REFERENCIAS BIBLIOGRÁFICAS 57

[20] A. R. G. Aguilar, "Modelos Visuales en el Análisis de la Calidad de imagen," Departamento de Ingeniería Electrónica. Instituto de Óptica “Daza de Valdés” (C.S.I.C.), Universidad Politécnica de Madrid. Escuela Técnica Superior de Ingenieros de Telecomunicación, 2006.Disponible en: http://optica.csic.es/papers/pfc_ana.pdf

[21] I. C. Cortizo, J. L. Castro, N. L. Sambade, and I. N. Gómez, "Estándar de Compresión de Imagen JPEG," 2006-2007.Disponible en: http://www.des.udc.es/~adriana/Perifericos/Trabajos2006/Trabajo1_jpeg_apuntes.pdf

[22] J. U. Moltó, "Compresión de imágenes mediante JPEG," 2006

[23] T. P. Santamaría, "Electrónica Digital," Dpto. de Ing. Electrónica y C., Universidad de Zaragoza, 9 pages, 1998.Disponible en: http://unizar.es/euitiz/areas/aretecel/docencia/digitel/digitelib.htm

[24] J. Adiego, M. A. M. Prieto, and P. d. l. Fuente, "Edge-Guided Natural Language text Compression," Depto. de Informática, Universidad de Valladolid, 14-25 pages, 2007

[25] R. Apolloni and S. Molina, "Códigos Correctores de Errores," Cátedra de Teoría de la Información, 1998.Disponible en: http://www.unsj-cuim.edu.ar/portalzonda/congreso/papers/1998/CON12.PDF

[26] A. A. Davydov and L. M. Tombak, "An alternative to the Hamming code in the class of SEC-DED codes in semiconductor memory," Information Theory, IEEE Transactions on, vol. 37, pp. 897-902, 8 de junio 2004

[27] R. W.Hamming, "Error detecting and error correcting codes," The Bell System Technical Journal, vol. XXVI, pp. 147-160, April 1950.Disponible en: http://users.ece.utexas.edu/~touba/research/jlpe05.pdf

[28] R. A. Escamilla, "Códigos para Detección y Corrección de Errores en Comunicaciones Digitales," Ingenierías, vol. Vol. VII, pp. 51-55, Octubre-Diciembre 2004.Disponible en: http://ingenierias.uanl.mx/25/25_codigos.pdf

[29] I. Honkala and A. Tiet¨av¨ainen, "Codes and number theory," in Handbook of Coding Theroy, Eds. Amsterdam, vol. II, 1141-1194 pages, 2004

[30] E. Aldabas, M. Corbalán, and J. M. Cisa, "Introducción a los Códigos de Hamming," Escuela Universitaria de Engenieria Técnica Industrial de Terrassa,, 111 pages, 2006.Disponible en: http://www.jcee.upc.es/JCEE2006/pdf_ponencies/PDFs/JCEE06_14_12_T2.pdf

[31] R. A. Podestá, "Códigos Cíclicos," Jornadas de Criptografía y Códigos Autocorrectores (JCCA), pp. 29, 20-24 de noviembre 2006.Disponible en: http://www.famaf.unc.edu.ar/~cripto06/cursoPodesta.pdf

[32] M. Massoud, "Hamming Code," pp. 14, 24 de marzo 2008.Disponible en: http://www.engineer.tamuk.edu/cleung/EEEN4329/10_Hamming%20Code.pdf

[33] M. Malek, "Binary Linear Hamming Codes," California State University, East Bay, 2007.Disponible en: http://www.mcs.csueastbay.edu/~malek/Class/Hamming.pdf

Page 68: Diseño de un Algoritmo Esteganográfico Robusto ante la

REFERENCIAS BIBLIOGRÁFICAS 58

[34] U. K. Kumar and B.S.Umashankar, "Improved Hamming Code for Error Detection and Correction," Wireless Pervasive Computing, B.N.M. Inst. of Technol, 2007.Disponible en: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4147113

[35] M. Moisio, "The moments of a Kloosterman sum and the weight distribution of a Zetterberg type binary cyclic code," IEEE Trans. Inf. Theory, vol. IT-53, pp. 843-8472007

[36] Fortonani, D. Peralta, A. Wilde, and M. Lucila, "Acentuado de una Imagen en el Dominio JPEG," Facultad de Ingenier´ıa y Ciencias Hídricas, Universidad Nacional del Litoral, 9 pages, 2007.Disponible en: http://cpdsi-fich.wdfiles.com/local--files/tpsaplicacion/2007_Fortonani-Acentuado.pdf

[37] R. Molina, "Codificación basada en Transformaciones. Aplicada a Imagenes," Depto. de Ciencias de la Computación e Inteligencia Artificial, 46 pages, 2004

[38] J. G. d. Jalón, J. I. Rodríguez, and J. Vidal, Aprenda Matlab 7.0 Como si Estuviera en PrimeroMadrid: Escuela Técnica Superior de Ingenieros Industriales. Universidad Politécnica de Madrid, 2005

Page 69: Diseño de un Algoritmo Esteganográfico Robusto ante la

GLOSARIO DE TÉRMINOS 59

GLOSARIO DE TÉRMINOS

ASCII: American Standard Code for Information Interchange, (código utilizado para la codificación de texto).

BER: Bit Error Ratio, (Razón de error de bit).

CCE: Código corrector de errores.

CPU: Control Process Unit, (Unidad de control y procesamiento).

DCT: Discrete Cosine Transform, (Transformada discreta del coseno).

DFT: Discrete Fourier Transform, (Transformada discreta de Fourier).

DWT: Discrete Wavelet Transform, (Transformada discreta de Wavelet).

EOB: End of Block, (final de bloque).

GIF: Graphics Interchange Format, (Formato de compresión de imágenes sin pérdidas).

HVS: Human Visual System, (Sistema visual humano).

IDCT: Inverse Discrete Cosine Transform, (Transformada discreta del coseno inversa).

IP: Internet Protocol, (Protocolo de internet).

ISO: International Organization for Standardization, (Organización internacional para la estandarización).

JPEG: Join Photographic Experts Group, (Estándar de compresión de imágenes con pérdidas que utiliza la DCT).

Page 70: Diseño de un Algoritmo Esteganográfico Robusto ante la

GLOSARIO DE TÉRMINOS 60

JPEG 2000: Join Photographic Experts Group 2000, (Estándar de compresión de imágenes sin distorsión que utiliza la DWT).

LSB: Least Significan Bit, (Bit menos significativo).

LZ: Liv Zempel, (Método de codificación usado para la compresión sin pérdida).

LZW: Lempel Ziv Welch, (Algoritmo de compresión sin pérdida).

MAE: Maximum Absolute Error, (Error absoluto máximo).

MATLAB: Matriz Laboratory, (Herramienta de procesamiento y programación que realiza cálculos numéricos con matrices).

MSE: Mean Squared Error, (Error cuadrático medio).

PC: Personal Computer, (Computadora personal).

PSNR: Peak Signal To Noise Ratio, (Relación señal a ruido pico).

RAM: Memory Acces Random, (Memoria de acceso aleatorio).

RGB: Red Green Blue, (Formato para la representación de imágenes a color).

RLE: Run Length Encoding, (Algoritmo de codificación utilizado en JPEG).

RMSE: Root Mean Squared Error, (Raíz error cuadrático medio).

SNR: Signal To Noise Ratio, (Relación señal a ruido).

TCP: Transmission Control Protocol, (Protocolo de control de transmisión).

TCP/IP: Internet Protocol Suite, (Conjunto de protocolos de Internet).

Page 71: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 61

ANEXOS

Anexo I Historia de la esteganografía

A través de la historia, la esteganografía ha sido empleada utilizando diversos métodos y

variantes para ocultar la información .Ya desde los tiempos de la antigua Grecia (año 474

ACC), la historia cuenta como se ocultó un mensaje enviado hacia Esparta. En esos

tiempos se utilizaban tablones cubiertos con cera para escribir mensajes, por lo que el

mensaje oculto fue escrito directamente en un tablón de madera, luego se cubrió con cera y

finalmente un nuevo mensaje fue escrito sobre la cera [1]. Otra de las primeras técnicas fue

la de ocultar los escritos en papel utilizando tinta invisible, hecha en base a zumo de frutas,

vinagre u orina, la que se hacía visible al calentar el papel. Un método usado durante siglos

consistía en tatuar al mensajero (generalmente un esclavo) un mensaje en la cabeza

afeitada, para después dejarle crecer el pelo y enviar así el mensaje oculto.

El cifrado nulo (Null Cipher) es un método de escritura de meta-información en un texto,

usado desde hace siglos y que aún hoy en día se utiliza, pues se trata posiblemente de uno

de los métodos más sencillos de ocultar información. Consiste en escribir un texto

aparentemente inofensivo donde, mediante algún mecanismo conocido por el legítimo

receptor de la información (actualmente hablamos de algoritmos y claves), subyace la

información realmente importante. Ejemplo: La concatenación de la primera letra de cada

palabra [4].

Durante la Segunda Guerra Mundial, se microfilmaban los mensajes para luego reducirlos

hasta el tamaño de un punto, con lo que ese mensaje podría ser enviado como el punto de la

“i” dentro de otro mensaje, sin levantar sospecha alguna [3].

Page 72: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 62

Actualmente, con el uso de los computadores y el intercambio de información a través de

medios informáticos, se ocultan mensajes en archivos que a simple vista son comunes y

corrientes, como fotografías o archivos de música, pero que con un software adecuado

podría obtenerse un mensaje que se encuentre oculto dentro de esos archivos. Las técnicas

de esteganografía se vuelven más eficientes si los mensajes ocultos en las imágenes se

encuentran encriptados. De esta forma, no solo habría que detectar los archivos que

contengan posibles mensajes (de los miles de millones que circulan por Internet a diario),

sino que también habría que decodificar tales mensajes para volverlos legibles.

En los últimos años, la esteganografía ha ganado gran interés, debido en parte a la

sospecha de que esta tecnología pudiera estar siendo utilizada por los terroristas para

comunicar los planes de próximos ataques [6]. Aunque tales afirmaciones no han sido

plenamente confirmadas, este tema ha sido muy discutido en la comunidad de las

tecnologías de la información.

Anexo II Codificación de texto

El texto que configura un libro, folleto, carta, documento o cualquier otro tipo de escrito

está compuesto por una sucesión ordenada de caracteres alfabéticos y numéricos

(alfanuméricos), junto con algunos signos de puntuación, espacios en blanco, separación

entre párrafos, tabulaciones, etc.

Nuestro alfabeto utiliza 26 caracteres alfabéticos (25 letras simples más la w) en dos

formas, mayúsculas y minúsculas, a los cuales hay que añadir 10 cifras decimales, varios

signos de puntuación, algunos signos matemáticos (+, -, =, >, <...) y otros caracteres

especiales. Un teclado mecanográfico de tipo normal presenta cerca de medio centenar de

teclas, con dos posibilidades cada una; en total, unos 100 caracteres. Para su codificación

bastarán palabras de 7 bits y sobrará una veintena larga de palabras que se utilizarán para

caracteres de control (fin de párrafo, fin de página, salto de línea, tabulaciones...).

El código más utilizado para la codificación de textos es el ASCII (American Standard

Code for Information Interchange) que utiliza palabras de 7 bits conforme a la tabla I:

Page 73: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 63

Tabla I: codificación de texto

Hexadecimal

b6b5b4b3b2b1b0

0 1 2 3 4 5 6 7

0 NUL DLE SP 0 @ P ̀ p

1 SOH DC1 ! 1 A Q a q

2 STX DC2 “ 2 B R b r

3 ETX DC3 # 3 C S c s

4 EOT DC4 $ 4 D T d T

5 ENQ NAK % 5 E U e u

6 ACK SYN & 6 F V f v

7 BEL ETB , 7 G W g w

8 BS CAN ( 8 H X h x

9 HT EM ) 9 I Y i y

A LF SUB * : J Z J z

B VT ESC + ; K [ k {

C FF FS ́ < L \ l |

D CR GS - = M ] m }

E SO RS . > N ˆ n ˜

F SI US / ? O _ o DEL

Page 74: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 64

Las 10 cifras decimales ocupan los códigos del 30 al 39, mientras que las letras van del 41

(A) al 5A (Z), las mayúsculas, y del 61 (a) al 7A (z), las minúsculas. El resto de los códigos

se refiere a signos de puntuación y otros caracteres diversos.

Los 32 códigos iniciales, del 00 al 1F, se destinan a caracteres de control:

00 NULL Nulo 10 DEL Anulación de lo transmitido

01 SOH Inicio de encabezamiento 11 DC1 Control dispositivo 1

02 STX Inicio de texto 12 DC2 Control dispositivo 2

03 ETX Final de texto 13 DC3 Control dispositivo 3

04 EOT Final de transmisión 14 DC4 Control dispositivo 4

05 ENQ Pregunta 15 NAK Acuse de recibo negativo

06 ACK Acuse de recibo 16 SYN Sincronizador

07 BEL Aviso acústico 17 ETB Final del bloque transmitido

08 BS Retroceder un espacio 18 CAN Anulación

09 HT Tabulador horizontal 19 EM Fin del medio o soporte

0A LF Nueva línea 1A SUB Sustituir

0B VT Tabulador vertical 1B ESC Escape (anulación del orden)

0C FF Nueva página 1C FS Separador de archivos

0D CR Retorno del carro 1D GS Separador de grupo

0E SO Fuera de código 1E RS Separador de registros

0F SI Retorno al código 1F US Separador de unidad

20 SP Espacio(código 20) 7F DEL Borrado (código 7F)

Page 75: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 65

Dado que el código ASCII es de 7 bits y, en cambio, suelen utilizarse palabras

normalizadas a 8 bits (1 byte), el octavo dígito se aprovecha para la detección de errores

como bit de paridad (véase el apartado siguiente).

El código ASCII con paridad utiliza palabras binarias de 8 dígitos, de los cuales el más

significativo (el que inicia la palabra) es el bit de paridad; la paridad de la palabra completa

es siempre 0 (par). Este código goza de amplia aceptación siendo utilizado habitualmente

en el procesado de textos, en la transmisión de la información, en la comunicación con

periféricos (impresoras, monitores…), etc.

Anexo III Función BER

%Esta función determina la Tasa de Error de Bits del mensaje extraído respecto al mensaje

oculto original.

msg=input(['Entre el mensaje oculto',':',]); %Asigna a la variable msg el mensaje oculto

MSG=input(['Entre el mensaje extraido',':',]); %Asigna a la variable MSG la cadena de

caracteres del mensaje extraido

msg_b=dec2bin(msg); % convierte de decimal a binario el mensaje oculto

MSG_b=dec2bin(MSG); %convierte de decimal a binario el mensaje extraído

[m,n]=size(msg_b); %determina el número de filas y columnas de la matriz msg_b

for i=0:m-1

for j=1:n

msg_bin(1,j+n*i)=msg_b(i+1,j); % convierte a una matriz de 1 fila y m*n columnas

end

end

for i=0:m-1

for j=1:n

MSG_bin(1,j+n*i)=MSG_b(i+1,j); %convierte en una matriz de 1 fila y m*n columnas

end

Page 76: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 66

end

[M,N]=size(msg_bin); % determina las filas y columnas de msg_bin

k=0;

for i=1:N

if msg_bin(1,i)==MSG_bin(1,i)

k=k;

else k=k+1; % cuenta el número de bit diferentes entre las matrices msg_bin y MSG_bin

end

end

BER=k*100/N; % calcula el BER y lo expresa en %

fprintf('El valor del BER en % es: %d \n',BER);

Anexo IV Función Imperceptibilidad

%Esta function determina el valor de PSNR del esteganograma

iname=input('Entre el nombre de la imagen original:'); %lee la imagen original

J = imread(iname); % J toma el valor de la matriz de la imagen original

J = rgb2gray(J); %convierte a escala de grises

iname_esteg=input('Entre el nombre de la imagen esteganografiada:'); %lee la imagen

esteganografiada

[M,N]=size(J);

E = imread (iname_esteg); % E toma el valor de la matriz de la imagen

d = J-E; %resta las matrices elemento a elemento

D=d.^2; %eleva al cuadrado cada uno de los elementos de la matriz d

suma =sum(D); % suma todos las filas de de cada una de las columnas de D

sumatoria=sum(suma); %suma todas las columnas, obteniendo la suma total

Page 77: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 67

MSE=sumatoria/(N*M); %calcula el MSE

PSNR=10*LOG10(255^2/MSE); %calcula la PSNR del esteganograma

fprintf('La relación señal a ruido pico (PSNR) entre las imagenes es : %d \n',PSNR);

Anexo V Proceso de inserción del algoritmo esteganográfico

iname=input('Entre el nombre de la imagen:');

J = imread(iname);

J = rgb2gray(J);

I = im2double(J);

T = dctmtx(8);

B = blkproc(I,[8 8],'P1*x*P2',T,T');

B1=B;

B2=B1*100;

B3=int32(B2);

B4=double(B3);

B4=B4/100;

mask = [1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 0

1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0];

B5 = blkproc(B,[8 8],'P1.*x',mask);

Page 78: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 68

[m,n]=size(I);

t=m*n*10/512;

t=4*t/7;

msg=input(['Entre el mensaje oculto con menos de ',int2str(t-1),' caracteres',':',]);

msg=[msg,char(255),char(255)];

msg1=double(msg);

MSG=de2bi(msg1);

[M,N]=size(MSG);

for i=0:M-1

for j=1:N

msg_bin(1,j+N*i)=MSG(i+1,j);

end

end

[h,g,n,K] = hammgen(3);

for i=0:2*M-1

code(1,7*i+1:7*i+7) = encode(msg_bin(1,4*i+1:4*i+4),n,K);

end

k=1;

for citer = 1 : n

if mod(citer,8) == 1

for fiter = 1 : m -3

if mod(fiter,8) == 1

if k==M*(N+6),break,end

Page 79: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 69

if ((code(1,k)==0) & (mod(B3(fiter,citer),2)==1))

B4(fiter,citer)=B4(fiter,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter,citer),2)==0))

B4(fiter,citer)=B4(fiter,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter+1,citer),2)==1))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter+1,citer),2)==0))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter+2,citer),2)==1))

B4(fiter+2,citer)=B4(fiter+2,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter+2,citer),2)==0))

B4(fiter+2,citer)=B4(fiter+2,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

Page 80: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 70

if ((code(1,k)==0) & (mod(B3(fiter+3,citer),2)==1))

B4(fiter+3,citer)=B4(fiter+3,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter+3,citer),2)==0))

B4(fiter+3,citer)=B4(fiter+3,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

end

end

elseif mod(citer,8) == 2

for fiter = 1 : m -2

if mod(fiter,8) == 1

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter,citer),2)==1))

B4(fiter,citer)=B4(fiter,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter,citer),2)==0))

B4(fiter,citer)=B4(fiter,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter+1,citer),2)==1))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

Page 81: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 71

elseif ((code(1,k)==1) & (mod(B3(fiter+1,citer),2)==0))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter+2,citer),2)==1))

B4(fiter+2,citer)=B4(fiter+2,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter+2,citer),2)==0))

B4(fiter+2,citer)=B4(fiter+2,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

end

end

elseif mod(citer,8) == 3

for fiter = 1 : m-1

if mod(fiter,8) == 1

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter,citer),2)==1))

B4(fiter,citer)=B4(fiter,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter,citer),2)==0))

Page 82: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 72

B4(fiter,citer)=B4(fiter,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter+1,citer),2)==1))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter+1,citer),2)==0))

B4(fiter+1,citer)=B4(fiter+1,citer)+0.01;

end

k=k+1;

if k==M*(N+6),break,end

end

end

elseif mod(citer,8) == 4

for fiter = 1 : m

if mod(fiter,8) == 1

if k==M*(N+6),break,end

if ((code(1,k)==0) & (mod(B3(fiter,citer),2)==1))

B4(fiter,citer)=B4(fiter,citer)+0.01;

elseif ((code(1,k)==1) & (mod(B3(fiter,citer),2)==0))

B4(fiter,citer)=B4(fiter,citer)+0.01;

end

Page 83: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 73

k=k+1;

if k==M*(N+6),break,end

end

end

end

end

Imagen = blkproc(B4,[8 8],'P1*x*P2',T',T);

imwrite(Imagen,'Imagencf.jpg','Quality',100);

imshow(I), figure, imshow(Imagen)

Anexo VI Proceso de extracción del algoritmo esteganográfico

iname=input('Entre el nombre de la imagen:');

J = imread(iname);

% J = rgb2gray(J);

I = im2double(J);

T = dctmtx(8);

B = blkproc(I,[8 8],'P1*x*P2',T,T');

B1=B*100;

B2=int32(B1);

[m,n]=size(B);

code=de2bi(16380);

k=15;

for citer = 1 : n

if mod(citer,8) == 1

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

Page 84: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 74

for fiter = 1 : m -3

if mod(fiter,8) == 1

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+1,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+2,citer),2)==1

code(1,k) = 1;

Page 85: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 75

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+3,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

end

end

elseif mod(citer,8) == 2

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

for fiter = 1 : m -2

if mod(fiter,8) == 1

Page 86: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 76

if mod(B2(fiter,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+1,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+2,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

Page 87: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 77

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

end

end

elseif mod(citer,8) == 3

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

for fiter = 1 : m -1

if mod(fiter,8) == 1

if mod(B2(fiter,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

if mod(B2(fiter+1,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

Page 88: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 78

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

end

end

elseif mod(citer,8) == 4

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

for fiter = 1 : m

if mod(fiter,8) == 1

if mod(B2(fiter,citer),2)==1

code(1,k) = 1;

else

code(1,k) = 0;

end

k=k+1;

if ((mod(k-1,14)==0) & (bi2de(code(1,k-14:k-1))==16383)),break ,end

end

end

end

end

k=k-1;

[h,g,n,K] = hammgen(3);

for i=0:k/7-1

msg_bin(1,4*i+1:4*i+4)=decode(code(1,7*i+1:7*i+7),n,K)';

Page 89: Diseño de un Algoritmo Esteganográfico Robusto ante la

ANEXOS 79

end

for i=1:k/14

MSG(i,:)=msg_bin(8*(i-1)+1:8*i);

end

msg_d=bi2de(MSG);

msg_D=msg_d';

[M,N]=size(msg_D);

for w=1:N-2

msg_o(1,w)=msg_D(1,w+1);

end

mensaje_o=char(msg_o);

fprintf('El mensaje oculto es: %s \n',mensaje_o);