Ubuntu

Ejecución de cargas de trabajo FIPS 140 en Ubuntu

Ejecución de cargas de trabajo FIPS 140 en Ubuntu

Este es el primer artículo de una serie de dos artículos sobre FIPS 140 y Ubuntu. La primera parte de esta serie, este artículo, cubre la ejecución de aplicaciones FIPS 140 en Ubuntu, mientras que la segunda parte cubrirá el desarrollo de aplicaciones FIPS en Ubuntu.

¿Qué es FIPS y por qué lo necesito?

Aunque casi todas las aplicaciones utilizan la criptografía en la actualidad, su implementación generalmente se delega a bibliotecas criptográficas especializadas. Hay varias razones para ello, incluido el hecho de que implementar la criptografía no es fácil y, de hecho, es fácil equivocarse. Pequeños errores, como reutilizar un nonce, pueden hacer que los datos cifrados por una aplicación sean reconocibles. Al mismo tiempo, el panorama de la seguridad cambia tan rápido que el software seguro de hace 10 años ya no puede resistir los ataques que explotan las vulnerabilidades recién descubiertas. Por ejemplo, los algoritmos como RC4 que dominaban en los primeros días del comercio por Internet se consideran hoy en día rotos.

¿Cómo podemos estar seguros de que estas bibliotecas y aplicaciones criptográficas implementan la criptografía correctamente y siguen las mejores prácticas, como no utilizar criptografía heredada? Dado que la criptografía es sensible para los gobiernos de todo el mundo, todavía no existe una respuesta universalmente aceptada. Para abordar este problema en los EE. UU., NIST desarrolló FIPS 140, un estándar de protección de datos que es nuestro enfoque en este artículo.

FIPS 140 define los requisitos de seguridad relacionados con el diseño y la implementación de un módulo criptográfico, o en términos de software, para una aplicación o biblioteca que implementa criptografía. El estándar tiene varios niveles de seguridad, desde los niveles 1 a 4, con el nivel 1 que se aplica a las implementaciones de software, mientras que el nivel 2 se aplica a hardware especializado junto con su software. En el nivel 1, el estándar requiere el uso de algoritmos y modos criptográficos seguros conocidos para la protección de datos y requiere su separación lógica de la aplicación. Además, incluye un proceso de certificación que garantiza que las afirmaciones sean probadas y certificadas por un laboratorio acreditado por NIST.

En esencia, el estándar FIPS 140 asegura que la criptografía se implemente utilizando diseños seguros bien conocidos, siga ciertas mejores prácticas, no involucre algoritmos oscuros y que exista un debido proceso en la certificación.

¿Qué pasa con FIPS 140-3?

El estándar FIPS 140 ahora está pasando de la versión FIPS 140-2 existente a la nueva revisión FIPS 140-3. FIPS 140-3 alinea los requisitos generales de seguridad con ISO / IEC 19790 – un estándar internacional – y después de septiembre de 2021, se espera que sea el único mecanismo de certificación criptográfico activo por NIST. Para los propósitos de este artículo, nos referiremos a FIPS 140-2 ya que actualmente es la versión más utilizada, y usaremos la abreviatura FIPS para referirnos al estándar.

¿Qué significa cumplir con FIPS?

Existe mucha terminología sobre el cumplimiento de FIPS y, a veces, puede resultar confuso. Para simplificar las cosas, cuando hablamos de una aplicación que cumple con FIPS, queremos decir que la aplicación usa un módulo criptográfico validado por FIPS, por ejemplo, una biblioteca y lo usa de acuerdo con la política de seguridad del módulo. La política de seguridad es un documento que acompaña a cada módulo validado por FIPS e incluye una guía sobre ciertos aspectos de la criptografía. Por ejemplo, el Guía del módulo Ubuntu 18.04 OpenSSL establece que el algoritmo criptográfico AES-XTS solo se puede utilizar para cifrar dispositivos de almacenamiento.

¿Quién puede beneficiarse de FIPS?

