Quizás una de las herramientas más necesarias para levantar acta notarial de hechos digitales, es el hash, y sin embargo estamos ante uno de esos conceptos que los juristas miramos como si nos hablaran en arameo.

Es por lo que, confesando mi ignorancia sobre el tema, y tras romperme la cabeza con webs técnicas, intentaré explicar qué es un hash con palabras sencillas, y su utilidad en actas notariales relacionadas con hechos digitales

¿El hash existe porque las cosas no son lo que parecen?

Creo que quién mejor puede explicar qué es un hash es Antonio Machado cuando dice

El ojo que ves no es
ojo porque tú lo veas;
es ojo porque te ve.

Os parecerá de perogrullo, pero este proverbio de Machado, lo que hace es resumir un viejo principio jurídico.

Las cosas son lo que son, independientemente de cómo sean llamadas por las partes

¿Y qué tiene esto que ver con la informática?

Pues porque la informática en el fondo no es lo que tu ves, sino lo que hay tras lo que ves; y lo que hay tras lo que ves son: ceros y unos.

¿Os acordáis de la famosa escena de Matrix?

Aunque tu veas, un archivo de texto, un vídeo, o un audio, lo que hay son simplemente filas de ceros y unos, combinadas de una determinada forma.

Son los programas los que convierten esos ceros y unos en un contenido que tu entiendes, de hecho, la conversión en si de esos ceros y unos usando un programa, genera nuevos ceros y nuevos unos (pero eso supondría tener que hablaros del clonado, o de abrir archivos en modo lectura lo cual dejo para otro post -por no decir que sería necesario hablar del código máquina, del firmware o del código fuente-)

¿Hablemos del cifrado?

Convertir letras a números es una forma de cifrado

Los ceros y unos que conforman un archivo informático, están dispuestos en un orden, y ese orden es el que marcan los lenguajes matemáticos (como son el binario, hexadecimal etc).

Aquí tenéis una divertida web que os permite traducir a los diversos lenguajes un texto (si os gustan más las clásicas tablas de multiplicar aquí la podéis ver más fácilmente), y en la que resulta que

Amor de suegra

En binario se escribe:

01000001 01101101 01101111 01110010 00100000 01100100 01100101 00100000 01110011 01110101 01100101 01100111 01110010 01100001

Podemos usar el lenguaje binario, en que el que como su nombre indica, se computa sobre la base de dos números, o el hexadecimal en el que se computa sobre la base de dieciséis, o cualquier otro.

¿Hay algún fallo para traducir las letras a lenguaje matemático?

Pues no hay fallos, pero creo que, a poco que sepáis de matemáticas, es imposible sumar peras y manzanas.

Es por elo que se crea el código ASCII, que fija las reglas para poder convertir las letras del teclado a binario.

