Resumen

  • RFC 9106 ofrece una descripción implementable de Argon2 1.3, parámetros y vectores de prueba; no es un certificado de capacidad para un verificador concreto.
  • La evidencia útil une cada tuple almacenado con memoria y latencia observadas, concurrencia, colas, política de sobrecarga y cobertura de migración.

Un equipo de identidad cambia el valor por defecto a Argon2id y verifica que el vector de salida coincide. La revisión parece terminada. Sin embargo, las cuentas antiguas conservan otros costes y el primer pico de inicios de sesión hace que cientos de matrices de memoria compitan a la vez. El nombre del algoritmo nunca respondió a esa prueba.

La propia RFC parte del presupuesto. Ordena calcular cuánta memoria puede permitirse cada llamada y cuánto tiempo puede consumir. Después se ajustan las pasadas; si una sola ya supera el tiempo admisible, se reduce la memoria. La seguridad se diseña dentro de una restricción operativa, no se importa como una etiqueta.

Argon2 enlaza esa decisión con el resultado. El mensaje —la contraseña en este uso—, el salt, las lanes p, el tamaño del tag, la memoria m, las pasadas t, la versión y el tipo participan en el hash inicial. La memoria se divide en bloques de 1 KiB y filas paralelas que se sincronizan por tramos. Nuevas pasadas vuelven a recorrer la estructura. Dos registros que dicen Argon2id pueden imponer costes muy distintos.

El salt de 16 bytes recomendado debe ser único por contraseña. Su función es impedir que dos secretos iguales compartan la misma representación y la misma preparación reutilizable. No es secreto y no sustituye el trabajo. Por eso el registro necesita guardar también esquema, versión y factor de coste, como exige el camino de migración del NIST.

Las dos configuraciones uniformes de RFC 9106 hacen visible la elección: 2 GiB con una pasada y cuatro lanes, o 64 MiB con tres pasadas y cuatro lanes cuando la memoria es limitada. También aparecen ejemplos sobre una CPU de 2 GHz. Son hipótesis útiles para comprender el diseño. No predicen el comportamiento de una VM con vecinos, un contenedor con límite, un allocator fragmentado ni una plataforma cuya banda de memoria ya está ocupada.

Los vectores de prueba tampoco intentan predecirlo. Fijan contraseña, salt, memoria, pasadas y lanes, y publican bloques intermedios y tag final. Si una biblioteca reproduce el resultado, ha probado compatibilidad para ese caso. Aún no sabemos su memoria residente, el p99, la interferencia con otros workers, el tiempo de liberación o la respuesta ante cancelación.

La concurrencia convierte el coste por llamada en política de servicio. Multiplicar la memoria configurada por llamadas activas sirve como límite preliminar, pero el pico real depende de la implementación, del ancho de banda y del scheduler. El sistema debe decidir qué hacer antes del agotamiento: limitar, encolar, rechazar, expirar o cerrar de forma segura. Reducir el coste sin registrar la decisión falsea la promesa; permitir que la defensa derribe el proceso crea un vector de disponibilidad.

La migración añade una dimensión temporal. Guardar algoritmo y coste con cada hash permite rehash al siguiente inicio correcto. No obliga a que todas las cuentas regresen ni cubre automáticamente recuperación, importación o cuentas inactivas. Un dashboard de configuración nueva puede estar verde mientras una fracción grande de la población permanece en el presupuesto anterior.

Tampoco existe una conversión directa de milisegundos del defensor a precio del atacante. Faltan la distribución de contraseñas, el alcance de la filtración, el hardware adversario, la energía, un secreto adicional y la tasa de intentos online. La RFC habla de compromisos tiempo-espacio, pero su estado es Informational dentro de IRTF, no Standards Track. Especifica la función; no observa la instalación.

La frontera con RFC 9807 es importante. OPAQUE usa una KSF en el cliente y plantea custodia de la semilla OPRF, invisibilidad de la contraseña y re-registro. Este artículo sigue una llamada ordinaria del verificador servidor hasta la capacidad agregada y la degradación. No vuelve a contar el protocolo OPAQUE.

El recibo mínimo incluye tipo y versión, salt, m, t, p, tag y secreto opcional; biblioteca y clase de máquina; percentiles fríos y calientes; picos de memoria por llamada y proceso; llamadas activas; profundidad y edad de cola; rechazo, timeout y cancelación; CPU y banda de memoria; distribución de tuples antiguos; éxito del rehash; rate limiting y recuperación. Un hash válido solo cubre una etapa.

Fuentes

Especificación y estado: RFC 9106, registro RFC Editor, registro Datatracker y artículo de Argon2. Historia: Password Hashing Competition. Requisitos del verificador: guía NIST de autenticadores y análisis NIST de contraseñas. Límite adyacente: RFC 9807. Marco analítico: Minimum Initial Specification, Reality Layers y Running-Code Primacy.