Red de conocimiento informático - Conocimiento del nombre de dominio - Principios de los algoritmos de cifrado comunes

Principios de los algoritmos de cifrado comunes

PBKDF2 (Función de derivación de clave basada en contraseña) es una función que se utiliza para derivar la clave para generar una contraseña cifrada para aumentar la dificultad de descifrado, similar a bcrypt/scrypt, etc. Se puede utilizar para almacenar contraseñas o contraseñas cifradas. El valor de sal principal pwd, después de múltiples rondas del algoritmo HMAC, genera texto cifrado.

Definición de la función PBKDF2

DK = PBKDF2(PRF, Password, Salt, c, dkLen)

?PRF es una función pseudoaleatoria, como Función HASH_HMAC, que genera un resultado de longitud hLen.

?Contraseña es la contraseña original utilizada para generar la clave.

?Salt es el valor de sal utilizado para el cifrado.

c es el número de iteraciones.

? dkLen es la longitud de la clave requerida.

?DK es la última clave generada.

blogs.com/fishou/p/4206451.html

/questions/90169/rsa-public-key-and-private-key-lengths

/questions/2921508/ try-to-understand-java-rsa-key-size gt;

/Cryptography/RSA-BigInteger-Keys-Generated-by-RsaKeyGenerator-java.

update() agrega datos al búfer interno de la contraseña y luego devuelve todos los fragmentos de datos actualmente completamente codificados. Si quedan bloques de codificación, permanecerán en el búfer interno de la contraseña hasta la próxima llamada o hasta que se llame a doFinal(). Esto significa que si llama a update() y cifra una matriz de cuatro bytes, y el tamaño del búfer es de ocho bytes, no recibirá los datos cifrados a su regreso (obtendrá un valor nulo). Si la siguiente llamada a update() se pasa en 5 bytes de datos, se devolverá una matriz de 8 bytes (tamaño de bloque) que contiene los 4 bytes pasados ​​de la llamada anterior y los primeros 4 bytes de la llamada actual, mientras. los bytes restantes de la llamada actual permanecerán en doFinal() de Cipher. doFinal(), por otro lado, es mucho más simple: cifra los datos entrantes, los rellena a la longitud deseada y regresa. Las contraseñas no tienen estado por naturaleza.

Extraído de /a/1190000006931511

Ataque de intermediario al algoritmo DH

En la descripción original, el propio intercambio de claves Diffie-Hulman no proporciona dos partes comunicantes entre los servicios de autenticación. Por lo tanto, es vulnerable a ataques de intermediarios. Un intermediario que realiza dos intercambios de claves Diffie-Herman en el centro del canal, uno con Alice y otro con Bob, puede pretender con éxito ser Bob para Alice y viceversa. Un atacante puede descifrar (leer y almacenar) información de cualquiera de las personas, luego volver a cifrar la información y pasarla a la otra persona. Por lo tanto, normalmente se requiere un mecanismo que pueda autenticar las identidades de las partes que se comunican para evitar tales ataques.

Ventajas y desventajas:

1. Las claves solo se generan cuando son necesarias, lo que reduce la posibilidad de ataques causados ​​por el almacenamiento de claves a largo plazo.

2. El intercambio de claves no requiere ninguna infraestructura preexistente más que un acuerdo sobre parámetros globales.

Sin embargo, esta tecnología también tiene muchas deficiencias:

1. No se proporciona información sobre la identidad de ambas partes.

2. Computacionalmente intensivo y por lo tanto vulnerable a ataques de bloqueo, donde el adversario solicita una gran cantidad de claves. La víctima gastará relativamente más recursos informáticos resolviendo coeficientes de potencia inútiles en lugar de realizar un trabajo real.

3.

3. Los ataques de repetición no se pueden prevenir.

4. Vulnerable a ataques de intermediario. El tercero C desempeña el papel de B cuando se comunica con A; el tercero desempeña el papel de A cuando se comunica con B. A y B negocian una clave con C, quien luego puede escuchar y pasar el tráfico. El proceso de un ataque de intermediario es el siguiente:

(1) B envía su propia clave pública en el mensaje a A.

(2) C interceptó y analizó el mensaje. C guarda la clave pública de B y envía un mensaje a A que contiene el ID de usuario de B pero usa la clave pública YC de C y aún la trata como si viniera de B.

(3) B calcula la clave secreta K1 basándose en las claves privadas XB e YC. A calcula la clave secreta K2 basándose en las claves privadas XA e YC. C usa las claves privadas XC e YB para calcular K1 y XC y YA para calcular K2.

(4) A partir de ahora, C puede reenviar mensajes enviados de A a B o de B a A, modificando su texto cifrado en el camino según sea necesario, de modo que ni A ni B sepan que se están comunicando con C. ***.