Saltar al contenido

Que es la Criptografía y cómo funciona todo

criptografia y las criptomonedas

Sharing is caring!

n esta guía, profundizaremos en la criptografía simétrica y asimétrica y la ciencia detrás de la criptografía de criptomonedas.

Las criptomonedas como Bitcoin y Ethereum usan un sistema descentralizado de igual a igual para realizar transacciones. Dado que todo el proceso está en línea, existe el temor de que las transacciones sean volátiles y pirateables. Lo que vamos a ver en esta guía es cómo la criptomoneda usa la criptografía para hacer que sus transacciones sean extremadamente seguras.

Firmas digitales

Una de las herramientas criptográficas más importantes que se utilizan en la criptomoneda es el concepto de firmas. ¿Qué es una firma en la vida real y cuáles son sus propiedades? Imagine un papel que ha firmado con su firma, ¿qué debe hacer una buena firma?

Debería proporcionar verificación . La firma debería poder verificar que fue usted quien realmente firmó el documento.
No debe ser falsificable . Nadie más debería ser capaz de falsificar y copiar su firma.
No repudio . Si ha firmado algo con su firma, entonces no debería poder retirarlo o afirmar que alguien más lo ha hecho en su lugar.
Sin embargo, en el mundo real, no importa cuán intrincada sea la firma, siempre hay posibilidades de falsificación, y realmente no se pueden verificar las firmas con ayudas visuales simples, es muy ineficiente y poco confiable.

La criptografía nos da una solución a esto por medio de “firmas digitales” que se realiza mediante el uso de “claves”. Entonces, ¿qué son las llaves? ¿Y cómo se usan en blockchain? Antes de explorarlos, es importante saber más sobre la criptografía básica.

criptografía simple
¿Qué es la criptografía de criptomonedas?
La criptografía es un método que utiliza principios matemáticos avanzados para almacenar y transmitir datos en una forma particular, de modo que solo aquellos a quienes está destinada puedan leerlos y procesarlos. La criptografía ha sido utilizada durante miles y miles de años por personas para transmitir mensajes sin detección. De hecho, el primer uso de la criptografía se vio en la tumba tomada del Reino Antiguo en Egipto, alrededor de 1900 a. C. La criptografía ha existido en la sociedad moderna de una forma u otra.

El cifrado es una de las herramientas más críticas utilizadas en criptografía. Es un medio por el cual un mensaje puede hacerse ilegible para un lector involuntario y solo el remitente y el destinatario pueden leerlo. En la tecnología moderna, hay tres formas de encriptación que se usan ampliamente, la criptografía simétrica, la criptografía asimétrica y el hash.

Criptografía Simétrica

La criptografía simétrica es el primer método criptográfico conocido conocido por el hombre. El concepto es muy simple y si lo dividiéramos en pasos, así sería:

  • Tiene un mensaje M que desea enviar a su amigo.
  • Cifras el mensaje con una clave y obtienes un texto cifrado C.
  • Tu amigo recibe tu texto cifrado C.
  • Luego descifra el texto cifrado utilizando la misma clave para recuperar el mensaje M.

Si tuviéramos que mostrar una representación visual del proceso , así es como se verá.

Hay dos tipos de criptografía simétrica:

  • Cifrados de flujo.
  • Cifrados de bloque.

¿Qué son los cifrados de flujo?

El cifrado de flujo básicamente significa usar una clave fija que reemplaza el mensaje con una cadena de caracteres pseudoaleatoria. Básicamente es el cifrado de cada letra de una en una.

Vamos a discutir 3 tipos de cifrados de flujo en esta guía para darle una idea de cómo funcionan los cifrados de flujo:

  • Almohadilla única con alfabetos.
  • Almohadilla de una sola vez con puerta XOR.
  • Registro de desplazamiento de retroalimentación lineal.

Pad de una sola vez con alfabetos

Para hacer este cifrado, necesitamos tener una clave que tenga el mismo número de caracteres que el mensaje y debe usarse solo una vez (de ahí el término “teclado de una sola vez”).

Supongamos que para este ejemplo vamos a enviar un mensaje, “ENCUENTREME FUERA” a nuestro amigo Bob. Pero no queremos que nadie intercepte nuestro mensaje. Es por eso que Bob y nosotros hemos decidido usar una almohadilla única que dice así:

“BDUFGHWEIUFGW”

Como puede ver, el pad también tiene el mismo número de caracteres que el mensaje, es decir, 13.

Ahora, este es un ejemplo muy simple de la almohadilla de una sola vez, la estamos usando porque creemos que es el mejor ejemplo para entender esta táctica.

Ahora, una cosa más que debe tener en cuenta, cada alfabeto será reemplazado por su equivalente numérico durante el proceso.

El mapeo numérico es así:

Durante el proceso, habrá 6 datos que necesitamos que son: Básicamente, el equivalente numérico de cada alfabeto. Ok, ahora que hemos construido las bases, pasemos al proceso real.

  • Mensaje original (OM): el mensaje original por el que estamos pasando. En este caso, “ENCUENTREME FUERA”.
  • Mensaje original numérico (NOM): el equivalente numérico del mensaje original,
  • OTP: el pad de una sola vez.
  • OTP numérico (NOTP): el equivalente numérico de la OTP.
  • NCT: el texto de cifrado numérico que es NOM + NOTP mod 26
  • CT: El texto cifrado que es el equivalente alfabético de los números en el NCT.

Por lo tanto, debemos enviar el mensaje “ENCUENTREME FUERA” y debemos usar el teclado de una sola vez para cifrarlo.

El proceso de cifrado

Entonces, comencemos poniendo el mensaje en el OM

Ponemos el mensaje “ENCUENTREME FUERA” en la fila OM. Bien, ¿qué pasó aquí?

Luego, usamos la tabla de mapeo numérico para obtener el equivalente numérico de cada alfabeto. Entonces, veamos la tabla de mapeo y veamos qué obtenemos:

En la fila OTP, ponemos la clave que ya nos dieron, que es, en caso de que haya olvidado, “BDUFGHWEIUFGW”. Es una simple sustitución, tomaremos estos valores y los pondremos en la fila NOM.

Ahora, en la fila NOTP usamos la misma tabla de mapeo de números y encontramos los valores numéricos equivalentes de la clave que son:

