Fugas importantes de contraseñas en la industria que utilizan HMAC con sal pero sin, por ejemplo, PBKDF2, scrypt

9

Estoy tratando de convencer a los ejecutivos de un proyecto para que usen una función de fortalecimiento iterativo para asegurar el almacenamiento de contraseñas para un nuevo sistema. La propuesta actual almacenaría algo así como un HMAC de un SHA-256 salado (probablemente las otras entradas del HMAC se almacenan por separado para seguridad adicional).

Los desarrolladores de seguridad hablan un idioma diferente, por lo que es básicamente imposible comunicarse con ellos directamente o determinar exactamente los requisitos. Fui directamente a los superiores que solo parecen entender los estudios de casos de negocios. En medio de mis protestas, me dijeron que básicamente la única forma de convencerlos sería encontrar algunos ejemplos reales de filtraciones importantes de contraseñas que usaran tanto sal como HMAC pero no un fortalecimiento iterativo, y como resultado se comprometieran muchas contraseñas.

Comprenda que no voy a intentar alcanzar lo imposible y que implementen las recomendaciones estándar exactas para el almacenamiento de contraseñas. Solo quiero que consideren el fortalecimiento iterativo.

¿Existen ejemplos destacados en el mundo real en los que se utilizaron sal y HMAC, pero debido a la falta de fortalecimiento iterativo, muchas contraseñas fueron comprometidas de todos modos? Puntos de bonificación para empresas conocidas como Facebook, LinkedIn, etc.

    
pregunta machine yearning 12.10.2015 - 16:37
fuente

4 respuestas

5

No creo que encuentre ejemplos de una infracción / descifrado de contraseñas como ha solicitado. La HMAC de un hash salado SHA-2 de 256 bits actualmente se considera aceptable para cumplir, por ejemplo, los estándares NIST para el gobierno federal. [La norma federal requiere que el HMAC sea de al menos 112 bits, por cierto.]

Sin embargo, su preocupación tiene mérito, IMO, por la longevidad de la solución. SHA-2 está siendo eliminado. SHA-3 fue publicado oficialmente por NIST hace 2 meses. FIPS202 El enfoque que sus colegas defienden es la última generación, por lo que debería estar bien por un tiempo , pero no tendrá una larga vida antes de ser oficialmente obsoleto.

Por cierto, la iteración de una función hash es una forma bien establecida de protección de la fuerza, pero se debe tener en cuenta que solo proporciona un valor lineal contra un ataque de fuerza bruta, suponiendo que el atacante conoce el número de iteraciones. Del mismo modo, cualquier persona que no saque su hash debe ser expulsado de las filas de los desarrolladores de software, pero Salt solo protege contra ataques basados en tablas. Hoy y sin duda en adelante, el verdadero problema es la fuerza bruta. La longitud de la contraseña y los requisitos de complejidad son la protección más importante y 2FA debe considerarse para todos los accesos confidenciales.

    
respondido por el JaimeCastells 12.10.2015 - 19:17
fuente
6

Quizás también es importante señalar las violaciones que se han producido cuando no había evidencia de datos comprometidos. LastPass, por ejemplo, utilizó "5,000 rondas de PBKDF2-SHA256" y una sal aleatoria ( enlace ). Desde la violación, no ha habido indicaciones de que se hayan roto las contraseñas maestras.

Eso no quiere decir que siempre sabremos necesariamente si la base de datos está dañada. Si, por ejemplo, la base de datos se exfiltró y reside en la máquina de un usuario, eso no significa que publicará con éxito las contraseñas de craqueo en Pastebin.

Sería una buena idea introducir la idea con la afirmación de que las cuentas de usuario mínimas se verían comprometidas antes de emitir un restablecimiento de contraseña. Reduciendo así el riesgo y la responsabilidad legal.

    
respondido por el pr- 12.10.2015 - 18:01
fuente
2

No es así como se debe manejar este tipo de decisión.

Una medida de seguridad es una compensación entre usabilidad, costo y seguridad. Para evaluar una tecnología de mitigación de riesgos, debe evaluar los tres elementos de esa elección:

  • ¿Qué tan difícil es usar la tecnología, tanto para los usuarios como para las personas que la implementan y administran?
  • ¿Qué tan efectiva es esa solución para mitigar un riesgo específico?
  • ¿Cuánto costaría implementar y operar esa tecnología?

En su caso, el uso de un sistema de derivación de contraseñas estándar en la industria probablemente tenga un impacto muy pequeño en la facilidad de uso: a menos que esté utilizando dispositivos muy restrictivos, el impacto en los usuarios (todos ellos) es probablemente insignificante.

La adición de ese paso de expansión clave, en sí misma, proporciona dos beneficios de seguridad: hace que sea un poco más difícil descifrar una contraseña específica a través de la fuerza bruta y, si usa una función de derivación de contraseña estándar, también lo pone en terreno firme para decir que utilizó todas las medidas posibles para proteger a sus usuarios (lo que, en caso de violación de la contraseña, no es un factor menor al intentar recuperar la confianza).

En cuanto al costo, realmente depende mucho de cómo se construye su sistema: agregar una larga fase de computación obligatoria a una operación probablemente incrementará los costos de su infraestructura: necesitará más ciclo de CPU para manejar la misma cantidad de solicitudes de autenticación de usuario. Por supuesto, cuánto es exactamente algo que solo tú puedes averiguar.

    
respondido por el Stephane 12.10.2015 - 17:07
fuente
0

OWASP tiene una excelente Hoja de referencia de almacenamiento de contraseñas . Estas pautas son básicamente lo que la mayoría de los profesionales de la seguridad de la información recomendarían a sus clientes. Asegúrese de ver la sección en factor de trabajo .

También, vea esta publicación en Cómo hashear contraseñas de forma segura

    
respondido por el Scott Johnson 17.10.2015 - 11:30
fuente

Lea otras preguntas en las etiquetas