Khalev a écritCe qu'il a voulu dire je pense c'est que le hash SHA1 que tu compares avec celui que tu calculse en local, il provient bien de quelque part. Et si le hash fourni a été modifié pour correspondre au hash du code source modifié? (Parce que effectivement, trouver une collision avec des sources différentes prendrai très très longtemps, à part à être extrèmement chanceux, sans compter qu'un simple diff peut réduire à néant tout ton boulot).
Si le système est secure, le hash est chiffré avec une clef privée avant d'être envoyé. Ainsi, seul le détenteur de la clef privée peut chiffrer le hash, mais tout le monde peut déchiffrer à l'aide de clefs publiques disponibles pour quiconque (chiffrement asymétrique). Il faut juste s'assurer que les clefs publiques soient bien celles de l'auteur voulu (authentification de l'entité), ce qui est le rôle des certificats PKI ou du Web of Trust. Cf les
MAC.
En l'occurence, je connais pas git (donc pas sûr de ce que je dis là), mais je crois que git s'y prend autrement, en empêchant tout simplement de modifier manuellement les hashs, c'est git qui les calcule automatiquement.