Red de conocimiento informático - Conocimiento informático - Sistema de contraseñas

Sistema de contraseñas

Este artículo se divide en siete partes. La primera parte presenta los conceptos básicos de la criptografía, la segunda parte explica los algoritmos de cifrado simétrico comunes, la tercera parte explica los algoritmos de cifrado asimétrico comunes, la cuarta parte explica las firmas digitales y la quinta parte explica PKI. (Infraestructura de clave pública), la sexta parte explica el cifrado de la función hash, la séptima parte 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 incluyen

Los desafíos del cifrado simétrico:

Los desafíos del cifrado asimétrico:

Los más comunes Los algoritmos de cifrado no simétrico incluyen: RSA, ElGamal y BLOWFISH.

Desafíos del cifrado simétrico:

Desafíos del cifrado asimétrico:

Algoritmos de cifrado asimétrico comunes son: RSA, ElGamal y BLOWFISH.

Algoritmos de cifrado asimétrico:

Los algoritmos de cifrado asimétrico más comunes incluyen RSA, ElGamal y ECC.

El algoritmo de cifrado de bloques de la estructura Fistel es un modelo de diseño de cifrado de cifrado de bloques muy conocido.

Después de 1990, los usuarios de DES comenzaron a sentirse incómodos con la velocidad con la que DES buscaba claves. Sin embargo, los usuarios no querían reemplazar DES porque requeriría una cantidad significativa de tiempo y dinero cambiar el algoritmo de cifrado que fue ampliamente adoptado e integrado en grandes arquitecturas de seguridad.

El enfoque práctico no es abandonar DES por completo, sino cambiar la forma en que se utiliza DES. Esto resultó en el plan de modificación Triple DES (3DES).

Triple DES

Antes de usar 3TDES, los usuarios primero deben generar y distribuir una clave K 3TDES, 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 uno de los algoritmos de cifrado simétrico más populares y utilizados. Es al menos 6 veces más rápido que Triple-DES.

Las características 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 obtener más detalles, visite AES

Este criptosistema es uno de los sistemas originales. A día de hoy, sigue siendo el sistema de cifrado más utilizado. Este sistema fue inventado por tres académicos: Ron Rivest, Adi Shamir y Len Adleman, por eso se le llama criptosistema RSA.

A continuación se proporciona un ejemplo de generación de un par de claves RSA (para facilitar la comprensión, los valores de partículas p y q utilizados aquí son muy pequeños; de hecho, estos valores son muy grandes).

Supongamos que dos números primos son p = 7 y q = 13. Por lo tanto, módulo n = pq = 7×13 = 91.

Elige e = 5, que es una elección válida porque ningún número es divisor común de 5, y (p - 1)(q - 1) = 6×12 = 72, excepto 1.

Este par de números (n, e) = (91, 5) constituye la clave pública a través de la cual queremos que cualquier persona nos envíe información cifrada.

Ingrese p = 7, q = 13 y e = 5 en el algoritmo euclidiano extendido.

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).

El remitente representa el texto plano como una serie de números menores que n.

Cifre el primer texto plano P, que es un número con 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 su propios e veces, luego restar el módulo n. La idea central del cifrado es similar a RSA, y también es difícil de resolver utilizando logaritmos discretos.

Pero a diferencia de RSA, los componentes de la clave pública son diferentes. La clave pública de EIGamal consta de tres partes, a saber, el número primo p, el elemento generador g y la pública *** Y = gx (g elevado a x) mod p.

Ver Critosistema ElGamal para más detalles

Criptozoología de curva elíptica (ECC) es un término utilizado para describir un conjunto de herramientas y protocolos de cifrado cuya seguridad se basa en un problema especial del logaritmo discreto. Versión del problema. No utiliza módulo p. ECC se basa en una colección de números asociados con un objeto matemático llamado curva elíptica.

