Les entreprises Red Hat et Google, en collaboration avec l'Université de Purdue, ont lancé le projet Sigstore, visant à créer des outils et des services pour la vérification des logiciels à l'aide de signatures numériques et la tenue d'un registre public pour confirmer l'authenticité (transparency log). Le projet sera développé sous l'égide de l'organisation à but non lucratif Linux Foundation.
Le projet proposé permettra d'améliorer la sécurité des canaux de distribution de logiciels et de se protéger contre les attaques visant à remplacer des composants et des dépendances logiciels (supply chain). L'une des principales préoccupations en matiÚre de sécurité dans le logiciel libre est la complexité de la vérification de la source d'obtention du programme et de la vérification du processus de construction. Par exemple, pour vérifier l'intégrité d'une version, la plupart des projets utilisent des hachages, mais souvent les informations nécessaires à la vérification de l'authenticité sont stockées sur des systÚmes non sécurisés et dans des dépÎts de code publics, dont la compromission permet aux attaquants de remplacer les fichiers nécessaires à la vérification et d'introduire des modifications malveillantes sans éveiller les soupçons.
Seule une petite partie des projets utilise des signatures numĂ©riques lors de la distribution des versions en raison des difficultĂ©s de gestion des clĂ©s, de distribution des clĂ©s publiques et de rĂ©vocation des clĂ©s compromises. Pour que la vĂ©rification ait un sens, il est Ă©galement nĂ©cessaire d'organiser un processus fiable et sĂ©curisĂ© de distribution des clĂ©s publiques et des sommes de contrĂŽle. MĂȘme en prĂ©sence d'une signature numĂ©rique, de nombreux utilisateurs ignorent la vĂ©rification, car cela nĂ©cessite de passer du temps Ă comprendre le processus de vĂ©rification et Ă dĂ©terminer quelle clĂ© mĂ©rite confiance.
Sigstore est prĂ©sentĂ© comme l'Ă©quivalent de Let's Encrypt pour le code, fournissant des certificats pour l'attestation du code numĂ©rique et des outils pour automatiser la vĂ©rification. Avec Sigstore, les dĂ©veloppeurs peuvent crĂ©er des signatures numĂ©riques pour des artefacts liĂ©s Ă l'application, tels que des fichiers de version, des images de conteneurs, des manifestes et des exĂ©cutables. Une caractĂ©ristique de Sigstore est que le matĂ©riel utilisĂ© pour la signature est reflĂ©tĂ© dans un journal public protĂ©gĂ© contre les modifications, qui peut ĂȘtre utilisĂ© pour la vĂ©rification et l'audit.
Au lieu de clĂ©s permanentes, Sigstore utilise des clĂ©s Ă©phĂ©mĂšres Ă courte durĂ©e de vie, gĂ©nĂ©rĂ©es sur la base d'autorisations confirmĂ©es par des fournisseurs OpenID Connect (lors de la gĂ©nĂ©ration des clĂ©s pour la signature numĂ©rique, le dĂ©veloppeur s'identifie via le fournisseur OpenID en liant son email). L'authenticitĂ© des clĂ©s est vĂ©rifiĂ©e via un journal public centralisĂ©, permettant ainsi de s'assurer que le signataire est bien celui qu'il prĂ©tend ĂȘtre et que la signature a Ă©tĂ© créée par le mĂȘme participant qui a gĂ©rĂ© les versions prĂ©cĂ©dentes.
Sigstore propose Ă la fois un service prĂȘt Ă l'emploi et un ensemble d'outils permettant de dĂ©ployer des services similaires sur son propre matĂ©riel. Le service est gratuit pour tous les dĂ©veloppeurs et fournisseurs de logiciels, et est dĂ©ployĂ© sur une plateforme neutre â la Linux Foundation. Tous les composants du service sont ouverts, Ă©crits en langage Go et distribuĂ©s sous la licence Apache 2.0.
Parmi les composants en cours de développement, on peut noter :
- Rekor â une implĂ©mentation du journal pour le stockage des mĂ©tadonnĂ©es certifiĂ©es par des signatures numĂ©riques, reflĂ©tant des informations sur les projets. Pour garantir l'intĂ©gritĂ© et protĂ©ger contre la falsification des donnĂ©es a posteriori, une structure arborescente appelĂ©e "Arbre de Merkle" est utilisĂ©e, dans laquelle chaque branche vĂ©rifie toutes les branches et nĆuds en dessous, grĂące Ă un hachage conjoint (arborescent). Avec un hachage final, l'utilisateur peut s'assurer de l'exactitude de l'ensemble de l'historique des opĂ©rations, ainsi que de la justesse des Ă©tats passĂ©s de la base de donnĂ©es (le hachage racine du nouvel Ă©tat de la base est calculĂ© en tenant compte de l'Ă©tat prĂ©cĂ©dent). Pour la vĂ©rification et l'ajout de nouvelles entrĂ©es, une API Restful ainsi qu'une interface cli sont fournies.
- Fulcio (SigStore WebPKI) est un systÚme pour la création d'autorités de certification (Root-CA) qui délivrent des certificats à courte durée de vie basés sur l'e-mail, authentifiés via OpenID Connect. La durée de vie du certificat est de 20 minutes, durant lesquelles le développeur doit créer une signature numérique (si le certificat tombe entre les mains d'un attaquant par la suite, il sera déjà expiré).
- Cosign (Container Signing) est un outil pour générer des signatures pour des conteneurs, vérifier les signatures et héberger des conteneurs signés dans des dépÎts compatibles avec l'OCI (Open Container Initiative).
Source : opennet.ru