“1, 3, 20, 5, 6, 7, 22, 4, 8, 20, 5, 6, 22”.

En la nueva fila, para el texto de cifrado numérico (NCT) agregamos el NOTP y el NOM y modificamos el resultado en 26 para obtener nuestro NCT.

Entonces, finalmente, el mensaje “MEET ME OUTSIDE” se convierte en una serie pseudoaleatoria de caracteres “NHYYSLKYBMNJA”. Así es como encuentras los valores para NCT y luego usas la tabla de mapeo y encuentras los alfabetos correspondientes que son: “NHYYSLKYBMNJA”.

Así es como funciona el proceso de cifrado.

El proceso de descifrado

Ahora veremos cómo podemos descifrar el mensaje usando exactamente la misma clave.

Veamos los datos que Bob tiene con él:

  • Tiene el mensaje cifrado que me ha enviado.
  • Él tiene la clave que ambos compartimos.
  • Él tiene la tabla de mapeo para encontrar los equivalentes numéricos.

Entonces, ¿cómo va a descifrar el mensaje utilizando estos datos?

  • Mapeará los valores numéricos tanto de la clave como del mensaje cifrado para obtener NCT y NOTP.
  • Luego calculará el NOM (valor numérico del mensaje original) haciendo este cálculo: NOM = NCT – NOTP mod 26.
  • Él usará la tabla de mapeo para recuperar los alfabetos correspondientes.

Entonces, veamos cómo funciona el cálculo de NOM.

Ahora, si asignamos la NOM a su equivalente alfabético usando la tabla de asignación, obtenemos:

“ENCUENTREME FUERA”

Y así, el mensaje se cifra y descifra con la misma clave.

Almohadilla única con puerta XOR

XOR o “OR exclusivo” es una puerta lógica. ¿Qué es una puerta lógica? Una puerta lógica generalmente toma 2 entradas y da 1 salida. Las entradas y salidas son valores binarios, lo que significa que pueden ser 1 o 0. Una puerta lógica XOR toma 2 entradas binarias y emite una salida alta SOLO cuando las entradas son diferentes. Es decir, si A y B se ingresan a una puerta XOR, entonces la salida C será 1 SOLO cuando A no sea igual a B.

La puerta XOR se ve así:

Así es como se ve la tabla de verdad XOR:

El proceso de cifrado

Supongamos que tiene datos de texto sin formato que desea enviar a su amiga Alice. Primero, lo convertirá a su forma binaria. Supongamos que el mensaje que tiene es este: 00011110

Ahora tiene la clave , la clave que comparte con su destinatario y suponga que ha pasado la clave a través de un algoritmo que le da el resultado binario equivalente: 01001010 .

Entonces, ahora que tiene la clave, va a XOR cada bit individual correspondiente para obtener la salida de texto de cifrado resultante.

Texto cifrado = Clave XOR de texto sin formato

Entonces, si XOR tanto los datos, la clave que obtendrá es:

“01010100”

Este es el texto cifrado que Alice recibirá de ti.

El proceso de descifrado

Entonces, ¿cómo Alice descifrará su mensaje y recuperará el original?

Esta es la información que tiene:

  • El texto cifrado
  • La clave.

Entonces, ¿qué va a hacer ella? Es simple.

¡Simplemente XOR la ​​clave y el texto cifrado y recuperará el mensaje original! Ver por ti mismo:

Y así, ella recuperará el mensaje original.

Registro de desplazamiento de retroalimentación lineal

¿Qué es un registro de desplazamiento de retroalimentación lineal? Es una función cuya salida futura depende completamente de su estado anterior (o actual) . Esto se hará más claro a medida que sigas leyendo, ¡así que no te asustes!

La idea de este estilo de cifrado de flujo es predeterminar una clave con su destinatario, que será una función de registro de desplazamiento de retroalimentación lineal que utilizará para determinar el código. Supongamos que habló con su amigo Bob y determinó que esta es la fórmula con la que ambos quieren ir (crédito a Daniel Rees de Youtube para esta fórmula).

  • E (i + 3) = E (i + 1) + 2E (i + 2) mod 26.

Y supongamos también que antes de enviar este mensaje, usted y Bob determinaron que E (1) = 2 y E (2) = 4.

Ahora puede ver que en esta ecuación, todas las salidas futuras dependen de las salidas anteriores.

Entonces, suponga que el mensaje que desea enviar a Bob es “ENCUENTREME”. Como hay 6 caracteres, necesitamos determinar 6 valores de E () para actuar como clave. Ya hemos predeterminado los valores de E (1) y E (2). Ahora necesitamos calcular E (3) a E (6).

  • E (3) = E (1) + 2E (2) mod 26 = 10.
  • E (4) = E (2) + 2E (3) mod 26 = 24.
  • E (5) = E (3) + 2E (4) mod 26 = 6.
  • E (6) = E (4) + 2E (5) mod 26 = 10.

Entonces, ahora que tenemos las claves, comencemos el descifrado .

El proceso de cifrado

Entonces, ahora que tenemos la clave y el mensaje, creemos la tabla:

Para obtener el texto de cifrado numérico, agregue la clave y el valor numérico correspondiente del alfabeto que asigna de esta tabla que ya hemos visto antes:

Ahora, para obtener el valor numérico de los textos cifrados, agregue la clave y el valor numérico del mensaje original y modifique con 26.

Entonces obtienes:

Ahora use la tabla de mapeo nuevamente para encontrar los alfabetos correspondientes y obtendrá “OIORSO”. Ese es el mensaje encriptado.

El descifrado de este mensaje es realmente difícil, especialmente si no tiene la clave. Sin embargo, un experto puede detectar un patrón. Necesitará computadoras para generar este código.

Ejemplos de cifrados de flujo utilizados en el mundo real.

El Rivest Cipher 4 del RC4

  • Se utiliza en WEP, también conocido como protocolo equivalente por cable para la seguridad de la red inalámbrica.
  • También una opción en TLS / HTTPS para cifrar el tráfico web.
  • Como se ha rajado tantas veces, ya no se recomienda su uso.

El A5 / 1

  • Utilícelo para encriptar los datos y la comunicación del teléfono GSM (Sistema global para comunicación móvil).
  • Edward Snowden en sus filtraciones reveló que la NSA sigue rompiendo GSM de forma rutinaria para fines de vigilancia, por lo que ya no es un modo seguro de cifrado.

Entonces, eso es todo sobre cifrados de flujo, es hora de pasar a bloquear cifrados.

¿Qué son los cifrados de bloque?

Los cifrados de bloque son una forma de criptografía simétrica que utiliza una clave de longitud fija para cifrar un bloque de longitud fija. Comencemos revisando un cifrado de sustitución muy común que debe haber visto antes:

Entonces, si alguien le dijera que recibió un mensaje que dice “EFBD” y quiere que lo descifre y obtenga el mensaje original, ¿cómo lo hará?

Simplemente verá la tabla, verá qué alfabetos corresponden a cuál y luego simplemente sustituirá, ¿verdad? Entonces “EFBD” es el cifrado de “FACE”.

Ahora revisemos el texto plano y el texto cifrado y compárelos:

  • Llanura: ABCDEF
  • Cifrado: FABCDE

Entonces, como puede ver, el texto cifrado es básicamente el texto plano desplazado uno a la derecha. Entonces, en este caso particular:

  • EFBD = CARA desplazada por 1

Eso, en esencia, es lo que es un cifrado de bloque. Dado un texto plano de entrada y una clave, puede generar un texto cifrado único. Una cosa más que es extremadamente importante y debe tenerse en cuenta. Dada la clave, cualquiera puede descifrar el texto cifrado del texto plano y viceversa. Los ejemplos que estamos dando aquí son extremadamente simplistas, el cifrado de bloque ocurre con GRANDES fragmentos de datos.

Si estamos buscando una representación visual de un cifrado de bloques, así es como se verá:

Otra propiedad interesante del cifrado de bloque es que si la clave cambia, entonces el texto de cifrado de salida cambia drásticamente. Hagamos una prueba con los datos que tenemos ahora.

Ahora, tenemos 3 claves para los 3 textos de cifrado diferentes.

  • En el texto cifrado 1 nos desplazamos a la derecha una vez.
  • En el texto cifrado 2 nos desplazamos a la derecha dos veces.
  • En el texto cifrado 3 estamos cambiando a la derecha tres veces.

Entonces, veamos qué sucede cuando analizamos la entrada “CARA” a través de todos estos cifrados diferentes.

  • Cuando key = 1, FACE se convierte en EFBD
  • Cuando key = 2, FACE se convierte en DEAC
  • Cuando key = 3, FACE se convierte en CDFB

Como puede ver, el texto cifrado de salida cambia cada vez que cambia la clave. En el ejemplo tenemos muy pocos datos, imagínense hacer esto con enormes cantidades de datos, la salida cambiará drásticamente cada vez.

Hay dos reglas para que un cifrado de bloque se considere válido:

  • Debe poder derivar el texto sin formato del texto cifrado y viceversa, dada una clave.
  • La función debe ser eficientemente computable.

Hay una cosa más importante que debe tener en cuenta cuando se trata de cifrados de bloque. Los tamaños de bloque son fijos, por lo que el texto sin formato de entrada debe ser del mismo tamaño que el tamaño de bloque. Si la entrada es más grande que el bloque, debe desglosarse para obtener el tamaño correcto; si la entrada es más pequeña, debe rellenarse con algunos datos basura para ajustarse al tamaño del bloque.

Ejemplos de cifrados de bloque

Estándar de cifrado de datos (DES)

  • Tamaños de bloque de 64 bits.
  • Tamaño de clave de 56 bits.
  • Era el estándar del gobierno hasta 2001.

Estándar de cifrado avanzado (AES)

  • Tamaño de bloque de 128 bits.
  • Tamaño de clave de 128, 192 o 256 bits.
  • Considerado muy seguro y ampliamente utilizado hoy en día.

La ventaja de la criptografía simétrica

Aunque la criptografía simétrica tiene algunos problemas importantes (que discutiremos más adelante), la mayor ventaja de la criptografía simétrica es que requiere muy poca sobrecarga. Solo necesita compartir una sola clave con su destinatario para seguir adelante con este método.

Incluso ahora, una gran cantidad de software utiliza este método junto con la criptografía asimétrica para proporcionar servicios de cifrado / descifrado rápidos y eficientes.

Los problemas con la criptografía simétrica

Aunque la sobrecarga es significativamente menor, hay muchos problemas con la criptografía simétrica.

Problema # 1: la clave compartida

El hecho de que el cifrado y descifrado se realice con una sola clave es un gran problema. En primer lugar, el intercambio de la clave debe hacerse de una manera muy segura, si alguien obtiene la clave, todos sus datos se verán comprometidos.

Problema # 2: no es escalable

Otro gran problema con la criptografía simétrica es que no es escalable en absoluto. Supongamos que Alice ejecuta un centro de información y envía datos mediante criptografía de clave simétrica. Está bien si solo trata con 3-4 clientes. Pero la mayoría de los clientes que recibe, las claves públicas más únicas que tendrá que manejar y cuidar. Eventualmente, será demasiado difícil de manejar.

Debido a estas vulnerabilidades de la criptografía de clave simétrica, se necesitaba una solución, y en la década de 1970 finalmente llegó.

Avance de James Ellis

En 1970, el matemático e ingeniero británico James Ellis pensó en una idea basada en un concepto simple. ¿Qué pasaría si el cifrado y el descifrado fueran operaciones inversas basadas en 2 claves diferentes? En la criptografía tradicional, es decir, la criptografía simétrica, el mensaje tenía que enviarse junto con la clave a la persona destinataria para que descifrara el mensaje, pero esto presentaba la idea muy real de que un atacante tenía en sus manos la clave.

Ellis imaginó que el receptor del mensaje no podía ser una fiesta pasiva, y tenían que tener un “candado” y una “llave” para ellos. El candado podría enviarse a cualquier persona del mundo, pero la clave debía mantenerse en privado. Por lo tanto, cualquiera puede enviar un mensaje al receptor bloqueándolo con su candado y dado que solo el receptor tiene la llave, solo ellos pueden abrirlo.

Ahora, esta era la teoría, tenía que haber una forma práctica de esta teoría, y eso se debió a dos principios brillantes:

  • La función trampilla.
  • El intercambio de claves Diffie – Hellman.

¿Qué es la función trampilla?

