web-dev-qa-db-fra.com

Pourquoi devrais-je signer mes validations git avec une clé GPG alors que j'utilise déjà une clé SSH pour m'authentifier lorsque je pousse?

Autrement dit, je me demande pourquoi aurait-on besoin de signer ses commits avec une clé GPG lors de la contribution à GitHub alors que l'on est déjà tenu de fournir une clé publique SSH?

41
Mahmoud Tantawy

Lorsque vous vous authentifiez auprès de Github avec votre clé SSH, cette authentification ne fait pas partie du référentiel de manière significative ou durable. Cela fait que Github vous donne accès pour le moment, mais cela ne prouve rien à quiconque n'est pas Github.

Lorsque vous signez GPG une balise git, cette balise fait partie du référentiel et peut être poussée vers d'autres copies du référentiel. Ainsi, les autres personnes qui clonent votre référentiel peuvent vérifier la balise signée, en supposant qu'elles ont accès à votre clé publique et ont raison de lui faire confiance.

Bien qu'il ne soit pas nécessaire de baliser et de signer GPG à chaque validation, il est sage de fournir des balises signées GPG au moins sur chaque validation qui correspond à une version publiée de votre code. Vous voudrez peut-être faire plus que cela, mais c'est le strict minimum de comportement responsable, car il fournit une assurance raisonnable que:

  • Le commit en question correspond vraiment à la version en question.

  • Le commit en question (et dans la mesure où nous faisons confiance aux hachages SHA1 utilisés dans l'historique de commit git, tous ses prédécesseurs) est venu du signataire (et, le cas échéant, de l'équipe du signataire).

  • Le commit en question n'a pas été falsifié après que le signataire l'a marqué.

Notez que j'ai dit "assurance raisonnable", pas "certitude parfaite" ... il y a d'autres choses qui peuvent mal tourner avec l'intégrité du logiciel. Cependant, fournir des tags signés au moins pour les versions officielles est un énorme pas dans la bonne direction.

38
HedgeMage