Hablar de criptografía puede ser bastante complejo, matematicamente, pero es escencial entender sobre criptografía para ser un buen blockchain developer. Verás que no necesitas grandes conocimientos matemáticos. Conocer fundamentalmente el funcionamiento de los algoritmos bastará para que puedas progresar y tener éxito.
Diferencia entre Hash y Firma
Dos de las palabras más utilizadas en el mundo crypto son "hash" y "firma". Frecuentemente, e incorrectamente, utilizadas como sinónimos. Un buen punto de partida para introducirnos en criptografía es comprender la diferencia entre estos dos términos.
La encriptación se divide en dos grandes familias de algoritmos: los simétricos y los asimétricos.
Algoritmos de encriptación simétricos
Los algoritmos de encriptación simétricos utilizan una "llave", por lo general, creada a partir de un mapeo entre letras, números, otros algoritmos, o una semilla para generar llaves aleatorias. Esta llave servirá tanto para la encriptación, como para la descencriptación de un texto dado. Es decir, cualquiera que posea la llave, podrá encriptar y desencriptar cualquier tipo de cosa.
Algoritmos de encriptación asimétricos
Por otro lado, los algoritmos de encriptación asimétrica funcionan basándose en llaves públicas y privadas. El funcionamiento es simple: la llave pública permite encriptar, pero no desencriptar. La llave privada es la única que puede desencriptar información, previamente encriptada con la llave pública.
La llave pública, deriva de la privada a partir de complejos algoritmos. Puede obtenerse la pública a partir de la privada, pero no es posible obtener la llave privada a partir de la pública. De ahí su importancia de guardar meticulosamente la llave privada, y por este motivo la misma es "privada".
De esta forma, los algoritmos de llave pública y privada revolucionaron la criptografía y lograron construir grandes mecanismos de seguridad sobre la base de la criptografía. Como lo es blockchain.
Hashing de información
El proceso de hashing es similar al de la encriptación de datos, pero con importantes diferencias a comprender. Ambos procesos, hasheo y encriptación, derivan en un texto ilegible y alfanumérico que resguarda información por detrás. Con la principal diferencia de que en la encriptación es posible revertir el proceso, con la llave privada. En el hashing, no es posible revertir el resultado.
El hashing es determinista; eso quiere decir que, ante un input, recibiremos siempre el mismo output. Esto nos permite, por ejemplo, verificar la integridad de la información. Si hasheamos un PDF, obtendremos un hash que lo representa. Si un solo byte del PDF se modifica, obtendremos un hash totalmente diferente.
Otra gran característica de los algoritmos de hashing es la reducción del tamaño de la información. Sin importar el tamaño de lo que se quiere hashear, obtendremos un hash de 32 bytes. Esto vuelve al hashing irreversible, dado que, como perdemos información, no es posible recuperar el contenido original.
Firma digital
La firma digital es un proceso criptográfico un poco más complejo que combina conceptos de encriptación y hasheo. Se suele utilizar con fines de autenticación, donde un usuario realiza una firma de un hash con su llave privada.
Analicemos qué es lo que ocurre en una firma digital: sabemos que el hash de un texto tiene una longitud determinada y es irreversible. Dicho hash es firmado, pero esta vez se utiliza la llave privada de un conjunto de llaves. A diferencia de la encriptación asimétrica, donde utilizábamos la llave pública.
(texto original -> hash) + llave privada = firma
A través de la firma resultante, es posible demostrar que una persona firmó una determinada información y que está de acuerdo con la misma. El texto que se hashea antes de la firma con la clave privada, puede ser un simple "hola mundo" o toda una transacción de blockchain.
Esta información que firmamos utilizando el par de llaves es recuperable, pero realmente esconder la información no es lo que nos interesa en este punto. Si no, utilizar esta firma con propósitos de autoridad, pudiendo verificar que determinado usuario firmó un contenido hasheado previamente.
Verificación de firmas digitales
La importancia de las firmas digitales es la verificación de las mismas. Conociendo el mensaje original, este se vuelve a hashear con el mismo algoritmo que se utilizó para ser firmado. Combinando este dato con la propia firma, a través de procesos matemáticos, podemos obtener la llave pública del usuario que firmó el mensaje con su llave privada. Sin necesidad de revelar esta.
(texto original -> hash) + firma = llave pública
De esta manera, logramos verificar que un usuario está de acuerdo con lo que puede ser un mensaje de texto, o autorizó toda una transacción de blockchain para mover fondos entre wallets.
Conclusión
La base del funcionamiento de la criptografía en blockchian se realiza a través de llaves públicas y privadas, hashes y firmas digitales.
Te habrás dado cuenta a lo largo de esta clase que no hemos necesitado comprender complejas fórmulas matemáticas. Solo con analizar conceptualmente lo que ocurre con la información cuando es hasheada o encriptada, es suficiente para ti como futuro desarrollador blockchain.
Contribución creada por: Kevin Fiorentino (Platzi Contributor).
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?