Una función de trampilla, también conocida como una función unidireccional, es una función en la que es fácil pasar de un estado conocido como el dominio al otro estado, también conocido como el rango, pero es difícil volver del rango al dominio a menos que tenga conocimiento de un clave que se llama la función trampilla.

Diagramáticamente se representa así:

trampilla matemática

Crédito de imagen: Cornell.edu

Las funciones de trampillas se basan en la idea de las teclas. En donde la clave pública (K) se utiliza para ir del dominio al rango. Para volver al dominio desde el rango, tenemos que usar una función de trampilla que también se conoce como la clave privada (k). También se da a entender que la clave privada y la clave pública están matemáticamente relacionadas entre sí y también tienen que estar relacionadas entre sí a través de otra función de trampilla f () de modo que K = f (k) para que la clave privada sea inviable. determinado por la clave pública.

Un ejemplo simple de esto es una multiplicación de números grandes. Supongamos que tiene dos números 171 y 118, entonces es simple determinar que 171 * 118 = 20178. Sin embargo, si solo conoce 20178, entonces es difícil determinar cuáles fueron los números iniciales a menos que tenga una clave con usted, en En este caso el conocimiento de solo uno de los dos números, para determinar el segundo.

¿Qué es el intercambio de claves Diffie-Hellman?

Supongamos que hay dos personas, Alice y Bob, y quieren atacar un banco. Sin embargo, están a ambos lados del banco y solo pueden comunicarse entre sí a través de una línea compartida que está siendo aprovechada por el banco.

Algo como esto.

Tenga en cuenta que todo lo que Alice y Bob se digan será escuchado por el banco. Entonces, ¿cómo pueden ambos decidir una fecha para atacar al banco sin que el banco se entere y sin que Alice y Bob intercambien explícitamente esa información?

Este enigma puede ser respondido por el intercambio de claves Diffie-Hellman; Es un concepto por el cual dos partes pueden obtener información secreta sin compartirla.

Para entender cómo funciona el Diffie-Hellman, necesitamos usar una de las aplicaciones más famosas de esta teoría, el intercambio secreto de colores.

Para esto hay 3 cosas que debes tener en cuenta:

  • Alice y Bob están de acuerdo públicamente en que el amarillo será la pintura común que ambos usarán.
  • Alice secretamente se guarda para sí misma que también va a usar naranja junto con amarillo.
  • Bob secretamente decide que usará aguamarina junto con amarillo.

La etapa uno

Como se declaró públicamente que el amarillo será el color de elección:

  • Banco: tiene amarillo
  • Alice: tiene amarillo
  • Bob: tiene amarillo

Etapa dos

Ahora Alice mezcla su color privado, también conocido como naranja con amarillo, y obtiene un color compuesto que llamaremos CA.

Al mismo tiempo, Bob mezcla su color aguamarina privado con amarillo y crea un color compuesto CB.

Entonces, al final de la etapa dos, así es como se ven las cosas:

  • Banco: amarillo
  • Alice: CA
  • Bob: CB

Etapa tres

Ahora, Alice y Bob se enviarán mutuamente sus respectivos colores, que serán rápidamente interceptados por el banco. Sin embargo, el banco ahora enfrenta un problema.

Las combinaciones de colores son una función de trampilla.

Si bien es fácil para alguien combinar dos colores y generar un tercer color, no es factible que determine los dos primeros colores del tercer color dado. Entonces, el banco se hará con CA y CB, pero no tendrá idea de cuáles son los colores que se utilizaron para su creación.

Entonces, así es como se ven las cosas en este momento:

  • Banco: Amarillo, CA, CB.
  • Alice: CB
  • Bob: CA.

Etapa cuatro

Ahora, Alice y Bob volverán a mezclar sus colores secretos en la mezcla que han recibido de la otra persona, por lo que ahora ambos tendrán una mezcla de amarillo, naranja y aguamarina que es marrón. Sin embargo, el banco solo tendrá CA y CB porque no tienen idea de cuáles son los colores secretos.

Entonces, así es como se ven las cosas ahora:

  • Banco: Amarillo, CA y CB.
  • Alice: marrón.
  • Bob: marrón.

Y aquí es donde radica el truco, al no revelar sus colores secretos, tanto Bob como Alice tienen, en su poder, el color marrón, a pesar de que nunca intercambiaron explícitamente el marrón entre ellos.

Así es como se ve el diagrama de todo este intercambio:

Imagen cortesía: Wikipedia

Esta es la representación del intercambio Diffie-Hellman, pero se necesitaba un medio matemático para asegurarse de que también podría haber aplicaciones prácticas de esto. Por esta razón, se utilizó la función de módulo.

La forma matemática del intercambio Diffie-Hellman

Supongamos que hay un generador g para un campo finito de tamaño n. Y en ese campo, elegimos dos valores aleatorios a y b. Será difícil para un atacante determinar g ^ ab dado solo g, g ^ a y g ^ b. Esta es la condición que activa la función trampilla. Dada esta condición, dos partes pueden intercambiar mensajes y llegar a la misma conclusión sin comunicarse explícitamente entre sí.

Entonces, matemáticamente, esto es lo que sucede.

Alice elige un valor aleatorio “a” del campo ny determina un mensaje M1 tal que:

  • M1 = g ^ a mod n.

De manera similar, Bob elige un valor aleatorio “b” del campo ny crea un mensaje M2 tal que:

  • M2 = g ^ b mod n.

Tanto Alice como Bob ahora pueden transmitirse el mensaje el uno al otro.

Alice ahora determina el mensaje especial K haciendo lo siguiente:

  • K = M2 ^ a mod n = g ^ ab mod n.

Bob ahora determina el mismo mensaje K por:

  • K = M1 ^ a mod n = g ^ ab mod n.

Entonces, tanto Alice como Bob llegaron a la misma conclusión sin compartir explícitamente esta información.

Este intercambio de claves Diffie-Hellman fue invaluable en la formación de la criptografía asimétrica:

¿Qué es la criptografía asimétrica?

La criptografía asimétrica utiliza dos claves, una clave pública y una privada para cifrar y descifrar datos particulares. El uso de una tecla cancela el uso de la otra.

La representación esquemática de este se ve así:

criptografía de clave simétrica

Imagen cortesía: SSL2BUY

Hay dos usos del mundo real de la criptografía asimétrica que analizaremos en esta guía y ambos son importantes por sus propios motivos:

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

