sábado, 6 de marzo de 2010

El día que un CRC cambió mi vida

Tal día como hoy, traceando el código desensamblado de una aplicación, me encontré, con sorpresa, un ingenioso método de técnica anti-depuración. El creador de la aplicación comprobaba la integridad de una parte de su código mediante un algoritmo CRC, algo que no se me abría ocurrido en la vida.
Debido a este hallazgo me puse a repasar los libros de la carrera en donde nos explicaban la técnica del CRC, pero con asombro vi que una cosa es la teoría y otra muy diferente es la práctica.
Pues bien, con este y otros artículos próximos quiero hacer que el CRC sea lo más entendible posible, ya que en la red hay infinidad de artículos, pero que se aproximen de los general a lo particular no hay tantos.
Comencemos entonces.
¿Qué es CRC?
CRC es el acrónimo de Código de Redundancia Cíclica o en inglés Cyclic Redundancy Check y es una técnica que se utiliza para comprobar si un flujo binario ha sufrido alguna modificación en el paso de un origen a un destino.
Algunos pensaran ¿flujo qué…?, ¿paso qué…?, vale, vale, un poco más despacio.
Todos sabemos que nuestro mundo está rodeado de dispositivos electrónicos y en donde la información generalmente se codifica con señales electromagnéticas, que habitualmente suelen ser ceros y unos lógicos a los que llamamos bits.
El traspaso de un punto a otro de estos bits es lo que se denomina flujo. Como algunos ejemplos cotidianos podríamos destacar:
  • Descomprimir archivos. Paso de un fichero comprimido (origen) a uno sin comprimir (destino).
  • Ver fotos en nuestros dispositivos. Paso de un fichero binario (origen) a un programa (destino) que interprete esa foto y la visualice.
  • Intercambiar archivos con nuestros móviles por cualquier medio.
  • Mandar un correo.
  • Navegar por la web.
·     Y en general todo lo que implique traspaso de información de un punto a otro.
Ahora pensad ¿qué ocurriría si ese flujo fuese alterado? bien por problemas en el medio de transmisión (cable, ondas, luz, …) o bien intencionadamente por algún personajillo que le guste lo ajeno. Pues que sencillamente nadie podría garantizar la integridad de los datos recibidos y eso en determinados contextos puede ser fatal.
Y es aquí donde entran en juego técnicas como el CRC para comprobar la integridad de un mensaje o flujo de datos.
En la próxima entrega de la saga explicaré el fundamento que hace esto posible.

No hay comentarios:

Publicar un comentario