Подтвердить что ты не робот

Git: Возможно ли подделка даты подписания тега?

Как ученый, я хотел бы сохранить официальную запись того времени, когда я что-то проверю в своем репозитории Git. Это для того, чтобы впоследствии поддержать требования о том, кто придумал то, что было первым, например, в случае патентных споров.

В настоящий момент я время от времени добавляю тег в свой репозиторий следующим образом:

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

и нажмите теги на центральный сервер:

git push --tags

Вытягивание тега показывает дату, когда я подписал его с помощью моего ключа:

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>"

Мой вопрос: насколько безопасны эти даты? Возможно ли впоследствии вмешаться в них?

РЕДАКТИРОВАТЬ: уточнить, но еще раз, я хочу быть в состоянии доказать, что было бы очень маловероятно, что позже я подделал теги.

4b9b3361

Ответ 1

Какие гарантии Git: если дата (или остальная часть тега или привязки к ней и т.д.) изменены, SHA1 тега изменится.

Однако, чтобы сделать это полезным, вы должны каким-то образом доказать, что такое оригинальный тег SHA1, и что у вас уже есть его в заявленную дату изобретения.

В противном случае, чтобы обманным путем утверждать, что вы что-то придумали в январе 1980 года, вы можете просто перемотать дату своего компьютера на 1980 год и создать репозиторий с необходимыми коммитами, тегами и всего - Git не знали бы, поскольку он может только верить что сообщает системные часы.

Итак, если вы хотите доказать, что вы изобрели/писали что-то до какой-то даты в прошлом, Git (в одиночку) не может помочь вам и ни одна форма подписания. Вам нужно Надежная метка времени. Существуют разные схемы, но все они требуют одной или нескольких сторонних сторон, которые, по сути, ручатся за правильность метки времени.

Ответ 2

То, что вы хотите, это сертифицированная метка времени, как описано Ryan J в этом последнем потоке Как я могу использовать временные метки RFC3161 (доверенные), чтобы доказать возраст коммитов в моем репозитории Git?

Это, по-видимому, сертифицированный, проверенный способ записи sha1 соответствующего сообщения о фиксации.

Ответ 3

Вы можете вставить свой git commit sha1 в блок-цепочку биткойнов с помощью службы, такой как http://www.proofofexistence.com/.