Principaux enseignements
- La conformité FIPS dépend de l'environnement complet du système d'exploitation, et pas seulement de l'installation d'une bibliothèque cryptographique.
- Les « conteneurs FIPS » ne sont conformes que si le noyau hôte fonctionne en mode FIPS validé.
- Les modules cryptographiques boulonnés créent souvent une instabilité et une complexité par rapport à la cryptographie native du système d'exploitation.
Conformité à la norme la conformité FIPS dans les environnements Linux est souvent plus compliqué qu'il n'y paraît. De nombreuses organisations s'appuient sur des modules cryptographiques tiers ou des images de conteneurs qui prétendent prendre en charge la norme FIPS, mais ces configurations peuvent ne pas répondre aux exigences du programme de validation FIPS 140-3 ou ne garantissent pas une véritable conformité FIPS 140-3.
La différence entre les implémentations FIPS natives et la cryptographie bolt-on peut faire la différence entre réussir un audit de conformité ou échouer.
FIPS natif vs modules cryptographiques Drop-In
Nous avons récemment discuté avec un client utilisant CentOS 7 qui avait besoin d'une cryptographie validée pour prendre en charge plusieurs clients fédéraux et répondre aux exigences strictes de exigences de cryptographie FedRAMP. CentOS n'étant pas validé FIPS, ils ont fait appel à des fournisseurs tiers OpenSSL et Java FIPS.
Ils ont depuis migré vers AlmaLinux 9 ESU de TuxCare, validé FIPS (un environnement Linux validé FIPS) et ont été ravis de constater que, grâce à la configuration de la cryptographie à l'échelle du système, depuis le noyau jusqu'aux applications, ils n'avaient plus besoin d'acheter de logiciel supplémentaire pour répondre aux exigences de la norme FIPS 140-3, puisque le système d'exploitation s'en chargeait pour eux. Passer à ESU, qui ne coûte que 159 $ par an, au lieu d'un logiciel qui peut coûter entre 100 $ par mois et 25 000 $ par an, est une évidence !
Ils ont également remarqué que leur base de données MySQL fonctionnait de manière plus fiable grâce à cette intégration étroite et à sa connexion à des bibliothèques système telles qu'OpenSSL, plutôt qu'à des logiciels ajoutés qui n'étaient pas spécialement conçus pour le système d'exploitation. En effet, ils avaient déjà constaté des pannes de serveur lorsqu'ils tentaient de fonctionner en mode FIPS. Le passage à ESU a rendu possible leur déploiement FedRAMP.
Plusieurs clients nous ont indiqué que l'utilisation des logiciels intégrés au système d'exploitation AlmaLinux plutôt que des versions dérivées tierces leur avait permis d'obtenir de meilleures performances et avait facilité la migration depuis des systèmes d'exploitation plus anciens.
Les certificats FIPS d'AlmaLinux 9 ESU de TuxCare sont basés sur la norme FIPS 140-3, et non sur la norme 140-2 antérieure utilisée par la plupart des logiciels complémentaires. Les certificats FIPS 140-2 étant désormais relégués au rang d'anciennes normes, ils sont de moins en moins acceptés pour les nouveaux marchés publics fédéraux. Avec la solution de TuxCare, cela ne pose plus de problème : votre infrastructure est à l'épreuve du temps grâce à la cryptographie validée FIPS 140-3.
Mythologie des conteneurs
Nous avons également rencontré des personnes à qui l'on a vendu des « images de conteneurs FIPS », souvent commercialisées sous le nom de conteneurs FIPS – qui ne fonctionnent même pas dans un environnement d'exploitation (OE) testé par un laboratoire de test cryptographique et de sécurité (CSTL) accrédité et qui, de ce fait, ne figurent sur aucun certificat FIPS et ne sont pas approuvées par le NIST. Elles ne sont donc pas valides et peuvent même ne pas fonctionner.
Comme les conteneurs héritent du noyau du système d'exploitation hôte, ils doivent fonctionner sur un hôte doté d'un noyau validé FIPS fonctionnant en mode FIPS. Cet environnement expose le /proc/sys/crypto/fips_{enabled,name,version} que les bibliothèques et les applications utilisent pour détecter et appliquer le mode FIPS. Si votre système d'exploitation hôte ne fonctionne pas en mode FIPS, vos conteneurs ne le feront pas non plus.
Ceci est particulièrement important pour les conteneurs qui exécutent des VPN tels que IPSEC ou OpenVPN, car ces protocoles utilisent l'API cryptographique du noyau. Si vous utilisez un noyau hôte incorrect, votre VPN ne sera pas conforme et ne pourra pas se connecter aux réseaux du DoD.
L'exécution d'OpenSSL 3.1.2 dans un conteneur sur un hôte Ubuntu 24.04 (avec ou sans FIPS activé) n'est pas un environnement valide : vous ne passerez pas l'audit FedRAMP et vous ne pourrez pas vendre votre solution aux gouvernements américain ou canadien.
Comment AlmaLinux applique la norme FIPS à l'échelle du système
Le noyau et diverses bibliothèques et composants système (GnuTLS, Libgcrypt, NSS, NSPR, OpenSSL, libkcapi, nettle…) d'AlmaLinux 9 ESU ayant été validés FIPS, le système d'exploitation fournit l'environnement validé plutôt que des logiciels spécifiques. C'est l'un des avantages de l'exécution d'une distribution Linux validée FIPS, où l'environnement cryptographique est intégré au système d'exploitation lui-même.
Par exemple, CentOS Linux n'a jamais été validé par la norme FIPS, ce qui a conduit les utilisateurs à tenter d'obtenir une certaine forme de « conformité » FIPS en utilisant des modules complémentaires et des configurations et réglages logiciels complexes qui, en général, ne faisaient que rendre le système instable.
Grâce aux politiques cryptographiques à l'échelle du système d'AlmaLinux, la cryptographie est configurée de manière centralisée en un seul endroit. Cela évite d'avoir à configurer séparément chaque service ou application. C'est aussi simple que d'installer à l'aide de la commande fips=1 ou en exécutant fips-mode-setup –enable. Avec un noyau noyau compatible FIPS, vous pouvez configurer automatiquement OpenSSH, Kerberos, bind9, etc. de manière approuvée. Pour plus d'informations, consultez les fichiers sous /usr/share/crypto-policies/FIPS/.
C'est à l'usage qu'on peut juger de la qualité d'une chose.
Dans le cadre de nos tests internes sur nos modules FIPS (une exigence pour ajouter Rocky Linux 9.6 en tant qu'OE approuvé par le fournisseur à nos certificats FIPS), qui sont traditionnellement écrits en C, nous avons décidé de tester également certains des produits Endless Lifecycle Support for Runtimes de TuxCare par rapport à nos modules FIPS. Nous avons créé un certain nombre de scripts en langage interprété qui prouvent que le système d'exploitation et son cryptage centralisé permettent à ces logiciels de fonctionner conformément aux normes FIPS, en limitant les algorithmes et protocoles disponibles pour les applications à ceux approuvés par le programme NIST, sans avoir à modifier les programmes eux-mêmes.
Valider le bon fonctionnement des applications réelles dans cet environnement et maintenir la conformité à la norme la conformité à la norme FIPS 140-3, nous avons testé plusieurs environnements d'exécution couramment utilisés dans les déploiements d'entreprise, qui sont détaillés ci-dessous. De plus, nous pouvons fournir des scripts de test et une assistance technique aux clients qui en font la demande.
.NET
Nous avons constaté que, dans certains cas, la bibliothèque System.Security.Cryptography intégrée à .NET n'applique pas pleinement la conformité FIPS 140-3 sur les hôtes Linux. Nous recommandons donc de passer à l'appel natif d'OpenSSL.
Java
OpenJDK dispose d'un certain nombre de fournisseurs de cryptographie, chacun présentant ses propres faiblesses en matière de conformité FIPS. Nous recommandons SunPKCS11-NSS-FIPS sur les distributions Enterprise Linux, mais même dans ce cas, vous devez vous assurer de vérifier les indicateurs FIPS utilisés par NSS plutôt que de simplement bloquer et renvoyer une erreur.
Python
Le module de cryptographie de Python utilise les appels natifs de la bibliothèque OpenSSL, il fonctionne donc dès son installation.
PHP
PHP utilise également le système OpenSSL, mais présente certaines particularités dont vous devez tenir compte. Par exemple, il répertorie davantage de courbes elliptiques prises en charge que celles renvoyées par OpenSSL en mode FIPS, principalement parce que « prises en charge » signifie que PHP les reconnaît, plutôt que d'être autorisé à les utiliser. En général, vous devez nommer spécifiquement les chiffrements et les hachages que vous souhaitez utiliser et dont vous savez qu'ils sont conformes à la norme FIPS.
Node.js
Le package cryptographique Node.js se lie à nouveau au système OpenSSL et effectue des appels de bibliothèque tels que EVP_PKEY_keygen() , ce qui fonctionne très bien.
Réflexions finales
La conformité FIPS ne se limite pas à l'installation d'une bibliothèque cryptographique. Elle dépend de l'ensemble de l'environnement d'exploitation, du noyau aux bibliothèques d'exécution sur lesquelles s'appuient vos applications.
La validation FIPS native au niveau du système élimine la complexité et l'instabilité souvent associées à la cryptographie ajoutée.
Si votre environnement dépend de la norme FIPS pour les contrats gouvernementaux ou les cadres de conformité tels que FedRAMP, l'approche la plus sûre consiste à commencer par un système d'exploitation Linux validé FIPS qui offre une cryptographie validée dès le départ et prend en charge la norme moderne exigences de conformité FIPS 140-3 .
Pour plus d'informations sur FIPS et les mises à jour de sécurité étendues, consultez notre FIPS pour AlmaLinux .