ECC contiene muchas variaciones de esquemas de cifrado diseñados originalmente para números de módulo, como el algoritmo de cifrado ElGamal y el algoritmo de firma digital.

Se ha argumentado que el problema del logaritmo discreto es más difícil cuando se aplica a puntos en curvas elípticas. Esto nos moverá desde el módulo p a puntos de la curva elíptica. Si utilizamos una variante basada en curvas elípticas, también podemos conseguir el mismo grado de seguridad con claves más cortas.

Las claves más cortas tienen dos ventajas:

Fácil de administrar

Alta eficiencia computacional

Estas ventajas hacen que las variantes de cifrado basadas en curvas elípticas Los esquemas son muy atractivos para aplicaciones con recursos informáticos limitados.

Para obtener más detalles, consulte Cripto de curva elíptica

^ la notación representa una serie de potencias

Firma = mensaje ^D mod N (D y N son firmantes El privado clave de Eth elevada a la potencia y encontró mod N)

Ejemplo:

Clave privada: D = 29; N = 323

Clave pública: E = 5; N = 323

Mensaje: 123

Dado que el valor de N es 323, el mensaje debe ser un número entero en el rango de 0 a 322. Digamos que necesitas firmar el mensaje 123.

Firmar el mensaje 123 usando la clave privada (D, N) = (29, 323).

Información^D mod N = 123^29 mod 323 = 157

Entonces (información, firma) = (123, 157)

Usando la clave pública ( E, N) = (5, 323)

Información de verificación

Firma^E mod N = 157^5 mod 323 = 123

Información obtenida 123 Es el mismo que 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 , La definición de -a en el conjunto es a (-a) = 0, que es el inverso aditivo

Inverso multiplicativo: a está en el conjunto y no es 0, la definición de a^-1 en el conjunto es a * a^-1 = 1, este es el inverso multiplicativo

Antes de discutir las curvas elípticas, hagamos un poco de trabajo preliminar y luego analicemos los logaritmos.

En matemáticas, definir una operación binaria sobre un conjunto se llama grupo. Para que un conjunto G sea un grupo, debe cumplir las siguientes 4 condiciones:

Desde el concepto habitual de suma, el conjunto Z de números enteros es un grupo (y un grupo asexual). El conjunto N de números naturales no es un grupo.

Podemos definir un grupo sobre una curva elíptica:

https://andrea.corbellini.name/ecc/interactive/reals-add.html

El siguiente es un diagrama esquemático: el proceso de autosuma del punto A es un proceso de multiplicación, llamado duplicación de puntos.

Calcular nP requiere n sumas. Si n es un binario de k bits, la complejidad del tiempo es O. (2^k)

El algoritmo de multiplicación, como n = 151 binario, es 10010111

Cuando se utiliza el algoritmo de multiplicación, la complejidad del tiempo aumentará considerablemente a O (logN) u O (k)

Q = nP

Esto es solo p = 211, que es lo mismo que p = 211, que es lo mismo que p = 211, que es lo mismo que pag = 211.

p> Esto es solo p = 211. Para una curva elíptica como Secp256k1, p = 115792089237316195423570985008687907853269984665640564039457584007908834671663. ¿Cómo se encuentra n para un número? 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 viene y B ve el último punto a A le dice a B su punto de partida, pero B nuevamente ¿Cómo sabes? ¿Cuántas veces se ha jugado A antes de llegar al final?

Las dos figuras anteriores son curvas elípticas - Secp256K1: y^2 = x^3 7

La primera figura: definida en el dominio de los números reales

La Segunda imagen: definida en el campo finito Zp

se compone de los siguientes parámetros (p, a, b, G, n, h):

p = FFFFFFFF CE870B07_029BFCDB_2DCE28D9_59F2815B_16F81798,

0x483ADA77_26A3C465_5DA4FBFC_0E1108A8_FD17B448_A6855419_9C47D08F_FB10D4B8]

n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE_BAAEDCE6_AF 48A03B_BFD 25E8C_D0364141

