(Publicada originalmente el 10 diciembre 2024)
Estas cosas se entienden mejor con un ejemplo tonto. Supongamos que debo mandar instrucciones a uin banco en otro país que diga así:
"Pagar a Pedro López 100 dólares y a Juan Pérez 500 dólares", esa instrucción la mando en un mail, un pendrive o un simple texto por Whatsapp.
Pero Pedro López tiene un amigo en el banco y -como el mensaje es un simple texto que puede alterarse-cambia dos caracteres del mensaje de esta manera;
"Pagar a Pedro López 500 dólares y a Juan Pérez 100 dólares"
El banco solo no se puede comunicar directamente conmigo para verificarlo. solo puede ver este mail. ¿Cómo podría darse cuenta que no alteraron el mensaje? Muy simple, en el mismo mail donde mando la instrucción le agrego la siguiente nota:
Hash MD5 e9563acc7ce7aa468a92b6fe34c19b72
En Internet está lleno de sitios donde se puede probar online funciones Hash, como por ejemplo este. en el casillero de arriba por ejemplo escribo: Pagar a Pedro López 500 dólares y a Juan Pérez 100 dólares (el mensaje falsificado) y le pedimos que calcule el Hash MD5, el resultado es:
728024fb25609e2619e2a2ce5bbd80c7
¡Un número de Hash distinto al que nos enviaron en el mail! Eso nos asegura que el mensaje fue falsificado, porque de ser legítimo el Hash debió dar e9563acc7ce7aa468a92b6fe34c19b72
Eso es una firma digital
Tomémos un minuto para pensar en esta maravilla. Todos sabemos que un texto que se envía por Internet no cuesta nada modificarlo, pero si conocemos su Hash podemos comprobar enseguida si es el texto original escrito o si alguien le cambió, aunque sea un caracter.
Una función no reversible
El Hash es una aplicación muy típica de la criptografía, tal vez la más útil de todas. Tomas cualquier archivo, no importa que sea gigantesco y con un procedimiento relativamente simple calcula esta "huella digital electrónica" que es siempre un número fijo de caracteres: letras y números, como muestra la imágen al principio de esta entrada.
No solo para mensajes de texto
El Hash se describe como un "digest", "resumen" o "firma digital" de cualquier texto o archivo, aunque no sea de texto. Podemos obtener la firma digital de cualquier archivo, aunque sea enorme y obtener su valor Hash,
En este link, de la misma página que les puse antes, pueden subir cualquier archivo y obtener su firma. Si en algún sitio web ese archivo está para descargar y tiene el valor Hash, pueden chequear la descarga para asegurarse que nadie lo haya modificado.
Para los passwords
Pero el cálculo de Hash tiene muchos otros usos, que son indispensables en los computadores para asegurar la confidencialidad y descubrir fraudes.
Uno de esos es muy simple, por ejemplo usando la página que calcula los Hash, yo podría colocar algo así como "mi contraseña" y obtener su Hash que es 686c5c18184fce70950f2dcf1ed83d37
Luego puedo usar ese chorizo como un password mucho más seguro. Pero eso no es todo ¿saben cómo almacenan los bancos y todos los sitios nuestras contraseñas en sus servidores? Como deben haber imaginado, no las guardan en texto sino que guardan su valor Hash
Así es que si un funcionario con acceso a los servidores o un hacker se roba el archivo de contraseñas no le sirve para nada, porque los Hash no son reversibles, esa es la base de todo esto: es muy fácil convertir un texto en Hash, pero es endiabladamente difícil recuperar el texto a partir del Hash.
El reverso del Hash se basa en un problema matemático que hasta hoy no tiene solución conocida y que si se intenta resolver por fuerza bruta (probando todas las combinaciones) el tiempo de computación necesario es ridículamente alto: la edad de la tierra y cosas así.
Los bitcoin se basan en Hash
El funcionamiento de las cadenas de bloques y la minería de bitcoin se basan en crear y resolver funciones Hash. Por ejemplo cada bloque con los datos de una transacción en bitcoin es un texto al que se le calcula su Hash y se agrega a una cadena de bloques: el blockchain.
El blockchain es una planilla donde se registran todas las transacciones en todo el mundo, un gigantesco libro de contabilidad que se distribuye entre todos los usuarios, pero al que nadie puede cambiar ni un solo caracter, porque el Hash lo delataría enseguida.
Y los bitcoin se crean (o "minan") en uno o más computadores que reselven "pruebas de trabajo", que consisten en encontrar textos que produzcan un cierto valor Hash, es decir que rompan esta irreversibilidad.
¿Y no dijimos que los Hash eran irreversibles? Claro, pero si se les deja una marca -por ejemplo los que empiezan con ocho ceros seguidos- el problema se facilita y usando fuerza bruta, es decir probando todas las combinaciones posibles se puede encontrar la solución después de un largo tiempo de cálculo.
¿Y qué pasaría si encuentran como revertir un Hash?
Que todos los que tienen bitcoin en el mundo los perderían, sus fortunas equivalentes a miles de millones de dólares se vaporizarían en un segundo. Todas las contraseñas almacenadas en bancos, sitios del gobierno, correos, sitios porno, etc. quedarían expuestas.
Eso para que vayan dimensionando el tamaño de la cagada que quedaría. Es verdad que hasta el momento, con la potencia de los computadores actuales son aplicaciones seguras, pero con los años y el aumento de poder de los computadores se han tenido que ir subiendo el tamaño de las claves.
Por eso existen varias versiones como SHA-1, SHA-256, SHA-384 y SHA-512. Si la cosa es tan segura ¿por qué salen versiones con valores cada vez más largos? Como para pensarlo.
En fin, un motivo más para desconfiar del bitcoin. A mi no me haría maldita gracia pensar que toda mi inmensa fortuna es solo una serie de anotaciones con números codificados que se podrían borrar o algún genio matemático podría encontrar la manera de que pierdan todo su valor.