¿Qué es el algoritmo RSA?

El algoritmo RSA es el algoritmo criptográfico asimétrico más utilizado y popular en la historia. Lleva el nombre de los profesores del MIT Rivest, Shamir y Adleman que descubrieron este algoritmo. Ahora, ¿cómo funciona? La idea se deriva de los avances que tuvo Diffie-Hellman.

Entonces, estas son las variables con las que trabajaremos:

Supongamos que tiene el mensaje secreto “m”. “M” elevado a la potencia de un número aleatorio e y luego el módulo de eso con un número aleatorio N le dará el texto cifrado c.

Básicamente. m ^ e mod N = c

Tome nota, es FÁCIL realizar esta función para obtener la salida c PERO dado solo c, e y N, es difícil obtener el mensaje “m”. Requerirá mucha prueba y error. Esta es la función de trampilla unidireccional que aplicaremos para encontrar “m”.

Pero ahora, la idea de la función trapdoor es tener una clave que haga que el proceso inverso (el descifrado) sea simple para el destinatario. Entonces, para eso necesitaremos encontrar una variable aleatoria “d” que haga posible este proceso:

  • c ^ d mod N = m.

Ahora tenga en cuenta, c = m ^ e mod N, así que sustituyendo.

  • m ^ e ^ d mod N = m.

O

  • m ^ ed mod N = m

Entonces, en las ecuaciones anteriores:

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

Ahora, incluso antes de comenzar a ver el método detrás de la locura, hagamos un cálculo simple para ver cómo funciona todo el proceso. (Grita al canal de youtube de Anthony Vance para este ejemplo).

Suponga que el mensaje que debe enviar es 42. En otras palabras, m = 42.

Junto con eso:

  • e = 17.
  • N = 3233.
  • d = 2753

El proceso de cifrado

c = m ^ e mod N.

Usando sustitución simple:

c = 42 ^ 17 mod 3233 = 2557.

Entonces el texto cifrado es 2557.

El proceso de descifrado

Hagamos c ^ d mod N.

2557 ^ 2753 mod 3233

Esto nos da el valor de m que es 42.

Genio no es así?

Ahora, recuerde que cuando hablamos sobre las funciones de trampillas, llegamos a la conclusión de que las claves privadas y públicas deben ser derivadas matemáticas entre sí de una manera que:

F (clave privada) = clave pública, donde F () es otra función de trampilla.

Debería ser difícil para cualquiera determinar la clave privada a partir de la clave pública. De hecho, debería ser tan difícil que le llevará a la computadora más poderosa del mundo décadas tras décadas obtener una de la otra.

Para responder a este enigma, retrocedemos siglos y nos encontramos con nuestro próximo genio, Euclides.

Euclides y factorización prima

Euclides descubrió hace siglos que cualquier número> 1 puede escribirse como un producto de números primos.

  • P.ej. 15 se puede escribir como 5 * 3.
  • 255 se puede escribir como 5 * 17 * 3.

Volvamos a nuestras dos ecuaciones:

C = m ^ e mod N.

Aquí, N es la clave en la función trampilla. Si bien N puede ser públicamente conocido, debería ser difícil determinar los factores primos que componen el número N. Si conoce los factores primos, entonces es un juego de niños descubrir el producto N.

P.ej. Puede usar su navegador web para multiplicar dos números enormes y encontrar el producto en menos de un segundo:

La ciencia detrás de la criptografía de criptomonedas

Tomó menos de un segundo, 0.22 segundos, hacer el cálculo. Y cuanto mayor sea el número, tomará un poco más de tiempo, pero aún así, los cálculos se realizarán súper rápido.

Sin embargo, si ingresa un número enorme y le pide a su computadora que encuentre sus factores primos, entonces puede llevar días, meses e incluso años encontrar los factores primos.

Esta es la función de trampilla que los criptógrafos utilizaron para determinar el valor de N. Esto es básicamente el corazón del truco.

Esto es lo que debe hacer para usar el algoritmo RSA:

  • Primero, genera un gran número primo aleatorio P1.
  • Genere un segundo gran número primo aleatorio P2.
  • Encuentre N calculando P1 y P2.
  • Oculte los valores de P1 y P2 y haga público N.
  • N debería ser un número enorme y las máquinas más sofisticadas del mundo tardarán décadas en encontrar los valores de P1 y P2.
  • Para resumir, N es la trampilla y sus factores primos P1 y P2 son las claves de la trampilla.

Ok, ahora hemos determinado cómo se calcula N y la trampilla que funciona en él. Pero aún no hemos determinado el valor de “e” y “d” y todavía no hemos visto cómo se deriva la clave privada de la clave pública. Para generar todos estos valores restantes, necesitamos encontrar una función que dependa de conocer la factorización de N. Y para eso necesitamos ir a visitar a nuestro próximo genio, Leonhard Euler.

Euler y rompibilidad

En 1760, el matemático suizo Leonhard Euler hizo algunos estudios innovadores. Estudió la naturaleza de los números y más específicamente la capacidad de ruptura de los números que llamó la función phi.

Básicamente dado phi (N) donde N es un número entero aleatorio, el valor de N será el número de números entre 1 y N que no comparten ningún factor común con N.

Entonces, si N es 8 entonces:

Los números entre 1-8 son: 1,2,3,4,5,6,7 y 8.

Entre estos números, solo 1,3,5 y 7 no comparten ningún factor con 8 excepto 1.

Significado, phi (8) = 4.

Ahora, calcular la función phi es difícil, excepto en un caso. Para saber esto, consulte el siguiente gráfico. El gráfico rastrea la distribución de los valores de phi en enteros hasta 1000.

La ciencia detrás de la criptografía de criptomonedas

Imagen cortesía de: Khan Academy

¿Ves esa línea verde recta en la parte superior que está convenientemente dispuesta? Esa es la phi de los números primos. Dado que la definición de un número primo es que no es factorizable aparte de sí mismo, para cualquier número primo p, phi (p) = p-1.

Veamos esto en la práctica. Supongamos que tienes un número primo 7.

Los números entre 1 y 7 son: 1,2,3,4,5,6,7.

El único número que comparte un factor con 7 en esta serie es … ¡7!

Entonces el phi (7) = 6.

