Articulo de referencia

NIST SP 800-90A

NIST SP 800-90A ("SP" significa " publicación especial ") es una publicación del Instituto Nacional de Estándares y Tecnología titulada " Recomendación para la generación de núm...

NIST SP 800-90A ("SP" significa " publicación especial ") es una publicación del Instituto Nacional de Estándares y Tecnología titulada " Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" . La publicación contiene la especificación de tres generadores de números pseudoaleatorios supuestamente criptográficamente seguros para su uso en criptografía : Hash DRBG (basado en funciones hash ), HMAC DRBG (basado en HMAC ) y CTR DRBG (basado en cifrados de bloques en modo contador ). Las versiones anteriores incluían un cuarto generador, Dual_EC_DRBG (basado en criptografía de curva elíptica ). Posteriormente se informó que Dual_EC_DRBG probablemente contenía una puerta trasera cleptográfica insertada por la Agencia de Seguridad Nacional (NSA) de los Estados Unidos .

Como obra del Gobierno Federal de los Estados Unidos , la norma NIST SP 800-90A es de dominio público y está disponible gratuitamente.

Historia

El predecesor de NIST SP 800-90A fue publicado por el Instituto Nacional de Estándares y Tecnología en junio de 2006 como NIST SP 800-90 con el título Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas . Esta publicación de 2006 contiene la especificación para cuatro generadores de números pseudoaleatorios supuestamente criptográficamente seguros para su uso en criptografía : Hash_DRBG (basado en funciones hash ), HMAC_DRBG (basado en HMAC ), CTR_DRBG (basado en cifrados de bloques en modo contador ) y Dual_EC_DRBG (basado en criptografía de curva elíptica ). [ sp 1 ]

En marzo de 2007, la publicación NIST SP 800-90 Revised (800-90R), con el mismo título, reemplazó la versión anterior. Además de algunas aclaraciones textuales menores, hubo un cambio sustancial en forma de un paso adicional para Dual_EC_DRBG para proporcionar resistencia al retroceso . [ sp 2 ]

En enero de 2012, se publicó NIST SP 800-90A para reemplazar NIST SP 800-90 Revised. Las notas de cambio mencionan que la mayor parte de la revisión se terminó en agosto de 2008 y que la recomendación se desarrolló en conjunto con ANSI X9.82-3. Los cambios no algorítmicos incluyeron la adición de explicaciones, definiciones y una regla contra el autorreinicio. La función de instanciación para Dual_EC_DRBG se revisó sustancialmente; el apéndice dedicado a justificar este DBRG recibió un nuevo párrafo. Las nuevas funciones hash de FIPS 180-4 se agregaron en la discusión de hash-based [ sp 3 ].

En junio de 2015, se publicó la revisión 1 de la norma NIST 800-90A (800-90Ar1). El cambio más notable es la eliminación del controvertido algoritmo Dual_EC_DRBG. [ sp 4 ]

Breve historia de las dudas planteadas sobre Dual_EC_DRBG

Dual_EC_DBRG no se presentó al público por primera vez en NIST SP 800-90 de 2006. Se observó en un borrador de 2004 de ANSI X9.82-3, así como en la versión oficial de ISO/IEC 18031:2005. [ 1 ] Sus fallos se demostraron por primera vez en marzo de 2006, cuando Kristian Gjøsteen publicó un método para predecir el sesgo en la versión que se encuentra en el borrador de diciembre de 2015 de NIST SP 800-90. Sin embargo, la publicación posterior de junio de 2006 no abordó este fallo. [ 2 ]

En 2007, Dan Shumow y Niels Ferguson presentaron un ataque mucho más potente, capaz de recuperar todo el estado interno con tan solo 32 bytes de salida, prediciendo así toda su salida futura. Se planteó la hipótesis de que las constantes no explicadas en Dual_EC_DRBG actuaban como una clave pública ; un atacante utilizaría un conjunto diferente de números (análogo a una clave privada) para llevar a cabo el ataque. Shumow y Ferguson no lograron recuperar la clave de la NSA, pero sí pudieron construir su propio par de claves para una demostración. En noviembre de 2007, Bruce Schneier comentó la naturaleza "extraña" de la historia de este generador de números aleatorios y describió la presentación de Shumow y Ferguson en términos más accesibles. [ 3 ]

