Yohanner Carrete Marrero - DSpace@UCLV

Anuncio
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"
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
i
PENSAMIENTO
“Sólo se ve bien con el corazón; lo esencial es invisible a los ojos…”
Antoine de Saint Exupery.
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….
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…!
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
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.
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
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
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
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
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.
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.
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.
CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN
CAPÍTULO 1.
5
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).
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.
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].
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.
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:
MSE =
1
M *N
M
N
∑∑ ( X (i, j ) − X ′(i, j ))
2
(1-1)
i =1 j =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:
RMSE = MSE
(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]:
M N
⎡
( X (i, j ))2 ⎤⎥
∑∑
⎢
i =1 j =1
⎥ dB
SNR = 10 log10 ⎢ M N
⎥
⎢
⎢ ∑∑ ( X (i, j ) − X ′(i, j )) ⎥
⎦
⎣ i =1 j =1
Entre más grandes sean los valores SNR más imperceptible es el mensaje.
(1-3)
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:
⎛ Max 2
PSNR = 10 log 10 ⎜⎜
⎝ MSE
⎞
⎛ Max ⎞
⎟⎟ = 20 log 10 ⎜
⎟dB
⎝ RMSE ⎠
⎠
(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].
MAE = max( X − X ′ )
(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
Corr =
N
∑∑ X (
i =1 j =1
M N
i, j )
∑∑ X (
i =1 j =1
X (′i , j )
(1-6)
i, j )
2
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].
BER =
Número _ Bits _ Erróneos
Número _ Bits _ total _ transmitid os
(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ógicodigital (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].
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.
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 2 n matices de los grises (o matices de algún otro color).
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
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
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 (RunLength 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,
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
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].
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
m0 , m1, m2 , m3 ,....mk −1
b0 , b1,....bn −k −1
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]:
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
n = 2m − 1
bits
Bits de paridad
m; (m ≥ 3)
bits
Tamaño del mensaje
k
bits
Distancia mínima
d min ≥ 2t + 1 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]:
CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN
2m ≥ k + m + 1
20
(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]:
⎡1
⎢0
[G] = ⎢
⎢0
⎢
⎣0
0 0 0 1 1 1⎤
1 0 0 1 1 0⎥⎥
0 1 0 1 0 1⎥
⎥
0 0 1 0 1 1⎦
(1-9)
y la matriz de control de paridad correspondiente (de decodificación) es [32, 33]:
⎡1
[H ] = ⎢⎢1
⎢⎣1
1
1
0
1
0
1
0
0
1
1
1
0
0
1
0
0⎤
0 ⎥⎥
1 ⎥⎦
(1-10)
Por ejemplo, dados los vectores de información I= (i 0 , i 1 , i 2 , i 3 )
Entonces La palabra código se obtiene multiplicando el vector del mensaje (I) por la matriz
generadora (G) como se muestra [32, 34]:
[i 0
i1 i 2
⎡1
⎢0
i 3 ]⎢
⎢0
⎢
⎣0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0
1
1
0
1
1⎤
0⎥⎥
= [i 0
1⎥
⎥
1⎦
i1 i 2
i3
c0
c1
c 2 ] = [c ]
(1-11)
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)
Donde:
e es el vector de error, tiene un uno en la posición de error y cero en el resto
⊕ significa suma módulo 2.
En el receptor, el descifre comienza con el cálculo del síndrome [s], a fin de determinar si
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 recibida por la traspuesta de la matriz H:
Y (1, 7) × H T (7, 3) = S (1, 3)
(1-13)
Finalmente, con el síndrome obtenido s= (s 1 , s 2 , s 3 ) y el patrón de errores más comunes
(e) se identifica la posición del error. Por ejemplo, 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ódigo (7,4).
Patrón de errores (e)
Posición de los bits
1
0
1
0
0
0
0
0
0
2
0
0
1
0
0
0
0
0
3
0
0
0
1
0
0
0
0
4
0
0
0
0
1
0
0
0
5
0
0
0
0
0
1
0
0
6
0
0
0
0
0
0
1
0
7
0
0
0
0
0
0
0
1
Síndrome
s
0
1
1
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
0
1
1
0
0
1
CAPÍTULO 1. GENERALIDADES DE LA ESTEGANOGRAFÍA, COMPRESIÓN Y CODIFICACIÓN
22
Al síndrome s = 000, le corresponde el valor de e = 0000000, lo cual significa para el lado
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].
1.5 Puntos fundamentales del capítulo
Con el desarrollo del presente capítulo se abordó el tema de la esteganografía en imágenes
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.
CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA
COMPRESIÓN JPEG
CAPÍTULO 2.
23
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).
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
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]:
Y = 0.3R + 0.6G + 0.1B
(2-1)
U = B −Y
(2-2)
V = R −Y
(2-3)
Cb =
U
+ 0 .5
2
(2-4)
Cr =
V
+ 0 .5
1 .6
(2-5)
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
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
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.
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]:
DCTuv =
N −1 N −1
⎡ (2 x + 1)uπ ⎤
⎡ (2 y + 1)vπ ⎤
cos ⎢
Cu C v ∑∑ Pxy cos ⎢
⎥
⎥
2N
⎣ 2N
⎦
⎣ 2N
⎦
x =0 y =0
1
⎧ 1
⎪
Cu , C v = ⎨ 2
⎪⎩ 1
para u, v = 0
(2-6)
(2-7)
otro caso
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]:
CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA
COMPRESIÓN JPEG
⎡52
⎢ 63
⎢
⎢62
⎢
⎢ 63
⎢67
⎢
⎢79
⎢85
⎢
⎣⎢87
55
59
59
58
61
65
71
79
30
61 66 70 61 64 73⎤
55 90 109 85 69 72⎥⎥
68 113 144 104 66 73⎥
⎥
71 122 154 106 70 69⎥
68 104 126 88 68 70⎥
⎥
60 70 77 68 58 75⎥
64 59 55 61 65 83⎥
⎥
69 68 65 76 78 94⎦⎥
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.
⎡ − 76
⎢ − 65
⎢
⎢ − 66
⎢
⎢ − 65
⎢ − 61
⎢
⎢− 49
⎢ − 43
⎢
⎢⎣ − 41
− 73
− 69
− 69
− 70
− 67
− 63
− 57
− 49
− 67
− 73
− 60
− 57
− 60
− 68
− 64
− 59
− 62
− 38
− 15
−6
− 24
− 58
− 69
− 60
− 58
− 19
16
26
−2
− 51
− 73
− 63
− 67
− 43
− 24
− 22
− 40
− 60
− 67
− 52
− 64
− 59
− 62
− 58
− 60
− 70
− 63
− 50
− 55⎤
− 56⎥⎥
− 55⎥
⎥
− 59⎥
− 58⎥
⎥
− 53⎥
− 45⎥
⎥
− 34⎥⎦
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].
56 − 20
⎡− 415 − 30 − 61 27
⎢ 4
13
− 22 − 61 10
−7
⎢
⎢ − 47
7
77 − 25 − 29 10
⎢
34 − 15 − 10
6
⎢ − 49 12
⎢ 12
2
− 7 − 13 − 4 − 2
⎢
3
2
1
−6 −2
⎢ −8
⎢ −1
0
0
−2
−1 − 3
⎢
0
0
−1 − 4
−1
⎢⎣ 0
−2 0 ⎤
− 9 5 ⎥⎥
5 − 6⎥
⎥
−2 2 ⎥
−3 3 ⎥
⎥
4
2⎥
4 − 1⎥
⎥
1
2 ⎥⎦
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].
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].
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
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
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.
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.
CAPÍTULO 2. DISEÑO DE UN MÉTODO ESTEGANOGRÁFICO ROBUSTO ANTE LA
COMPRESIÓN JPEG
Figura 2.3 Proceso de Inserción del Mensaje Secreto.
37
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
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:
⎡1
⎢1
⎢
⎢1
⎢
1
mask = ⎢
⎢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⎦⎥
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
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.
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.
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.
ANÁLISIS DE LOS RESULTADOS
CAPÍTULO 3.
43
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).
255 2
PSNR = 10 * log 10
MSE
M
MSE =
N
∑∑ ( X (i, j ) − X ′(i, j ))
i =1 j =1
M *N
(3-1)
2
(3-2)
ANÁLISIS DE LOS RESULTADOS
44
Donde X y X ′ son la imagen encubridora y el esteganograma, respectivamente, y M , N
son el tamaño de ambas imágenes.
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).
Capacidad _ de _ Ocultamiento =
Número _ de _ Bits ( M s )
Número _ de _ Bits ( I c )
(3-3)
Donde M s es el mensaje oculto e I c la imagen encubridora.
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).
BER =
Número _ Bits _ Erróneos
Número _ Bits _ total _ transmitid os
(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.
ANÁLISIS DE LOS RESULTADOS
(a)
(b)
(c)
45
(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 ( Q f ), 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 Q f =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
ANÁLISIS DE LOS RESULTADOS
46
( PSNR ≤ 30dB ) 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.
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 Q f pequeños. De las tablas 3.1 y
3.2, determinamos que la matriz de cuantificación M 70 es una buena selección para
comprimir las imágenes esteganografiadas con el algoritmo propuesto, considerando que
una compresión JPEG con Q f =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.
Tabla 3.1 Tasa de bits erróneo (BER) cuando el esteganograma sufre compresión JPEG
con diferentes factores de calidad.
Calidad de
BER (%)
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
-
ANÁLISIS DE LOS RESULTADOS
47
Tabla 3.2 Distorsión del esteganograma cuando este sufre compresión JPEG con diferentes
factores de calidad.
Calidad de
Compresión (%)
Qf = 100
Qf =90
Qf =80
Qf =70
Qf =60
Qf =50
Qf =40
Qf =30
Qf =20
Qf =10
Qf =0
Lenna
32.7
32.617
32.481
32.675
32.17
31.365
31.196
31.069
30.531
30.366
29.094
PSNR (dB)
Mona Lisa Pirámides
32.833
33.003
32.593
32.968
32.593
33.016
32.842
32.947
32.202
32.828
31.275
32.574
30.939
32.6
30.869
32.31
30.551
31.659
30.852
32.506
30.398
31.728
Tigre
32.346
32.251
31.834
32.352
31.321
30.325
29.9
29.8
29.554
29.315
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.
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.
ANÁLISIS DE LOS RESULTADOS
49
Tabla 3.3 Mensaje recuperado con Q f ≥ 40% y con Q f < 40%
Mensaje recuperado
Mensaje recuperado
Q f ≥ 40
BER=0
Q f < 40
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 Q f = 40% 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.
ANÁLISIS DE LOS RESULTADOS
(a)
50
(b)
Figura 3.4 (a) Imagen original, (b) Esteganograma para una compresión JPEG con
Q f = 40% .
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.
Porcentaje de
Ruido Impulsivo (%)
0
0.2
0.4
0.6
0.8
1.0
1.2
BER (%)
Lenna Mona Lisa Pirámides
0
0
0
4.2279
5.3309
3.4926
8.4559
16.176
8.6397
20.735
21.395
29.983
25.588
26.113
30.221
26.28
26.98
36.684
34.449
38.432
40.863
Tigre
0
7.7206
10.294
15.581
18.05
24.081
28.352
ANÁLISIS DE LOS RESULTADOS
51
Tabla 3.5 Distorsión del esteganograma para diferentes porcentajes de ruido impulsivo.
Porcentaje de
Ruido Impulsivo (%)
0
0.2
0.4
0.6
0.8
1.0
PSNR(dB)
Lenna Mona Lisa Pirámides
32.7
32.833
33.003
29.105
29.287
29.261
27.333
27.192
27.535
25.902
25.921
25.026
24.862
24.876
24.923
24.095
24.086
24.006
Tigre
32.346
28.931
27.203
25.813
24.974
24.114
Figura 3.5 Tasa de bits erróneos (BER) para diferentes densidades de ruido impulsivo.
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.
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.
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.
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/este
ganografia.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
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/compimag
e.pdf
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.p
df
[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.unsjcuim.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, OctubreDiciembre 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
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. 8438472007
[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://cpdsifich.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
GLOSARIO DE TÉRMINOS
59
GLOSARIO DE TÉRMINOS
9 ASCII: American Standard Code for Information Interchange, (código utilizado para
la codificación de texto).
9 BER: Bit Error Ratio, (Razón de error de bit).
9 CCE: Código corrector de errores.
9 CPU: Control Process Unit, (Unidad de control y procesamiento).
9 DCT: Discrete Cosine Transform, (Transformada discreta del coseno).
9 DFT: Discrete Fourier Transform, (Transformada discreta de Fourier).
9 DWT: Discrete Wavelet Transform, (Transformada discreta de Wavelet).
9 EOB: End of Block, (final de bloque).
9 GIF: Graphics Interchange Format, (Formato de compresión de imágenes sin
pérdidas).
9 HVS: Human Visual System, (Sistema visual humano).
9 IDCT: Inverse Discrete Cosine Transform, (Transformada discreta del coseno
inversa).
9 IP: Internet Protocol, (Protocolo de internet).
9 ISO: International Organization for Standardization, (Organización internacional
para la estandarización).
9 JPEG: Join Photographic Experts Group, (Estándar de compresión de imágenes con
pérdidas que utiliza la DCT).
GLOSARIO DE TÉRMINOS
60
9 JPEG 2000: Join Photographic Experts Group 2000, (Estándar de compresión de
imágenes sin distorsión que utiliza la DWT).
9 LSB: Least Significan Bit, (Bit menos significativo).
9 LZ: Liv Zempel, (Método de codificación usado para la compresión sin pérdida).
9 LZW: Lempel Ziv Welch, (Algoritmo de compresión sin pérdida).
9 MAE: Maximum Absolute Error, (Error absoluto máximo).
9 MATLAB: Matriz Laboratory, (Herramienta de procesamiento y programación que
realiza cálculos numéricos con matrices).
9 MSE: Mean Squared Error, (Error cuadrático medio).
9 PC: Personal Computer, (Computadora personal).
9 PSNR: Peak Signal To Noise Ratio, (Relación señal a ruido pico).
9 RAM: Memory Acces Random, (Memoria de acceso aleatorio).
9 RGB: Red Green Blue, (Formato para la representación de imágenes a color).
9 RLE: Run Length Encoding, (Algoritmo de codificación utilizado en JPEG).
9 RMSE: Root Mean Squared Error, (Raíz error cuadrático medio).
9 SNR: Signal To Noise Ratio, (Relación señal a ruido).
9 TCP: Transmission Control Protocol, (Protocolo de control de transmisión).
9 TCP/IP: Internet Protocol Suite, (Conjunto de protocolos de Internet).
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].
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:
ANEXOS
63
Tabla I: codificación de texto
Hexadecimal
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
DEL
b6b5b4b3b2b1b0
O
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)
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
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
ANEXOS
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);
67
ANEXOS
[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
68
ANEXOS
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
69
ANEXOS
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;
70
ANEXOS
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))
71
ANEXOS
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
72
ANEXOS
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
73
ANEXOS
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;
74
ANEXOS
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
75
ANEXOS
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;
76
ANEXOS
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
77
ANEXOS
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)';
78
ANEXOS
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);
79
Descargar