La guía completa de criptografía: cifrado asimétrico frente a cifrado simétrico

La palabra “criptomoneda” tiene dos componentes: “criptografía” y “moneda”. Como puede imaginar, la criptografía está en el corazón y el alma de la criptomoneda. El cifrado asimétrico y simétrico son los dos métodos principales de criptografía, y esta guía los desglosa a ambos. ¡Siga leyendo para obtener una visión fascinante del mundo del cifrado criptográfico!

¿Qué es la criptografía? Cifrado asimétrico frente a simétrico

La criptografía construye y analiza protocolos para evitar que terceros lean información confidencial. La criptografía utiliza matemáticas, física, comunicación, tecnología de la información e informática. Aparte de las criptomonedas, la criptografía se usa ampliamente en campos como contraseñas de computadoras, comunicaciones militares y comercio electrónico.

El objetivo de la criptografía es convertir texto plano en texto cifrado y viceversa. El texto sin formato es solo un texto estándar escrito en cualquier idioma comprensible para los humanos, como el inglés, y es fácil de decodificar. Por otro lado, el texto cifrado es la versión cifrada del archivo de texto sin formato, que el usuario general no puede entender. Todo esto sucede a través de los siguientes dos procesos:

  • Cifrado: proceso que convierte el texto del archivo en texto cifrado.
  • Descifrado: el proceso que convierte el texto cifrado en texto de archivo.

Este cambio de cifrado a descifrado y viceversa puede ocurrir con una clave o con dos. El primero es cifrado simétrico, mientras que el segundo se denomina cifrado asimétrico.

Tipos de cifrado: cifrado simétrico

Primero, tenemos la criptografía simétrica. Con este tipo de criptografía de claves, el remitente y el receptor de un mensaje comparten una única clave. Esta clave sirve como secreto compartido entre las dos partes involucradas durante el proceso de criptografía. Hay dos tipos de cifrado simétrico:

  • Flujo de cifrados.
  • Bloque de cifrados.

Cifrados de flujo

Un cifrado de flujo usa una clave fija para combinar texto plano con una cadena pseudoaleatoria de caracteres llamada “flujo de claves”. Crea texto cifrado reemplazando cada carácter en el texto sin formato con el dígito correspondiente del flujo de claves. Un valor semilla aleatorio genera esta secuencia de claves.

Veamos cómo funciona esta forma de criptografía. Tomaremos un ejemplo sencillo. Suponga que Alice quiere enviar un mensaje “CONOCER” a Bob. La clave que ambos deciden utilizar es “BBBB”.

Lo primero que hace Alice es mapear numéricamente el texto del archivo y el flujo de claves (A-Z se mapea a 0-25). Entonces, así es como se mapean su mensaje y keystream:

CONOCER -> 12 4 4 19
BBBB -> 1 1 1 1

Ahora, suma los dígitos entre sí y modifica cada dígito con 26. Esto le da:

(12 + 1)% 26 = 13
(4 + 1)% 26 = 5
(4 + 1)% 26 = 5
(19 + 1)% 26 = 20

Ahora, si asignamos estos dígitos a sus alfabetos correspondientes, obtenemos -> NFFU. Este es el texto cifrado que Alice envía a Bob junto con la clave “BBBB”.

Entonces, ¿cómo recupera Bob el mensaje original? A través del proceso de descifrado.

En primer lugar, Bob asigna tanto el texto cifrado como la clave a su equivalente numérico:

NFFU -> 13 5 5 20
BBBB -> 1 1 1 1

Ahora, Bob restará los dos y restará cada dígito con 26:

(13-1)% 26 = 12
(5-1)% 26 = 4
(5-1)% 26 = 4
(20-1)% 26 = 19

Ahora, si asigna estos dígitos a sus alfabetos correspondientes, obtenemos -> MEET.

Entonces, al compartir la clave, tanto Alice como Bob pudieron pasar del texto del archivo al texto cifrado y del texto cifrado al texto del archivo, respectivamente.

