我是簽署 Git 提交的新手,我想了解驗證 GPG 簽名的程序實際上是如何作業的。我已經偶然發現了這些鏈接,但沒有一個能準確回答我的問題:
- https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification
- 驗證簽名的 git 提交?
- https://withblue.ink/2020/05/17/how-and-why-to-sign-git-commits.html
我缺少的部分如下:假設 Bob 使用 [email protected] 創建并簽署了一個 Git 提交。他的 GPG 簽名也使用 [email protected] 并上傳到 Bob 的 GitHub 帳戶。GitHub 找到 Bob 的 GPG 簽名并成功驗證了 Git 提交。
但是 GitHub 如何在 Git 提交的創建者和 GPG 簽名之間創建鏈接以供使用?他們是否遍歷 GitHub 上所有注冊的電子郵件地址以找到匹配的電子郵件地址并使用相應的 GPG 簽名?
或者換句話說:如果 Eve 使用 [email protected] 創建 GPG 簽名,將其上傳到 Eve 的 GitHub 帳戶并創建并簽署提交:提交是否會在 GitHub 上被標記為無效,因為 Eve 使用 bob@example 的 GPG 簽名不會屬于鮑勃?
至少這是我期望它作業的方式,但我想確保我沒有以錯誤的期望作業。
謝謝!
uj5u.com熱心網友回復:
GitHub 上的每個用戶都可以將他們的公鑰上傳到 GitHub 以用于驗證提交。只有用戶上傳的密鑰才被認為是驗證用戶提交的有效密鑰。
當提交進來時,GitHub 會檢查提交的作者和提交者標頭中的電子郵件地址,并使用它來確定與其關聯的帳戶。對于簽名,只考慮提交者帳戶,因為提交是由提交者創建的,并且只能由他們有效簽名。然后,如果該用戶有公鑰并且提交已簽名,GitHub 將使用該密鑰來驗證它。
當我們驗證任何安全數字簽名時,我們會學到兩件事之一。要么我們了解到給定的密鑰簽署了訊息并且訊息沒有被修改,要么我們了解到發生了其他事情。其他可能是不同的密鑰簽署了訊息,訊息被修改,或者發生了某種錯誤,但在這種情況下,我們所知道的是簽名對于該密鑰-訊息組合無效。
如果 Eve 嘗試為 Bob 簽署提交,則 GitHub 將嘗試使用 Bob 的密鑰驗證簽名,但驗證失敗。提交將被標記為未驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/386588.html
