Criptografía: la criptografía en la moneda
Este artículo explora la tecnología fundamental que hay detrás de las criptomonedas y la criptografía, desde los fundamentos del cifrado hasta las cifras.
En este artículo de profundización, hablamos de una tecnología fundamental detrás de las criptomonedas – la criptografía – cubriendo los conceptos básicos de cifrado, funciones hash y cifrados como una introducción a la criptografía en acción.
Introducción a la criptografía
La criptografía, en términos más sencillos, consiste en hacer secretas las comunicaciones. El término “secreto” significa que, incluso en presencia de un fisgón que pueda vigilar todas las comunicaciones, el mensaje que se pretende transmitir puede llegar al receptor y mantenerse en secreto para los demás.
La criptografía utiliza a menudo técnicas matemáticas para lograr las propiedades deseables para el secreto. A menudo se asocia con el proceso de conversión de texto plano ordinario en texto cifrado, que es un texto que sólo el receptor previsto puede descifrar. El proceso que convierte el texto plano en texto cifrado se conoce como cifrado, mientras que el proceso de conversión del texto cifrado en texto plano se denomina descifrado. Un cifrado (o cifrado) es un algoritmo para realizar un cifrado o descifrado: una serie de pasos bien definidos que pueden seguirse como un procedimiento.
La criptografía no es algo nuevo, ni sólo para las criptomonedas. Su uso está muy extendido en la vida cotidiana, donde es necesario proteger la información, como las contraseñas de transacciones bancarias, de cuentas de correo electrónico y de transacciones de comercio electrónico.
La cadena de bloques y las criptomonedas utilizan la criptografía de múltiples formas: para los monederos, las transacciones, la seguridad y los protocolos de preservación de la privacidad. Por ejemplo:
- Criptografía de clave pública utilizada en una transacción
- Hashing para la minería de Bitcoin
- Árboles de Merkle para el posicionamiento de transacciones en bloques
Casi podemos decir que si no entiendes de criptografía, no entiendes de criptodivisas. Para aprender mejor, vamos a sumergirnos en el mundo de la criptografía.
Cifrado simétrico y asimétrico y funciones hash
La clasificación de los algoritmos criptográficos se basa en el número de claves empleadas para el cifrado y el descifrado: cifrado simétrico, cifrado asimétrico y funciones hash.
Cada uno tiene aplicaciones específicas que son insustituibles entre sí. Por ejemplo, el cifrado asimétrico es necesario para generar los pares de claves privadas/públicas, mientras que las funciones hash son necesarias para producir huellas digitales únicas.
Cifrado simétrico
El cifrado simétrico utiliza una única clave tanto para cifrar como para descifrar. El emisor del mensaje utiliza la clave para cifrar el texto plano y envía el texto cifrado al receptor, que aplica la misma clave para descifrar el mensaje y recuperar el texto plano. Los sistemas de clave simétrica son más rápidos y sencillos (en comparación con los de clave asimétrica), pero no resuelven el problema del intercambio de claves entre emisor y receptor si la clave no se conoce de antemano.
Los esquemas de criptografía simétrica se dividen a su vez en cifradores de bloques y cifradores de flujo.
Cifrado por bloques
Los cifradores de bloques dividen la entrada en bloques de tamaño fijo (por ejemplo, 128 bits), y cada uno de los bloques es procesado por varias funciones con la clave secreta. El algoritmo determina la longitud del bloque, la clave y las funciones utilizadas en el proceso.
Algunos de los cifrados por bloques más utilizados son:
Estándar de cifrado de datos (DES)
- Longitud del bloque = 64 bits
- Longitud de la clave = 56 bits
Creado en IBM, DES fue uno de los cifradores simétricos de bloques más populares a principios de los años 70 y es uno de los algoritmos de cifrado más examinados. Fue adoptado como norma federal por el National Bureau of Standards (EE.UU.) en 1976, e incluido en las normas ANSI como Algoritmo de Cifrado de Datos para el sector privado en 1981.
A principios del siglo XXI, DES se consideraba inseguro, principalmente debido a la longitud relativamente corta de su clave secreta, que lo hacía vulnerable a los ataques de fuerza bruta.
Estándar de cifrado avanzado (AES)
- Longitud del bloque = 128 bits
- Longitud de la clave = 128, 192 o 256 bits
AES, un moderno cifrado simétrico por bloques, es uno de los cifrados más populares del mundo. Desarrollada en 1997 por Vincent Rijmen y Joan Daemen, fue aprobada posteriormente como norma federal de cifrado en Estados Unidos en 2002.
AES se considera un cifrado sólido y seguro. A lo largo de los años, se han producido varios ataques contra diferentes implementaciones de AES, pero se refieren a casos especiales y no se consideran una amenaza para el algoritmo AES en sí.
Triple DES (3DES)
- Longitud del bloque = 64 bits
- Longitud de la clave = 56, 112 o 168 bits
El cifrado 3DES se desarrolló porque el cifrado DES, inventado a principios de los años 70 y protegido por una clave de 56 bits, resultó ser demasiado débil y fácil de descifrar con los ordenadores modernos de la época.
Cifrado de flujos
Los cifradores de flujo son más flexibles que los de bloque, ya que están diseñados para cifrar caracteres individuales (normalmente dígitos binarios) de un mensaje de texto plano de uno en uno utilizando una transformación de cifrado que varía con el tiempo. En cambio, los cifradores de bloques tienden a cifrar simultáneamente bloques de texto plano utilizando una transformación de cifrado fija.
En general, el hardware de los cifradores de flujo es más rápido que el de los cifradores de bloque. Los cifrados de flujo también son más apropiados y, en algunos casos, obligatorios (por ejemplo, en algunas aplicaciones de telecomunicaciones) cuando la memoria intermedia es limitada o cuando los caracteres deben procesarse individualmente a medida que se reciben. Al tener una propagación de errores limitada o nula, los cifradores de flujo también pueden ser ventajosos en situaciones en las que los errores de transmisión son muy probables.
Algunos cifrados de flujo populares son:
RC4
- Longitud de la clave = hasta 2.048 bits
RC4 es un cifrado de flujo de tamaño de clave variable con operaciones orientadas a bytes que se utiliza ampliamente en protocolos populares. Por ejemplo, se utiliza para proteger el tráfico de Internet (Transport Layer Security, conocido como TLS) o para proteger las redes inalámbricas (Wired Equivalent Privacy, o WEP).
One-Time Pad (OTP)
- Longitud de la clave = longitud del mensaje
La teoría en la que se basa el One-Time Pad (OTP) es que la clave debe tener al menos la misma longitud que el mensaje (el texto plano) y estar formada por números realmente aleatorios. Cada letra del texto plano se “mezcla” con un elemento de la OTP. Esto da como resultado un texto cifrado que no tiene ninguna relación con el texto plano cuando se desconoce la clave. En el extremo receptor, se utiliza la misma OTP para recuperar el texto sin formato original.
Salsa20
- Longitud de la clave = 32 bytes
Salsa20 es un cifrado presentado al proyecto eSTREAM, que se desarrolló entre 2004 y 2008 con el objetivo de promover el desarrollo de cifradores de flujo. Se considera un algoritmo bien diseñado y eficaz. No se conocen ataques eficaces contra la familia de cifradores Salsa20.
Cifrado asimétrico
El cifrado asimétrico también se conoce como Criptografía de Clave Pública (CCP). Utiliza dos claves diferentes para cifrar y descifrar. La clave que debe mantenerse en secreto se denomina clave privada, mientras que la que no, clave pública. Por ejemplo, si A quiere enviar un mensaje a B y asegurarse de que B será la única persona capaz de comprenderlo, A puede cifrar el mensaje utilizando la clave pública de forma que sólo B pueda descifrarlo utilizando la clave privada.
Descrito públicamente por primera vez por el profesor de la Universidad de Stanford Martin Hellman y el estudiante de posgrado Whitfield Diffie en 1976, el cifrado asimétrico se describe como un criptosistema de dos claves en el que dos partes pueden entablar una comunicación segura a través de un canal de comunicaciones no seguro sin tener que compartir una clave secreta común.
Aunque la clave pública y la clave privada son diferentes, están relacionadas matemáticamente. Pero la relación matemática sólo es utilizable al cifrar y descifrar, y otros no pueden deducir la clave privada aunque conozcan la clave pública.
Los algoritmos de criptografía asimétrica se utilizan ampliamente en las criptomonedas. Por ejemplo, la dirección del monedero se crea a partir de una clave pública, y sólo quienes tienen la clave privada pueden utilizar el dinero que contiene.
Algunos esquemas populares de cifrado asimétrico son:
RSA
La clave pública y la clave privada no se eligen arbitrariamente. Deben generarse mediante procedimientos específicos. La clave pública consiste en dos enteros grandes (e, n), y la clave privada consiste en dos enteros grandes (d, n). Los tres números e, d y n están relacionados de una manera especial, que requiere un poco más de matemáticas:
Supongamos que utilizas un codificador que convierte todo el texto plano en inglés en números arábigos. Por ejemplo, “¡Eh! ¡Eh! ¡Eh!” se traduce por “¡7! ¡7! 7!” y “bitconnnnnnnnect” se traduce por “83333331”. Ahora, Alicia quiere enviar el mensaje “Hola” (que se traduce como “2”) a Bob.
El método más sencillo para que Alicia envíe el mensaje a Bob es decirle directamente “2”. Pero Alice y Bob no quieren que su mensaje sea visto por nadie más. Por suerte, Bob conoce RSA. Ha creado un par de claves pública/privada y le ha pedido a Alice que codifique el mensaje “2” utilizando la clave pública que le ha proporcionado.
Alice entonces encripta el mensaje ‘2’ usando la clave pública de Bob (5, 14), y el mensaje encriptado se convierte en ‘4’, que significa ‘Traducir error del servidor’. Incluso si un fisgón viera su mensaje, no tendría ni idea de por qué está enviando “4”.
Bob sabe que el ‘4’ no es el verdadero mensaje de Alice. A continuación, descifra el mensaje con su clave privada, que no ha comunicado a nadie (ni siquiera a Alice). La clave privada es (11, 14), y aplicando algunos procedimientos de descifrado, Bob descubre que el verdadero mensaje es “2”.
Ilustremos en una tabla cómo funciona el proceso anterior:
Por parte de Bob, sólo recibe el mensaje cifrado “4”. Pero al aplicar el descifrado con su clave privada, ha recuperado con éxito el verdadero mensaje “2”.
Entonces, ¿cómo obtenemos la clave pública (5, 14) y la clave privada (11, 14)?
Este proceso se denomina generación de claves RSA.
Los interesados pueden consultar la encriptación RSA.
Criptografía de curva elíptica (ECC)
ECC es un algoritmo de cifrado asimétrico alternativo a RSA. Del mismo modo, permite a los usuarios crear un par de claves pública/privada, pero los algoritmos/procedimientos utilizados son diferentes a los de RSA.
Por ejemplo, para la curva elíptica (véase más abajo), la fórmula es y2 = x3 + ax + b, donde a y b son los coeficientes que determinan la forma de la curva.
Partimos de un punto concreto de la curva. A continuación, utilizamos una función (llamada función punto) para encontrar un nuevo punto. Repetimos la función punto para dar saltitos alrededor de la curva hasta acabar finalmente en nuestro último punto. Veamos el algoritmo:
Se trata de una gran función de trampilla porque, si se conoce la ubicación del punto inicial (A) y el número de saltos necesarios para llegar al punto final (E), es muy fácil encontrar el punto final. Por otra parte, si sólo se conocen las ubicaciones del punto de partida y del punto final, es casi imposible averiguar cuántos saltos se han necesitado para llegar hasta allí. Así, en este ejemplo, podemos definir la clave pública y la clave privada como:
- Clave pública: Punto inicial A, punto final E
- Clave privada: Número de saltos de A a E
Para ser más generales, para una curva elíptica dada (como se muestra a continuación), la clave pública es (P, G), donde P es el punto de inicio y G es el punto final (un punto predefinido especial [constant] EC), y la clave privada es k (k es un número entero y P = k * G).
Algoritmo de intercambio de claves Diffie-Hellman
El algoritmo Diffie-Hellman se utiliza para establecer un secreto compartido que puede utilizarse para comunicaciones privadas mientras se intercambian claves criptográficas a través de una red pública.
Tradicionalmente, la comunicación cifrada entre dos partes requería el intercambio de claves por algún canal físico seguro, como listas de claves en papel transportadas por un mensajero de confianza. El método de intercambio de claves Diffie-Hellman permite a dos partes que no se conocen entre sí establecer conjuntamente una clave secreta compartida a través de un canal inseguro. A continuación, esta clave puede utilizarse para cifrar las comunicaciones posteriores mediante un cifrado de clave simétrica (como se ha explicado anteriormente).
Para simplificar el algoritmo, utilizamos la siguiente imagen para presentar el procedimiento de este cifrado. Tenga en cuenta que la letra P del principio se elige aleatoriamente en una curva elíptica, y G es una raíz primitiva de P. Las claves privadas de a y b se eligen aleatoriamente.
Alice y Bob pueden ahora utilizar la misma clave secreta (3) para cifrar el mensaje entre ellos sin conocer esta clave de antemano.
Funciones Hash
Las funciones hash, también llamadas compendios de mensajes y cifrado unidireccional, comprimen el texto plano en un texto de longitud fija, llamado valor hash (o compendio). Es imposible recuperar el valor hash en el texto plano.
Una función hash debe cumplir tres propiedades de seguridad:
1) A prueba de colisiones
Es inviable desde el punto de vista computacional encontrar dos cadenas de entrada diferentes que, si se aplican a la función hash, tengan el mismo resultado.
Se puede expresar así:
Es difícil encontrar x e y, donde H(x) = H(y), pero x no es igual a y.
Tenga en cuenta que tiene que haber colisiones, ya que estamos pasando de un espacio de entrada mucho mayor t (cualquier cadena) a un espacio de salida fijo (2^256).
Aplicación: El hash como resumen de mensajes. Si sabemos que H(x) = H(y), es seguro suponer que x = y.
Ejemplo: Para reconocer un fichero que hemos visto antes, recuerda su hash. Esto funciona porque el hash es pequeño.
2) Oculto
Dado H(x), es inviable encontrar x. Esto puede explicarse como que, si se nos da la versión hash de x, no encontraremos x.
Aplicación de la Propiedad Oculta: Compromiso
Es la analogía digital de coger un valor (un número), sellarlo en un sobre y poner ese sobre sobre sobre la mesa -donde cualquiera puede verlo-, comprometiéndose así con lo que hay en el sobre y su secreto para los demás. Más tarde, se puede abrir el sobre y sacar el valor, pero está sellado. Así que comprométete con un valor y revélalo más tarde.
El algoritmo de compromiso hace dos cosas:
1. Compromete a un mensaje: Devuelve dos valores: un compromiso y una clave. El compromiso es lo mismo que el sobre puesto sobre la mesa; la llave es necesaria para abrirlo.
2. Más tarde, revelamos a alguien el mensaje original y dejamos que verifique que corresponde al original, proporcionándole el compromiso y la clave.
3) Rompecabezas
Si alguien quiere apuntar a una determinada función hash, entonces gana algún valor de y. Si parte de la entrada se elige al azar, es difícil encontrar otro valor para apuntar al valor de la función hash.
Dada una salida y de la función hash, si k se elige de una distribución aleatoria, es inviable encontrar una x, tal que el hash de k|x(k concatenado con x) sea y: H(k|x) = y.
Funciones Hash populares
Resumen de mensajes (MD)
La familia MD comprende las funciones hash MD2, MD4, MD5 y MD6. Se adoptó como estándar de Internet RFC 1321 y es una función hash de 128 bits.
Los compendios MD5 se han utilizado ampliamente en el mundo del software para garantizar la integridad de los archivos transferidos. Por ejemplo, los servidores de archivos suelen proporcionar una suma de comprobación MD5 precalculada para los archivos, de modo que un usuario pueda comparar con ella la suma de comprobación del archivo descargado.
Función hash segura (SHA)
La familia SHA consta de cuatro algoritmos SHA: SHA-0, SHA-1, SHA-2 y SHA-3. Aunque pertenecen a la misma familia, son estructuralmente diferentes.
SHA-0 fue publicado por el Instituto Nacional de Estándares y Tecnología de EE.UU. (NIST) en 1993. Tenía pocos puntos débiles, pero no llegó a ser muy popular.
Más tarde, en 1995, se diseñó SHA-1 para corregir las supuestas deficiencias de SHA-0. Se pueden producir colisiones contra el algoritmo SHA-1 completo utilizando el ataque de fragmentación, y la función hash debe considerarse rota.
La familia SHA-2 tiene otras cuatro variantes SHA: SHA-224, SHA-256, SHA-384 y SHA-512, en función del número de bits de su valor hash. SHA-256 y SHA-512 son los más utilizados. SHA-512 es más seguro que SHA-256 y suele ser más rápido que SHA-256 en máquinas de 64 bits.
En octubre de 2012, el NIST eligió el algoritmo Keccak como nuevo estándar SHA-3. Keccak ofrece muchas ventajas, como un rendimiento eficaz y una buena resistencia a los ataques.
RIPEMD
RIPEMD es una familia de funciones hash criptográficas que incluye RIPEMD, RIPEMD-128 y RIPEMD-160. También existen versiones de 256 y 320 bits de este algoritmo. RIPEMD-160 es una versión mejorada y la más utilizada de la familia.
Palabras finales: Aplicación práctica de la criptografía
La criptografía tiene una historia sorprendentemente larga, pero con infinitas posibilidades de uso en el futuro. Este proceso es la base de las criptomonedas y los monederos actuales.
Para más información sobre los distintos tipos de criptocarteras, lea ¿Qué es una criptocartera? Guía para principiantes.
Diligencia debida e investigación propia
Todos los ejemplos que figuran en este artículo son meramente informativos. No debe interpretar dicha información u otro material como asesoramiento jurídico, fiscal, de inversión, financiero, de ciberseguridad o de otro tipo. Nada de lo aquí contenido constituirá una solicitud, recomendación, aprobación u oferta por parte de Crypto.com para invertir, comprar o vender monedas, tokens u otros criptoactivos. Los rendimientos de la compra y venta de criptoactivos pueden estar sujetos a impuestos, incluido el impuesto sobre plusvalías, en su jurisdicción. Las descripciones de los productos o características de Crypto.com son meramente ilustrativas y no constituyen una aprobación, invitación o solicitud.
Los resultados pasados no garantizan ni predicen los resultados futuros. El valor de los criptoactivos puede aumentar o disminuir, y usted podría perder la totalidad o una parte sustancial del precio de compra. Cuando evalúe un criptoactivo, es esencial que investigue y actúe con la diligencia debida para tomar la mejor decisión posible, ya que cualquier compra será de su exclusiva responsabilidad.
Compartir con amigos
¿Todo listo para comenzar tu viaje por el mundo de las criptomonedas?
Obtén tu guía paso a paso para abrir
una cuenta con Crypto.com
Al hacer clic en el botón Enviar, reconoces haber leído el aviso de privacidad de Crypto.com donde explicamos cómo usamos y protegemos tus datos personales.