En su mismo ejemplo el amigo del banco podría cambiar el mensaje, y reemplazar la nota por el valor hash del mensaje alterado o no?
ResponderBorrarEl que emite el mensaje es quien calcula el hash y así lo garantiza, si el banco emite la nota y después la falsifica claro, pero eso no tendría ningún sentido
BorrarCreo que anónimo se refiere a que, como en tu ejemplo pegas el hash en el mismo correo, el falsificador (si tiene algún conocimiento de criptografía) puede también editar el hash para que coincida con el mensaje adulterado. Es decir, el amigo de Pedro López distribuiría tu mensaje adulterado como:
Borrar“Pagar a Pedro López 500 dólares y a Juan Pérez 100 dólares.
Hash MD5
728024fb25609e2619e2a2ce5bbd80c7”.
Y, como en tu ejemplo el banco no tiene cómo comunicarse contigo, no habría forma de detectar la adulteración.
Por supuesto, eso ocurre porque el ejemplo está extremadamente simplificado,. En la práctica, los hash van en archivos aparte y no pueden adulterarse.
Saludos,
El Triministro.
La adulteración que se evita con el hash es para evitar que alteren el mensaje, la única forma que un tercero altere el mensaje es que lo reemplace completamente, tanto el mensaje como el hash, por eso es fundamental tener traza qe el mensaje fue enviado desde el equipo de quien lo firma y que ningún tercero tenga acceso a usar ese equipo.
BorrarSon dos cosas aparte. En un primer nivel debes estar seguro que el mensaje se mandó desde un equipo al que SOLO tiene acceso el remitente que firma o personas autorizadas e identificables. Eso no es difícil, es solo asunto de protocolos de seguridad.
Si el mensaje lo recibes desde cualquier equipo no hay manera de hacerlo autentificable. En el sistema de sentencias seguras que instalé en los Tribunales de Arica en los noventas se imprimía la sentencia y al final de ella un hash con el código de barras, el archivo quedaba en el computador de estadísticas de la cárcel y si le cambiaban una sola coma se podía descubrir enseguida
En Argentina, donde la gente suele desconfiar de los bancos, ha florecido una pequeña pero creciente comunidad de criptomonedas, mientras por este lado aún se confía en la banca tradicional aún cuando han habido méritos ocultos de los últimos gobiernos y parlamentarios para que la gente de a poco comience a desconfiar, como las leyes Papito Corazón o el intento de levantar el Secreto Bancario que tanto pregonan el merluzo y su banda.
ResponderBorrarYa sea para guardar plata o para invertir casi cualquier método es más seguro que las criptomonedas. Para lo que si sirven es para hacer transferencias anónimas convirtiendo dinero real a criptomoneda, transfiriendo y volviendo a convertir enseguida a dinero real, eso usan los delincuentes, terroristas, etc.
BorrarPero cuando vuelves a convertir a dinero real eso debe reflejarse en una cuenta bancaria y ahí es donde te agarran del cogote. La única manera de hacer transferencias verdaderamente anónimas sería guardar el valor en criptomonedas pero eso a la larga es ruinoso, o bie enormemente arriesgado por la volatilidad intríndeca que tienen las criptomonedas
Realmente la seguridad en la red tiene sus riesgos. No conocía lo del Hash, creo que lo tendré que usar a partir de ahora. Pero como dice, con cada mejora que se hace en las computadoras y procesadores hace que se requiera de más seguridad. Al final, el dinero en el chanchito o debajo de la almohada tiene sus ventajas.
ResponderBorrarAnticaviar
Claro, en entornos volátiles siempre hay que guardar una parte debajo del colchón en los viejos y confiables dólares, aunque se pierda poder comprador es siempre l alternativa más segura, al menos el valor nominal nunca lo pierdes
Borrar