Zabezpieczenie przekazania kodu źródłowego za pomocą Git bundle i SHA-256
Przy przekazywaniu praw autorskich do oprogramowania, akty często ograniczają się do sformułowania "rezultat przekazany", bez opisu zawartości. Stwarza to ryzyko sporów: klient może twierdzić o braku funkcjonalności, a deweloper – że wszystko zostało dostarczone. Git bundle i skrót SHA-256 rozwiązują ten problem, utrwalając repozytorium w jednym pliku z weryfikowalnym identyfikatorem.
Tworzenie Git bundle: pełny zrzut repozytorium
Git bundle pakuje całe repozytorium – obiekty, gałęzie, tagi, historię – w pojedynczy plik binarny. To samodzielny artefakt, niezależny od zewnętrznych repozytoriów.
Polecenie do utworzenia:
# Pełna kopia zapasowa całego repozytorium (wszystkie gałęzie, wszystkie tagi)
git bundle create projekt.bundle --all
Plik projekt.bundle klonuje się standardowo:
git clone projekt.bundle przywrocony-projekt
Zalety w porównaniu z kopiowaniem .git:
- Jeden plik do przechowywania, przesyłania, podpisywania.
- Pełna historia commitów, autorów, dat.
- Niezależność od hostingu Git.
Bundle utrwala stan w momencie utworzenia, wykluczając późniejsze zmiany w oryginalnym repozytorium.
Suma kontrolna: unikalny identyfikator
Każdy plik można poddać haszowaniu, aby uzyskać niezmienny odcisk. SHA-256 jest preferowany: odporny na kolizje, w przeciwieństwie do MD5/SHA-1.
Polecenia dla Linux/macOS:
shasum -a 256 projekt.bundle
Dla Windows:
certutil -hashfile projekt.bundle SHA256
Wynik to 64-znakowy ciąg, np.: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e. Nawet zmiana jednego bitu całkowicie zmienia skrót.
Integracja z dokumentami prawnymi
W akcie wskaż:
Rezultat prac przekazany w postaci pliku projekt.bundle, suma kontrolna (SHA-256): a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Podpisz podpisem elektronicznym przez EDI, ePUAP (podpis kwalifikowany) lub certyfikowany urząd. Podpis powinien zawierać znacznik czasu i wizualizację w PDF.
Podpis elektroniczny utrwala nie tylko akt, ale także osadzony skrót, wiążąc dokument z konkretnym bundle.
Weryfikacja w sporach: techniczna kontrola
W przypadku nieporozumień:
- Ekspert oblicza SHA-256 otrzymanego
projekt.bundle. - Porównuje ze skrótem z aktu.
- Klonuje bundle i analizuje repozytorium: commity, pliki, funkcje.
# Przywracanie do ekspertyzy
git clone projekt.bundle przywrocony-projekt
cd przywrocony-projekt
git log --oneline -10 # Ostatnie commity
git show HEAD:src/main.py # Konkretny plik
Jeśli skrót się zgadza – kod jest autentyczny. Brak zgodności wskazuje na podmianę.
Automatyzacja procesu
Skrypt do rutynowych zadań:
#!/bin/bash
NAZWA_REPO=projekt
git bundle create ${NAZWA_REPO}.bundle --all
SKROT=$(shasum -a 256 ${NAZWA_REPO}.bundle | cut -d' ' -f1)
echo "SHA-256: $SKROT"
# Wstaw $SKROT do aktu i podpisz
W CI/CD dodaj krok przy wydaniu. Agenty AI mogą automatycznie generować akty ze skrótami.
Co jest ważne
- Bundle utrwala pełne repozytorium Git: historia, gałęzie, tagi – bez strat.
- SHA-256 zapewnia kryptograficzną integralność: kolizje są praktycznie niemożliwe.
- Podpis elektroniczny ze skrótem czyni akt technicznie dowodowym w sądzie.
- Proces zajmuje <5 min: trzy polecenia + podpis.
- Ryzyko sporów zminimalizowane: podmiana bundle wykrywana jest natychmiast.
— Editorial Team
Brak komentarzy.