En MacOS puede usar PBKD2 (Derivación de clave basada en contraseña 2) para crear verificadores de contraseña segura. Este es un método aceptado por el NIST. Suministre un salt al azar (puede guardarlo con la contraseña de hash) y un recuento de iteraciones como la derivación toma alrededor de 100 ms.
Cuando guardar un verificador de contraseñas solo usar una función hash no es suficiente y solo agregar un salt hace poco para mejorar la seguridad. En lugar de ello, repita la acción sobre un HMAC con una sal aleatoria durante aproximadamente 100 ms de duración y guarde la sal con el hash. Mejor aún, use una función como PBKDF2
, Rfc2898DeriveBytes
, Argon2
, password_hash
, Bcrypt
o funciones similares. El punto es hacer que el atacante dedique un tiempo considerable a encontrar contraseñas por fuerza bruta.
Consulte Pautas de identidad digital de NIST
Vea este Cómo usar CommonCrypto para PBKDF2 en Swift 2 & 3
o código de ejemplo.