rizome escribió:
Pero aun siendo profano en esto...
¿No es cierto que hay operaciones (funciones) matemáticas que no son reversibles?
Operaciones hay dos + (suma) y * (multiplicación). La resta no existe. Se podría definir una tercera / (división) ya que no siempre es posible realizarla (por ejemplo dividir por 0) y no está definida en cuerpos "más extraños" (por ejemplo los enteros 1/2 NO está definido, por lo que no se puede dividir).
Una aplicación (lo que tu llamas función) no es reversible si NO es inyectiva.
Una aplicación "f" es inyectiva si f(x) = f( y ) implica que x = y.
Una función NO inyectiva, por ejemplo f(x) = x^2. si nuestro resultado es 1, puede ser 1 = 1^2 o 1 = (-1)^2. Por lo que no es reversible. Evidentemente esto se puede complicar mucho al aumentar el número de variables y complicando las funciones, dando lugar a los "hashes" o "checksum", los más conocidos MD5 o SHAI5, algoritmos de sólo ida (irreversibles). Sirven entre otras cosas para comprobar si una descarga es correcta. ¿Cómo? Es muy sencillo :
Por ejemplo tenemos el número 123456, nuestro hash se basa en sumar todas las cifras una y otra vez hasta obtener una única cifra
1+2+3+4+5+6 = 21;
2+1 = 3;
Cuando bajamos algo de internet es posible que por problemas en la conexión falten partes, o estén equivocadas, pero no nos demos cuenta y las consideremos como buenas.
Así si recibimos el mensaje
113456, su "hash" será 2, por lo que sabemos que hay algo mal.
¿Es irreversibles? Claro, nuestro hash da una cifra (luego hay 10 posibilidades 0-9)
Nuestro mensaje de 6 cifras puede ser escrito de un millón de formas diferentes. Por lo que a cada resultado del hash le corresponden 100.000 posibilidades.
Este ejemplo es muy sencillo, un fallo sería que permite un ataque por aproximación, es decir f(111111) = 6, f(111112) = 7, .. si sabemos que 111111 se transforma en 6 y necesitamos encontrar una palabra cuyo hash sea 7, es bien fácil. Los modelos de MD5 y SHAI1 hacen que 111111 y 111112 den resultados muy diferentes para evitar este tipo de ataques por lo que son bastante más seguros (aunque en 2 horas puedes reventar un MD5 con una colisión).