¿Cómo encriptan los administradores de contraseñas?

Trabajo para AgileBits, los creadores de 1Password, y les diré cómo lo hacemos. Algo de lo que digo será (en términos generales) cierto para muchos de los mejores administradores de contraseñas, mientras que algunos son únicos para nosotros.

La respuesta muy corta (y probablemente no muy útil) es que en 1Password sus datos se cifran utilizando el Estándar de cifrado avanzado (AES) en modo de contador Galois (GCM) con claves generadas aleatoriamente de 256 bits.

Derivación clave
Supongo que su pregunta es cómo 1Password (en nuestro caso) pasa de su contraseña maestra a cifrar o descifrar sus datos. Esto implica (entre otras cosas) lo que se llama una función de derivación clave (KDF).

Típicamente, un KDF combinará un secreto de usuario (contraseña maestra) con información no secreta y lo ejecutará a través de un sistema de cifrado criptográfico para producir una Clave de cifrado de clave (KEK). Ese KEK se usa para cifrar las claves reales que se usan para cifrar sus datos. Las claves reales son generadas por un generador de números aleatorios criptográficamente seguro en su propio dispositivo cuando “ejecuta” por primera vez el administrador de contraseñas.

Hash lento
Un problema es que si un atacante obtiene una copia de sus datos cifrados, puede ejecutar un descifrador de contraseñas, un programa automatizado que adivina las posibles contraseñas maestras y comprueba si alguna suposición particular descifra sus datos con éxito. Dependiendo de muchas cosas, los descifradores de contraseñas pueden hacer cientos de millones de conjeturas por segundo.

Los mejores sistemas utilizarán un esquema de “hashing lento” como PBKDF2 o scrypt, o Argon2. Esto garantiza que se requiera una gran cantidad de cómputo para obtener de la entrada a la salida, de modo que alguien que ejecute un descifrador de contraseñas solo pueda hacer decenas de miles de conjeturas por segundo en lugar de decenas de millones. 1Password usa 100,000 rondas de PBKDF2-H256.

Derivación de clave de dos secretos (2SKD)
Desafortunadamente, hay límites a lo que pueden hacer las técnicas de hashing lento. Después de un tiempo, hay rendimientos decrecientes para los defensores al poner en marcha los diversos parámetros para cualquier hashing lento que se use. Por lo tanto, no sentimos que PBKDF2 (u otro algoritmo de hash lento) sea suficiente.

Nuestro objetivo [1] es que si sus datos encriptados se capturan de nuestros sistemas, no queremos que ningún sistema automatizado de adivinación de contraseñas tenga ninguna posibilidad de adivinar la contraseña maestra de alguien. Me gusta decir que somos cobardes. No queremos estar sentados en datos que serían de algún valor para un atacante.

Así que agregamos un secreto de usuario separado muy aleatorio a KDF. Cuando configura su cuenta, no solo elige una contraseña maestra, sino que el software de su máquina generará una “clave secreta” aleatoria. Esta clave secreta se almacena en sus dispositivos y nunca en la nuestra. Se combina con la contraseña maestra en KDF de 1Password. Sin la clave secreta, un atacante ni siquiera puede comenzar a ejecutar un descifrador de contraseñas en los datos capturados.

Una contraseña maestra sólida sigue siendo tu mejor defensa
Debo señalar que la clave secreta solo sirve para protegerlo si sus datos nos son capturados de alguna manera. Si sus datos se capturan desde sus propias computadoras, el atacante tendrá la clave secreta y, por lo tanto, la cantidad de tiempo que les toma “adivinar” su contraseña maestra depende de la fuerza de esa contraseña maestra. Así que usa uno bueno [2].

Aún más encriptación

También se usa otro cifrado. Por ejemplo, con 1Password usamos una capa de encriptación [3] para la comunicación entre su cliente y nuestro servidor que se suma a la encriptación básica de sus datos y TLS. También utilizamos RSA-OAEP para compartir de forma segura las bóvedas entre familiares y miembros del equipo. Entonces, en realidad, hay mucha más encriptación de lo que he descrito anteriormente. Hay más detalles sobre todo esto en nuestro documento técnico de seguridad [4].

Notas al pie

[1] 1Password es # LayerUp-ed con autenticación moderna

[2] Hacia mejores contraseñas maestras

[3] Tres capas de encriptación te mantienen seguro cuando falla SSL / TLS

[4] https://1password.com/teams/whit…

Consulte aquí para obtener detalles sobre cómo LastPass protege las contraseñas:

¿Cómo es seguro LastPass y cómo encripta / desencripta mis datos de manera segura?