Del mismo modo, si fuera a encontrar el phi de un número primo grande, diga 541 y luego:

Phi (541) = 541-1 = 540.

Se vuelve muy simple calcular el phi para un número primo. Y esto gana, aún más, importancia cuando se considera la naturaleza multiplicativa de las funciones phi. ¿Cuál es la naturaleza multiplicativa de las funciones phi?

Para dos números cualquiera A y B:

Phi (A * B) = phi (A) * phi (B).

Ahora, volvamos a los algoritmos. Alice ha determinado dos números primos grandes P1 y P2 y ha determinado un número N haciendo P1 * P2.

Entonces, usando la propiedad multiplicativa de las funciones phi:

Phi (N) = phi (P1) * phi (P2).

O

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

Y así, hemos descubierto la función trapdoor para phi. Si conocemos los factores primos de N, entonces es fácil calcular el phi (N).

Por ej. el número 77 tiene los factores primos 7 y 11.

Entonces phi (77) = (7-1) * (11-1) = 60.

Se vuelve muy fácil cuando conoces los factores primos de N.

Ahora, se requería un poco de magia matemática. Tenemos la función phi y tenemos las funciones de exponenciación modular que hemos determinado antes, necesitamos unir estas dos en una ecuación ordenada.

Y para esto, recurrimos a Euler para que nos ayude una vez más.

El teorema de Euler.

El teorema de Euler establece que:

Para dos números cualquiera myn que no comparten un factor:

m ^ phi (n) ≡ 1 mod n

Es decir, para cualesquiera dos números myn, siempre que no compartan un factor, m elevado a phi (n) dividido por n siempre dejará un resto de 1. Veamos esto en un ejemplo.

Supongamos que m = 8 yn = 5.

Phi (5) = 4

Entonces, 8 ^ 4 = 4096.

Reemplazando esto en la ecuación del teorema de Euler:

4096 ≡ 1 mod 5 es cierto porque 4096 al dividirse entre 5 deja un resto de 1.

Ahora, la ecuación: m ^ phi (n) mod 1 mod n necesita modificarse un poco antes de obtener nuestra solución final.

Modificación # 1

1 ^ k = 1 para todos los k.

Entonces, teniendo esto en cuenta, si en m ^ phi (n) mod 1 mod n multiplicamos el exponente phi (n) con cualquier número k, la solución final será 1 ^ k, que sigue siendo 1.

Ahora, esto modifica la ecuación de esta manera:

m ^ k * phi (n) ≡ 1 mod n

Modificación # 2

Para todos los m, m * 1 = m.

Entonces, en nuestra ecuación modificada, si multiplicamos ambos lados por m obtenemos:

m * m ^ k * phi (n) ≡ m * 1 mod n

Que se convierte en:

m ^ k * phi (n) +1 ≡ m mod n

Ahora, esta es la forma final de nuestra ecuación.

Antes de continuar, recuperemos las ecuaciones antiguas para refrescar nuestra memoria:

  • c = m ^ e mod N.
  • m = c ^ d mod N
  • m ^ e * d mod N = m

Ahora, verifique la última ecuación no se parece a nuestra nueva ecuación modificada:

m ^ k * phi (n) +1 ≡ m mod n

Y este es el gran avance.

Al comparar las dos ecuaciones, obtenemos:

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

FINALMENTE tenemos una ecuación donde el valor de eyd depende de phi (n).

Ahora, como ya conocemos el valor de e, es fácil calcular d, la clave privada, SOLO si se conoce la factorización de N (que es un secreto que Alice se ha guardado para sí misma).

Entonces, d = (k * phi (n) + 1) / e.

Esta es la trampilla que deshacerá el cifrado realizado por sus claves privadas e y n.

Ejemplo para ver cómo funciona todo esto

Supongamos que Bob y Alice están intercambiando mensajes.

Bob quiere enviar un mensaje M a Alice donde M = 89.

Ahora, Alice necesita generar sus llaves.

Ella usa números primos p1 y p2 donde:

P1 = 53.

P2 = 59.

N = P1 * P2 = 53 * 59 = 3127.

Phi (N) = Phi (P1) * Phi (P2) = (P1 – 1) * (P2 – 1) = 52 * 58 = 3016

Ahora, ella necesita generar un valor e que no tendrá factores con el valor de phi (N).

Entonces, ella decide e = 3.

Ahora, ella generará su clave privada d:

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

Tomando k = 2 obtenemos:

d = (2 * 3016 + 1) / 3 = 2011.

Ahora, ella bloqueará todos los valores, excepto N y e, que son su clave pública y hará que el conocimiento de estos dos sea global.

Bob encripta el mensaje

Ahora, Bob necesita enviar el mensaje M, que es 89, y necesita calcular el texto cifrado c de manera que:

c = M ^ e mod N.

Ahora, sabemos que: M = 89, e = 3 y N = 3127.

Entonces: c = 89 ^ 3 mod 3127 = 1394.

Luego lo envía a Alice.

Alice descifra el mensaje

Alice recibe el texto cifrado y todo lo que tiene que hacer es descifrarlo usando su clave privada d, que sabemos que es 2011.

Entonces, Alice hace este cálculo: c ^ d mod N

1394 ^ 2011 mod 3127 que es 89 aka el mensaje original M.

Y este es el algoritmo RSA, el algoritmo criptográfico más utilizado

¿Qué es la criptografía de curva elíptica?

La criptografía de curva elíptica es la que utilizan bitcoin, ethereum, etc. para sus propósitos de encriptación. Entonces, ¿qué es una curva elíptica? Una curva elíptica es cualquier curva que satisfaga la siguiente ecuación:

Y ^ 2 = x ^ 3 + hacha + b

Donde (x, y) es un punto en la curva y a y b son constantes.

Hay infinitas curvas que puedes hacer. Lo siguiente es cómo se ve una de estas curvas, en general:

La ciencia detrás de la criptografía de criptomonedas

Crédito de la imagen: canal de YouTube CSBreakdown

¿Cuáles son las propiedades de una curva elíptica?

  • La curva es simétrica a través del eje x.
  • Cualquier línea que pase por 2 puntos en la curva se cruzará con la curva en un tercer punto.
  • Cualquier tangente en la curva se cruzará con la curva en un punto más.

Realización de matemáticas en la curva.

Propiedad de adición de la curva