En el proceso de adquisición de software para una organización promedio, no es razonable esperar un análisis criptográfico detallado del software. Para un no experto, es intimidante leer acerca de las características, modos de operación y tamaños de clave de un algoritmo criptográfico. Si bien las aplicaciones de código abierto hacen que el código fuente sea auditable y potencialmente todos pueden verificar las opciones dentro, en la práctica, las personas calificadas para realizar dicha auditoría son un pequeño grupo de individuos. Un programa de validación como FIPS 140 asegura que los paquetes que incluyen criptografía no tomen decisiones cuestionables, como usar criptografía no aprobada o implementar la suya propia.

Por lo tanto, la organización contratante tiene la seguridad de que las aplicaciones y bibliotecas validadas siguen ciertos principios de buen diseño y no incluyen criptografía personalizada o no aprobada.

Por lo tanto, la organización contratante tiene la seguridad de que las aplicaciones y bibliotecas validadas siguen ciertos principios de buen diseño y no incluyen criptografía personalizada o no aprobada.

¿A quiénes se aplican los requisitos de FIPS 140-2?

Las agencias federales de EE. UU. Y cualquier persona que implemente sistemas y servicios en la nube para el uso de una agencia del gobierno federal, ya sea directamente o a través de contratistas y proveedores, deben utilizar sistemas compatibles con FIPS 140-2. FIPS 140-2 también se ha adoptado fuera del sector público en industrias donde la seguridad de los datos está fuertemente regulada, como servicios financieros, atención médica (HIPAA) y en certificaciones internacionales como Common Criteria.

FIPS en Ubuntu

El enfoque que adopta Ubuntu en las certificaciones FIPS

De forma predeterminada, Ubuntu viene con paquetes criptográficos basados ​​en las fuentes ascendentes y no está configurado para adherirse a ningún estándar nacional. La herramienta Ubuntu Advantage (ua) hace posible configurar el sistema para que se adhiera al estándar FIPS, mediante un proceso que describimos como “habilitar FIPS” (consulte a continuación para obtener más detalles).

Aunque existe un “conmutador” de sistema global para FIPS, la certificación FIPS 140 cubre paquetes binarios específicos. En Ubuntu, seleccionamos un conjunto de paquetes criptográficos del repositorio principal que forman nuestro conjunto central criptográfico. Este conjunto de paquetes se prueba y valida para los requisitos de FIPS 140-2 en cada versión de Ubuntu LTS. Los paquetes validados por FIPS se instalan durante la habilitación de FIPS.

actualizaciones de fips vs fips

Cada certificado FIPS 140 para un paquete puede tardar varios meses en completarse y es válido por 5 años. Sin embargo, a medida que ocurren vulnerabilidades, es posible que sea necesario incluir soluciones críticas para la seguridad más rápido que un ciclo de certificación. Para eso, proporcionamos dos formas de consumir paquetes validados: un flujo llamado ‘fips’, donde están presentes los paquetes exactos validados por NIST; y otro flujo llamado ‘fips-updates’ donde los paquetes validados están presentes, pero se actualizan con correcciones de seguridad. La secuencia ‘fips-updates’ también permite el acceso a los paquetes durante la fase de validación, lo que permite el desarrollo y la prueba de aplicaciones tempranas. Ambas transmisiones se revalidan periódicamente durante la fase de soporte estándar de Ubuntu.

Los paquetes criptográficos validados por FIPS

El núcleo criptográfico de Ubuntu 20.04 consta de los siguientes paquetes:

PaqueteDescripciónCertificado FIPS 140-2
linux-image-fipsLa API de cifrado del kernel de Linux.N.º 3928
libssl1.1El backend criptográfico de OpenSSL. Esto también incluye la criptografía necesaria para OpenSSH.N.º 3966
libgcrypt20La biblioteca criptográfica libgcrypt.N.º 3902
StrongswanStrongSwan, la implementación de VPN IPSec.En validación

Este conjunto de paquetes está validado en x86-64 e IBM z / 15. En el pasado, la tabla incluía tanto el servidor como el cliente de OpenSSH, pero desde el 20.04 ya no incluyen la criptografía a los efectos de la certificación FIPS 140-2 y la utilizan desde el paquete OpenSSL.