La atención sobre Dual_EC_DRBG se volvió a plantear en septiembre de 2013 a raíz de un memorando de la Agencia de Seguridad Nacional hallado en la filtración de Edward Snowden que afirmaba la existencia de una puerta trasera cleptográfica . [ 4 ] [ 5 ] Una búsqueda retrospectiva de patentes y documentos relacionados con este DRBG reveló que la técnica general utilizada ya se había descrito en dos documentos de 1997. [ 6 ] Además, una patente de 2005 describe la técnica exacta utilizada en la puerta trasera, así como un método para neutralizarla. [ 7 ] [ 1 ] Sin embargo, la formulación sutil utilizada en el estándar implicaba que el cumplimiento de FIPS 140-2 impediría el uso de cualquier técnica de neutralización. [ 8 ]

El NIST desautorizó el uso de Dual_EC_DRBG para RSA algún tiempo antes del 26 de febrero de 2014. [ 9 ] El 21 de abril de 2014, el NIST retiró Dual_EC_DRBG de su guía preliminar sobre generadores de números aleatorios, recomendando que "los usuarios actuales de Dual_EC_DRBG transiten a uno de los tres algoritmos aprobados restantes lo antes posible". [ 10 ] Este borrador se formalizaría como NIST SP 800-90A Revisión 1 en junio de 2015.

Análisis de seguridad

El NIST afirma que cada uno de los cuatro (revisados ​​a tres) DBRG son "resistentes al retroceso" y "resistentes a la predicción". El primero es la noción común de " secreto hacia adelante " de los PRNG: en caso de que el estado se vea comprometido, el atacante no puede recuperar estados y resultados históricos. El segundo significa que si el estado se ve comprometido y posteriormente se reinicia con suficiente entropía, se restablece la seguridad. [ 11 ]

Dual_EC_DRBG

Un intento de prueba de seguridad para Dual_EC_DRBG afirma que se requieren tres problemas matemáticamente difíciles para que Dual_EC_DRBG sea seguro: el problema de decisión de Diffie-Hellman , el problema del x-logaritmo y el problema del punto truncado . [ 12 ] El problema de decisión de Diffie-Hellman es ampliamente aceptado como difícil. [ 12 ] El problema del x-logaritmo no es ampliamente aceptado como difícil. Se muestra cierta evidencia de que este problema es difícil, pero esa evidencia no es concluyente. [ 12 ] Por lo tanto, la prueba de seguridad es cuestionable y se demostraría inválida si se demuestra que el problema del x-logaritmo es eficientemente resoluble. El problema del punto truncado requiere que se trunquen suficientes bits del punto seleccionado por Dual_EC_DRBG para que sea indistinguible de un número verdaderamente aleatorio. [ 12 ] Sin embargo, se ha demostrado que el truncamiento de 16 bits, el valor predeterminado especificado por el estándar Dual_EC_DRBG, es insuficiente para que la salida sea indistinguible de un verdadero generador de números aleatorios [ 13 ] y, por lo tanto, invalida la prueba de seguridad de Dual_EC_DRBG cuando se utiliza el valor de truncamiento predeterminado.

Puerta trasera en Dual_EC_DRBG

Como parte del programa Bullrun , la NSA ha insertado puertas traseras en sistemas criptográficos. En 2013, se sugirió que Dual_EC_DRBG era uno de los objetivos. [ 14 ] La NSA logró esto trabajando durante el proceso de estandarización para convertirse finalmente en el único editor del estándar. [ 15 ] Para lograr que Dual_EC_DRBG fuera aceptado en NIST SP 800-90A, la NSA citó el uso de Dual_EC_DRBG por parte de la destacada empresa de seguridad RSA Security en sus productos. Sin embargo, la NSA había pagado a RSA Security 10 millones de dólares para que utilizara Dual_EC_DRBG por defecto, en un acuerdo que Reuters describe como "gestionado por líderes empresariales en lugar de tecnólogos puros". Dado que Reuters describió como secreto el contrato de 10 millones de dólares para que RSA Security utilizara Dual_EC_DRBG, es de suponer que las personas involucradas en el proceso de aceptación de Dual_EC_DRBG en NIST SP 800-90A no fueron informadas de este evidente conflicto de intereses. [ 16 ] Esto podría ayudar a explicar cómo un generador de números aleatorios que luego se demostró que era inferior a las alternativas (además de la puerta trasera) llegó a formar parte del estándar NIST SP 800-90A.

