Criptografía básica para entender la tecnología blockchain

BlockchainLab 14 Mar 2018,

Criptografía. Del gr. κρυπτός kryptós ‘oculto’ y -grafía. 1. f. Arte de escribir con clave secreta o de un modo enigmático.

La criptografía es la rama de la informática y las matemáticas que estudia los algoritmos utilizados para ocultar la información a quien no debe verla. Actualmente, son algoritmos que aseguran las comunicaciones digitales a lo largo de todo el globo.

Además, es uno de los pilares de la tecnología blockchain, que utiliza diversos algoritmos criptográficos para el funcionamiento de la red de nodos, la integridad de la cadena de bloques o los mecanismos de consenso, entre otros ejemplos.

Por ello, en el siguiente artículo se explican los mecanismos básicos de la criptografía para comprender un poco mejor como funciona la tecnología blockchain a día de hoy.

CRIPTOGRAFÍA SIMÉTRICA

Desde los primeros momentos de la historia, la criptografía simétrica ha sido uno de los métodos más utilizados para el intercambio de información de forma segura.

En tiempos de los romanos, Julio Cesar, invento su propio sistema de cifrado. Consistía en escribir un mensaje, y luego “desplazar” cada letra un cierto número de veces:

Desplazamiento César para las primeras letras del alfabeto

La principal característica del cifrado simétrico es que existe una clave, que tanto quien emite el mensaje, como quien lo recibe, conocen. No es un sistema que se utilice habitualmente, pues el intercambio de esta clave requiere hacerlo de forma segura, para garantizar que solo emisor y receptor tienen la clave.

 

CRIPTOGRAFÍA ASIMÉTRICA

La evolución de los sistemas criptográficos llevó a la creación de los sistemas de clave asimétrica, donde se utiliza un mecanismo de claves que permite el intercambio de información sin que se requiera compartir la clave de forma previa. Este sistema utiliza dos elementos, uno privado y uno público. El privado lo guardamos en un lugar seguro, y el público se muestra a todo el mundo para que puedan interactuar con nosotros.

La peculiaridad de este sistema es que, para cada persona, existen un par claves, y cuando se quiere enviar información a alguien, se requiere primero su clave pública, se genera el mensaje cifrado y se envía a la persona. Esta podrá recuperarlo utilizando su clave privada.

Una manera sencilla de entenderlo es imaginarse la clave privada como una llave, y la clave pública como una caja que solo se abre con esta llave. Si nosotros queremos que nos envíen mensajes, dejamos cientos de cajas (todas iguales) en diversos lugares. De esta manera, cualquier persona podrá ir, coger nuestra caja (que no vale nada de momento, es una caja vacía), introducir el mensaje que nos quiera hacer llegar y cerrarla. En el momento en que se cierra, ya solo nosotros con nuestra llave maestra podemos abrir la caja, así, quien nos envía el mensaje puede enviar la caja de la forma que quiera y estar seguro de que solo nosotros seremos capaces de abrirla.

 

Ejemplo de criptografía asimétrica

En resumen, en este sistema, la seguridad empieza y termina en el mismo usuario, siendo quien crea todas las claves (la llave maestra y las cajas en el ejemplo) y quien almacena en un lugar seguro las claves para descifrar. Es un sistema muy útil que permite a todos los usuarios utilizar un único canal de comunicación, pero, a cambio, requiere que se tenga, previamente al envío, la clave pública (las cajas del ejemplo) de cada usuario al que se quiere enviar información.

FIRMA DIGITAL

A raíz de los sistemas asimétricos, se creó un método que permite firmar digitalmente cualquier mensaje, asegurando que el mensaje proviene indudablemente de la persona que lo envía. Es decir, como en el mundo analógico, cuando firmamos una carta, aseguramos que somos nosotros y no otra persona haciéndose pasar por nosotros (Asumiendo que nuestra firma no puede ser falsificada fácilmente).

Utilizando el ejemplo anterior de criptografía asimétrica, imaginemos que ahora lo que creamos de forma única es la caja, y lo que cedemos a todo el mundo es la llave. De esta manera, cualquier mensaje que enviemos en esa caja, que solo nosotros podemos generar y en la que figuramos de remitente, solo se puede abrir con la llave que hemos repartido, y que todo el mundo sabe que es nuestra, así, cuando Alicia le envíe un mensaje a Bruno, al hacerlo dentro de su caja personal, Bruno podrá estar seguro de que el mensaje proviene de Alicia y de nadie más, evitando que alguien pudiera actuar en su nombre de forma malintencionada.

