PBKDF2


En criptografía , PBKDF1 y PBKDF2 ( Función de derivación de clave basada en contraseña 1 y 2 ) son funciones de derivación de clave con un costo computacional variable, que se utilizan para reducir las vulnerabilidades de los ataques de fuerza bruta .

PBKDF2 es parte de la serie de estándares de criptografía de clave pública (PKCS) de RSA Laboratories , específicamente PKCS # 5 v2.0, también publicado como RFC 2898 de Internet Engineering Task Force . Reemplaza a PBKDF1, que solo puede producir claves derivadas hasta 160 bits de largo. [1] RFC 8018 (PKCS # 5 v2.1), publicado en 2017, recomienda PBKDF2 para el hash de contraseñas. [2]

PBKDF2 aplica una función pseudoaleatoria , como el código de autenticación de mensajes basado en hash (HMAC), a la contraseña de entrada o la frase de contraseña junto con un valor de sal y repite el proceso muchas veces para producir una clave derivada , que luego se puede utilizar como clave criptográfica en operaciones posteriores. El trabajo computacional adicional hace que el descifrado de contraseñas sea mucho más difícil y se conoce como estiramiento de claves .

Cuando se escribió el estándar en el año 2000, el número mínimo recomendado de iteraciones era 1000, pero se pretende que el parámetro aumente con el tiempo a medida que aumentan las velocidades de la CPU. Un estándar de Kerberos en 2005 recomendó 4096 iteraciones; [3] Según los informes, Apple usó 2000 para iOS 3, y10000 para iOS 4; [4] mientras que LastPass en 2011 utilizó 5000 iteraciones para clientes JavaScript y100 000 iteraciones para el hash del lado del servidor. [5] En 2021, OWASP recomendó utilizar 310000 iteraciones para PBKDF2-HMAC-SHA256 y 120000 para PBKDF2-HMAC-SHA512. [6]

Tener una sal agregada a la contraseña reduce la capacidad de usar hashes precalculados ( tablas de arco iris ) para ataques, y significa que varias contraseñas deben probarse individualmente, no todas a la vez. El estándar recomienda una longitud de sal de al menos 64 bits. [7] El Instituto Nacional de Estándares y Tecnología de EE. UU. Recomienda una longitud de sal de 128 bits. [8]

Cada bloque de hLen -bit T i de la clave derivada DK, se calcula de la siguiente manera (con +concatenación de cadenas de marcado):


Representación algorítmica del proceso iterativo de la función de derivación de claves basada en contraseña 2.