El potencial de una puerta trasera en Dual_EC_DRBG ya había sido documentado por Dan Shumow y Niels Ferguson en 2007, [ 17 ] pero empresas como RSA Security continuaron utilizándola en la práctica hasta la revelación de 2013. [ 5 ] Dadas las fallas conocidas en Dual_EC_DRBG, posteriormente surgieron acusaciones de que RSA Security insertó deliberadamente una puerta trasera de la NSA en sus productos. RSA ha negado haber insertado deliberadamente una puerta trasera en sus productos. [ 18 ]

Tras la revelación de la puerta trasera de la NSA, el NIST ha reabierto el proceso de verificación pública para el estándar NIST SP 800-90A. [ 14 ] [ 19 ] Una versión revisada del NIST SP 800-90A que elimina Dual_EC_DRBG se publicó en junio de 2015. [ 20 ]

Hash_DRBG y HMAC_DRBG

Hash_DRBG y HMAC_DRBG cuentan con pruebas de seguridad para una sola llamada que genera números pseudoaleatorios. [ 21 ] El documento que demuestra la seguridad de Hash_DRBG y HMAC_DRBG cita la prueba de seguridad intentada para Dual_EC_DRBG utilizada en el párrafo anterior como prueba de seguridad para afirmar que no se debe usar CTR_DRBG porque es el único DRBG en NIST SP 800-90A que carece de una prueba de seguridad. [ 21 ]

HMAC_DRBG también cuenta con una prueba de seguridad verificada por máquina. [ 22 ] La tesis que contiene dicha prueba de seguridad también demuestra que una vulneración de una instancia de HMAC_DRBG implementada correctamente no compromete la seguridad de los números generados antes de la vulneración. [ 22 ]

Woodage y Shumow (2019) analizan los esquemas del NIST con mayor detalle; específicamente, proporcionan pruebas de seguridad que tienen en cuenta la generación inicial de semillas y la resiembra, que no se habían analizado en absoluto antes. Bajo el modelo de oráculo aleatorio y asumiendo una fuente de entropía independiente del oráculo: [ 11 ]

  • Hash_DBRG es robusto en el sentido de Dodis et al., es decir, cumple con ambos requisitos de seguridad del NIST.
  • HMAC_DBRG es robusto si se cumplen dos condiciones: debe invocarse con entropía de entrada adicional, y dicha entropía debe satisfacer condiciones adicionales. Todas las fuentes de entropía aprobadas por el NIST satisfacen estas "condiciones adicionales".
  • HMAC_DBRG no es seguro hacia adelante cuando se llama sin entrada adicional.

CTR_DRBG

Se ha demostrado que CTR_DRBG tiene una imperfección teórica cuando se usa con ciertos parámetros porque los criptógrafos no consideraron el tamaño del bloque del cifrado al diseñar este generador de números pseudoaleatorios. [ 23 ] CTR_DRBG parece seguro e indistinguible de una fuente verdaderamente aleatoria cuando se usa AES como cifrado de bloques subyacente y se toman 112 bits de este generador de números pseudoaleatorios . [ 23 ] Cuando se usa AES como cifrado de bloques subyacente y se toman 128 bits de cada instancia, se proporciona el nivel de seguridad requerido con la salvedad de que la salida de un cifrado de 128 bits en modo contador se puede distinguir de un generador de números verdaderamente aleatorios. [ 23 ] Cuando se usa AES como cifrado de bloques subyacente y se toman más de 128 bits de este generador de números pseudoaleatorios, entonces el nivel de seguridad resultante está limitado por el tamaño del bloque en lugar del tamaño de la clave y, por lo tanto, el nivel de seguridad real es mucho menor que el nivel de seguridad implícito por el tamaño de la clave. [ 23 ] También se ha demostrado que CTR_DRBG no ofrece el nivel de seguridad esperado cuando se utiliza Triple DES porque su tamaño de bloque de 64 bits es mucho menor que el tamaño de clave de 112 bits utilizado para Triple DES. [ 23 ]

Actualmente no se conoce ningún método para explotar esta vulnerabilidad cuando se utiliza AES.

Borrado de claves