En este ejemplo, al contrario del cifrado, la llave se convierte en el elemento público que se comparte con todo el mundo (dándole una copia a cada persona) y la caja en el elemento privado que solo yo conozco.

No todos los sistemas criptográficos de hoy en día permiten realizar las dos operaciones: cifrado y firma, algunos están orientados solo a sistemas de cifrado, otros a sistema de firma y otros sí que pueden actuar en los dos sentidos.

Apartándonos de los ejemplos visuales y resumir lo visto hasta este punto, los elementos que se crean en todos los sistemas criptográficos asimétricos son pares de claves, una pública y una privada. La clave privada es la que el usuario guarda y utiliza para descifrar los mensajes que recibe, así como para firmar los mensajes que envía. La clave pública es una clave que se pone a disposición de todos los demás usuarios, para que puedan cifrar los mensajes que quieran enviarnos, así como verificar nuestra firma digital. Como es lógico, la gran mayoría de los sistemas de intercambio de mensajes utilizan ambos mecanismos, cifrando y firmando los mensajes para que solo el receptor lo pueda entender y que además, esté seguro de que el mensaje realmente procede del emisor.

Como todos los sistemas digitales, no son perfectos, y existen vulnerabilidades y ataques que permiten actuar de forma malintencionada a pesar de la criptografía, pero por ello, gran cantidad de profesionales del mundo de la ciberseguridad trabajan cada día en hacer más seguros estos sistemas y en concienciarnos de como hacer un buen uso de ellos.

HASH

Por último, para poder entender un poco mejor todo los elementos criptográficos que se utilizan en la tecnología blockchain, hablaremos del hash.

Un hash es un elemento que se obtiene mediante una función hash. A estas funciones también se las conoce como “digestivas”, porque transforman la información a un elemento de tamaño fijo y con unas ciertas características, como si se tratase un “digerido” de la información.

Para entender un poco mejor los hashes, pensemos en el ADN. El ADN es un conjunto de elementos (casi siempre con el mismo número de elementos en todos los seres humanos) que todos tenemos, pero que con pequeñas variaciones es capaz de crear de forma única a todos y cada uno de nosotros. El hash de cualquier archivo es un conjunto de caracteres que se forma de manera única para ese archivo. De esta modo, si se hace el hash de dos archivos distintos, se obtendrán dos hashes distintos (de la misma longitud).

Este mecanismo es muy potente, pues nos permite, siempre y cuando utilicemos la misma “receta” (algoritmo) para crear el hash de un elemento, obtener un identificador único para dicho elemento. Esto nos permite también saber si un elemento ha sido modificado, es decir, si el elemento cambia, no puede mantener el mismo ADN.

Esto es muy potente y es uno de los elementos claves utilizados en la tecnología blockchain, permitiendo crear un ADN único para toda la información, asegurando así su inmutabilidad.

Obtenido de wikipedia: Ejemplo de hashes

Antes de terminar, quiero mencionar que las funciones de hash son algo más complejas de lo que he expuesto. Porque si intentamos llevar cualquier elemento, de cualquier longitud, a uno reducido de la misma longitud siempre, nos encontraremos con que existe más de un valor para el cual se obtendría el mismo hash. A este fenómeno se le conoce como colisión, y plantea ciertos problemas a la hora de utilizar algunas funciones de hash. Pero aun así, es una potente herramienta muy utilizada en el mundo digital.

Artículo original publicado en Medium por Íñigo García de Mata. Ver artículo original.

Explicando exploit batchOverflow en contratos inteligentes ERC20

Introducción Según un grupo de investigadores en ciberseguridad han descubierto una nueva vulnerabildiad en los tokens de Ethereum. Esta vez

Blockchain y el Sector Salud

Introducción a Blockchain Blockchain es un protocolo distribuido que permite el intercambio de información o valor (tokens), entre dos o

Blockchain & GDPR

La tecnología Blockchain y sus aplicaciones han supuesto un reto regulatorio para los legisladores de todo el mundo. La definición