Sichere Quellcode-Übertragung mit Git Bundle und SHA-256
Bei der Übertragung von ausschließlichen Software-Rechten wird in Verträgen oft nur formuliert, dass "das Ergebnis übergeben wurde", ohne die Inhalte zu spezifizieren. Dies birgt Risiken bei Streitigkeiten: Der Kunde könnte fehlende Funktionen behaupten, während der Entwickler das Gegenteil versichert. Git Bundle und SHA-256-Hashing lösen dieses Problem, indem sie das Repository in eine einzelne Datei mit verifizierbarer Kennung verpacken.
Erstellung eines Git Bundles: Ein vollständiges Repository-Dump
Git Bundle verpackt das gesamte Repository – Objekte, Branches, Tags, Historie – in eine einzelne Binärdatei. Dies ist ein eigenständiges Artefakt, unabhängig von externer Speicherung.
Befehl zur Erstellung:
# Vollständiges Backup des gesamten Repositorys (alle Branches, alle Tags)
git bundle create projekt.bundle --all
Die Datei projekt.bundle kann wie gewohnt geklont werden:
git clone projekt.bundle wiederhergestelltes-projekt
Vorteile gegenüber dem Kopieren von .git:
- Eine einzelne Datei für Speicherung, Übertragung und Signierung.
- Vollständige Commit-Historie, Autoren und Datumsangaben.
- Unabhängigkeit von Git-Hosting-Diensten.
Das Bundle erfasst den Zustand zum Erstellungszeitpunkt und schließt spätere Änderungen am ursprünglichen Repository aus.
Prüfsumme: Ein eindeutiger Identifikator
Jede Datei kann gehasht werden, um einen unveränderlichen Fingerabdruck zu erzeugen. SHA-256 wird bevorzugt: Es ist kollisionsresistent, im Gegensatz zu MD5/SHA-1.
Befehle für Linux/macOS:
shasum -a 256 projekt.bundle
Für Windows:
certutil -hashfile projekt.bundle SHA256
Das Ergebnis ist eine 64-stellige Zeichenkette, z.B. a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e. Selbst die Änderung eines einzelnen Bits verändert den Hash vollständig.
Integration in rechtliche Dokumente
Im Vertrag spezifizieren:
Das Arbeitsergebnis wird als Datei projekt.bundle übergeben, Prüfsumme (SHA-256): a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Unterschreiben Sie dies mit einer elektronischen Signatur über elektronische Dokumentenmanagementsysteme, staatliche Dienste (z.B. De-Mail mit Signaturkarte) oder eine Zertifizierungsstelle. Die Signatur sollte einen Zeitstempel und eine Visualisierung im PDF enthalten.
Die elektronische Signatur sichert nicht nur den Vertrag, sondern bindet auch den Hash ein und verknüpft so das Dokument mit dem spezifischen Bundle.
Verifizierung bei Streitigkeiten: Technische Validierung
Bei Unstimmigkeiten:
- Ein Gutachter berechnet den SHA-256 des erhaltenen
projekt.bundle. - Vergleicht ihn mit dem Hash aus dem Vertrag.
- Klont das Bundle und analysiert das Repository: Commits, Dateien, Funktionen.
# Wiederherstellung zur Untersuchung
git clone projekt.bundle wiederhergestelltes-projekt
cd wiederhergestelltes-projekt
git log --oneline -10 # Letzte Commits
git show HEAD:src/main.py # Bestimmte Datei
Wenn der Hash übereinstimmt, ist der Code authentisch. Eine Abweichung deutet auf Manipulation hin.
Automatisierung des Prozesses
Skript für den regelmäßigen Einsatz:
#!/bin/bash
REPO_NAME=projekt
git bundle create ${REPO_NAME}.bundle --all
HASH=$(shasum -a 256 ${REPO_NAME}.bundle | cut -d' ' -f1)
echo "SHA-256: $HASH"
# $HASH in den Vertrag einfügen und unterschreiben
Fügen Sie einen Schritt in CI/CD bei Releases hinzu. KI-Agenten können Verträge mit Hashes automatisch generieren.
Wichtige Punkte
- Bundle erfasst das vollständige Git-Repository: Historie, Branches, Tags – ohne Verluste.
- SHA-256 gewährleistet kryptografische Integrität: Kollisionen sind praktisch unmöglich.
- Elektronische Signatur mit Hash macht den Vertrag technisch vor Gericht beweisbar.
- Der Prozess dauert <5 Minuten: drei Befehle + Signierung.
- Streitrisiken werden minimiert: Manipulation am Bundle ist sofort erkennbar.
— Editorial Team
Noch keine Kommentare.