h = 1

Si hay un entero positivo mínimo n en el punto P de la curva elíptica , la operación de multiplicación hace nP=O∞, entonces n se llama orden de P

El cálculo es 27P = -P = (3, 13), por lo que 28P = 0∞ El orden de P es. 28

p>

¿Cómo firmar?

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.D. La clave privada del remitente no se utilizará durante el proceso de verificación anterior

Tamaño de clave RSA (bits) Tamaño de clave ECC (bits)

1024 160

2048 224

3072 256

7680 384

15360 521

El siguiente es un ejemplo de estudio de computadoras con la misma potencia informática

¿Por qué Bitcoin y Ethereum eligieron la curva elíptica Secp256k1?

Si alguien proporciona una curva elíptica como Secp256r1, ¿cómo se verifica la seguridad de esa curva?

Dado que la clave pública es pública y puede filtrarse o alterarse fácilmente, es necesario establecer y mantener un mecanismo básico confiable para administrar la clave pública.

La PKI consta de 5 partes:

Por ejemplo, un certificado puede considerarse como un documento de identidad emitido a un individuo. 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 una cosa que es diferente es que los certificados digitales se pueden emitir no sólo a personas, sino también a computadoras, 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 X.509 de la Unión Internacional de Telecomunicaciones, que define un formato de certificado estandarizado para certificados de clave pública y autenticación. Por lo tanto, los certificados digitales a veces se denominan certificados X.509.

La clave pública asociada con el cliente del usuario se almacena en el certificado digital junto con la Autoridad de Certificación (CA) y otra información relevante (como información del cliente, fecha de vencimiento, uso, autoridad emisora, etc.) .

La CA firma digitalmente todo el mensaje e incluye la firma digital en el certificado.

Cualquier persona que necesite proteger la clave pública de un cliente y la información relacionada utilizará la clave pública de la CA para verificar la 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.

El siguiente diagrama muestra el proceso de obtención de un certificado digital para una persona/entidad:

Como se muestra en el diagrama, la CA acepta la solicitud del cliente para certificar su clave pública. La CA emite un certificado digital al cliente después de verificar correctamente 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 el certificado, asegurarse de que la información contenida en el certificado es correcta y firmar digitalmente el certificado.

Funciones principales de CA:

Categorías de certificados

Hay cuatro categorías de certificados típicas:

Categoría 1: este tipo de certificado Fácilmente obtenida al proporcionar su 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 la verificación de la identidad del solicitante.

Categoría 4 - Estos certificados 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 la identidad de la persona o empresa que solicita el certificado. Del lado del cliente, las autoridades de registro pueden parecer CA, pero en realidad no firman los certificados emitidos.

Es un sistema de gestión encargado de emitir, suspender, renovar o revocar temporal o definitivamente los certificados. Los sistemas de gestión de certificados normalmente no eliminan los certificados porque es posible que sea necesario demostrar la identidad del certificado en algún momento por razones legales. Las CA y las RA asociadas operan sistemas de gestión de certificados para realizar un seguimiento de sus responsabilidades.

La clave pública del cliente se almacena en el certificado, mientras que 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 lo tanto, la clave privada se almacena en un token de almacenamiento extraíble seguro protegido con 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:

Las grandes redes y los requisitos de comunicación global hacen que no sea práctico para todos los usuarios obtener certificados de una única CA confiable. En segundo lugar, la disponibilidad de una sola CA puede causar obstáculos importantes si la CA se ve comprometida.

En este caso, el modelo de autenticación por capas tiene sentido porque permite el uso de certificados de clave pública en entornos donde ambas partes comunicantes 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 directas de la CA raíz (como CA1 y CA2) tienen certificados de CA emitidos por la CA raíz.

Las CA subordinadas en la jerarquía (como CA5 y CA6) tienen certificados de CA emitidos por la CA subordinada superior.

La jerarquía de las autoridades de certificación (CA) se refleja en la cadena de certificación.

