Introduction d'OpenPubKey, un protocole de vérification cryptographique des objets

La Linux Foundation, BastionZero et Docker prĂ©sentent un nouveau projet ouvert, OpenPubKey, qui dĂ©veloppe un protocole cryptographique du mĂȘme nom pour la certification de signatures numĂ©riques d'objets variĂ©s. La technologie a Ă©tĂ© conçue comme un projet commun entre BastionZero et Docker, visant Ă  simplifier la certification des images de conteneurs Docker par des signatures numĂ©riques pour Ă©viter leur substitution et confirmer leur construction par le crĂ©ateur dĂ©clarĂ©. Le projet sera dĂ©veloppĂ© sur une plateforme neutre sous l'Ă©gide de la Linux Foundation, ce qui exclut la dĂ©pendance Ă  des entreprises commerciales spĂ©cifiques et facilite la collaboration avec des participants externes. L'implĂ©mentation de rĂ©fĂ©rence d'OpenPubKey est Ă©crite en Go et publiĂ©e sous la licence Apache 2.0.

Les capacitĂ©s d'OpenPubKey ne se limitent pas seulement aux images de conteneurs. La technologie peut ĂȘtre utilisĂ©e pour certifier l'origine de tout type de ressource, prĂ©venir la substitution de dĂ©pendances et amĂ©liorer la sĂ©curitĂ© des canaux de distribution de jeux de donnĂ©es. Par exemple, la technologie est applicable Ă  la certification de constructions de logiciels, de messages individuels et de commits. Les crĂ©ateurs de signatures n'ont besoin que d'un compte sur un service supportant OpenID, tandis que les consommateurs ont la possibilitĂ© de vĂ©rifier les signatures jointes et de confirmer leur lien avec l'identifiant OpenID dĂ©clarĂ©.

En termes de fonction, OpenPubKey ressemble à la solution Sigstore créée par Google et précédemment transférée à la Linux Foundation, mais elle se distingue par une simplification substantielle de l'implémentation, de l'utilisation et de la maintenance, grùce à l'élimination des composants serveurs centralisés chargés de gérer un registre public confirmant l'authenticité des modifications (transparency log) et à la fourniture des services des autorités de certification.

Au lieu de déployer ses propres autorités de certification, OpenPubKey utilise l'authentification basée sur la technologie OpenID et associe les signatures créées à des fournisseurs existants d'OpenID Connect. En d'autres termes, OpenPubKey permet d'associer des clés cryptographiques à des utilisateurs spécifiques en utilisant des fournisseurs d'OpenID Connect (IdP) au lieu d'autorités de certification. La technologie est entiÚrement compatible avec les fournisseurs existants d'OpenID, tels que GitHub, Azure/Microsoft, Okta, OneLogin, Keycloak et Google, et ne nécessite aucune modification de leur part (le type de ID Token standard fourni par le fournisseur est utilisé, permettant ainsi d'implémenter OpenPubKey uniquement par des modifications du cÎté du client OpenID Connect).

Le token dĂ©livrĂ© par le fournisseur OpenID est transformĂ© en certificat, qui lie cryptographiquement l'identifiant dans OpenID Connect Ă  la clĂ© publique. Ensuite, l'utilisateur utilise la clĂ© gĂ©nĂ©rĂ©e pour signer toutes donnĂ©es, et ces signatures peuvent ensuite ĂȘtre vĂ©rifiĂ©es pour leur relation avec l'identifiant dans OpenID Connect. OpenPubKey utilise des clĂ©s Ă©phĂ©mĂšres dont la durĂ©e de vie est limitĂ©e — les clĂ©s sont gĂ©nĂ©rĂ©es lors de la connexion via OpenID et sont supprimĂ©es Ă  la fin de la session avec le fournisseur OpenID.

L'algorithme approximatif de création de signature en utilisant OpenPubKey :

  • Connexion via un fournisseur OpenID (Google, GitHub, Microsoft, etc.).
  • Demande de token d'identification auprĂšs du fournisseur OpenID.
  • Retour du token, signĂ© par la clĂ© du fournisseur et incluant un champ « nonce » avec des donnĂ©es alĂ©atoires transmises lors de la demande (un hachage SHA3 de la clĂ© publique est transmis).
  • Utilisation du token reçu cĂŽtĂ© utilisateur comme certificat, incluant des informations sur la clĂ©.
  • Attachement du token Ă  la signature, similaire Ă  un certificat.

La vĂ©rification consiste Ă  vĂ©rifier si le jeton joint a Ă©tĂ© signĂ© par le fournisseur OpenID et Ă  confirmer la validitĂ© de la signature numĂ©rique pour la ressource Ă  l'aide de la clĂ© publique. Cela permet de s'assurer que la ressource a Ă©tĂ© signĂ©e avec l'identifiant prĂ©sent dans le certificat et que cela est confirmĂ© par la signature du fournisseur OpenID. Par exemple, une entitĂ© signante peut obtenir un jeton signĂ© par le fournisseur OpenID Google, contenant des informations que l'identitĂ© a Ă©tĂ© vĂ©rifiĂ©e comme Ă©tant bob@gmail.com et utilise la clĂ© publique 0x54A5
FF. Ensuite, lors de la rĂ©ception d'un message signĂ© avec la mĂȘme clĂ©, l'entitĂ© peut utiliser le jeton signĂ© par le fournisseur pour vĂ©rifier que la clĂ© bob@gmail.com — 0x54A5
FF appartient bien Ă  bob@gmail.com et que le message a effectivement Ă©tĂ© signĂ© par bob@gmail.com.

La simplification de l'architecture a Ă©tĂ© rĂ©alisĂ©e grĂące Ă  certains compromis (par exemple, dĂ©pendance Ă  des fournisseurs OpenID externes et absence de journal des modifications avec hachage hiĂ©rarchique), qui peuvent ĂȘtre acceptables dans certaines situations et inacceptables dans d'autres. Pour rĂ©duire la dĂ©pendance aux fournisseurs OpenID, dont la compromission ou les actions du personnel peuvent discrĂ©diter le systĂšme (par exemple, un fournisseur piratĂ© pourrait dĂ©livrer une clĂ© fictive Ă  un tiers), il est proposĂ© d'utiliser un maillon supplĂ©mentaire, mais non obligatoire, MFA-Cosigner (Multi-Factor Authentication Cosigner) pour une authentification multifactorielle (le jeton doit ĂȘtre signĂ© non seulement par le fournisseur principal, mais Ă©galement par un service d'authentification indĂ©pendant confirmant l'utilisateur).

Parmi les points faibles d'OpenPubKey, on note Ă©galement la prĂ©sence d'informations externes pouvant ĂȘtre utilisĂ©es pour suivre l'activitĂ© pendant une longue pĂ©riode, et ce, indĂ©pendamment des renommements (rĂ©utilisation d'un jeton d'identification au lieu d'un nouveau certificat). L'association directe aux clĂ©s OpenID Connect lors de la vĂ©rification exclut la partie serveur, mais complique considĂ©rablement la mise en Ɠuvre cĂŽtĂ© client et laisse plus d'espace de manƓuvre pour rĂ©aliser des attaques (surface d'attaque) sur le client, par exemple, en raison de la nĂ©cessitĂ© pour le client d'effectuer la rotation des clĂ©s. L'absence de journal des modifications ne permet pas au client de suivre d'Ă©ventuelles fuites de clĂ©s.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster