Criptosistemas
Este artículo se divide en 7 partes. La Parte 1 presenta los conceptos básicos de la criptografía, la Parte 2 explica los algoritmos de cifrado simétrico comunes, la Parte 3 explica los algoritmos de cifrado asimétrico comunes y la Parte 4 explica los números. explica PKI (infraestructura de clave pública), la parte 6 explica el cifrado de la función hash, la parte 7 explica la aplicación de la criptografía en blockchain y la última parte explica los números aleatorios.
Los algoritmos de cifrado simétrico más comunes son: Digital Encryption Standard (DES), Triple-DES, IDEA y BLOWFISH.
Retos del cifrado simétrico:
Retos del cifrado asimétrico:
Los algoritmos de cifrado asimétrico más comunes son: RSA, ElGamal, ECC.
El algoritmo de cifrado de bloques de estructura Fistel es un modelo de diseño bien conocido para el cifrado de cifrado de bloques.
La velocidad de las búsquedas exhaustivas de claves para DES después de 1990 comenzó a causar malestar entre los usuarios de DES. Sin embargo, los usuarios no querían reemplazar DES porque requería mucho tiempo y dinero cambiar el algoritmo de cifrado que fue ampliamente adoptado e integrado en grandes arquitecturas de seguridad.
El enfoque pragmático no es abandonar completamente DES, sino cambiar la forma en que se utiliza DES. Esto llevó al esquema de modificación del Triple DES (3DES).
Triple DES
Antes de usar 3TDES, el usuario primero genera y distribuye una clave 3TDES K, que consta de tres claves DES diferentes K1, K2 y K3.
Para obtener más información, consulte Triple-DES.
El estándar de cifrado avanzado (AES) es un algoritmo de cifrado simétrico popular y ampliamente utilizado. Se ha descubierto que es al menos 6 veces más rápido que el triple DES.
Las funciones de AES son las siguientes:
Cifrado de bloques simétrico de clave simétrica
Datos de 128 bits, clave de 128/192/256 bits
Más fuerte y más rápido que Triple-DES
Proporciona especificaciones completas y detalles de diseño
Para más detalles, consulte AES
Este criptosistema es uno de los originales sistemas. Incluso hoy en día, sigue siendo el criptosistema más utilizado. El sistema fue inventado por tres académicos, Ron Rivest, Adi Shamir y Len Adleman, y por eso se lo conoce como criptosistema RSA.
A continuación se proporciona un ejemplo de cómo generar un par de claves RSA (para facilitar la comprensión, los valores principales de p & q utilizados aquí son muy pequeños; de hecho, estos valores son muy altos).
Sean los dos números primos p = 7 y q = 13. Por tanto, el módulo n = pq = 7×13 = 91.
Elige e = 5, que es una elección válida porque ningún número tiene como factor común 5 y (p - 1)(q - 1) = 6×12 = 72, excepto 1.
Este par de números (n, e) = (91, 5) forman una clave pública que puede ser utilizada por cualquier persona que queramos para poder enviarnos un mensaje cifrado.
Ingrese p = 7, q = 13 y e = 5 en el algoritmo euclidiano extendido. La salida será d = 29.
Por tanto, la clave pública es (91, 5) y la clave privada es (91, 29).
Supongamos que el remitente quiere enviar algunos mensajes de texto a la persona cuya clave pública es (n, e). Luego, el remitente representa el texto sin formato como una serie de números menores que n.
Para cifrar el primer texto plano P, es un número módulo n. El proceso de cifrado es un paso matemático simple:
C = Pe mod n
En otras palabras, el texto cifrado C es igual al texto plano P multiplicado por sí mismo e veces, y luego restado módulo n. Esto significa que C también es un número menor que n.
Volviendo a nuestro ejemplo de generación de claves, texto sin formato P = 10, obtenemos el texto cifrado C:
C = 105 mod 91
Pertenece al tipo de cambio ECC. El concepto central de cifrado es similar al de RSA, que también es difícil de resolver utilizando logaritmos discretos.
Pero lo que se diferencia de RSA es el componente de la clave pública. La clave pública de EIGamal consta de tres partes, el módulo primo p, el elemento generado g y la pública *** Y = gx. (x veces de g cuadrado) mod p.
Para más detalles, consulte ElGamal Crytosystem.
La criptografía de curva elíptica (ECC) es un término utilizado para describir un conjunto de herramientas y protocolos criptográficos cuya seguridad se basa en una versión especial del criptosistema discreto. problema de logaritmos. No utiliza módulo numérico p. ECC se basa en una colección de números asociados con un objeto matemático llamado curva elíptica. Existen reglas para sumar estos números y calcular múltiplos, al igual que los números módulo p.
ECC contiene muchas variaciones de esquemas criptográficos diseñados originalmente para números modulares, como el cifrado ElGamal y los algoritmos de firma digital.
Se cree que el problema del logaritmo discreto es más difícil cuando se aplica a puntos sobre curvas elípticas. Esto solicita cambiar de números módulo p a puntos en curvas elípticas. También se puede obtener un nivel de seguridad equivalente con claves más cortas si utilizamos la variante basada en curvas elípticas.
Las claves más cortas tienen dos ventajas:
Facilidad de gestión
Computación eficiente
Estas ventajas hacen que las variantes del esquema de cifrado basado en curvas elípticas sean muy atractivo para aplicaciones con recursos informáticos limitados.
Para más detalles, consulte Criptografía de curva elíptica
^ símbolo expresado en potencia
Firma = mensaje ^D mod N (D y N son datos privados del firmante Clave, calcule la potencia D del mensaje y encuentre el mod N, el resto es la firma)
Mensaje = firma^E mod N (E y N son las claves públicas del firmante, calcule la potencia E del firma) Y busque mod N)
Por ejemplo:
Clave privada: D = 29; N = 323
Clave pública: E = 5; 323
Mensaje: 123
Dado que el valor de N es 323, el mensaje debe ser un número entero en el rango de 0 ~ 322. Supongamos que el mensaje 123 debe estar firmado .
Firma el mensaje 123 con clave privada (D,N) = (29,323).
Mensaje^D mod N = 123^29 mod 323 = 157
Por lo tanto (Mensaje, firma) = (123, 157)
Usa la clave pública (E,N) = (5,323) para verificar el mensaje
Firma^E mod N = 157 ^5 mod 323 = 123
El mensaje 123 obtenido es consistente con el mensaje 123 enviado por el remitente, por lo que la verificación de la firma es exitosa.
https://andrea.corbellini. name/2015/05 /17/elliptic-curve-cryptography-a-gentle-introduction/
Inversa aditiva: a está en el conjunto, -a se define en el conjunto para hacer a + (-a ) = 0, esta es la operación inversa aditiva
Inversa multiplicativa: a está en el conjunto y no es 0, a^-1 se coloca en el conjunto de manera que a* a^-1 = 1, esto es la operación inversa multiplicativa
Antes de hablar de curvas elípticas, sentemos algunas bases y luego analicemos los logaritmos.
Definir una operación binaria sobre un conjunto es un grupo en matemáticas.
Para que un conjunto G se convierta en un grupo, debe cumplir las siguientes cuatro condiciones:
Desde el concepto ordinario de suma, el conjunto entero Z es un grupo (y un grupo abeliano El conjunto de números naturales N). no es un grupo.
Podemos definir un grupo sobre una curva elíptica:
https://andrea.corbellini.name/ecc/interactive/reals-add.html p>
Como se muestra a continuación: El proceso de autosuma del punto A es el proceso de multiplicación. Este proceso se llama Duplicación de puntos
Calcular nP requiere n sumas. Si n es k bits, el binario. la complejidad del tiempo es O(2^k)
Por ejemplo, el algoritmo de duplicación n = 151 es 10010111 en binario
La complejidad del tiempo del uso del algoritmo de duplicación se ha mejorado enormemente O( logN) u O(k)
Q = nP
Esto es solo p = 211, como Secp256k1 El p de esta curva elíptica = 11579208923731619542357098500868790785326998466564056403945758400790883 4671663 Un número de 78 bits Cómo encontrar n ?
Una metáfora popular: supongamos que estos puntos son el resultado de que una persona A juegue canicas en una habitación grande durante dos años. Dos años después, el amigo B de A llega y B ve el último punto y A se lo cuenta a B. el punto de partida. Pero, ¿cómo puede B conocer a A? ¿Cuántas veces tardó en rebotar desde el punto de partida hasta el punto final?
Las dos imágenes de arriba son curvas elípticas - Secp256K1: y^2 = x^3 + 7
La primera imagen: definida en el dominio de los números reales
La segunda imagen: definida en el campo finito Zp
se forma utilizando los siguientes parámetros (p, a, b, G, n, h):
p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F = 2^256 - 2^32 - 997
a = 0
b = 7
G = [0x79BE667E_F9DCBBAC_55A06295_CE870B07_029BFCDB_2DCE28D9_59 F2815B_1 6F81798,
0x483ADA77_26A3C465_5DA4FBFC_0E1108A8_FD17B448_A6855419_9C47D08F_FB10D4B8]
n = 0xFFFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFE_BAAEDCE6_AF48A03B_BFD25E8 C_D0364141
h = 1
Si hay un punto P en la curva elíptica, existe el punto positivo más pequeño entero n tal que el número se multiplica por nP =O∞, entonces n se llama orden de P
El cálculo muestra que 27P = -P = (3, 13) Entonces 28P = 0∞ y el el orden de P es 28
¿Cómo? Firma?
Sig = F sig (F keccak256 (m), k)
Cómo calcular r
Cómo calcular s
s ≡ q^-1 (Keccak256(m) + r * k) (mod p)
¿Cómo verificar la firma? p>
P.D. La identidad del remitente no se utiliza en el proceso anterior de verificación de la firma.
Tamaño de clave RSA (bits) Tamaño de clave ECC (bits)
> 1024 160
2048 224
3072 256
7680 384
15360 521
Hay una investigación ejemplo Computadoras con la misma potencia de cálculo
¿Por qué Bitcoin y Ethereum eligen la curva elíptica Secp256k1?
Si alguien proporciona una curva elíptica como Secp256r1, ¿cómo verificar la seguridad de esta curva? ?
Dado que la clave pública es pública y puede destruirse o alterarse fácilmente, es necesario establecer y mantener un mecanismo básico confiable para administrar la clave pública.
PKI consta de 5 partes:
Como metáfora, un certificado puede considerarse como un documento de identidad emitido a la persona. La gente utiliza documentos de identificación, como licencias de conducir y pasaportes, para demostrar su identidad. Los certificados digitales cumplen las mismas funciones básicas en el mundo electrónico.
Pero hay una diferencia. Los certificados digitales no sólo se emiten a personas, sino también a ordenadores, paquetes de software o cualquier otra cosa que necesite demostrar su identidad en el mundo electrónico.
Los certificados digitales se basan en el estándar ITU X.509, que define el formato de certificado estándar para certificados de clave pública y verificación de autenticación. Por lo tanto, los certificados digitales a veces se denominan certificados X.509.
La clave pública asociada al cliente del usuario se almacena en el certificado digital junto con la Autoridad de Certificación (CA), junto con otra información relacionada como información del cliente, fecha de vencimiento, uso, emisor, etc.
La CA firma digitalmente todo este mensaje e incluye la firma digital en el certificado.
Cualquier persona que necesite garantizar la clave pública del cliente y la información relacionada utilizará la clave pública de la CA para el proceso de verificación de firma. La verificación exitosa garantiza que la clave pública proporcionada en el certificado pertenece a la persona que proporcionó los detalles en el certificado.
La siguiente figura muestra el proceso de obtención de un certificado digital por parte de un individuo/entidad:
Como se muestra en la figura, la CA acepta la solicitud del cliente para probar su clave pública. . La CA emite un certificado digital al cliente después de verificar adecuadamente la identidad del cliente.
Como se mencionó anteriormente, las CA emiten certificados a los clientes y ayudan a otros usuarios a validarlos. La CA es responsable de identificar correctamente al cliente que solicita la emisión de un certificado y comprobar que la información contenida en el mismo es correcta y firmarlo digitalmente.
Funciones clave de las CA:
Categorías de certificados
Hay cuatro categorías de certificados típicas:
Categoría 1: al proporcionar estos certificados electrónicos se puede obtener fácilmente por dirección de correo electrónico.
Categoría 2 - Estos certificados requieren información personal adicional.
Categoría 3 - Estos certificados sólo se pueden adquirir después de comprobar la identidad del solicitante.
Categoría 4 - Son utilizados por gobiernos e instituciones financieras que requieren un alto nivel de confianza.
Una CA puede utilizar una autoridad de registro (RA) de terceros para realizar las comprobaciones necesarias sobre personas o empresas que requieren certificados para confirmar su identidad. La RA puede parecerle una CA al cliente, pero en realidad no firma el certificado emitido.
Es el sistema de gestión para la emisión de certificados, suspensión temporal o definitiva, renovación o revocación de certificados. Los sistemas de gestión de certificados normalmente no eliminan los certificados porque puede ser necesario demostrar su identidad en algún momento por razones legales. Las CA y las RA asociadas ejecutan sistemas de gestión de certificados para poder realizar un seguimiento de sus responsabilidades.
Aunque la clave pública del cliente se almacena en el certificado, la clave privada asociada se puede almacenar en el ordenador del propietario de la clave. Este método generalmente no se utiliza. Si un atacante tiene acceso a la computadora, puede acceder fácilmente a la clave privada. Por este motivo, las claves privadas se almacenan en tokens de almacenamiento extraíbles seguros protegidos por una contraseña.
Los diferentes proveedores suelen utilizar diferentes formatos de almacenamiento propietarios para almacenar claves. Por ejemplo, Entrust utiliza el formato propietario .epf, mientras que Verisign, GlobalSign y Baltimore utilizan el formato estándar .p12.
1.6 Jerarquía de CA:
Debido a las grandes redes y los requisitos de comunicación global, no es práctico para todos los usuarios obtener certificados de una única CA confiable. En segundo lugar, la disponibilidad de una sola CA puede causar un gran revés si la CA se ve afectada.
En este caso, el modelo de autenticación jerárquico resulta interesante porque permite el uso de certificados de clave pública en entornos donde las dos partes que se comunican no tienen una relación de confianza con la misma CA.
La CA raíz está en la parte superior de la jerarquía de CA y el certificado de la CA raíz es un certificado autofirmado.
Las CA que están directamente afiliadas a la CA raíz (por ejemplo, CA1 y CA2) tienen certificados de CA firmados por la CA raíz.
Las CA que se encuentran debajo de las CA subordinadas en la jerarquía (por ejemplo, CA5 y CA6) tienen certificados de CA firmados por la CA subordinada superior.
La jerarquía de la autoridad de certificación (CA) se refleja en la cadena de certificados. Una cadena de certificados rastrea la ruta de certificación desde una rama de la jerarquía hasta la raíz de la jerarquía.
El siguiente diagrama muestra una jerarquía de CA con una cadena de certificados desde el certificado de entidad hasta los dos certificados de CA subordinados (CA6 y CA3) y el certificado de CA de la autoridad de certificación raíz:
Verificar certificado El encadenamiento es el proceso de garantizar que una cadena de certificados específica sea válida, esté debidamente firmada y sea confiable. El siguiente proceso verifica la cadena de certificados, comenzando con el certificado que proporciona la verificación: un cliente cuya autenticidad se está verificando proporciona su certificado, generalmente junto con la cadena de certificados hasta la CA raíz.
El verificador obtiene el certificado y lo verifica utilizando la clave pública del emisor. La clave pública del emisor se encuentra en el certificado del emisor, que se encuentra en la cadena al lado del certificado del cliente.
Ahora, si el validador confía en la CA superior que firmó el certificado del emisor, la validación se realiza correctamente y se detiene aquí.
De lo contrario, el certificado del emisor se verifica de manera similar a lo que el cliente completó en los pasos anteriores. Este proceso continuará hasta que se encuentre una CA confiable allí; de lo contrario, continuará hasta la CA raíz.
Las funciones hash son muy útiles y aparecen en casi todas las aplicaciones de seguridad de la información.
Una función hash es una función matemática que convierte un valor de entrada numérico en otro valor numérico comprimido. La entrada a una función hash tiene una longitud arbitraria, pero la salida siempre tiene una longitud fija.
El valor devuelto por una función hash se llama resumen de mensaje o simplemente valor hash. La siguiente imagen ilustra una función hash:
Para ser una herramienta criptográfica eficaz, una función hash tiene las siguientes propiedades:
En el corazón de un hash hay una función matemática que Opera con dos bloques de datos de tamaño fijo para crear un código hash. Esta función hash forma parte del algoritmo hash.
El tamaño de cada bloque de datos varía dependiendo del algoritmo. Normalmente, los tamaños de bloque oscilan entre 128 bits y 512 bits. La siguiente figura demuestra la función hash:
Los algoritmos hash implican las funciones hash mencionadas anteriormente, como los cifrados en bloque. Cada ronda toma una entrada de un tamaño fijo, generalmente una combinación del bloque de mensajes más reciente y la salida de la última ronda.
Este proceso se repite varias veces para codificar todo el mensaje. A continuación se muestra un diagrama esquemático de un algoritmo hash:
Debido a que el valor hash del primer bloque de mensaje se convierte en la entrada de la segunda operación hash, su salida cambia el resultado de la tercera operación, y así sucesivamente. Este efecto se llama efecto de avalancha del hash. El efecto de avalancha produce valores hash significativamente diferentes para dos mensajes que no son idénticos ni siquiera en un solo bit de datos. Comprenda la diferencia entre funciones hash y algoritmos. Una función hash genera un código hash operando en dos bloques de datos binarios de longitud fija. Un algoritmo hash es un proceso que utiliza una función hash para especificar cómo dividir un mensaje y vincular los resultados de fragmentos de mensajes anteriores.
Posteriormente, en 1995, SHA-1 fue diseñado para corregir las supuestas debilidades de SHA-0. SHA-1 es la más utilizada de las funciones hash SHA existentes. Se utiliza en varias aplicaciones y protocolos ampliamente utilizados, incluida la seguridad Secure Sockets Layer (SSL).
En 2005, se descubrió un método para descubrir colisiones SHA-1 dentro de un marco de tiempo realista, lo que puso en duda la disponibilidad a largo plazo de SHA-1.
La familia SHA-2 tiene cuatro variantes SHA más, SHA-224, SHA-256, SHA-384 y SHA-512, dependiendo del número de bits de su valor hash. No se han reportado ataques exitosos contra la función hash SHA-2.
Aunque SHA-2 es una potente función hash. Aunque es muy diferente, el diseño básico sigue el del SHA-1. Por lo tanto, el NIST solicitó un nuevo diseño de función hash competitiva.
En octubre de 2012, NIST seleccionó el algoritmo Keccak como nuevo estándar SHA-3. Keccak ofrece muchos beneficios, como un rendimiento eficiente y una buena resistencia a los ataques.
Este conjunto incluye RIPEND, RIPEMD-128 y RIPEMD-160. También existen versiones de este algoritmo de 256 y 320 bits.
El RIPEMD original (128 bits) se basó en los principios de diseño utilizados en MD4 y se descubrió que proporcionaba una seguridad cuestionable. La versión de RIPEMD de 128 bits es un reemplazo de solución rápida que soluciona las vulnerabilidades del RIPEMD original.
RIPEMD-160 es una versión mejorada y es la versión más utilizada. En comparación con RIPEMD-128 y RIPEMD-160, las versiones de 256 y 320 bits reducen la probabilidad de conflictos accidentales, respectivamente, pero no ofrecen un nivel de seguridad más alto.
Árbol Merkle Árbol Merkle
Una aplicación importante del algoritmo hash es el árbol Merkle (el árbol Merkle es una estructura de datos, generalmente un árbol binario o un árbol múltiple). , se calcula capa por capa de una manera específica hasta la parte superior. La capa superior se llama raíz de Merkle. El árbol Merkle más común y simple es el árbol binario de Merkle.