El esquema NIST CTR_DRBG borra la clave después de generar la aleatoriedad solicitada, produciendo aleatoriedad adicional para reemplazarla. Esto resulta ineficiente desde el punto de vista del rendimiento, pero no causa problemas inmediatos con la confidencialidad directa. Sin embargo, consciente de las implicaciones en el rendimiento, el NIST recomienda una "interfaz AES-CTR-DRBG extendida" para las propuestas de su Proyecto de Criptografía Postcuántica . Esta interfaz permite generar múltiples conjuntos de aleatoriedad sin borrado intermedio, borrándolos únicamente cuando el usuario indica explícitamente el final de las solicitudes. Como resultado, la clave podría permanecer en memoria durante un tiempo prolongado si se utiliza incorrectamente la "interfaz extendida". Una alternativa propuesta por Bernstein consiste en generar aleatoriedad para reemplazar la clave antes de generar la aleatoriedad solicitada, como se hace en los generadores de números aleatorios de "borrado rápido de clave". [ 24 ]

Los límites de seguridad informados por Campagna (2006) no tienen en cuenta ningún procedimiento de reemplazo de claves. [ 24 ]

Woodage y Shumow (2019) proporcionan un análisis preliminar de la situación mencionada por Bernstein, es decir, fuga de estado asumiendo grandes cantidades de aleatoriedad ( next) generadas entre el cambio de clave ( final). [ 11 ]

Véase también