Supongamos que hay dos puntos en la curva V y A. Tracemos los de la curva y tracemos una línea a través de ellos. Esto intersectará la curva en un tercer punto.

La ciencia detrás de la criptografía de criptomonedas

Crédito de la imagen: canal de YouTube CSBreakdown

Llamaremos a este tercer punto X, y lo reflejaremos en la curva así:

La ciencia detrás de la criptografía de criptomonedas

Crédito de la imagen: canal de YouTube CSBreakdown

El reflejo de X es un punto que incidentalmente será (V + A). Esta es la propiedad aditiva de la curva elíptica.

Nota interesante Si agregamos dos reflexiones entre sí, también conocidos como si tuviéramos que agregar X y V + A en el gráfico anterior, obtendremos infinito. La razón de esto es que la línea a través de X y (V + A) se cruza con la curva en el infinito.

Propiedad de multiplicación de la curva.

Ahora, ¿qué pasa si queremos agregar un número a sí mismo? Como supongamos que tenemos un punto V, ¿qué hacemos para encontrar 2V? Recorreremos una tangente a través de V y la intersecaremos en un punto del gráfico y luego encontraremos el reflejo del punto en la curva. Esa reflexión será de 2V.

La ciencia detrás de la criptografía de criptomonedas

Crédito de la imagen: canal de YouTube CSBreakdown

Esta es también la propiedad multiplicativa de la gráfica porque estamos encontrando puntos que son básicamente la multiplicación de un número entero con el punto mismo. Ahora supongamos que queremos encontrar 3V. Uniremos V y 2V y luego reflejaremos el punto de intersección, así:

La ciencia detrás de la criptografía de criptomonedas

Crédito de la imagen: canal de YouTube CSBreakdown

¿Ves cómo los puntos recorren el gráfico? Esto es lo que le da seguridad.

Propiedades matemáticas de una curva elíptica.

Propiedad # 1: Los puntos en la curva forman un grupo abeliano

Las propiedades del grupo abeliano son las siguientes:

  • Tienen identidad.
  • Tienen inversas, también conocidas como reflexiones.
  • Los puntos tienen un significado asociativo para tres puntos A, B y C en la curva: (A + B) + C = A + (B + C).
  • Los puntos están cerrados en la curva.
  • Los puntos tienen un significado conmutativo para dos puntos A y B. A + B = B + A.

Propiedad # 2: la multiplicación en la curva es rápida

Toda multiplicación realizada en la curva se puede hacer muy rápido. Ahora supongamos que tenemos un punto P y queremos encontrar 100P. En lugar de sumar el número a sí mismo 100 veces, podemos hacer lo siguiente:

  • Agregue el punto P a sí mismo para obtener 2P.
  • Agregue 2P y P para obtener 3P.
  • Agregue 3P para obtener 6P.
  • Agregue 6P a sí mismo para obtener 12P.
  • Agregue 12P para obtener 24P.
  • Agregue 24P y P para obtener 25P.
  • Agregue 25P para obtener 50P.
  • Agregue 50P para obtener 100P.

Entonces, en lugar de seguir 99 pasos, acorta todo en solo 8 pasos.

Propiedad # 3: la división en la curva es lenta

Mientras que la multiplicación es rápida, la división es muy lenta. Supongamos que tenemos Q = nP y queremos encontrar el valor de n dividiendo Q por P. Realmente no podemos hacer eso. Tendremos que revisar manualmente los números uno por uno para encontrar un valor que satisfaga la ecuación. Esto lo hace muy lento. Esto se llama el problema logarítmico discreto y esto es lo que le da a las curvas su función de trampilla, es decir, es fácil multiplicar ny P para obtener Q, pero dado Q y P no es factible obtener n.

La curva elíptica Diffie-Hellman intercambio de claves

Entonces, hasta ahora hemos visto las diversas propiedades de la curva y también hemos visto que la curva tiene una función de trampilla. Ahora, ¿cómo determinamos si es utilizable para la criptografía o no? Probémoslo con el intercambio de claves Diffie-Hellman. Supongamos que tenemos a Alice y Bob y ambos quieren encontrar un secreto común sin que nadie sepa lo que es y sin intercambiar explícitamente su información entre ellos. ¿Cómo lo harán a través de curvas elípticas?

  • En primer lugar, acordarán públicamente una curva para usar y un punto P en la curva. Esto será de conocimiento público y estará disponible para todos.
  • En secreto, sin embargo, Alice elegirá un punto secreto “a” y Bob elegirá un punto secreto “b”.
  • Alice calculará “aP” y lo enviará a Bob. Cualquiera puede interceptar este mensaje, sin embargo, incluso con el conocimiento de P, nunca podrán determinar el valor de “a” porque, como ya hemos determinado, hay una función de trampilla que hará que la división sea inviable.
  • Del mismo modo, Bob obtendrá el valor “bP” y lo enviará a Alice.
  • Luego, Alice multiplicará su clave secreta por el mensaje que recibe de Bob para obtener un (bP). Bob hará lo mismo y obtendrá b (aP). Como todos los puntos de la curva son abelianos: a (bP) = b (aP). Y así, se han encontrado con una información secreta compartida.

Entonces como podemos ver. La curva satisface el intercambio de claves Diffie-Hellman.

Entonces, ¿cómo funciona la verificación de firma en las curvas elípticas?

(Nota: esto es lo que sucede específicamente en bitcoin)

Antes de ver cómo funciona el proceso, revisemos ciertas variables y su significado de que usaremos las siguientes ecuaciones.

  • Clave privada = d.
  • Mensaje = z.
  • Clave pública = Q.

G será un punto constante en el gráfico que será proporcionado por bitcoin.

  • “K” es un número aleatorio que se generará automáticamente para cada firma única.
  • “N” es otra constante que proporcionará Bitcoin.

Ok, ahora veamos cómo funcionan las matemáticas detrás de la verificación.

Firmando un mensaje

Clave pública Q = dG. (es imposible obtener la clave privada de Q y G porque la división no es factible).

Ahora multiplicaremos la G con el número aleatorio “k” y trazaremos ese punto en el gráfico. Las coordenadas de ese punto son (x, y). es decir (x, y) = kG

A continuación, determinamos dos valores r y s tales que:

r = x mod n.

s = (z + rd) k ^ -1 mod n

