¿Facebook almacena contraseñas de texto sin formato?

177

Estaba a punto de restablecer mi contraseña de Facebook y obtuve este error:

  

Su nueva contraseña es demasiado similar a su contraseña actual. Por favor, intente con otra contraseña.

Supuse que Facebook solo almacena hashes de contraseña, pero si es así, ¿cómo pueden medir la similitud de las contraseñas? Esto debería ser imposible con una buena función de hash, ¿verdad?

La pregunta es: ¿cómo es esto posible y cuáles son las implicaciones?

Gracias de antemano.

ACTUALIZAR

No lo dejé en claro: no se me pidió que proporcionara una contraseña antigua y nueva. Fue el procedimiento de "restablecer contraseña", donde solo proporciono una nueva contraseña, por lo que la mayoría de las respuestas de duplicado sugerido no son aplicables.

ACTUALIZAR2

misterio resuelto - vea comentario (del ingeniero de Facebook) )

    
pregunta Michał Šrajer 16.03.2014 - 17:58
fuente

6 respuestas

191

Esperemos y asumamos que Facebook almacena solo los hashes de la contraseña actual (y potencialmente las contraseñas anteriores).

Esto es lo que pueden hacer:

  1. el usuario establece la primera contraseña en "first" y fb almacena el hash ("first").

  2. más adelante, los usuarios restablecen la contraseña y se les pide que proporcionen la nueva contraseña "First2"

  3. Facebook puede generar un montón de contraseñas (similar a la nueva): ["First2", "fIrst2", "firSt2", ... "first2", ... "first", ... ] y luego compare el hash de cada uno con el hash almacenado.

Esta es la única solución que me viene a la mente. ¿Algún otro?

    
respondido por el Michał Šrajer 16.03.2014 - 18:33
fuente
21

No sabría si lo hacen (ni siquiera usan Facebook), pero también es posible que usen Módulos de seguridad de hardware (HSM) por su procesamiento criptográfico que no almacena contraseñas con hash, sino que las simplemente las cifra de forma reversible. Con el volumen de solicitudes de autorización con las que tienen que lidiar, esto tendría mucho sentido, ya que es órdenes de magnitud más rápido que seguro (lea : hash lento de contraseñas , a la vez que sigue ofreciendo almacenamiento seguro de contraseñas.

Los HSM podrían programarse para comparar la contraseña almacenada y la nueva como una entrada de una de sus funciones y simplemente devolver el resultado (podría ser un valor booleano en nuestro caso), con la contraseña original nunca transmitida o almacenada en Texto simple en cualquier lugar, además de su memoria interna (que es a prueba de manipulaciones). Esto generalmente se conoce como clave segura integrada y almacenamiento / procesamiento de aplicaciones .

Por cierto, muchos bancos usan HSM porque una implementación adecuada también requiere seguridad física para los dispositivos en sí y la forma en que se accede (además, son bastante costosos), pero esto obviamente proporciona mucha más flexibilidad. en la forma en que las contraseñas se pueden procesar de forma segura sin que nunca se divulguen.

    
respondido por el TildalWave 16.03.2014 - 21:51
fuente
16

Solo hay una respuesta correcta a esto. Nadie sabe (excepto Facebook).

Facebook podría almacenar su contraseña de Facebook en texto sin formato, pero también podría haber algún esquema que use hashes difusos o hashes precalculados de contraseñas similares.

Realmente no hay forma de saberlo a menos que entráramos en Facebook y auditáramos todos sus activos.

    
respondido por el Rell3oT 16.03.2014 - 18:50
fuente
7

Otra posibilidad es que Facebook almacene un hash de su contraseña y un hash de SOUNDEX de tu contraseña. Luego, cuando ingresa su nueva contraseña, puede comparar el hash de su SOUNDEX con los almacenados previamente y responder que una contraseña es demasiado similar.

Esto es, por supuesto, puramente conjetura.

    
respondido por el Ammusionist 17.03.2014 - 01:35
fuente
3

Otra posibilidad es que fb no tiene hash, pero encripta las contraseñas con su clave maestra. De lo que podrían descifrar en cualquier momento para compararlo con el nuevo.

  1. Esperemos que no, ¡deberían hacerlo!
  2. Como señaló Rell3oT, nadie lo sabe, excepto fb. Así que todo lo que podemos hacer es lanzar adivinanzas al anillo.
respondido por el mohrphium 16.03.2014 - 20:12
fuente
0

Proporcionando un poco más de detalle sobre el método de almacenamiento de contraseña en sí mismo.

Las respuestas históricas anteriores son anteriores a cualquier confirmación de Facebook. Pero en Passwords 14, Alec Muffett dio una charla en la que describió explícitamente el almacenamiento de contraseñas en Facebook con algún detalle.

En su charla, confirma que Facebook no almacena las contraseñas en texto sin formato, sino que utiliza un método de varios pasos que es bastante resistente a una variedad de ataques:

...comosigue:

$cur='plaintext'#MD5theplaintext.$cur=md5($cur)#HashSHA1witha160-bitsalt.$salt=randbytes(20)$cur=hmac_sha1($cur,$salt)#HashSHA256withasecretsalt,usinganinternallyabstractedcryptoservice.$cur=cryptoservice::hmac($cur)[=hmac_sha256($cur,$secret)]#RuntheresultthroughthescryptKDF(usingundisclosedtuningparameters)$cur=scrypt($cur,$salt)#UseSHA256(toreduceandnormalizethelargescryptresult)$cur=hmac_sha256($cur,$salt)

Estenivelderesistencianodeberíasersorprendente,yaqueMuffetteselautorde crack , uno de los Primeras herramientas eficientes para descifrar contraseñas.

Así que ahora tenemos confirmación de que Facebook no no almacena las contraseñas en texto sin formato.

    
respondido por el Royce Williams 27.12.2016 - 04:31
fuente

Lea otras preguntas en las etiquetas