Noticias

Ejecución de cargas de trabajo FIPS 140 en Ubuntu

Este es el primero 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 cubre 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 esto, incluido el hecho de que implementar la criptografía no es sencillo y, de hecho, los errores son fáciles de cometer. Pequeños errores, como reutilizar un nonce, pueden hacer que los datos cifrados por una aplicación sean irreconocibles. Al mismo tiempo, el panorama de la seguridad está cambiando tan rápidamente que el software seguro de hace 10 años ya no puede resistir los ataques que aprovechan las vulnerabilidades recién descubiertas. Por ejemplo, los algoritmos como RC4, que prevalecían en los primeros días del comercio electrónico, ahora se consideran rotos.

¿Cómo podemos estar seguros de que estas aplicaciones y bibliotecas criptográficas implementan correctamente la criptografía y siguen las mejores prácticas como: B. ¿no utilizar la criptografía heredada? Dado que la criptografía es sensible para los gobiernos de todo el mundo, todavía no existe una respuesta ampliamente aceptada. Para abordar este problema en los EE. UU., NIST desarrolló FIPS 140, un estándar de protección de datos en el que nos centraremos 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, una aplicación o biblioteca que implementa criptografía. El estándar tiene varios niveles de seguridad, desde el nivel 1 al 4, donde el nivel 1 se aplica a las implementaciones de software, mientras que el nivel 2 y más se aplica al hardware especializado además del software. En el nivel 1, el estándar requiere el uso de algoritmos y modos criptográficos seguros conocidos para la seguridad de los datos y su separación lógica de la aplicación. También 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 garantiza que la criptografía se implemente utilizando diseños seguros conocidos, siga ciertas mejores prácticas, no involucre algoritmos oscuros y que esté debidamente autenticada.

¿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 se espera que sea el único mecanismo de certificación criptográfico activo del NIST después de septiembre de 2021. Para los propósitos de este artículo, nos referiremos a FIPS 140-2 ya que es la versión más utilizada actualmente, y usaremos el acrónimo FIPS para referirnos al estándar.

¿Qué significa cumplir con FIPS?

Hay muchas terminologías utilizadas en el cumplimiento de FIPS que a veces pueden resultar confusas. En aras de la simplicidad, cuando hablamos de una aplicación compatible con FIPS, nos referimos a que la aplicación utiliza un módulo criptográfico validado por FIPS, como una biblioteca, y lo utiliza 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 y proporciona orientación sobre aspectos específicos de la criptografía. Por ejemplo, las instrucciones para el módulo OpenSSL de Ubuntu 18.04 establecen que el algoritmo criptográfico AES-XTS solo se puede utilizar para cifrar dispositivos de almacenamiento.

¿Quién puede beneficiarse de FIPS?

Al comprar software para una organización promedio, no es de esperar un análisis criptográfico detallado del software. Para un no experto, es intimidante leer sobre las funciones, 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 revisable y potencialmente cualquiera puede revisar las opciones que contiene, en la práctica, las personas calificadas para realizar dicha revisión son un pequeño grupo de personas. Un programa de validación como FIPS 140 asegura que los paquetes que contienen criptografía no tomen decisiones cuestionables, como usar criptografía no aprobada o implementar la suya propia.

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

Por lo tanto, la organización de adquisiciones tiene la seguridad de que las aplicaciones y bibliotecas validadas siguen ciertos principios de buen diseño y no contienen 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 proporcione sistemas y servicios en la nube para su uso por parte de agencias federales, 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 introducido fuera del sector público en industrias donde la seguridad de los datos está muy regulada, como: B. Servicios financieros, atención médica (HIPAA) y en certificaciones internacionales como Common Criteria.

FIPS en Ubuntu

Enfoque de Ubuntu para las certificaciones FIPS

De forma predeterminada, Ubuntu se envía con paquetes criptográficos basados ​​en las fuentes ascendentes y no está configurado para cumplir con ningún estándar nacional. La herramienta Ubuntu Advantage (et al.) Permite configurar el sistema para cumplir con el estándar FIPS a través de 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 ciertos paquetes binarios. En Ubuntu, seleccionamos un conjunto de paquetes criptográficos del repositorio principal que conforman nuestro conjunto criptográfico principal. Este conjunto de paquetes se prueba y se valida para los requisitos de FIPS 140-2 para cada versión de Ubuntu LTS. Los paquetes validados por FIPS se instalan durante la activació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, cuando surgen vulnerabilidades, es posible que las correcciones críticas deban ingerirse más rápido que un ciclo de certificación. Para hacer esto, ofrecemos dos formas de consumir paquetes validados: un flujo llamado ‘fips’, en el que están presentes los paquetes exactos validados por NIST; y otro flujo llamado ‘fips-updates’ en el que 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 las pruebas tempranas de la aplicación. Ambas transmisiones se vuelven a validar 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:

paquete descripción Certificado FIPS 140-2
Fips de imagen de Linux La API de cifrado del kernel de Linux. N.º 3928
libssl1.1 El backend criptográfico de OpenSSL. Esto también incluye la criptografía necesaria para OpenSSH. N.º 3966
libgcrypt20 La biblioteca criptográfica libgcrypt. N.º 3902
cisne fuerte StrongSwan, 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 OpenSSH como el cliente OpenSSH, pero desde el 20 de abril ya no contienen criptografía en el sentido de la certificación FIPS 140-2 y la usan desde el paquete OpenSSL.

Tenga en cuenta que el kernel de Linux en sí es un módulo criptográfico validado en el sentido de FIPS porque no solo contiene la criptografía utilizada por el software (por ejemplo, Strongswan usa la criptografía que proporciona 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. Debido a esto, 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 posible, los desarrolladores y las personas pueden acceder a FIPS 140 a través de una suscripción personal gratuita. Para el desarrollo empresarial y la ejecución de cargas de trabajo con FIPS, los paquetes validados están disponibles con Ubuntu Pro o una suscripción a Ubuntu Advantage.

Las siguientes instrucciones habilitan 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: activar 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 con respecto a la activació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 activación de FIPS. Puedes comprobar su estado con 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 de criptografía centrales. A partir de este momento, puede iniciar aplicaciones como lo haría en un sistema no habilitado para FIPS. Sin embargo, tenga en cuenta que las aplicaciones no diseñadas para FIPS pueden generar un error, por ejemplo, si se utiliza un algoritmo no aprobado. También recomendamos que instale y configure las aplicaciones después de que se haya habilitado FIPS para evitar errores causados ​​por archivos de configuración antiguos que pueden contener opciones que no son 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, además de ejecutar su contenedor en un host habilitado para FIPS de Ubuntu, debe generar un contenedor que tenga las dependencias validadas por FIPS requeridas para la aplicación. La razón de la necesidad de un host habilitado para FIPS es que existen dependencias entre los paquetes criptográficos como OpenSSL y el kernel (por ejemplo, el generador de números aleatorios) y la activació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 de criptografía FIPS, consulte las instrucciones de este artículo.

Resumir

Ubuntu le permite ejecutar y desarrollar aplicaciones que cumplen con el estándar de protección de datos FIPS 140-2. El enfoque que estamos adoptando ofrece un conmutador de todo el sistema que es transparente para las aplicaciones. En entornos corporativos, las suscripciones a Ubuntu Pro o Ubuntu Advantage están disponibles para permitirle desarrollar y ejecutar aplicaciones con los paquetes validados por FIPS de Ubuntu.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba