2012-08-20 31 views
13

Là một nhà khoa học, tôi muốn giữ một số hồ sơ chính thức về thời gian tôi kiểm tra thứ gì đó trong kho lưu trữ Git của tôi. Điều này để sau này sao lưu các tuyên bố của những người phát minh ra những gì đầu tiên trong các vụ tranh chấp bằng sáng chế ví dụ.Git: Có thể giả mạo ngày ký thẻ không?

Tại thời điểm này tôi bất cứ lúc nào thêm một thẻ để kho của tôi như vậy:

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

và đẩy thẻ vào máy chủ trung tâm:

git push --tags 

kéo lên một thẻ trình bày ngày tôi đã ký tên bằng khóa của mình:

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

Câu hỏi của tôi là an toàn vào những ngày này? Có thể giả mạo chúng sau này không?

CHỈNH SỬA: để làm rõ hơn nhưng hơn nữa, tôi muốn có thể chứng minh rằng rất khó có khả năng tôi đã giả mạo thẻ sau này.

+0

Khi ký mã thực thi với chữ ký Microsoft Authenticode, bạn có thể sử dụng dịch vụ "dập thời gian", xác minh thời gian chữ ký được đóng dấu, miễn là bạn tin cậy nhà cung cấp dịch vụ chấm công. Tôi không biết cách nào khác để ký một cái gì đó với một dấu thời gian, đặc biệt là nếu nó sẽ giữ một cách hợp pháp, nhưng bạn có thể tìm kiếm thuật ngữ đó. –

Trả lời

14

Điều gì đảm bảo Git là: Nếu ngày (hoặc phần còn lại của thẻ, hoặc các cam kết gắn liền với nó vv) bị thay đổi, SHA1 của thẻ sẽ thay đổi.

Tuy nhiên, để làm điều này hữu ích, , bạn phải bằng chứng nào đó chứng minh thẻ SHA1 ban đầu là gì và bạn đã có nó tại ngày phát minh được yêu cầu.

Nếu không, để tuyên bố rằng bạn đã phát minh ra điều gì đó vào tháng 1 năm 1980, bạn chỉ có thể tua lại ngày của máy tính đến năm 1980 và tạo kho lưu trữ với các cam kết cần thiết, thẻ và tất cả - git sẽ không biết, vì nó chỉ có thể tin đồng hồ hệ thống cho biết. Vì vậy, nếu bạn muốn chứng minh rằng bạn đã phát minh/viết một cái gì đó trước một số ngày trong quá khứ, git (một mình) không thể giúp bạn, cũng như không thể ký bất kỳ hình thức ký kết nào. Những gì bạn cần là Trusted timestamping. Có nhiều phương án khác nhau, nhưng tất cả đều yêu cầu một hoặc nhiều bên thứ ba về cơ bản xác nhận tính chính xác của dấu thời gian.

+0

+1. Thú vị liên kết đến dấu thời gian đáng tin cậy. – VonC

Các vấn đề liên quan