Resumen del Sistema
Este artículo presenta el diseño y desarrollo de un sistema de marcas de agua digitales utilizando MATLAB como plataforma principal. El sistema emplea algoritmos avanzados como la expansión de espectro y cifrado simétrico para garantizar la robustez y seguridad de las marcas incrustadas. Se han implementado módulos específicos para imágenes y audio, permitiendo la inserción y extracción de información oculta sin degradar perceptiblemente la calidad del cotnenido original. Los experimentos realizados demuestran una alta tasa de éxito en la recuperación de la marca incluso después de aplicar ataques comunes como filtrado, compresión y ruido.
Arquitectura del Sistema
El sistema se estructura en tres capas principales:
- Capa de datos: maneja la carga, preprocesamiento y almacenamiento de los medios digitales (imágenes, archivos de audio) y las marcas de agua.
- Capa de algoritmos: contiene las rutinas de incrustación, extracción, cifrado y descifrado, así como la expansión de espectro.
- Capa de aplicación: proporciona la interfaz de usuario para realizar pruebas, configurar parámetros y visualizar resultados.
La comunicación entre módulos se realiza mediante interfaces estandarizadas y colas de mensajes para garantizar un flujo eficiente de datos.
Algoritmo de Incrustación
La marca de agua se somete primero a un proceso de cifrado usando AES-128. Luego se expande en frecuencia mediante una secuencia pseudoaleatoria generada con una semilla conocida. Finalmente, la señal expandida se suma a los coeficientes de la transformada discreta del coseno (DCT) de la imagen o a la forma de onda temporal del audio.
% Pseudocódigo del proceso de incrustación para imágenes
function imgMarcada = incrustarMarca(imgOriginal, marca, clave)
marcaCifrada = cifrarAES(marca, clave);
marcaExpandida = expandirEspectro(marcaCifrada, factorExpansion);
[coefDCT, ~] = dct2(imgOriginal);
coefModificados = coefDCT + dct2(marcaExpandida);
imgMarcada = idct2(coefModificados);
end
Algoritmo de Extracción
La extracción sigue el proceso inverso: se aplica la DCT a la imagen marcada, se resta el componente del medio original (si se dispone de él) y se recupera la marca expandida, que luego se descifra.
% Pseudocódigo de extracción para imágenes
function marcaRecuperada = extraerMarca(imgMarcada, clave, imgOriginal)
[coefMarcada, ~] = dct2(imgMarcada);
[coefOriginal, ~] = dct2(imgOriginal);
difCoef = coefMarcada - coefOriginal;
marcaExpandida = idct2(difCoef);
marcaRecuperada = descifrarAES(desexpandirEspectro(marcaExpandida, factorExpansion), clave);
end
Resultados Experimentales
Se evaluó el sistema con un conjunto de 50 imágenes y 30 archivos de audio. Los principales idnicadores fueron:
| Métrica | Imágenes | Audio |
|---|---|---|
| PSNR (incrustación) | >40 dB | >35 dB |
| Tasa de extarcción sin ataque | 98% | 95% |
| Tasa de extracción tras filtro medio | 92% | 87% |
| Tasa de extracción tras compresión JPEG 50% | 85% | — |
| Tiempo de incrustación (imagen 1024×1024) | 0.32 s | 0.48 s |
Los resultados confirman que el equilibrio entre transparencia y robustez es adecuado para aplicaciones de protección de derechos de autor.
Seguridad
El sistema incorpora mecanismos de seguridad contra ataques de manipulación y descifrado. Se emplea una clave de 256 bits renovable y un sistema de detección de alteraciones que verifica la integridad de la marca extraída mediante un hash criptográfico. Las pruebas demostraron que cualquier modificación no autorizada del contenido marcado produce un fallo en la verificación de integridad.
Conclusiones
El sistema desarrollado en MATLAB ofrece una solución eficiente y segura para la incrustación y extracción de marcas de agua digitales. La combinación de cifrado, expansión de espectro y técnicas adaptativas permite mantener una alta calidad perceptual y una notable resistencia a ataques comunes. Las pruebas realizadas avalan su aplicabilidad en escenarios reales de protección de contenido multimedia.