sitio personal
12 Oct
Revisando cosas en mundocripto me encontré con este post bastante entretenido, aquí un copy/paste:
Lugar: sede de la ACMS (Agencia Castellana de Máxima Seguridad). Despacho del Gran Jefe. Alguien llama a la puerta y pasa.
Bienvenido X28, tengo aquí los detalles de su nueva misión. En primer lugar, usted y el agente Y6 tienen que reunirse con su contacto en Quintanamartingalindez que les dará más instrucciones.
Me temo que no sé dónde queda Quintanamartingalindez, jefe.
No me haga perder el tiempo X28, mírelo en el mapa. Aquí tiene la imagen que le permitirá identificar a la persona que buscan…

Je, je, me parece que esta foto no ha salido demasiado bien, va a tener que repetirla si quiere que lo reconozca.
Déjeme acabar de hablar. Esta es sólo una sombra de la fotografía original, su compañero Y6 tiene la otra, Cuando se reúnan unirán sus fotos obteniendo una copia casi exacta de la original aunque menos contrastada.
Con el debido respeto jefe, esto es sólo un fondo gris plano, si lo uno con otro igual no obtendré más que gris.
Sólo aparentemente X28, el ojo humano no es suficiente para distinguir matices de gris tan similares. Fíjese en un volcado hexadecimal de los primeros bytes de su imagen:
00000000 50360a323030203232310a3235350a80 |P6.200 221.255..| 00000010 80808080807f7f7f8080807f7f7f7f7f |................| 00000020 7f7f7f7f8080807f7f7f7f7f7f7f7f7f |................| 00000030 7f7f7f80808080808080808080808080 |................| 00000040 80808080807f7f7f7f7f7f7f7f7f7f7f |................| ...
Vea, después de la cabecera siguen una serie de grupos de bytes (pixels) que son o bien (80, 80, 80) o bien (7f, 7f, 7f) y ya que 80h=128 y 7Fh=127 tenemos dos grises muy similares. Además observe que en binario 80h=10000000b y 7Fh=01111111b luego los bits que están a cero en uno, en el otro están a uno y viceversa.
Sigo sin entender…
Bueno. La imagen original estaba formada sólo por pixels blancos (FF,FF,FF) o negros (00,00,00). Lo que nuestro laboratorio supersecreto hizo fue arrojar una moneda por cada uno de los pixels (tienen mucha paciencia estos chicos) y decidir de acuerdo con la siguiente tabla.
| Pixel | Resultado | Sombra 1 | Sombra 2 |
| Blanco | Cara | 80h = 1000 0000 | 7Fh = 0111 1111 |
| Cruz | 7Fh = 0111 1111 | 80h = 1000 0000 | |
| Negro | Cara | 80h = 1000 0000 | 80h = 1000 0000 |
| Cruz | 7Fh = 0111 1111 | 7Fh = 0111 1111 |
De esta manera si la imagen original era un pixel blanco su sombra podría tener por ejemplo un valor 80h que unido (operación lógica OR) con el 7Fh de su compañero daría lugar a FFh=1111 1111 es decir el blanco original.
Hum. Pero jefe, cuando mi sombra tenga un valor 80h y la de mi compañero también, la unión será de nuevo 80h y no 00h que era el negro original.
Veo que presta atención X28, tanto en este caso como en el otro (7Fh con 7Fh) se obtiene un gris oscuro en lugar del negro original, por eso dije que la imagen saldría menos contrastada. Aun así es perfectamente reconocible.
Pero si una agencia rival obtiene mi imagen o la de mi compañero,¿ no serán capaces de ver la original?
No, fíjese que por depender los resultados del azar, un byte 80h puede con igual probabilidad provenir de un byte negro como de uno blanco, todos los bitmaps en blanco y negro son igualmente posibles y su imagen podría ser perfectamente una foto del acueducto de Segovia.
Bueno jefe, ahora estoy más tranquilo, voy a buscar un mapa y salgo inmediatamente.
Buen viaje X28.
El jefe se reclina en su sillón pensativo. Luego levanta la pantalla de su portátil y mira satisfecho

Aquí termina el copy/paste…
Personalmente me gustó bastante este método, ya que es muy sencillo de implementar, pero lamentablemente es muy básico ya que si tienes las dos imágenes es muy fácil deducir que hay una operación OR, AND o XOR en la criptografía. Propondría una mejora más matemática, quizás aplicar algoritmos de convolución y dar soporte a colores para permitir una mayor complejidad de decriptación, de tal forma que al tener las dos imágenes además sea indispensable el algoritmo para poder descubrir la imagen real, permitiendo una funcionalidad similar a un public-key (criptografía asimétrica). Aún así, aparte de ser entretenido, no le encuentro alguna utilidad jajaja.
Deja un comentario