Capítulo 1: primitivas de criptografía · gitbook vale la pena la minería criptográfica 2018

No tienes que ser un experto en matemáticas o criptografía. ¡El objetivo es obtener una idea de qué tipo de tontería va con toda esta magia! No podrá hacer estos platos en su propio algoritmo de encriptación rsa después de este capítulo, pero obtendrá un alto nivel de comprensión y una profunda apreciación por la mecánica de la misma. Aquellos que quieran bucear muy profundamente recibirán una lista de recursos recomendados al final de cada parte. Los antecedentes en matemáticas serán muy útiles pero no necesarios para comprender el siguiente contenido. Salto de tema

La criptografía de clave pública también se conoce como criptografía de clave asimétrica, debido al uso de un par de claves: una que es privada (una clave secreta, sk) y otra que es pública (una clave pública, pk). La clave pública se genera a partir de la clave secreta (la llamaremos clave secreta porque más adelante, será más fácil abreviar claramente la clave pública como pk y la clave secreta como sk).

El problema con el cifrado simétrico es que si la persona A quiere usar el algoritmo de cifrado para comunicarse con la persona B, ambos deben tener la clave secreta para descifrar los mensajes cifrados. Solo una vez que se haya intercambiado su clave, podrán comunicarse en secreto. El problema es que este ‘intercambio de claves’ no se puede realizar utilizando canales de comunicación comprometidos en los que un intruso podría estar escuchando. Esto se conoce como el problema de intercambio de claves. Los sistemas de claves simétricas requieren el intercambio de un secreto confidencial.

A principios de la década de 1900, un hombre llamado Arthur Scherbius desarrolló una máquina llamada la máquina enigma. Permitió que las personas enviaran mensajes revueltos y pronto, el ejército alemán estaba produciendo en masa máquinas enigmáticas para comunicaciones seguras durante la Segunda Guerra Mundial. El único problema con la máquina del enigma fue que para descifrar las criptomonedas de julio de 2017 los mensajes cifrados, necesitaba la clave de descifrado o la clave secreta … pero no había manera de transportar esta clave secreta de forma segura. Si la clave secreta fue interceptada por adversarios maliciosos, entonces las comunicaciones enigmáticas eran bastante redondeadas.

La esperanza está en el horizonte: en el campo, y tomaron la conceptualización de Ralph Merkle de un método para transmitir información segura por medios inseguros. Este método, denominado intercambio de clave diffie-hellman, se explica popularmente con una analogía de mezcla de colores, como sigue. (omita estas imágenes si desea ingresar directamente a ~ MATH ~)

El color de inicio debe mantenerse en secreto, pero se supone que puede filtrarse. En la práctica, este “color común” es en realidad dos números, p y g que alice y bob acuerdan de antemano. P se usa como el módulo, y g es la base. (Un módulo es un punto en el que un número se envuelve alrededor de sí mismo. Puede pensarlo como un reloj, que es “mod 12”. Hay 12 números en un reloj, pero el día tiene 24 horas, por lo que la 13a hora de el día es 13 mod 12, que es congruente con 1. Como tal, a menudo representamos la hora 13:00 como 1:00). Las p y g que se elijan deben cumplir las siguientes condiciones:

El módulo de raíz primitiva n, junto con otros conceptos de teoría de números que aprenderá más adelante, son importantes porque agrupar números con caracterizaciones elegantes nos permite generar pruebas y cálculos concisos. Las características anteriores nos permiten manipular fácilmente estos números para obtener un resultado difícil de aplicar ingeniería inversa, en la misma forma en que las monedas de cryptonight hacen que los colores en el ejemplo de mezcla de colores sean difíciles de separar.

¿Recuerda nuestros requisitos anteriores para las características de p y g? Esas características nos permitieron generar un grupo multiplicativo. En términos formales, llamaríamos a g el generador del grupo multiplicativo módulo p, y en los casos en que p es primo, obtenemos las características cíclicas demostradas en el paso uno. Llamamos a este grupo multiplicativo porque los elementos del grupo se identifican a través de la multiplicación. Esto significa que dos elementos del grupo combinados con la operación de grupo (multiplicación en este caso) forman un tercer elemento del grupo.