Cifrados de bloque

Un cifrado de bloque utiliza un algoritmo determinista, junto con una clave simétrica para cifrar un bloque de texto, en lugar de cifrar un bit a la vez. Como tal, este es un método más rápido que los cifrados de flujo. Para visualizar cómo funciona, imagine que el cifrado de bloque es un portal que toma dos entradas, el texto del archivo y la clave, y da una salida, el texto cifrado.

Tomemos un ejemplo sencillo.

  • El texto del archivo es “ABCD”.
  • Su clave es 1.
  • El cifrado de bloque toma todo el texto del archivo y, durante el proceso de cifrado, desplaza a la izquierda el texto del archivo en 1, es decir, el valor de la clave.
  • Produce el texto cifrado resultante: “BCDA”.
  • Para recuperar el texto del archivo, ingresa el texto cifrado en el bloque de cifrado junto con la tecla “1” y desplaza hacia la derecha. Esta vez, obtendrás ABCD.

¿Cual es mejor? Encriptación simétrica frente a asimétrica.

Si bien la criptografía simétrica es bastante simple de ejecutar, existen muchos problemas con este método:

  • Una clave para gobernarlos a todos: dado que la clave de cifrado y descifrado es la misma, debe compartirse con mucho cuidado. Si una tercera parte consigue la clave, la información se verá comprometida.
  • No escalable: otro problema masivo con la criptografía simétrica es la falta de escalabilidad. P.ej. Si Alice tiene que compartir información confidencial con cinco personas, tendrá que cuidar cinco claves únicas. Cuantas más personas tenga interacciones secretas, más claves tendrá que cuidar.

Tipos de cifrado: cifrado asimétrico

A James Ellis, un matemático británico, se le ocurrió la idea de la criptografía asimétrica, es decir, usar dos claves separadas para el cifrado y el descifrado. En este escenario, el receptor del mensaje también participa activamente en el proceso, en lugar de ser un pasajero pasivo.

Para explicar cómo funcionaría la criptografía asimétrica, Ellis dio el siguiente ejemplo:

  • Imagina una llave y un candado.
  • El remitente pone el mensaje en un buzón y lo cierra con candado.
  • Un receptor obtiene la caja cerrada y la abre con una llave.
  • Durante este proceso, el remitente no necesitaba entregar la llave al receptor.

Si bien esto sonaba bastante convincente en el papel, necesitábamos una implementación más práctica para ejecutar esto de manera consistente en escenarios de la vida real. Estas implementaciones vinieron en forma de: funciones de trampilla y el intercambio de claves Diffie-Hellman.

Proceso de cifrado asimétrico: ¿cómo funciona el cifrado asimétrico?

Función de trampilla

Piense en lo que hace que una trampilla sea eficiente:

  • Es muy fácil caerse.
  • También es difícil escapar una vez que lo atraviesa.

Una función de trampilla funciona de manera similar. Un ejemplo bastante famoso de una función de trampilla es su función hash estándar. Por ejemplo, si pasamos “100” a través de un generador de hash SHA-256, obtendremos AD57366865126E55649ECB23AE1D48887544976EFEA46A48EB5D85A6EEB4D306.

Entonces, ¿cómo es esto una función de trampilla?

  • Si le damos el valor de entrada “100”, le resultará sencillo hacer un hash usando un generador SHA-256 y obtener el hash de salida.
  • Sin embargo, si solo le damos “AD57366865126E55649ECB23AE1D48887544976EFEA46A48EB5D85A6EEB4D306”, probablemente estará un poco perdido.

¿Cómo es esto válido en la criptografía asimétrica?

En la criptografía asimétrica, utilizamos dos claves: la clave pública y la clave privada. La información se cifra con la clave pública. El proceso de obtener el texto cifrado del texto sin formato y la clave pública es sencillo. Sin embargo, obtener el texto sin formato a partir del texto cifrado es extremadamente difícil. Lo único que puede hacer es usar la clave de descifrado, también conocida como clave privada.

