Comment prouver que votre code existait à une date précise (sans le révéler)
La tâche est simple à énoncer mais difficile à résoudre correctement : prouver qu’un commit spécifique — ou une base de code entière — existait à une date donnée, sans publier votre code source ni vous appuyer sur des journaux qu’un tribunal pourrait écarter comme étant intéressés. Ce guide explique précisément comment y parvenir avec Timestamp GIT, une application GitHub gérée qui ancre les empreintes de commits Git dans la blockchain Bitcoin à l’aide du protocole OpenTimestamps.
À la fin, vous disposerez d’un horodatage automatisé et à divulgation nulle de connaissance pour votre historique Git. Chaque commit surveillé reçoit un reçu cryptographique .ots, une page de vérification publique et une voie vers des preuves d’antériorité recevables en justice — le tout sans installer les outils OpenTimestamps ni manipuler vous-même des transactions Bitcoin.
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un compte GitHub.
- Un dépôt à horodater — public ou privé.
- L’accès pour installer l’application GitHub Timestamp GIT depuis timestampgit.dev.
- Une aisance de base avec
git commitetgit push. Aucune connaissance en cryptographie ou en blockchain n’est requise. - Pour le mode Enterprise ZK : un fichier de workflow GitHub Actions fourni par Timestamp GIT, plus un dépôt cible où les preuves seront écrites.
- Facultatif : si vous avez besoin d’une configuration air-gap ou auto-hébergée, une licence Docker Timestamp GIT.
La tarification s’adapte au cas d’usage : les dépôts publics peuvent utiliser l’offre gratuite, les dépôts privés sont couverts par Pro Agency à 49 $/mois, et le mode Enterprise ZK avec GitHub Actions démarre à 199 $/mois.
Pas à pas : configurer l’horodatage automatique
Étape 1 : Installer l’application GitHub Timestamp GIT
Rendez-vous sur timestampgit.dev et installez l’application GitHub Timestamp GIT depuis le GitHub Marketplace.
Les autorisations que vous accordez dépendent de votre mode :
- Mode Standard : Timestamp GIT a besoin d’un accès en lecture seule au dépôt source, car GitHub ne propose pas d’autorisation « empreinte de commit uniquement ». Il ne lit que l’empreinte du commit HEAD, jamais le contenu des fichiers.
- Mode Enterprise ZK : Timestamp GIT n’a besoin d’aucun accès en lecture au dépôt source. Vous avez simplement besoin d’un accès en écriture à un dépôt cible distinct où les fichiers de preuve seront conservés.
Dans les deux modes, le dépôt cible reçoit une branche dédiée ou un dépôt fantôme contenant les preuves.
Étape 2 : Sélectionner les dépôts à surveiller
Après l’installation, ouvrez le tableau de bord des dépôts sur timestampgit.dev/repos. Vous verrez les dépôts que vous pouvez surveiller.
Sélectionnez les dépôts sources qui doivent être horodatés automatiquement. Si vous utilisez un dépôt fantôme distinct pour les preuves, choisissez-le comme cible.
Étape 3 : Choisir votre mode de déploiement
Timestamp GIT propose deux modes :
- Mode Standard : l’application GitHub détecte automatiquement les nouveaux commits via des webhooks et ne lit que l’empreinte du commit.
- Mode Enterprise ZK : une courte GitHub Action s’exécute sur votre propre infrastructure et n’envoie que l’empreinte du commit à l’API Timestamp GIT. Votre code source ne quitte jamais votre environnement.
Pour la plupart des équipes, le mode Standard est le chemin le plus rapide. Pour une conformité stricte ou des environnements à source privée, le mode Enterprise ZK est l’option à divulgation nulle de connaissance la plus robuste.
Étape 4 : Pour le mode Enterprise ZK, ajouter le workflow GitHub Actions
Si vous choisissez le mode Enterprise ZK, Timestamp GIT fournit un fichier de workflow de 12 lignes. Une version simplifiée ressemble à ceci :
# .github/workflows/timestamp-git.yml
name: timestamp-git
on:
push:
branches: ["**"]
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Send commit hash to Timestamp GIT
env:
TIMESTAMP_GIT_SIGNED_URL: ${{ secrets.TIMESTAMP_GIT_SIGNED_URL }}
run: |
curl -f -X POST "$TIMESTAMP_GIT_SIGNED_URL"
Le workflow réel utilise une URL signée générée dans le tableau de bord Timestamp GIT. Cette URL transporte la valeur HMAC et l’identifiant du commit, de sorte que l’Action ne manipule jamais le code source — uniquement l’empreinte.
Étape 5 : Faire un commit
Créez maintenant un commit normal et poussez-le vers le dépôt surveillé :
git add .
git commit -m "feat: add rate limiter"
git push origin main
En mode Standard, l’application GitHub détecte le nouveau commit via un webhook. En mode Enterprise ZK, la GitHub Action envoie l’empreinte du commit à l’API Timestamp GIT dès que le push a lieu.
Étape 6 : Attendre le processus par lots nocturne
Timestamp GIT n’ancre pas chaque commit individuellement en temps réel. Au lieu de cela, un worker cron nocturne s’exécute à minuit :
- Il collecte toutes les empreintes de commits en attente.
- Il les regroupe dans des fichiers manifestes quotidiens.
- Il construit un arbre de Merkle.
- Il crée des preuves OpenTimestamps à l’aide de calendriers OTS publics.
- Il ancre la racine de Merkle dans la blockchain Bitcoin.
La confirmation Bitcoin prend normalement environ trois heures. Après cela, la preuve est immuable — aucune entité, y compris Timestamp GIT ou vous-même, ne peut la modifier.
Étape 7 : Récupérer votre preuve
Une fois le processus nocturne terminé, Timestamp GIT pousse le manifeste et les fichiers de reçu .ots vers votre branche d’horodatage dédiée ou votre dépôt fantôme.
Vous pouvez également télécharger les fichiers de preuve directement depuis le tableau de bord Timestamp GIT. Les principaux artefacts sont :
- Le fichier manifeste quotidien contenant les empreintes des commits.
- Le fichier de reçu
.otspour chaque lot ancré. - Les métadonnées d’audit indiquant les informations sur le bloc et la transaction Bitcoin.
Comment confirmer que cela a fonctionné (vérification)
La vérification est l’étape où Timestamp GIT transforme une empreinte Git en quelque chose que vous pouvez montrer à un avocat, un auditeur ou un tribunal.
Consulter la page de statut du dépôt
Ouvrez https://timestampgit.dev/status/{user}/{repo}. Ce tableau de bord public affiche :
- Le dernier bloc Bitcoin ancré et les détails de la transaction.
- La date d’ancrage la plus ancienne pour le dépôt.
- La régularité de l’horodatage quotidien.
- Une carte thermique calendaire des commits ancrés.
- Un CSV d’audit et un certificat PDF téléchargeables.
Exécuter la vérification Merkle dans le navigateur
Pour un jour spécifique, ouvrez https://timestampgit.dev/verification/{user}/{repo}/{date}. Cette page déroule la vérification de la chaîne de Merkle étape par étape.
Tous les calculs s’effectuent localement dans votre navigateur. Timestamp GIT ne voit jamais ce que vous vérifiez — c’est un flux de vérification à divulgation nulle de connaissance.
Télécharger les documents officiels
Utilisez le tableau de bord ou l’API pour télécharger :
- Un certificat PDF pour une date spécifique.
- Un registre d’audit complet au format CSV.
Ces éléments sont utiles pour les litiges contractuels, la due diligence en matière de propriété intellectuelle et la découverte légale.
Ajouter un badge de vérification à votre README
Timestamp GIT fournit des extraits de badge Shields.io intégrables depuis https://timestampgit.dev/connected/{user}/{repo}. Placez le Markdown généré dans votre README pour afficher publiquement le statut de vérification.
Gardez à l’esprit que les dépôts privés utilisent un HMAC chiffré ajouté à l’URL du badge. Seuls les utilisateurs autorisés peuvent voir le statut des dépôts privés.
Vérification indépendante
Si vous souhaitez un jour vérifier en dehors de l’interface Timestamp GIT, vous pouvez télécharger le fichier de reçu .ots et exécuter les outils de vérification OpenTimestamps standard contre la blockchain Bitcoin. La page de vérification dans le navigateur du produit gère déjà cela pour vous, mais le reçu reste vérifiable indépendamment pour toujours.
Résolution des problèmes courants
Aucun commit détecté
Vérifiez que l’application GitHub est installée sur le bon dépôt et qu’elle dispose des autorisations requises pour votre mode. Dans les paramètres GitHub, consultez les livraisons de webhooks pour voir si Timestamp GIT a bien reçu l’événement de push.
La preuve n’apparaît pas après un jour
Rappelez-vous que l’ancrage Bitcoin prend plusieurs heures — normalement environ trois heures. Confirmez que le cron nocturne s’est exécuté et que la branche cible a reçu de nouveaux fichiers. Si vous êtes en mode Standard, vérifiez que le dépôt cible est accessible en écriture.
Le badge affiche « Unverified »
Si le dépôt est privé, le badge public ne fonctionnera pas à moins d’utiliser l’URL signée HMAC du widget de badge. Pour les dépôts publics, assurez-vous d’utiliser l’extrait exact généré par Timestamp GIT.
Le mode Enterprise ZK n’envoie pas les empreintes
Ouvrez les journaux du workflow GitHub Actions et recherchez les erreurs. Confirmez que :
- L’URL signée dans le secret du dépôt est toujours valide.
- Le dépôt cible est joignable.
- Le workflow s’exécute sur les bons événements de push.
Problèmes avec l’instance Docker auto-hébergée
Si vous exécutez l’image Docker, vérifiez la configuration Compose et les journaux :
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
Vérifiez également que le fichier de licence est valide et monté à l’emplacement attendu. L’application est disponible sur http://localhost:8080 après le démarrage.
FAQ
Comment Timestamp GIT prouve-t-il que mon code existait à une date donnée sans voir mon code ?
Timestamp GIT extrait uniquement l’empreinte du commit Git — une empreinte cryptographique à sens unique — et ancre cette empreinte dans la blockchain Bitcoin. Le code source réel ne quitte jamais votre dépôt. Comme l’empreinte ne peut pas être inversée pour révéler le code, l’horodatage prouve que l’empreinte existait à ce moment-là, ce qui prouve à son tour que le code existait.
Puis-je utiliser Timestamp GIT pour des dépôts privés ?
Oui. Timestamp GIT propose des offres pour les dépôts privés. En mode Standard, l’application GitHub a besoin d’un accès en lecture au dépôt source pour détecter les empreintes des commits, mais elle ne lit jamais le contenu des fichiers. En mode Enterprise ZK, une GitHub Action n’envoie que l’empreinte du commit à l’API, de sorte que l’application n’a jamais accès au dépôt source.
Que se passe-t-il si Timestamp GIT cesse son activité ? Puis-je encore vérifier mes horodatages ?
Vos horodatages restent vérifiables pour toujours. Les preuves reposent sur la blockchain Bitcoin et le protocole OpenTimestamps, tous deux indépendants de Timestamp GIT. Vous pouvez télécharger les fichiers de reçu .ots et les vérifier localement à l’aide des outils OpenTimestamps standard contre la blockchain Bitcoin, sans aucune dépendance aux serveurs de Timestamp GIT.
L’horodatage est-il juridiquement contraignant devant un tribunal ?
Aucun horodatage ne peut garantir une issue juridique spécifique. Cependant, les horodatages cryptographiques ancrés dans la blockchain Bitcoin sont de plus en plus reconnus comme des preuves solides de l’existence à un moment donné. Ils fournissent un enregistrement inviolable et mathématiquement vérifiable qui peut être présenté dans des procédures judiciaires pour étayer des revendications d’antériorité ou de paternité. Vous devriez consulter un conseiller juridique au sujet de l’admissibilité dans votre juridiction.
Conclusion
Vous avez maintenant configuré un horodatage automatique à divulgation nulle de connaissance pour vos commits Git avec Timestamp GIT. Au lieu de maintenir des journaux internes fragiles ou d’apprendre manuellement un protocole cryptographique, vous avez installé une application GitHub une seule fois, connecté un dépôt et laissé les processus nocturnes ancrer les empreintes des commits dans Bitcoin.
Le résultat est une preuve immuable d’antériorité, indépendante de tout fournisseur, générée sans révéler le code source. Commencez avec l’offre gratuite pour les dépôts publics, ou explorez l’option Docker auto-hébergée si vous avez besoin d’une infrastructure air-gap.
Pour approfondir, consultez les articles connexes ci-dessous.
Articles connexes
- Protect Your Startup from Patent Trolls with Git Timestamping
- How Dev Shops Can Prove Work Delivery with Timestamp GIT
- Proof of Existence for Code: What It Is and Why It Matters