Principales conclusiones
- El cumplimiento de FIPS depende del entorno completo del sistema operativo, no solo de la instalación de una biblioteca criptográfica.
- Los «contenedores FIPS» no son compatibles a menos que el kernel del host se ejecute en modo FIPS validado.
- Los módulos criptográficos atornillados suelen generar inestabilidad y complejidad en comparación con la criptografía nativa del sistema operativo.
Cumplimiento de el cumplimiento de FIPS en entornos Linux suele ser más complicado de lo que parece. Muchas organizaciones confían en módulos criptográficos de terceros o imágenes de contenedores que afirman ser compatibles con FIPS, pero es posible que estas configuraciones no cumplan realmente los requisitos del programa de validación FIPS 140-3 o ofrecer un verdadero conformidad con FIPS 140-3.
La diferencia entre las implementaciones FIPS nativas y la criptografía complementaria puede significar la diferencia entre superar una auditoría de cumplimiento o suspenderla.
FIPS nativo frente a módulos criptográficos Drop-In
Recientemente hablamos con un cliente que utiliza CentOS 7 y que necesitaba criptografía validada para dar soporte a varios clientes federales y cumplir con los estrictos requisitos de criptografía de FedRAMP. Dado que CentOS no estaba validado por FIPS, recurrieron a proveedores externos de OpenSSL y Java FIPS.
Desde entonces, han migrado a AlmaLinux 9 ESU de TuxCare, validado por FIPS (un entorno Linux validado por FIPS) y se alegraron al descubrir que, debido a la forma en que se configura la criptografía en todo el sistema desde el núcleo, ya no necesitaban adquirir software adicional para cumplir los requisitos de FIPS 140-3, ya que el sistema operativo lo hace por ellos. Cambiar a ESU, que cuesta solo 159 dólares al año, en lugar de un software que puede costar entre 100 dólares al mes y 25 000 dólares al año, es una decisión obvia.
También observaron que su base de datos MySQL funciona de forma más fiable gracias a esta estrecha integración y a su vinculación con bibliotecas del sistema como OpenSSL, en lugar de con software añadido que no está diseñado específicamente para el sistema operativo. De hecho, anteriormente habían experimentado fallos en el servidor al intentar ejecutarlo en modo FIPS. El cambio a ESU hizo posible su implementación de FedRAMP.
Varios clientes nos han comentado que el uso del software integrado en el sistema operativo AlmaLinux, en lugar de bifurcaciones de terceros, les ha proporcionado un mejor rendimiento y ha facilitado las migraciones desde sistemas operativos más antiguos.
Los certificados FIPS de AlmaLinux 9 ESU de TuxCare se basan en el estándar FIPS 140-3, y no en el estándar anterior 140-2 que utiliza la mayoría de este software complementario. Con los certificados FIPS 140-2 pasando a la lista histórica, cada vez son menos aceptados para nuevas adquisiciones federales. Con la solución de TuxCare, esto deja de ser un problema: su infraestructura está preparada para el futuro con criptografía validada por FIPS 140-3.
Mitología de los contenedores
También hemos hablado con personas a las que les han vendido «imágenes de contenedores FIPS», que a menudo se comercializan como contenedores FIPS —, que ni siquiera se ejecutan en un entorno operativo (OE) que haya sido probado por un laboratorio acreditado de pruebas criptográficas y de seguridad (CSTL) y, por lo tanto, no figuran en ningún certificado FIPS ni están avaladas por el NIST, por lo que no son válidas y es posible que ni siquiera funcionen.
Dado que los contenedores heredan el kernel del sistema operativo del host, deben ejecutarse en un host con un núcleo validado por FIPS que esté funcionando en modo FIPS. Este entorno expone el /proc/sys/crypto/fips_{enabled,name,version} que las bibliotecas y aplicaciones utilizan para detectar y aplicar el modo FIPS. Si su sistema operativo host no se ejecuta en modo FIPS, sus contenedores tampoco lo harán.
Esto es especialmente importante en el caso de los contenedores que ejecutan VPN como IPSEC u OpenVPN, ya que estos protocolos utilizan la API criptográfica del kernel, por lo que si se utiliza un kernel de host incorrecto, la VPN no será compatible y no se le permitirá conectarse a las redes del Departamento de Defensa.
Ejecutar OpenSSL 3.1.2 en un contenedor en un host Ubuntu 24.04 (con FIPS habilitado o no) no es un entorno válido: no superará una auditoría FedRAMP y no podrá vender su solución a los gobiernos de EE. UU. o Canadá.
Cómo AlmaLinux aplica FIPS en todo el sistema
Dado que el núcleo y varias bibliotecas y componentes del sistema (GnuTLS, Libgcrypt, NSS, NSPR, OpenSSL, libkcapi, nettle...) de AlmaLinux 9 ESU han sido validados por FIPS, el sistema operativo proporciona el entorno validado en lugar de un software específico. Esta es una de las ventajas de ejecutar una distribución Linux validada por FIPS, en la que el entorno criptográfico está integrado en el propio sistema operativo.
Por ejemplo, CentOS Linux nunca fue validado por FIPS, por lo que la gente recurrió a intentar lograr algún tipo de «cumplimiento» de FIPS utilizando módulos adicionales y complicadas configuraciones y ajustes de software que, por lo general, solo acababan haciendo que el sistema fuera inestable.
Con las políticas criptográficas de todo el sistema de AlmaLinux, la criptografía se configura de forma centralizada en un solo lugar. Esto evita la necesidad de configurar servicios o aplicaciones individuales por separado. Es tan fácil como instalar utilizando el comando fips=1 o ejecutando fips-mode-setup –enable. Con un kernel kernel habilitado para FIPS, puede configurar automáticamente OpenSSH, Kerberos, bind9, etc., de forma aprobada. Para obtener más información, consulte los archivos en /usr/share/crypto-policies/FIPS/.
La prueba está en el pudín.
Como parte de nuestras pruebas internas de nuestros módulos FIPS (un requisito para añadir Rocky Linux 9.6 como OE aprobado por el proveedor a nuestros certificados FIPS), que tradicionalmente se escriben en C, decidimos probar también algunos de los productos Endless Lifecycle Support for Runtimes de TuxCare con nuestros módulos FIPS. Creamos una serie de scripts en lenguaje interpretado que demostrarían que el sistema operativo y su criptografía centralizada permitían que dicho software se ejecutara de forma aprobada por FIPS, restringiendo los algoritmos y protocolos disponibles para las aplicaciones a los aprobados por el programa NIST, en gran medida sin tener que modificar los propios programas.
Para validar el buen funcionamiento de las aplicaciones reales en este entorno y mantener el cumplimiento de la norma FIPS 140-3, hemos probado varios entornos de ejecución comunes utilizados en implementaciones empresariales, que se detallan a continuación. Además, podemos proporcionar scripts de prueba y asistencia técnica a los clientes que lo soliciten.
.NET
Hemos descubierto que, en algunos casos, el componente System.Security.Cryptography integrado en .NET no garantiza plenamente el cumplimiento de la norma FIPS 140-3 en hosts Linux, por lo que recomendamos cambiar a la llamada nativa a OpenSSL.
Java
OpenJDK cuenta con varios proveedores de cifrado, cada uno con sus propias debilidades en lo que respecta al cumplimiento de la norma FIPS. Recomendamos SunPKCS11-NSS-FIPS en las distribuciones Enterprise Linux, pero incluso en ese caso debe asegurarse de comprobar los indicadores FIPS que utiliza NSS, en lugar de limitarse a bloquear y devolver un error.
Python
El módulo de criptografía de Python utiliza llamadas a la biblioteca nativa OpenSSL, por lo que funciona desde el primer momento.
PHP
PHP también utiliza el sistema OpenSSL, pero tiene algunas peculiaridades que hay que tener en cuenta; por ejemplo, incluye más curvas elípticas compatibles que las que OpenSSL devuelve en modo FIPS, ya que «compatible» significa que PHP las reconoce, pero no que se permita su uso. En general, se deben nombrar específicamente los cifrados y resúmenes que se desean utilizar y que se sabe que son compatibles con FIPS.
Node.js
El paquete criptográfico Node.js vuelve a enlazar con el sistema OpenSSL y realiza llamadas a bibliotecas como EVP_PKEY_keygen() , por lo que funciona muy bien.
Reflexiones finales
El cumplimiento de FIPS no consiste solo en instalar una biblioteca criptográfica. Depende de todo el entorno operativo, desde el núcleo hasta las bibliotecas de tiempo de ejecución en las que se basan sus aplicaciones.
La validación FIPS nativa a nivel del sistema elimina la complejidad y la inestabilidad que suelen acompañar a la criptografía añadida.
Si su entorno depende de FIPS para contratos gubernamentales o marcos de cumplimiento como FedRAMP, el enfoque más seguro es comenzar con un sistema operativo Linux validado por FIPS que proporcione criptografía validada desde cero y sea compatible con el moderno requisitos de cumplimiento de FIPS 140-3 .
Para obtener más información sobre FIPS y las actualizaciones de seguridad ampliadas, consulte nuestro FIPS para AlmaLinux .