Intercambio de claves Diffie-Hellman

Concebido por Ralph Merkle y nombrado en honor a Whitfield Diffie y Martin Hellman, el intercambio de claves Diffie-Hellman es uno de los principios fundamentales de la criptografía asimétrica / de clave pública. Diffie-Hellman es un método para intercambiar claves criptográficas a través de un canal público de forma segura.

Considere el siguiente ejemplo.

  • Alice y Bob deciden intercambiar información confidencial entre ellos a través de un canal privado.
  • Para ello, han acordado un número público, el 7, que también será conocido por todos los fisgones.
  • Alice tiene un número privado (10), mientras que Bob también tiene un número privado (5).
  • Alice agrega su número privado al número público y envía el resultado (17) a través de la red pública a Bob.
  • Bob agrega su número privado al número público y envía el resultado (12) a través de la red pública a Alice.
  • Alice agrega nuevamente su número privado con el número que obtuvo de Bob y obtiene 22. De manera similar, Bob también recibe el mismo número después de agregar su número privado.
  • Tanto Alice como Bob obtienen 22 sin tener que divulgar su información privada al público.

La forma matemática del intercambio Diffie-Hellman

Definamos algunos parámetros antes de comenzar:

  • Hay un generador g de un campo finito de tamaño n.
  • Dentro de ese campo, elegimos dos valores aleatorios ay b.
  • Dado que es imposible determinar g ^ ab, dado solo g, g ^ a y g ^ b, esto se convierte en una función de trampilla.

Muy bien, ahora que hemos definido nuestros parámetros, veamos la situación que tenemos entre manos:

  • Alice elige un número privado aleatorio “a” y envía a Bob un mensaje M1 tal que M1 = g ^ a mod n.
  • Bob elige un número privado aleatorio “b” y envía a Alice un mensaje M2 tal que M2 = g ^ b mod n.
  • Alice obtiene M2 y usa su “a” para obtener el mensaje especial g ^ ba mod n. De manera similar, Bob obtiene M1 y agrega su “b” para recibir el mismo mensaje único.
  • Ambos terminan con el mismo mensaje “g ^ ab mod n” sin revelar su mensaje secreto y privado.

Los mejores algoritmos de cifrado asimétrico

Los dos algoritmos de cifrado asimétrico más utilizados son:

  • El algoritmo Rivest-Shamir-Adleman también conocido como RSA
  • La criptografía de curva elíptica.

1 algoritmo RSA

El algoritmo RSA, que lleva el nombre de los profesores del MIT Rivest, Shamir y Adelman, es un algoritmo asimétrico ampliamente utilizado. El algoritmo se derivó directamente del intercambio Diffie-Hellman. Entonces, antes de que entendamos cómo funciona, veamos los parámetros en juego.

  • El mensaje secreto que Alice quiere enviarle a Bob es “m”.
  • Tenemos dos números “e” y “N” seleccionados al azar.
  • Tenemos nuestro texto cifrado “c”, como c = m ^ e mod N. Esta ecuación le permite activar la funcionalidad de trampilla como esta; es fácil obtener “c” si conoce los otros valores. Sin embargo, es imposible derivar los otros valores si solo conoce “c”.
  • Ahora, cuando se trata del proceso de descifrado, necesitamos otra clave. Para eso, elegiremos una variable aleatoria “d”, tal que c ^ d mod N = m.
  • Como ya hemos establecido que c = m ^ e mod N, podemos sustituirlo directamente en la ecuación anterior y obtener -> m = m ^ ed mod N.

De la ecuación final, m = m ^ ed mod N, los valores de nuestra clave pública y clave privada son:

  • Clave privada = d.
  • Clave pública = e y N.

