Sécuriser les transferts de code source avec Git Bundle et SHA-256
Lors du transfert des droits exclusifs sur un logiciel, les accords se contentent souvent d'énoncer que « le résultat a été transféré » sans détailler le contenu. Cela crée des risques de litiges : le client peut prétendre que des fonctionnalités manquent, tandis que le développeur affirme le contraire. Git Bundle et le hachage SHA-256 résolvent ce problème en empaquetant le dépôt dans un fichier unique avec un identifiant vérifiable.
Créer un Git Bundle : Un dump complet du dépôt
Git Bundle empaquette l'intégralité du dépôt — objets, branches, étiquettes, historique — dans un seul fichier binaire. Il s'agit d'un artefact autonome, indépendant de tout stockage externe.
Commande pour créer :
# Sauvegarde complète de tout le dépôt (toutes les branches, toutes les étiquettes)
git bundle create projet.bundle --all
Le fichier projet.bundle peut être cloné comme d'habitude :
git clone projet.bundle projet-restaure
Avantages par rapport à la copie de .git :
- Un seul fichier pour le stockage, le transfert et la signature.
- Historique complet des commits, auteurs et dates.
- Indépendance vis-à-vis des services d'hébergement Git.
Le bundle capture l'état au moment de la création, excluant toute modification ultérieure du dépôt d'origine.
Somme de contrôle : Un identifiant unique
Tout fichier peut être haché pour produire une empreinte immuable. SHA-256 est préféré : il est résistant aux collisions, contrairement à MD5/SHA-1.
Commandes pour Linux/macOS :
shasum -a 256 projet.bundle
Pour Windows :
certutil -hashfile projet.bundle SHA256
Le résultat est une chaîne de 64 caractères, par exemple a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e. Même la modification d'un seul bit change complètement le hachage.
Intégration dans les documents juridiques
Dans l'accord, spécifiez :
Le résultat du travail est transféré sous forme du fichier projet.bundle, somme de contrôle (SHA-256) : a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Signez-le avec une signature électronique via des systèmes de gestion électronique de documents, des services gouvernementaux (par exemple, Gosuslugi avec Goskey) ou une autorité de certification. La signature doit inclure un horodatage et une visualisation en PDF.
La signature électronique sécurise non seulement l'accord, mais incorpore également le hachage, liant le document au bundle spécifique.
Vérification en cas de litiges : Validation technique
En cas de désaccord :
- Un expert calcule le SHA-256 du
projet.bundlereçu. - Le compare avec le hachage de l'accord.
- Clone le bundle et analyse le dépôt : commits, fichiers, fonctions.
# Restauration pour examen
git clone projet.bundle projet-restaure
cd projet-restaure
git log --oneline -10 # Derniers commits
git show HEAD:src/main.py # Fichier spécifique
Si le hachage correspond, le code est authentique. Une divergence indique une altération.
Automatiser le processus
Script pour un usage régulier :
#!/bin/bash
NOM_DEPOT=projet
git bundle create ${NOM_DEPOT}.bundle --all
HACHAGE=$(shasum -a 256 ${NOM_DEPOT}.bundle | cut -d' ' -f1)
echo "SHA-256 : $HACHAGE"
# Insérer $HACHAGE dans l'accord et signer
Ajoutez une étape au CI/CD lors de la publication. Les agents IA peuvent générer automatiquement des accords avec des hachages.
Points clés
- Le bundle capture le dépôt Git complet : historique, branches, étiquettes — sans perte.
- SHA-256 garantit l'intégrité cryptographique : les collisions sont pratiquement impossibles.
- La signature électronique avec hachage rend l'accord techniquement prouvable en justice.
- Le processus prend <5 minutes : trois commandes + signature.
- Les risques de litiges sont minimisés : l'altération du bundle est instantanément détectable.
— Editorial Team
Aucun commentaire pour le moment.