🔐 Esteganografia Basada en Matrius

Amaga missatges secrets en imatges utilitzant la manipulació de matrius de píxels

Comprendre l'Esteganografia Basada en Matrius

Què és l'Esteganografia?

L'esteganografia és la pràctica d'ocultar informació dins d'altres dades no secretes. A diferència del xifratge, que fa que les dades siguin ilegibles, l'esteganografia amaga la mateixa existència del missatge. Les imatges digitals són portadors perfectes perquè contenen milers de píxels i les modificacions lleus són imperceptibles per a l'ull humà.

Com Funcionen les Matrius de Píxels

Les imatges digitals s'emmagatzemen com a matrius (quadrícules) de píxels. Cada píxel conté informació de color codificada com a números. En el model de color RGB, cada píxel té tres valors que van de 0 a 255:

Per exemple, el vermell pur és (255, 0, 0), el verd pur és (0, 255, 0) i el blau pur és (0, 0, 255).

Representació de matriu d'una imatge 3×3:

Píxel[0,0]: (245, 130, 88) Píxel[0,1]: (120, 200, 150) Píxel[0,2]: (90, 110, 200) Píxel[1,0]: (200, 50, 100) Píxel[1,1]: (180, 180, 180) Píxel[1,2]: (75, 95, 210) Píxel[2,0]: (255, 0, 0) Píxel[2,1]: (0, 255, 0) Píxel[2,2]: (0, 0, 255)

Cada píxel és accessible per la seva posició [fila, columna] a la matriu.

Codificació del Bit Menys Significatiu (LSB)

La tècnica LSB aprofita el fet que canviar l'últim bit d'un valor de color produeix una diferència visual insignificant. Per exemple, canviar el blau de 154 a 155 és imperceptible.

Representació binària:

154 en binari: 10011010 155 en binari: 10011011 ← Només l'últim bit ha canviat! Diferència visual: IMPERCEPTIBLE per a l'ull humà

Aquest petit canvi és invisible per a l'ull humà però ens permet emmagatzemar dades.

Aritmètica Modular (mod 2) per LSB

Utilitzem l'aritmètica modular per manipular bits de manera eficient:

Exemple pràctic d'operacions bit a bit:

Valor original del píxel: 154 (10011010) Bit a emmagatzemar: 1 Pas 1 - Esborrar LSB: 10011010 (154) & 11111110 (0xFE) ----------- 10011010 (154 - LSB ja era 0) Pas 2 - Establir el nou bit: 10011010 | 00000001 (bit = 1) ----------- 10011011 (155) Resultat: 154 → 155 (bit 1 emmagatzemat)

Xifratge amb Aritmètica Modular Afí

Per afegir una capa addicional de seguretat, utilitzem el xifratge afí, un tipus d'encriptació basada en aritmètica modular. Abans d'emmagatzemar cada caràcter a la imatge, el transformem utilitzant la fórmula:

Fórmula d'Encriptació:

E(x) = (a·x + b) mod 256 On: x = Valor ASCII del caràcter (0-255) a = Multiplicador (ha de ser coprimer amb 256) b = Desplaçament (0-255) E(x) = Valor encriptat resultant

Per Què Funciona el Xifratge Afí?

El xifratge afí combina dues operacions matemàtiques:

Condicions Matemàtiques per al Paràmetre 'a'

El valor de 'a' ha de complir condicions específiques per permetre la desencriptació:

Requisit: MCD(a, 256) = 1

El Màxim Comú Divisor entre 'a' i 256 ha de ser 1. Això significa que 'a' i 256 són coprimers (no comparteixen factors comuns excepte 1).

Exemples de valors VÀLIDS per 'a': 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25... (tots els números senars que no són múltiples de altres factors) Exemples de valors NO VÀLIDS per 'a': 2, 4, 6, 8, 10, 12, 14, 16... (parells - comparteixen el factor 2 amb 256) Per què? 256 = 2⁸ Qualsevol número parell comparteix el factor 2 amb 256 Això fa impossible calcular l'invers modular necessari per desencriptar

Càlcul de l'Invers Modular

Per desencriptar, necessitem trobar l'invers modular de 'a' respecte a 256, denotat com a⁻¹. Aquest és un número tal que:

a · a⁻¹ ≡ 1 (mod 256) Exemple amb a = 5: Necessitem trobar a⁻¹ tal que (5 · a⁻¹) mod 256 = 1 Provant valors: 5 · 51 = 255 mod 256 = 255 ✗ 5 · 77 = 385 mod 256 = 129 ✗ 5 · 205 = 1025 mod 256 = 1 ✓ Per tant, l'invers modular de 5 és 205

Mètode de càlcul: Utilitzem l'Algoritme d'Euclides Estès per trobar l'invers modular de forma eficient. Aquest algoritme troba els coeficients de l'identitat de Bézout.

Fórmula de Desencriptació

Un cop tenim l'invers modular, podem revertir el procés d'encriptació:

Fórmula de Desencriptació:

D(y) = a⁻¹ · (y - b) mod 256 On: y = Valor encriptat a⁻¹ = Invers modular de 'a' b = Mateix desplaçament utilitzat en l'encriptació D(y) = Valor original desencriptat