Cuando el cajero de su tienda local de conveniencia le pide que firme el recibo después de pasar su tarjeta de crédito, están tratando de asegurarse de que usted sea el auténtico propietario de la tarjeta de crédito y de que tenga los derechos para gastar dinero de esa cuenta. Desafortunadamente, las firmas en papel son muy fáciles de falsificar para qué se usa la criptología y son difíciles de verificar, por lo que este método no es tan seguro como se podría esperar.

Por otro lado, una firma digital es una firma electrónica que garantiza la autenticidad y la integridad del mensaje. Recuerde, esto significa que queremos asegurarnos de que el remitente y el destinatario del mensaje sean correctos y que el mensaje no haya sido manipulado, respectivamente. Además, queremos que la firma no sea repudiable: ¡uno no puede simplemente revocar su firma después de firmarla!

Las funciones que son fáciles de calcular pero difíciles de invertir se denominan funciones unidireccionales. Un subconjunto de funciones unidireccionales son funciones de trampilla, la única diferencia es que las funciones de trampilla se pueden invertir siempre que tenga algún secreto especial k. RSA (rivest – shamir – adleman) es una famosa función de trampilla temprana de la que puedes haber oído hablar.

Aquí hay uno. Es importante hacer una distinción entre un hash y un hash criptográfico. Aquí, vemos que wowiezowiewowiezowie y wowwowmeowmeow hacen hash en la misma salida, ¡aunque sean entradas totalmente diferentes! Esto significa que hemos encontrado una colisión de hash, que es totalmente inaceptable. De hecho, es bastante fácil encontrar colisiones con FIRST3, ya que el conjunto de salidas posibles es muy pequeño y hay infinitas posibilidades para las entradas.

Bueno, esto es realmente cierto para todas las funciones hash. Dado que la salida es de tamaño fijo, el conjunto de posibles salidas es finito, mientras que el conjunto de posibles entradas es infinito (es decir, si está colocando un número infinito de canicas en un número finito de tazas, finalmente una taza contendrá más de una clásica técnicas de encriptación en mármoles de seguridad de red y criptografía … pero la esperanza es que haya tantas tazas que sería poco probable encontrar dos canicas en una taza en la vida de la raza humana). La idea de una función hash criptográfica como SHA256 es que, si bien no es imposible encontrar una colisión, es computacionalmente inviable porque no existe un método para encontrar una colisión que sea más rápida que las simples entradas de fuerza bruta: son matemáticamente improbables pero pueden se puede reproducir con ciertas funciones hash criptómicas revenge revenge, como las funciones criptográficamente difuntas SHA-1 y MD5.

Dato curioso, también puedes usar hashes como compromisos. Un escritor que quiera proteger su manuscrito en una fecha determinada puede publicar un hash de su manuscrito en la cadena de bloques, donde se marca la hora. Si hubiera alguna disputa sobre el manuscrito en el futuro, sería muy fácil verificar si el manuscrito estaba grabado y firmado en un día determinado. También es importante tener en cuenta que simplemente cambiando una letra en el manuscrito, o incluso un bit en la entrada, debería cambiar una gran parte de los bits en la salida. Las funciones de hash se utilizan principalmente para asegurar la integridad de la información y, por lo tanto, también pueden actuar como identificadores únicos. Como las funciones hash son deterministas, pueden probar que ciertos datos no han sido manipulados. Si la información es manipulada, producirá un hash diferente a la versión original.

Para que la persona A firme un documento, se genera un valor de hash a partir de descifrar el documento de Word que el documento utiliza una función de hash. La persona A usa la clave de cifrado, que se mantiene oculta, para cifrar el valor de hash del documento para producir un texto cifrado: E (H). Para los algoritmos de firma digital (DSA), la clave de cifrado es la clave privada que se mantiene en secreto y la clave de descifrado es la clave pública que se publica en abierto. La persona A publica el documento y junto con la E (H). Cualquiera puede verificar que la persona A haya firmado el documento mediante el hash del documento y luego utilice la clave de descifrado publicada y confiable de la persona A para descifrar el texto cifrado E (H) para producir el mismo hash del documento. Si los hashes del documento coinciden, entonces la firma es válida.