Una cadena de certificados rastrea la ruta de un certificado 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 dos certificados de CA subordinados (CA6 y CA3) y el certificado de CA de la autoridad de certificación raíz:

Encadenamiento de certificados de verificación es el proceso de garantizar que una cadena de certificados específica sea válida, esté correctamente firmada y sea confiable. El siguiente proceso verifica la cadena de certificados, comenzando con el certificado que proporciona la validación:

El cliente que verifica su autenticidad proporciona su certificado, generalmente junto con la cadena de certificados hasta la CA raíz. La clave pública del emisor se puede encontrar en el certificado del emisor, que se encuentra en la cadena de certificados junto al certificado del cliente.

Ahora, si el validador confía en la CA principal que firmó el certificado del emisor, la verificación tendrá éxito y finalizará allí.

De lo contrario, el certificado del emisor se verifica de manera similar a lo que el cliente completó en los pasos anteriores. Este proceso continúa hasta que se encuentra una CA confiable; de ​​lo contrario, continúa la verificación de 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 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 figura ilustra una función hash:

Para ser una herramienta de cifrado eficaz, una función hash debe poseer las siguientes propiedades:

En esencia, una función hash es 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 es parte del algoritmo hash.

El tamaño de cada bloque de datos varía dependiendo del algoritmo. Normalmente, los tamaños de los bloques de datos oscilan entre 128 y 512 bits. El siguiente diagrama ilustra una función hash:

Al igual que los cifrados en bloque, los algoritmos hash implican las funciones hash descritas anteriormente. La entrada para cada ronda tiene un tamaño fijo, generalmente una combinación del último bloque de información y la salida de la ronda anterior.

Este proceso se repite varias veces para codificar todo el mensaje. Un diagrama esquemático de un algoritmo hash se ve así:

Dado que el valor hash del primer fragmento de información se convierte en la entrada para 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. Para dos piezas de información que difieren incluso en un bit de datos, el efecto de avalancha puede producir valores hash significativamente diferentes. 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. Hashing es un proceso que utiliza una función hash para especificar cómo dividir la información y conectar los resultados de fragmentos de información anteriores.

En 1995, SHA-1 fue diseñado para corregir las deficiencias de SHA-0. SHA-1 es la más utilizada de las funciones hash SHA existentes. Se utiliza ampliamente en varias aplicaciones y protocolos, incluido el protocolo de seguridad Secure Sockets Layer (SSL).

En 2005, se descubrió una forma de detectar conflictos SHA-1 en tiempo real, lo que puso en duda la usabilidad a largo plazo de SHA-1.

La familia SHA-2 tiene cuatro variantes SHA más según el número de bits del valor hash: SHA-224, SHA-256, SHA-384 y SHA-512. No ha habido informes de ataques exitosos a 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 ello, el NIST solicitó el diseño de una nueva función hash competitiva.

En octubre de 2012, NIST seleccionó el algoritmo Keccak como nuevo estándar SHA-3. Keccak tiene muchas ventajas, como un rendimiento eficiente y una buena resistencia a los ataques.

Este conjunto de algoritmos incluye RIPEND, RIPEMD-128 y RIPEMD-160.

El RIPEMD original (128 bits) se basaba en los principios de diseño utilizados en MD4 y su seguridad era cuestionable. La versión de 128 bits de RIPEMD es una alternativa de solución rápida a la vulnerabilidad RIPEMD original.

RIPEMD-160 es una versión mejorada y la 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 proporcionan un mayor nivel de seguridad.

Árbol Merkle El árbol Merkle es una aplicación importante del algoritmo hash. Un árbol Merkle es una estructura de datos, generalmente un árbol binario o posiblemente un árbol múltiple, que cuenta de una manera específica, nivel por nivel, hasta el nivel superior, que se llama raíz de Merkle. El árbol Merkle más común y simple es el árbol Merkle binario.