Cumplimiento con FIPS para mi proyecto de Android

5

Estoy trabajando en un proyecto relacionado con la seguridad y debo asegurarme de que cumple con FIPS 140-2.

Según mi entendimiento, el cumplimiento de FIPS es el cumplimiento a nivel de hardware y software. Actualmente hay 2 dispositivos Samsung con Android que son compatibles con FIPS, es decir, tienen conformidad a nivel de hardware y software. Tengo algunas preguntas.

  1. Si quiero que mi aplicación de Android sea compatible con FIPS, si el único módulo criptográfico utilizado en mi proyecto es compatible, ¿es suficiente?

    El módulo criptográfico proporcionado por el SDK de Android es la biblioteca BouncyCastle y no es compatible con FIPS.

    Estoy utilizando la biblioteca OpenSSL compatible con FIPS en mi proyecto según enlace . He construido mi biblioteca de proyectos usando la biblioteca OpenSSL, es decir, libssl.a y libcrypto.a configurados usando el modo FIPS.

  2. Según el módulo FIPS OpenSSL para Android documentación , el módulo se ha probado en diferentes dispositivos Android de arquitectura armv7. ¿El hardware de Android no es compatible con FIPS?

  3. El algoritmo AES está bajo conformidad con FIPS. ¿Esto significa que si uso el algoritmo AES en código Java en lugar de usar la biblioteca OpenSSL compatible con FIPS, no es compatible con FIPS?

    Si AES cumple con FIPS, ¿qué tiene que ver con una implementación de AES en Java o C #? ¿Ambos tienen que pasar por el CMVP?

pregunta Alok Kulkarni 14.06.2013 - 11:13
fuente

2 respuestas

5

Si desea que el proyecto sea compatible con FIPS, deberá tener la solución completa probada para hardware y / o software de FIPS. El uso de paquetes de software compatibles con FIPS simplificará el proceso, aunque debe asegurarse de utilizar ese software de una manera que sea compatible con su estado compatible con FIPS. Por ejemplo, si está utilizando AES, su mecanismo de cifrado se valida como sólido. Sin embargo, eso no significa que haya implementado la administración de claves adecuada, por lo que debe considerar las capas involucradas en la seguridad y el cumplimiento.

Para responder a sus preguntas:

1) Puede tener una aplicación de Android utilizando un módulo criptográfico compatible con FIPS. Eso significa que el módulo criptográfico es compatible, no significa que su aplicación sea compatible. La única seguridad que esto proporciona a las personas es que no está implementando su propio cifrado y está utilizando una biblioteca reconocida y conocida.

2) El hardware de Android que no sea FIPS solo será importante en términos de si su proyecto requiere hardware FIPS o no. Puede simplemente tener un software validado (Nivel 1 de FIPS)

3) Podría escribir su implementación AES utilizando Java o OpenSSL y validarla. Solo porque estés usando uno o el otro no significa que sea compatible. Dependerá de las pruebas realizadas por el CMVP.

Hagas lo que hagas, si quieres el cumplimiento de FIPS, necesitas que tu proyecto sea probado y validado. No puede ser compatible con FIPS solo porque utiliza bibliotecas o algoritmos de cifrado que pueden ser aprobados para su uso dentro de los proyectos de FIPS.

    
respondido por el AndyMac 14.06.2013 - 13:23
fuente
10

Por FIPS, asumo que te refieres a FIPS 140 .

FIPS 140 define cuatro niveles de seguridad.

  • El nivel 1 se refiere esencialmente a la implementación correcta de la criptografía y la autenticación, como al pasar algunas pruebas funcionales básicas. Debe utilizar algoritmos aprobados para la criptografía y para la generación de números aleatorios. Puede certificar un producto de software en el nivel 1.
  • Los niveles 2 y superiores implican mecanismos de seguridad cada vez más fuertes. El hardware debe estar incluido en la certificación.

No confunda FIPS 140-2 ("fips uno-cuarenta guión dos"), donde 2 es el número de versión del estándar, con FIPS 140-2 nivel 1 ("fips uno-cuarenta guión dos nivel 1") , donde 1 es el nivel de seguridad.

Entonces querrás tener el nivel 1 de FIPS 140.

Con respecto a su pregunta 3: FIPS 140 requiere una implementación validada, y solo puede validar una implementación de un algoritmo aprobado. AES (con un modo adecuado) es un algoritmo aprobado, depende de usted tener la implementación validada. Tenga en cuenta que para que su software sea compatible con FIPS, no solo tiene que seguir la norma y decir que es compatible: debe pasar por el programa de validación.

Usar una biblioteca criptográfica validada no te ayudará mucho, excepto quizás para el generador de números aleatorios. Tendrá que seleccionar los algoritmos aprobados y pasar las pruebas de rendimiento de todos modos.

El nivel 1 de FIPS 140 no es mucho más que lo que haría en un producto serio, independientemente de la certificación (use algoritmos razonables, realice algunas pruebas). Agrega dos requisitos para los cuales una biblioteca compatible con FIPS puede ayudar un poco:

  • Cada algoritmo debe probarse antes de su uso, después de cada encendido. Prueba significa ejecutar un vector de prueba y verificar el resultado. Su software debe negarse a usar el algoritmo si la prueba correspondiente ha fallado.
  • Cualquier clave almacenada en su módulo debe borrarse después de su uso. No hay una validación de seguridad sólida aquí, pero es posible que tenga dificultades si utiliza un lenguaje con un recolector de basura que puede mover objetos.

Si utiliza una biblioteca compatible con FIPS, es posible que su cliente esté satisfecho con eso y que no requiera que valide su software. Tienes que hablarlo con tu cliente.

    
respondido por el Gilles 14.06.2013 - 14:13
fuente

Lea otras preguntas en las etiquetas