Primero, los usuarios deben generar un par de claves. La generación de pares de claves utiliza la aleatoriedad para crear una clave secreta y una clave pública. La clave secreta nunca debe revelarse a nadie, pero la clave pública puede ser su identidad pública. La clave secreta es algo así como su ADN, y su clave pública es algo así como su huella digital. No escupas por todas partes, ¿sabes?

Para validar el siglist (lista de firmas correspondientes a los bits que es la criptomoneda minera para los dummies en el mensaje), el destinatario del mensaje firmado puede simplemente tachar la firma en cada posición del mensaje y compararla con la lista de mensajes publicados. claves publicas Si el bit de mensaje es 0, entonces el hash de la firma en esa posición debe corresponder a la clave pública en el mismo índice en la lista pk0! # validar la autenticidad de las firmas

Aunque es bastante fácil generar y verificar firmas de lamport, son muy grandes y solo se pueden usar una vez. Como se muestra arriba, un mensaje de 256 bits requiere 256 hashes de números de 256 bits. Además, cuando firmamos un mensaje, usamos una clave secreta de sk0 o sk1 en cada índice del mensaje. De esta manera, solo revelamos la mitad de cada clave secreta en cada índice. Si firmáramos un segundo mensaje, y ese segundo mensaje contenía un bit diferente en cualquier índice, estaríamos revelando ambas mitades de la clave secreta en ese índice.

En este esquema, puede tomar historias de millonarios criptográficos muchas firmas únicas y comprimir la clave pública en una raíz. En general, las firmas basadas en hash son muy ineficientes con el uso del espacio. Muchas criptomonedas utilizan esquemas de grupos abelianos (por ejemplo, curvas elípticas), que son más eficientes. Debido a que los grupos abelianos admiten operaciones de grupo completas, las claves se pueden reutilizar siempre que la cadena de bloques bitcoin ethereum de registro discreto guíe la forma en que se guía el problema de la inversión en la minería comercial.

La curva de edwards, también conocida como ed25519 o eddsa (algoritmo de firma digital de la curva de edwards) es un esquema de firma utilizado en monedas basadas en cryptonote. CryptoNote utiliza firmas de anillo para anonimizar transacciones y, por lo tanto, es la base de varias criptomonedas centradas en el anonimato. Monero es el más popular de las monedas cryptonote.

En un nivel alto, cryptonote confunde el valor de los fondos que se transfieren de un remitente a un destinatario agrupando varios remitentes. Las entradas y salidas del grupo son indescifrables: todo lo que se sabe de un tercero es que todos los fondos que ingresaron al anillo dejaron el anillo y llegaron a sus destinos previstos, y no se crearon ni destruyeron nuevas monedas en el proceso.

Revisaremos el concepto de doble gasto más adelante en este libro, pero en bitcoin, podemos asegurarnos de que las mismas monedas no se hayan gastado dos veces al verificar que todas las entradas a una nueva transacción son salidas no gastadas de una transacción anterior. Dado que no podemos ver ninguna de esa información para monero, ¿cómo evitaríamos el doble gasto?

Nota al margen: ¿recuerdas cómo hablamos sobre los compromisos de hash anteriormente en el capítulo? Esto no está relacionado con la mecánica del ataque en sí mismo, ¡pero el equipo de monero crypto millennials incluyó un hash de la descripción de la vulnerabilidad en una transacción de monero para marcar el contenido del mensaje! Aquí está parte del contenido de ese mensaje hash, publicado más adelante:

Las claves privadas en ed25519 son múltiplos del cofactor 8. Esto significa que agregar un punto L de orden bajo (orden 2, 4 u 8), también llamado punto de torsión, devuelve el elemento de identidad. Es importante recordar que estamos trabajando en grupos de módulos (un módulo es un punto donde los números se “envuelven”, 8 mod 3 es 5, 100 mod 3 es 1, etc.). Entonces, siempre que conozca uno de los factores hasta un punto, en un subgrupo de orden inferior, puede crear varias imágenes clave desde el mismo punto supuesto.

banner