Pgp
是否可以使用短公鑰(指紋)驗證明確簽名的消息?
出於實際原因,我希望人們能夠使用他們的公鑰指紋 (
8E570D9F7F70256595769E49F9BC5BCAD7E18635
) 發布明確簽名的消息,以供系統檢查。但是,我看到的所有庫似乎都需要完整的公鑰證書來進行驗證。有沒有辦法只用指紋來做到這一點?
不,不可能使用指紋作為驗證簽名的密鑰。
PGP 指紋是公鑰材料的散列,參見RFC 4880 第 12.2 節;它實際上並不包含公鑰,因此像您在問題中所做的那樣將指紋稱為“短公鑰”是不正確的——它更像是一個唯一的密鑰標識符。
雜湊函式將任意長度的輸入映射到固定長度的輸出。加密散列函式的要求之一是抗原像性,即給定輸出散列,很難找到散列的輸入值。在這種情況下,散列的輸入值將是放入散列的公鑰。更重要的是,用於生成指紋的雜湊函式有效地“失去”了驗證簽名所需的公鑰資訊。
考慮到公鑰數據的大小,僅僅通過蠻力嘗試潛在的公鑰,直到您重新創建指紋以在執行時重新發現公鑰資訊也將不起作用,因為它的計算成本太高。