Exemple Complet d'Encriptació i Desencriptació

Paràmetres: a = 5, b = 8

Invers modular: a⁻¹ = 205

Caràcter a encriptar: 'H'

Pas 1: Obtenir valor ASCII 'H' → ASCII = 72 Pas 2: Aplicar fórmula d'encriptació E(72) = (5 · 72 + 8) mod 256 E(72) = (360 + 8) mod 256 E(72) = 368 mod 256 E(72) = 112 Pas 3: Emmagatzemar 112 a la imatge (en binari: 01110000) Pas 4: Per desencriptar, recuperem el valor 112 D(112) = 205 · (112 - 8) mod 256 D(112) = 205 · 104 mod 256 D(112) = 21320 mod 256 D(112) = 72 Pas 5: Convertir a caràcter ASCII 72 → 'H' ✓ Recuperat correctament!

Per Què Aquest Mètode És Segur?

Exemple Manual Pas a Pas: Codificar 'A' amb Encriptació

Tasca: Codificar la lletra 'A' en una imatge amb a=5, b=8

Pas 1: Convertir 'A' a ASCII i encriptar

Valor ASCII de 'A' = 65 Encriptació: (5 · 65 + 8) mod 256 = 333 mod 256 = 77 77 en binari = 01001101

Pas 2: Agafar els valors del canal blau dels primers 8 píxels

Valors blaus originals (en binari): Píxel 1: 154 (10011010) Píxel 2: 200 (11001000) Píxel 3: 87 (01010111) Píxel 4: 123 (01111011) Píxel 5: 201 (11001001) Píxel 6: 45 (00101101) Píxel 7: 99 (01100011) Píxel 8: 176 (10110000)

Pas 3: Reemplaçar el LSB de cada píxel amb els bits del valor encriptat (77 = 01001101)

Bits a emmagatzemar: 0 1 0 0 1 1 0 1 Píxel 1: 10011010 → 10011010 (bit 0) = 154 (sense canvi) Píxel 2: 11001000 → 11001001 (bit 1) = 201 (+1) Píxel 3: 01010111 → 01010110 (bit 0) = 86 (-1) Píxel 4: 01111011 → 01111010 (bit 0) = 122 (-1) Píxel 5: 11001001 → 11001001 (bit 1) = 201 (sense canvi) Píxel 6: 00101101 → 00101101 (bit 1) = 45 (sense canvi) Píxel 7: 01100011 → 01100010 (bit 0) = 98 (-1) Píxel 8: 10110000 → 10110001 (bit 1) = 177 (+1)

Pas 4: La imatge modificada ara conté 'A' encriptada com a 77!

Pas 5: Per desencriptar:

Llegir LSBs: 01001101 = 77 Aplicar fórmula inversa: D(77) = 205 · (77 - 8) mod 256 D(77) = 205 · 69 mod 256 = 14145 mod 256 = 65 ASCII 65 = 'A' ✓

Estructura d'Emmagatzematge a la Imatge

Format de dades a la imatge:

Bits 0-15: Longitud del missatge (16 bits, màx 65535 caràcters) Bits 16-23: Primer caràcter encriptat (8 bits) Bits 24-31: Segon caràcter encriptat (8 bits) ... Caràcters restants Exemple per "Hola" (4 caràcters, a=5, b=8): Bits 0-15: 0000000000000100 (longitud = 4) Bits 16-23: 01110000 ('H'→72→112) Bits 24-31: 11111101 ('o'→111→253) Bits 32-39: 00011100 ('l'→108→28) Bits 40-47: 10101101 ('a'→97→173)

Per Què el Canal Blau?

Codifiquem només en el canal blau per raons fisiològiques i tècniques:

Càlcul de Capacitat d'Emmagatzematge

Capacitat = (Amplada × Alçada × 1 bit) / 8 bits per byte Exemple per imatge 800×600: Píxels totals = 800 × 600 = 480.000 píxels Bits disponibles = 480.000 bits (1 per píxel al canal blau) Bytes disponibles = 480.000 / 8 = 60.000 bytes Descomptant 2 bytes per la longitud: Capacitat real ≈ 59.998 caràcters

Bibliografia

Eina d'Encriptació i Desencriptació

🔐 Configuració d'Encriptació Modular

Configura els paràmetres per a la fórmula (a·x + b) mod 256

Ha de ser senar i coprimer amb 256
Qualsevol valor entre 0-255

🔒 Encriptar - Amagar un Missatge

Puja una imatge PNG i introdueix un missatge secret per amagar-lo.

📁

Fes clic per pujar o arrossega i deixa anar

Només imatges PNG (màx 5MB)

0 / 256 caràcters

🔓 Desencriptar - Extreure Missatge Amagat

Puja una imatge amb un missatge amagat per revelar el seu secret.

⚠️ Important: Utilitza els mateixos valors de a i b que vas utilitzar per encriptar!

📁

Fes clic per pujar o arrossega i deixa anar

Només imatges PNG (màx 5MB)