Clave RSA: derivación y generación
Las claves pública y privada se pueden derivar matemáticamente entre sí. Esta derivación debería satisfacer la función de trampilla de modo que no sea factible que cualquiera obtenga la clave pública de la clave privada. Para hacer esto, RSA usa factorización prima.

¿Qué es la factorización prima?

Todo entero positivo> 1 puede escribirse como un producto de números primos (o el entero es en sí mismo un número primo). P.ej. 14 es 7 * 2, mientras que 256 es 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2.

Tenga esto en cuenta, echemos otro vistazo a la ecuación de texto cifrado que hemos derivado anteriormente -> C = m ^ e mod N. El número “N” actúa aquí como la función de trampilla. Es imposible conocer los factores primos de N con solo mirarlo. Sin embargo, si conoce el valor de los factores primos, puede encontrar fácilmente N multiplicándolos.

Para resumir:

  • Genere dos números primos aleatorios P1 y P2 y multiplíquelos para obtener N.
  • Mantenga P1, P2 en privado y haga N público.
  • Asegúrese de que el valor de P1 y P2 sea lo suficientemente grande para que la trampilla sea lo más efectiva posible.

Entonces, hemos determinado “N.” Sin embargo, todavía necesitamos conocer los valores de “e” y “d” para obtener las claves pública y privada.

Para obtener estos valores, buscaremos en otro campo de las matemáticas llamado “rompibilidad” o phi ().

Entendiendo la función phi ()

Si N es un número entero aleatorio, entonces la salida de phi (N) será el número total de números enteros entre 1 y N, que no comparten ningún factor común con N, excepto 1.

Pongamos un ejemplo. Si N = 6. Los números entre 1 y 6 que no comparten un factor, excepto 1 con 6 son 1 y 5. Dado que solo hay dos números que no comparten un factor, el valor de phi (6) = 2.

Hay dos observaciones interesantes sobre la función phi () que debe conocer:

  • Cuanto mayor sea el valor de N, más difícil será encontrar phi (N).
  • Si N es un número primo, entonces es fácil encontrar phi (N). Por definición, el único número con el que un primo tiene factores comunes excepto 1 es él mismo. Entonces, el valor de phi (N), donde N es un número primo, es N-1.

Para entender este último punto, tomemos un ejemplo práctico. Supongamos que tenemos un número primo 11. El único número entre 1 y 11 – 1,2,3,4,5,6,7,8,9,10,11 – que tiene factores comunes con 11 excepto 1, es 11. Por tanto, el valor de phi (11) es 11-1 o 10.

Las funciones Phi también resultan ser multiplicativas. Significado – phi (A * B) = phi (A) * phi (B). Tenga esto en cuenta cuando regresemos a nuestro P1, P2, N.

Sabemos que -> N = P1 * P2

Si fijamos phi () en ambos lados, obtenemos: phi (N) = phi (P1 * P2).

Al usar la propiedad multiplicativa, obtenemos -> phi (N) = phi (P1) * phi (P2).

Dado que P1 y P2 son números primos, también podemos escribir la ecuación anterior como:

phi (N) = (P1-1) * (P2-1).

Funcionalidad de trampilla usando phi ()

Ahora, finalmente obtenemos nuestra funcionalidad de trampilla. Suponga que P1 es 13 y P2 es 19. Eso significa que N es (13 * 19 =) 247.

Según la fórmula -> phi (247) = (13-1) * (19-1) = 216.

Si conoce el valor de los factores primos de un número en particular, será muy sencillo encontrar su phi ().

Echando un vistazo a lo que tenemos hasta ahora:

  • Tenemos la función exponencial modular (m = m ^ ed mod N y el resto).
  • Tenemos la función phi, notablemente -> phi (N) = (P1-1) * (P2-1).

Ahora, para comprender el último paso de RSA, debemos unir ambos aspectos. Para hacer eso, veamos otro teorema que se le ocurrió a Euler.

Para dos números aleatorios m y N que no comparten un factor:

m ^ phi (N) ≡ 1 mod N

