2012-08-20 6 views
13

Jako naukowiec chciałbym zachować jakiś oficjalny zapis czasu, kiedy sprawdzę coś w moim repozytorium Git. To w celu późniejszego poparcia roszczeń osób, które wymyśliły to, co pierwsze, na przykład w sporach patentowych.Git: Czy da się sfałszować datę podpisania tagu?

W tej chwili od czasu do czasu dodać tag do mojego repozytorium tak:

git tag -s -m "`date`" 2012-08-20 

i przesunąć znaczniki do centralnego serwera:

git push --tags 

Ciągnięcie tag pokazuje data podpisałem go z moim kluczem:

git tag -v 2012-08-20 
object 2d6f6035270e8e44c035431e99be8da3fccee095 
type commit 
tag 2012-08-20 
tagger My Full Name <[email protected]> 1345466433 +0200 

Mon Aug 20 14:40:33 CEST 2012 
gpg: Signature made Mon Aug 20 14:40:37 2012 CEST using RSA key ID somekey 
gpg: Good signature from "My Full Name <[email protected]>" 
gpg:     aka "My Full Name <personal-email>" 

Moje pytanie brzmi, jak te terminy są bezpieczne? Czy można później z nimi manipulować?

EDYCJA: aby wyjaśnić, ale dalej, chciałbym być w stanie udowodnić, że byłoby bardzo mało prawdopodobne, że zmieniłem tagów później.

+0

Podczas podpisywania kodu wykonywalnego przy użyciu podpisu Microsoft Authenticode można skorzystać z usługi "znakowania czasem", która weryfikuje czas, w którym podpis został podpisany, o ile ufasz dostawcy usług oznaczania czasu. Nie znam innego sposobu podpisywania czegoś za pomocą znacznika czasu, zwłaszcza jeśli legalnie by się trzymał, ale możesz szukać tego terminu. –

Odpowiedz

14

Co daje gwarancja Git: Jeśli data (lub reszta etykiety lub załączniki do niej dołączone itp.) Zostaną zmienione, SHA1 znacznika zmieni się.

Jednak, aby było to użyteczne, musisz jakoś udowodnić, czym był oryginalny znacznik SHA1, i że masz go już w deklarowanej dacie wynalazku.

W przeciwnym razie, w celu oszukańczego stwierdzenia, że ​​coś wymyśliłeś w styczniu 1980 r., Możesz po prostu przewinąć datę swojego komputera do 1980 r. I utworzyć repozytorium z niezbędnymi zobowiązaniami, tagami i all-git nie będzie wiedział, ponieważ może tylko wierzyć w co zegar systemowy to mówi.

Więc jeśli chcesz udowodnić, że wynalazłeś/napisałeś coś przed jakąś datą w przeszłości, git (sam) nie może ci pomóc, ani też nie może podpisywać się w pojedynkę. To, czego potrzebujesz, to Trusted timestamping. Istnieje wiele różnych schematów, ale wszystkie wymagają jednej lub więcej stron trzecich, które zasadniczo gwarantują poprawność znacznika czasu.

+0

+1. Interesujący link do zaufanego znacznika czasu. – VonC