Referencias

  1. 1 2 Green, Matthew (28-12-2013). "Algunas reflexiones sobre ingeniería criptográfica: algunas notas más sobre los generadores de números aleatorios de la NSA" . Blog.cryptographyengineering.com. Archivado del original el 26-01-2016 . Recuperado el 23-12-2015 .
  2. Green, Matthew (18 de septiembre de 2013). "Los muchos defectos de Dual_EC_DRBG" . Archivado del original el 20 de agosto de 2016. Consultado el 22 de septiembre de 2013 .
  3. Schneier, Bruce (15 de noviembre de 2007). "La extraña historia de Dual_EC_DRBG" . Recuperado el 25 de noviembre de 2016 .
  4. Perlroth, Nicole (10 de septiembre de 2013). "El gobierno anuncia medidas para restaurar la confianza en los estándares de cifrado" . The New York Times . Archivado del original el 12 de julio de 2014. Recuperado el 11 de septiembre de 2013 .
  5. 1 2 Green, Matthew (2013-09-20). "RSA advierte a los desarrolladores que no utilicen los productos RSA" . Recuperado el 23-08-2014 .
  6. Young, Adam; Yung, Moti (17 de agosto de 1997). «La prevalencia de ataques cleptográficos en criptosistemas basados ​​en logaritmos discretos». Avances en criptología — CRYPTO '97 . Notas de clase en ciencias de la computación. Vol. 1294. Springer, Berlín, Heidelberg. págs. 264–276 . doi : 10.1007/bfb0052241 . ISBN   978-3-540-63384-6 vía ResearchGate .
  7. US 2007189527 , Brown, Daniel RL y Vanstone, Scott A., "Generación de números aleatorios de curva elíptica", asignado a Certicom Corp. 
  8. "«Fallo en la doble CE DRBG (no, no esa)» – MARC . Marc.info. 19/12/2013. Archivado del original el 16/10/2014 . Consultado el 23/12/2015 .
  9. Jeffrey Carr (26 de febrero de 2014). "Seis criptógrafos cuyo trabajo sobre Dual EC DRBG fue considerado sin mérito por el jefe de RSA, Art Coviello" . Digital Dao. Archivado del original el 3 de marzo de 2014. Consultado el 27 de febrero de 2014 .
  10. "El NIST elimina el algoritmo de criptografía de las recomendaciones para generadores de números aleatorios" . Instituto Nacional de Estándares y Tecnología . 21 de abril de 2014. Archivado del original el 29 de agosto de 2016. Consultado el 13 de julio de 2017 .
  11. 1 2 3 Woodage, Joanne; Shumow, Dan (2019). "Análisis de NIST SP 800-90A" (PDF) . Avances en criptología – EUROCRYPT 2019. Vol. 11477. pp. 151–180 . doi : 10.1007/978-3-030-17656-3_6 .  
  12. 1 2 3 4 Brown, Daniel RL; Gjøsteen, Kristian (15 de febrero de 2007). "Análisis de seguridad del generador de números aleatorios de curva elíptica NIST SP 800-90" (PDF) . Recuperado el 19 de noviembre de 2016 .
  13. Schoenmakers, Berry; Sidorenko, Andrey (29 de mayo de 2006). "Criptoanálisis del generador pseudoaleatorio de curva elíptica dual" (PDF) . Recuperado el 20 de noviembre de 2016 .
  14. 1 2 Perlroth, Nicole (10 de septiembre de 2013). "El gobierno anuncia medidas para restaurar la confianza en los estándares de cifrado" . New York Times . Recuperado el 23 de agosto de 2014 .
  15. Ball, James; Borger, Julian; Greenwald, Glenn (5 de septiembre de 2013). "Revelado: cómo las agencias de espionaje de EE. UU. y el Reino Unido vulneran la privacidad y la seguridad en internet" . The Guardian . Consultado el 23 de agosto de 2014 .
  16. Menn, Joseph (2013-12-20). "Exclusiva: Contrato secreto vincula a la NSA con un pionero de la industria de la seguridad" . Reuters . Consultado el 23 de agosto de 2014 .
  17. Bruce Schneier (15 de noviembre de 2007). "¿Incluyó la NSA una puerta trasera secreta en el nuevo estándar de cifrado?" . Wired News . Archivado del original el 23 de noviembre de 2015. Consultado el 23 de agosto de 2014 .URL alternativa
  18. Goodin, Dan (2013-09-20). "No habilitamos puertas traseras en nuestros productos criptográficos, RSA les dice a los clientes" . Ars Technica . Recuperado el 23 de agosto de 2014 .
  19. "NIST invita a presentar comentarios sobre el borrador SP 800-90A, Revisión 1" . Instituto Nacional de Estándares y Tecnología . 21 de abril de 2014. Archivado del original el 23 de julio de 2014. Consultado el 23 de agosto de 2014 .
  20. Barker, Elaine; Kelsey, John (junio de 2015). "NIST publicó la publicación especial (SP) 800-90A Revisión 1: Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" (PDF) . Instituto Nacional de Estándares y Tecnología . doi : 10.6028/NIST.SP.800-90Ar1 . Consultado el 19 de noviembre de 2016 .
  21. 1 2 Kan, Wilson (4 de septiembre de 2007). "Análisis de supuestos subyacentes en los DRBG del NIST" (PDF) . Recuperado el 19 de noviembre de 2016 .
  22. 1 2 Ye, Katherine Qinru (abril de 2016). "El notorio PRG: verificación formal del generador de números pseudoaleatorios HMAC-DRBG" (PDF) . Recuperado el 19 de noviembre de 2016 .
  23. 1 2 3 4 5 Campagna, Matthew J. (1 de noviembre de 2006). "Límites de seguridad para el generador de bits aleatorios determinista basado en el libro de códigos del NIST" (PDF) . Recuperado el 19 de noviembre de 2016 .
  24. 1 2 Bernstein, Daniel J. "2017.07.23: Generadores de números aleatorios con borrado rápido de claves: Un esfuerzo por limpiar varios desastres simultáneamente. #rng #forwardsecrecy #urandom #cascade #hmac #rekeying #proofs" .

Historial de versiones

  1. Barker, Elaine; Kelsey, John (junio de 2006). "Publicación especial 800-90 del NIST: Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" (PDF) . Instituto Nacional de Estándares y Tecnología . Recuperado el 27 de noviembre de 2016 .Retirado en marzo de 2007.
  2. Barker, Elaine; Kelsey, John (marzo de 2007). "Publicación especial 800-90 del NIST: Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas (revisada)" (PDF) . Instituto Nacional de Estándares y Tecnología . Recuperado el 27 de noviembre de 2016 .Retirado en enero de 2012.
  3. Barker, Elaine; Kelsey, John (enero de 2012). "Publicación especial 800-90A del NIST: Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" (PDF) . Instituto Nacional de Estándares y Tecnología . doi : 10.6028/NIST.SP.800-90A . Consultado el 19 de noviembre de 2016 .Retirado en junio de 2015.
  4. Barker, Elaine; Kelsey, John (junio de 2015). "NIST publicó la publicación especial (SP) 800-90A Revisión 1: Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" (PDF) . Instituto Nacional de Estándares y Tecnología . doi : 10.6028/NIST.SP.800-90Ar1 . Consultado el 19 de noviembre de 2016 .