Jordi Serra-Ruiz
Descubriendo Comunicaciones Ocultas
30 Octubre 2014
NocONName
Jordi Serra-Ruiz:•Profesor Universitat Oberta de Catalunya•Director del Máster Interuniversitario de seguridad en las TIC•Miembro del grupo de investigación KISON, K-riptography and Information Security for Open Networks.•Ponente en congresos internacionales sobre seguridad•Organizador de Congresos: RECSI, UOC-Con, Information Hiding
Esteganografia:
Del griego “stego” (esconder) y “grapho” (escribir)
Esconder un mensaje dentro de un contenido inocuo, de manera que no sea percibido.
Historia
Rejilla de Cardado
La Celestina, o Comedia de Calisto y Melibea
El bachiller Fernando de Royas acabó la comedia de Calisto y Melibea y fue nacido en la Puebla de Montalván
El responsable definitivo es el EMAD
Microfiltros en la guerra fría
http://0xword.com/es/libros/
Propiedades
CAPACITY
TRANSPARENCY ROBUSTNESS
Amount of information that is embedded into the cover object.
Provides a measure of the perceptible distortion between original and marked object.
The ability of the watermark detector to extract the embedded watermark after common manipulations.
SECURITYThe scheme must be secure, an adversary must not be able to detect data embedded.
BLIND/INFORMED EXTRACTION/DETECTIONThe detection scheme may not have access to the original object.
LeastSignificantBit
Replacement
Imagen escala de grises
112 01110000
113 01110001
R 50 00110010 00110010 50
G 101 01100101 01100100 100
B 73 01001001 01001000 72
Imagen Color RGB
Letra ASCII Binario
A 65 0 1 0 0 0 0 0 1
Real Binario Binario+LSB mensaje
110 01101110 01101110 110
108 01101100 01101101 109
100 01100100 01100100 100
95 01011111 01011110 94
101 01100101 01100100 100
101 01100101 01100100 100
102 01100110 01100110 102
109 01101101 01101101 109
EJEMPLO OCULTACIÓN
Herramientas:
Stepic: $ stepic -e -i mandril_color.tif -o mandril_stepic.tif -t message.txt
OpenStego:
Stegoanalisis LSB
import sys from PIL import Image
# Leemos la imagen pasada como parametro i = Image.open(sys.argv[1]) pixels = i.load() width, height = i.size
# Establecemos valores para LSB=1 y LSB=0 for y in range(height): for x in range(width): r=g=b=0 if pixels[x, y][0]%2==1: r=0 else: r=255 if pixels[x, y][1]%2==1: g=0 else: g=255 if pixels[x, y][2]%2==1: b=0 else: b=255 pixels[x, y] = (r, g, b)
i.show() i.save(sys.argv[2])
Análisis Visual
Análisis Visual
Valor Píxel Binario
Bit inserció
nResultado
1001100100 0 100 =
1100100 1 101 ↑
1011100101 0 100 ↓
1100101 1 101 =
Histograma imagen Original
Intercambio de Pixeles
Histograma imagen con mensaje
import sys from PIL import Image
# Leemos la imagen pasada como parametro i = Image.open(sys.argv[1]) pixels = i.load() width, height = i.size
# Recorremos la imagen calculando el histograma histogram = [0]*255 for y in range(height): for x in range(width): cur_pixel = pixels[x, y] histogram[cur_pixel]+=1
# Restamos las parejas de barras total=0 for y in xrange(1, len(histogram), 2): dif=abs(histogram[y-1]-histogram[y]) total+=dif
print total
CLASE DE MATEMATICASSISTEMAS LINEALES
LeastSignificantBit Matching
Valor píxel A Resta Suma
110 01101110 0 01101110 110 01101110 110
108 01101100 1 01101011 107 01101101 109
100 01100100 0 01100100 100 01100100 100
95 01011111 0 01011110 94 01100000 96
101 01100101 0 01100100 100 01100110 102
101 01100101 0 01100100 100 01100110 102
102 01100110 0 01100110 102 01100110 102
109 01101101 1 01101101 109 01101101 109
Reemplazar el LSB por ±1
AUDIO
Transformadas matemáticas• Fourier
• Wavelet
UPC - Procesamiento Digital de la Señal
UAB - Señales y sistemas
Tranformada de Fourier
Espectro Frecuencial
Discrete Wavelet Transform
Propuesta app
Modificación del espectro frecuencialpara insertar los bits del mensaje
DEMO
Envío de mensaje oculto a un dispositivo móvil
Recommended