El problema es que los números son internacionalmente aceptados, mientras que no sucede lo mismo con las letras; así letras como la Ñ española, o la Ç que se usa en Portugal, no existen en todos los idiomas (lo mismo sucede con los signos de puntuación como ^` -mejor no hablemos de idiomas que se escriben con caracteres no alfabéticos, como el ideográfico oriental, o el cirílico eslavo)

Para lenguas con caracteres especiales (concretamente para: afrikáans, alemán, español, catalán, euskera, aragonés, asturiano, danés, escocés, feroés, finés, francés, gaélico, gallego, inglés, islandés, italiano, holandés, noruego, portugués y sueco) el cifrado a binario de las letras del teclado es conforme a la evolución de ASCII, que fija la norma ISO 8859-1.

La conclusión, quizás no muy científica, es que la traducción a binario de un texto, va a depender del idioma usado (pues el «amor de suegra» que antes traduje a binario es según la norma ISO que acabo de vinculados, y no sobre el lenguaje ASCII, por lo que un inglés no sólo no entendería lo que he escrito -pues no sabe español- sino que incluso probablemente vería un texto diferente)

Para un programador por tanto es muy importante tener en cuenta dos idiomas:

  • El idioma de la máquina
  • El idioma propio

 

¿Por qué cifrar letras a números?

Pues porque hablamos de dispositivos electrónicos, que en el fondo no usan ni ceros ni unos, sino casillas que se encienden o no.

Esa es la base de todo el sistema actual, aunque a unas velocidades impensables hace pocos años.

Obviamente el funcionamiento de todo ello nos es desconocido a los juristas, y veo positivo que así suceda; pues nosotros entendemos de códigos civiles, y los programadores de códigos fuente.

Lo que si veo importante es que entendamos los juristas es que esos códigos fuente son normas lingüísticas y matemáticas, y que como normas aunque las desconozcamos, no podemos ignorarlas.

¿Qué ventaja adicional tiene el cifrado?

Volviendo al tema, del binario, el siguiente problema, es que cualquier lector de binario, puede acceder fácilmente al contenido de la información.

Obviamente no os voy a explicar aquí las ventajas de la privacidad de la información, y cómo desde antiguo el ser humano ha usado diversas técnicas para cifrar sus mensajes.

De hecho encriptar significa meter en una cripta (aunque Krypta en griego es ocultar, y de ahí el anglicismo) la palabra correcta es cifrar.

Lo que acabo de explicar en realidad se llama compilar, y gracias a Luis Saiz Jimeno, os puedo pasar este vídeo que explica mejor la diferencia entre cifrar y compilar

El hash no es sino otra forma de cifrado que supone convertir números a números y letras

Llegamos así al eje de este post, pues hasta ahora hablamos de un cifrado sencillo, o dicho de otra manera, un cifrado fácilmente descifrable o estático (pues basta tener un traductor para acceder al contenido de la información).

El reto es cifrar la información de forma segura, esto es, de modo que a ella sólo acceda aquel que nos interesa a nosotros (en definitiva, pasar de lo que es compilado a lo que es cifrado).

Antes que nada hay que entender que si ciframos algo, es imposible saber su contenido si no tenemos la clave que nos permita descifrar.

En el caso que he puesto de «amor de suegra» la clave es la citada norma ISO 8859-1, y descifrar es tan fácil como acceder a una web que te lo haga (obviamente lo puedes hacer en persona, pero te garantizo que tardarás mucho más)

  • Lo básico es, por supuesto, usar una técnica de cifrado, que permita que el texto compilado, sólo sea conocido por quienes tienen las claves para descifrarlo.
  • Un sistema, que garantiza la confidencialidad y la integridad del documento, es añadir al documento cifrado una firma electrónica, que permita conocer su autoría.
  • Otro sistema es un sello electrónico de tiempo que garantice su fecha.

 

Lo que hay que tener en cuenta es que tanto la firma como el sello electrónicos son nuevas técnicas de cifrado, y que sólo añaden capas de seguridad, pero que en nada afectan al documento (salvo en su credibilidad, pues sabida es la facilidad de manipulación de los archivos digitales).

Entrar en mayores profundidades implicaría empezar a hablar de criptograma simétrica, asimétrica e híbrida, y me parece que supera mis capacidades, así como la razonable extensión de este post.

¿Y qué utilidad tiene un hash para un Notario?

En materia de actas de archivos digitales entender qué es un hash es primordial para cualquier jurista.

Nuevamente y gracias a Luis Saiz Jimeno, os puedo pasar este vídeo que explica mejor

Obviamente el Notario puede descargar todo el texto de un archivo, pero el problema es la cantidad de folios que ocuparía (con el consiguiente coste) y la absoluta inutilidad práctica de los datos obtenidos (salvo para un perito).

Más práctico y económico es poder incorporar al acta notarial un resumen cifrado del documento electrónico que se le ha exhibido al notario, dicho de otra forma, el hash de dicho documento.

Con ello, se consiguen varias cosas

  1. Garantizar que el documento no se ha visto modificado tras exhibirse al Notario.
  2. Darle fecha fehaciente a dicho documento electrónico.
  3. Abaratar costes notariales.
  4. Facilitar el examen del documento por cualquiera, y dejar para los peritos los problemas de su autenticidad.

 

¿Cómo saca el Notario el hash de un archivo electrónico?

Sería absurdo que os explicara los distintos tipos de hash, y forma de calcularlos, pues sería como explicaros cómo hallar un logaritmo neperiano.

Hay muchos programas que lo hacen por ti; amén de que se calcula que un experto matemático, calculando manualmente un hash necesitaría toda una vida haciendo operaciones.

Es tan fácil como descargar cualquier programa, personalmente y por su facilidad de uso, yo utilizo QuickHash.

En el programa puedes subir tanto un archivo como una carpeta, y te arroja el hash en la función que quieras (las más usadas son MD5, SHA1, y mi favorita el SHA256).

La función hash que elijas, es en función de los cálculos matemáticos que sean necesarios, y aunque es posible que dos documentos generen el mismo hash (de hecho se ha conseguido en MD5 t SHA1 las combinaciones posibles son tales que:

  1. Se ha conseguido que dos documentos generen el mismo hash, más no dos documentos similares (es absurdo hablar de colisión si una fotografía y una canción en formato digital arrojan el mismo hash)
  2. La inversión y el tiempo necesario para generar un hash igual al conseguido por el Notario, superan  el límite de lo razonable
  3. Quien alegue la colisión debería aportar el nuevo documento y su hash, siendo posible una contrapericial, pero, y sobre todo, difícilmente el sano criterio del juzgador no detectaría la manipulación (y ojo que existe el fraude procesal)