Tenga en cuenta que el kernel de Linux es en sí mismo un módulo criptográfico validado en el sentido de FIPS, porque contiene no solo la criptografía utilizada por el software (por ejemplo, strongswan usa la criptografía proporcionada por él para IPSec), sino también porque contiene el generador de números aleatorios que alimenta todas las aplicaciones de espacio de usuario y bibliotecas criptográficas. Por eso, el kernel de Linux validado es una dependencia del resto de los paquetes validados.

¿Cómo habilito FIPS en Ubuntu?

Puede habilitar FIPS en una versión LTS de Ubuntu, como 18.04 o 20.04 con una suscripción. Dado que la misión de Ubuntu es llevar software gratuito a la audiencia más amplia, los desarrolladores y las personas pueden acceder a FIPS 140 a través de una suscripción personal gratuita. Para desarrollar y ejecutar cargas de trabajo con FIPS en la empresa, los paquetes validados están disponibles con Ubuntu Pro o una suscripción a Ubuntu Advantage.

Las siguientes instrucciones habilitarán FIPS en Ubuntu LTS.

Paso 1: adjunte su suscripción

Obtenga su token de suscripción en ubuntu.com/advantage y adjúntelo a su sistema. Este paso no es necesario en Ubuntu Pro.

$ sudo apt update
$ sudo apt install ubuntu-advantage-tools
$ sudo ua attach <TOKEN>

Paso 2: habilite FIPS

El siguiente paso habilita FIPS usando la secuencia ‘fips-updates’ en Ubuntu LTS.

$ sudo ua enable fips-updates

El comando anterior esconde mucha complejidad relacionada con la habilitación de FIPS. Instala los paquetes del repositorio FIPS y agrega una opción de línea de comandos del kernel para habilitar FIPS en todo el sistema. Es necesario reiniciar para completar la habilitación de FIPS. Puede verificar su estado usando el siguiente comando.

$ sudo ua status
SERVICE       ENTITLED  STATUS
cc-eal yes n/a
cis-audit no —
esm-infra yes enabled
fips yes n/a
fips-updates yes enabled
livepatch yes disabled

¿Cómo ejecuto mi aplicación con FIPS habilitado?

Una vez que FIPS está habilitado, los requisitos de FIPS 140-2 se aplican en los paquetes criptográficos principales. Desde ese punto, puede iniciar aplicaciones como lo haría en un sistema no habilitado para FIPS. Sin embargo, una cosa a tener en cuenta es que las aplicaciones que no fueron diseñadas para cumplir con FIPS pueden generar un error, por ejemplo, cuando se usa un algoritmo no aprobado. Además, le recomendamos que instale y configure las aplicaciones después de que FIPS esté habilitado, para evitar errores causados ​​por archivos de configuración antiguos que pueden contener opciones no compatibles con FIPS.

¿Cómo puedo ejecutar mi aplicación habilitada para FIPS en un contenedor de Ubuntu?

Para ejecutar aplicaciones habilitadas para FIPS en un contenedor, debe generar un contenedor que tenga las dependencias validadas por FIPS necesarias para la aplicación, además de ejecutar su contenedor en un host habilitado para FIPS de Ubuntu. La razón por la que es necesario un host habilitado para FIPS es porque existen dependencias entre paquetes criptográficos como OpenSSL y el kernel (por ejemplo, el generador aleatorio), y la habilitación de FIPS en Ubuntu es señalada por el kernel (a través de / proc / sys / crypto / fips_enabled).

Para generar un contenedor con los paquetes criptográficos FIPS, consulte las instrucciones de este artículo.

Resumiendo

Ubuntu permite ejecutar y desarrollar aplicaciones que cumplen con el estándar de protección de datos FIPS 140-2. El enfoque que seguimos proporciona un conmutador de todo el sistema que es transparente para las aplicaciones. En entornos empresariales, tiene suscripciones a Ubuntu Pro o Ubuntu Advantage disponibles para permitir el desarrollo y la ejecución de aplicaciones utilizando los paquetes validados por FIPS de Ubuntu.

Leave a Comment

You may also like

Más