GitHub a proposé de discuter de l'implémentation du service Sigstore pour la vérification des paquets par signatures numériques et la tenue d'un registre public pour confirmer l'authenticité lors de la diffusion des versions. L'application de Sigstore permettra de réaliser un niveau de protection supplémentaire contre les attaques visant à substituer des composants et des dépendances logiciels (supply chain). Par exemple, cette modification apportera une protection aux codes sources des projets en cas de compromission du compte développeur d'une des dépendances dans NPM, permettant à un attaquant de créer une mise à jour de paquet avec un code malveillant.
GrĂące Ă ce nouveau niveau de protection, les dĂ©veloppeurs pourront lier le paquet formĂ© au code source utilisĂ© et Ă l'environnement de construction, permettant ainsi Ă l'utilisateur de s'assurer que le contenu du paquet correspond au contenu des codes sources dans le dĂ©pĂŽt principal du projet. L'utilisation de Sigstore simplifie considĂ©rablement le processus de gestion des clĂ©s et Ă©limine les complexitĂ©s liĂ©es Ă l'enregistrement, au rappel et Ă la gestion des clĂ©s cryptographiques. Sigstore est prĂ©sentĂ© comme un Ă©quivalent de Letâs Encrypt pour le code, fournissant des certificats pour la certification du code par des signatures numĂ©riques et des outils pour automatiser la vĂ©rification.
Au lieu de clĂ©s permanentes, Sigstore utilise des clĂ©s Ă©phĂ©mĂšres Ă durĂ©e de vie courte, qui sont gĂ©nĂ©rĂ©es sur la base des autorisations. Le matĂ©riel utilisĂ© pour la signature est enregistrĂ© dans un registre public protĂ©gĂ© contre toute modification, permettant de s'assurer que l'auteur de la signature est bien celui qu'il prĂ©tend ĂȘtre, et que la signature a Ă©tĂ© gĂ©nĂ©rĂ©e par le mĂȘme participant responsable des versions prĂ©cĂ©dentes. Pour garantir l'intĂ©gritĂ© et se protĂ©ger contre la falsification des donnĂ©es rĂ©troactivement, une structure arborescente appelĂ©e « arbre de Merkle » est utilisĂ©e, dans laquelle chaque branche vĂ©rifie toutes les branches et nĆuds sous-jacents grĂące Ă un hachage conjoint en arbre. En disposant d'un hachage final, l'utilisateur peut vĂ©rifier l'exactitude de l'ensemble de l'historique des opĂ©rations, ainsi que la vĂ©racitĂ© des Ă©tats prĂ©cĂ©dents de la base de donnĂ©es (le hachage de contrĂŽle racine du nouvel Ă©tat de la base est calculĂ© en tenant compte de l'Ă©tat antĂ©rieur).
Source : opennet.ru