La razón por la que generamos rys es porque estas son las coordenadas de nuestra firma.

Entonces, enviamos el punto (r, s) para verificación.

Verificando un mensaje

Los verificadores llevarán a cabo una ecuación simple:

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

El valor de esta ecuación nos dará el punto (x, y).

Ahora, los verificadores simplemente pueden comparar las coordenadas x. No tienen la coordenada x dada directamente por el remitente, PERO tienen los valores de r y n.

Y como ya sabemos que r = x mod n, y luego simplemente pueden resolver para x.

Si los valores de x coinciden, esto significa que la firma está verificada.


Bonus: una mirada más profunda a las matemáticas

Veamos la ecuación que los verificadores tendrán que hacer una vez más:

  • Paso 1: z * s ^ -1 * G + r * s ^ -1 * Q

Sabemos que Q = d * G, simplemente sustituyamos el valor.

  • Paso 2: z * s ^ -1 * g + r * s ^ -1 * d * G

Podemos tomar (z + r * d) común

  • Paso 3: (z + r * d) * s ^ -1 * G

Ahora recuerde, ya hemos establecido que s = (z + r * d) * k ^ -1 mod n, sustituyamos los valores aquí:

  • Paso 4: (z + r * d) * (z + r * d) ^ – 1 * k * G

El (z + r * d) * (z + r * d) ^ – 1 se cancelan mutuamente y nos queda con:

  • Paso 5: k * G, que es la coordenada (x, y) que el remitente envió originalmente.

¿Qué podría salir mal en las curvas elípticas?

Si bien no hace falta decir que las curvas elípticas son el mejor modo de criptografía, el hecho es que todavía tiene pocas vulnerabilidades:

  • ¿Qué pasa si se elige una curva incorrecta? Si la curva tiene un bucle, existe la posibilidad de que 1001P = P para cualquier punto P en la curva.
  • Tal vez se elija una curva débil que se pueda dividir.

Tiene sus debilidades, pero son debilidades bastante manejables.

RSA vs EEC. ¿Por qué Bitcoin y Ethereum combinan curvas elípticas?

La razón por la que se eligió EEC sobre RSA es porque ofrece el mismo nivel de seguridad que RSA al consumir muchos menos bits. P.ej. para que una clave de 256 bits en EEC ofrezca el mismo nivel de seguridad, RSA tendrá que proporcionar una clave de 3072 bits. Del mismo modo, para una clave de 384 bits en EEC, el RSA tendrá que proporcionar una clave de 7680 bits para proporcionar el mismo nivel de seguridad. Como se puede ver, EEC es mucho más eficiente que RSA.

Dato curioso: la NSA ha declarado que una clave de 384 bits en EEC es lo suficientemente segura y segura como para cifrar documentos secretos de alto nivel.

¿Cómo funcionan las claves en blockchain?

Como se mencionó anteriormente, bitcoin y ethereum usan criptografía de curva elíptica. Entonces, ¿qué sucede cuando alguien te envía dinero en la cadena de bloques? Le envían el dinero a su dirección pública, que es básicamente el hash de su clave pública y alguna información adicional. Como hemos visto anteriormente, la clave pública se deriva matemáticamente de su clave privada.

Las claves públicas y privadas son valores enteros grandes y se representan, por razones de brevedad, a través del formato de importación de billetera (WIF) que consta de letras y números. Un ejemplo de clave privada y dirección pública se ve así en WIF:

La ciencia detrás de la criptografía de criptomonedas

¡Obviamente, no deberías compartir tu clave privada con el mundo como acabamos de hacerlo! La clave privada se utiliza para cerrar sesión en la transacción que el usuario desea hacer. Por lo tanto, si alguien tiene acceso a su clave privada, puede cerrar las transacciones con su clave privada y, en esencia, robarle. Además, como puede ver, la clave privada es más larga que la dirección pública.

Entonces, ¿cómo se deriva una clave pública de la clave privada en la cadena de bloques? Tomemos el ejemplo de bitcoin para este ejemplo específico.

Supongamos que Alice quiere generar sus claves para poder realizar transacciones en la cadena de bloques. Esto es lo que ella hará:

  • Primero, generará su clave privada de 256 bits. Puede hacerlo manualmente O utilizará un generador automático. Este es un ejemplo de un generador de direcciones privadas que puede encontrar en wallet-generator.net:
  • A continuación, tendrá que generar la dirección pública que el algoritmo dentro de esa billetera hará automáticamente siguiendo estos pasos.
  • Primero, su clave privada se analizará a través del algoritmo de hash SHA 256 para obtener un hash.
  • Luego, el hash se analizará a través de la función RIPE MD 160 y se generará un nuevo hash y se guardará una copia, llamemos a esto PARTE A.
  • Luego, el hash se procesará a través de SHA 256 para generar otro hash.
  • Luego, el nuevo hash será procesado nuevamente a través de SHA 256 para generar otro hash. Los primeros 7 bits de este hash se guardarán, llamémoslo PARTE B.
  • PARTE A y PARTE B se sumarán y el resultado es la dirección pública.

Es inviable que este proceso se invierta de manera que la dirección pública se pueda utilizar para generar la clave privada. ¡Le tomará 4000000000000000000000000000000000 computadora más poderosa del mundo completar este cálculo! Es seguro decir que su dirección y clave son seguras.

Entonces, ¿cómo funciona el proceso de firma (una descripción general simple)?

Supongamos que Alice quiere enviar 500 BTC a Bob. Ella seguirá los siguientes pasos:

  • Creará la transacción y la cerrará con su clave privada.
  • Ella enviará la transacción a la dirección pública de Bob.
  • Bob puede descifrar el mensaje utilizando la clave pública de Alice para verificar que efectivamente fue Alice quien le envió los bitcoins y la transacción se considera completa.

Si esto se mostrara en una imagen, así se vería:

La ciencia detrás de la criptografía de criptomonedas

Criptomonedas Criptografía: Conclusión

Entonces, como se puede ver, la criptografía de clave pública, también conocida como criptografía asimétrica, es una de las columnas principales de la criptomoneda. Es imposible siquiera imaginar cómo Bitcoin y Ethereum habrían sido seguros sin él. Cada vez que realice una transacción, agradezca a todos los matemáticos y criptógrafos que han hecho posible este maravilloso medio.

Translate »
shares