NOTA: El signo “≡” significa “es idéntico a”.

Traeremos un par de modificaciones a esta ecuación para hacerla más armoniosa con las ecuaciones que ya tenemos.

El primer cambio
Sabemos que 1 ^ k = 1 para todo k.

En la ecuación -> m ^ phi (N) ≡ 1 mod N, multiplicaremos el LHS por 1 ^ k (no hará una diferencia en la salida ya que 1 ^ k es 1).

1 ^ k * m ^ phi (N) ≡ 1 mod N.

O

m ^ k * phi (N) ≡ 1 mod N.

El segundo cambio

Sabemos que para todo m, m * 1 = m.

Multipliquemos ambos lados de nuestra ecuación modificada. Obtendremos -> m * m ^ k * phi (N) ≡ m * 1 mod N OR m ^ k * phi (N) +1 ≡ m mod N.

Ahora, comparemos esto con otra ecuación que obtuvimos hace un tiempo:

m ^ e * d mod N = m

Al comparar la ecuación, podemos ver que son bastante similares. Mediante el proceso de sustitución, podemos derivar la siguiente conclusión:

e * d = k * phi (N) + 1

O

d = (k * phi (N) + 1) / e.

Finalmente, tenemos una ecuación que nos dice cómo podemos derivar nuestra clave privada (d) de nuestras claves públicas, ey N.

Así es como funciona el algoritmo RSA.

2 algoritmo ECC

¿Qué es ECC?

La criptografía de curva elíptica o ECC es una forma de criptografía de clave pública basada en la estructura algebraica de curvas elípticas sobre campos finitos. Una curva elíptica es cualquier curva que satisface la siguiente ecuación:

y ^ 2 = x ^ 3 + ax + b

Donde (x, y) es un punto variable en la curva, mientras que ayb son constantes.

Propiedades matemáticas de ECC

1 adición

NOTA: Crédito de imagen para las curvas que se muestran a continuación -> CSBreakdown youtube

Si desea sumar dos valores V y A, los trazaremos en la curva y pasaremos una línea a través de ellos. Luego veremos dónde la línea se cruza con la curva.

A continuación, dibujamos una línea vertical a través del punto de intersección. El lugar donde la línea vertical se cruza nuevamente con la curva se considera el punto de adición, también conocido como V + A.

2 multiplicación

Cuando multiplicamos un valor por un número entero, lo estamos sumando consigo mismo una cantidad específica de veces. Por ejemplo, 3 * X es X + X + X.

Aquí se aplica la misma lógica. Tenemos un valor V y si queremos obtener 2V, podemos agregar V consigo mismo. Lo hacemos dibujando una tangente desde V y reflejando verticalmente el punto de intersección:

Ahora, si necesitamos encontrar 3V, podemos simplemente V y 2V:

Qué es ECC: intercambio de claves Diffie-Hellman

Alice y Bob quieren intercambiar mensajes a través de una red pública sin revelar su información personal. Así es como funciona:

  • Tanto Alice como Bob acordarán la curva a utilizar y seleccionarán un punto aleatorio en ella.
  • Alice tiene información privada “a” y la multiplica por P para enviar aP a Bob. Bob tiene información privada “b” y envía bP a Alice.
  • La multiplicación es una función de trampilla en curvas elípticas ya que la división no es factible. Entonces, incluso si P, aP y bP se hacen públicos, nadie podrá derivar ayb de ellos.
  • Alice ahora multiplicará de nuevo a por bP para obtener abP. Bob multiplicará b por aP y obtendrá baP. Según las propiedades de ECC, abP = baP.
  • Alice y Bob llegan a la misma conclusión sin enviar su información privada.
  • ECC satisface con éxito las condiciones Diffie-Hellman.

Qué es ECC: verificación de firma de curva elíptica

Antes de analizar el proceso, declaremos algunos valores:

  • d, la clave privada.
  • z, el mensaje.
  • Q, la clave pública.
  • G, un punto constante en el gráfico
  • k, un número aleatorio generado para cada firma única
  • n, otro valor constante

Fase 1: Firma del mensaje

  • El valor de su clave pública Q = dG.
  • Multiplicar k con G apunta a un punto específico en la gráfica (x, y) tal que (x, y) = kG.

Determinaremos dos valores rys, que serán las coordenadas de nuestra firma.

  • r = x mod n.
  • s = (z + rd) k ^ -1 mod n

El remitente envía (r, s) a los verificadores para su verificación.

Fase 2: verificación de mensajes

La verificación es un proceso sencillo. Los verificadores ejecutarán lo siguiente:

z * s ^ -1 * G + r * s ^ -1 * Q

Al resolver, esta ecuación da el punto (x, y)

Con la ecuación r = x mod n, los verificadores pueden resolver x y ver si los valores coinciden. Si es así, la firma es válida.

Por qué Bitcoin optó por ECC sobre RSA

ECC ofrece el mismo nivel de seguridad que RSA al consumir muchos menos bits. Considera lo siguiente:

Un ECC de 256 bits proporcionará la misma seguridad que el RSA de 3072 bits.
Un ECC de 384 bits proporcionará la misma seguridad que un RSA de 7680 bits.

  • La razón por la que ECC es tan eficiente se debe a la velocidad con la que realiza cálculos matemáticos.
  • Por ejemplo, suponga que tenemos un valor P y queremos encontrar 100P. En lugar de simplemente agregar P a sí mismo 100 veces, puede hacer lo siguiente:
  • P + P = 2P.
  • 2P + P = 3P.
  • 3P + 3P = 6P.
  • 6P + 6P = 12P.
  • 12P + 12P = 24P.
  • 24P + P = 25P.
  • 25P + 25P = 50P.
  • 50P + 50P = 100P

Como puede ver, un proceso que debería haber tomado 99 pasos tomó solo 8.

Criptomonedas y criptografía de clave asimétrica

En el momento en que obtenga una billetera Bitcoin, recibirá su dirección pública y clave privada.

  • La dirección pública será la ubicación donde recibirá sus Bitcoins.
  • Luego usará su clave privada para desbloquear los bitcoins enviados a su billetera.
  • Cuando envíe Bitcoin a alguien, deberá firmarlo con su clave privada para verificar la transacción.

¿Cómo genera la billetera Bitcoin su dirección pública y clave privada?

  • Sus claves públicas y privadas se generan mediante la multiplicación de ECC como se describe anteriormente.
  • La dirección pública luego pasa por SMA -256 para generar un hash.
  • Ese hash luego pasa a través de RIPE MD 160, para obtener un hash más corto. A esto lo llamaremos HASH_1.
  • HASH_1 pasa a través de SHA-256 nuevamente para generar otro hash. Los primeros 7 bits de este hash se convierten en HASH_2.
  • La dirección pública de Bitcoin es la combinación de HASH_1 y HASH_2.
  • No es factible conocer el valor de la clave privada de la dirección pública de Bitcoin.

Cifrado asimétrico vs simétrico: conclusión

Es esencial que primero tenga una idea básica de la criptografía asimétrica si desea obtener una buena comprensión de las criptomonedas. En esta guía, le mostramos cómo funcionan los diferentes procesos criptográficos simétricos y simétricos. Ahora debería comprender mejor algunos de los procesos subyacentes que se activan cuando decide interactuar con sus criptomonedas. Con una curva salarial de desarrollador de blockchain en aumento y finanzas descentralizadas (DeFi) en aumento, será más importante que nunca con las criptomonedas y las escuelas de blockchain en línea.

CriptoMundo

CriptoMundo.com es un medio digital independiente que difunde noticias y contenido sobre criptomonedas y tendencias emergentes de tecnologías financieras. Ofrece noticias, guías, artículos de opinión y gráficos en tiempo real.

Monedas

Bitcoin

Ethereum