我正在設定一個系統來更新裝置上的軟體,我想使用我建立的私鑰對更新檔案進行加密,然後使用公鑰對其進行解密。我發現的所有範例都使用收件人公鑰進行加密,我想使用我的私鑰進行加密。我看過 Bob 和 Alice 的範例,這些範例使用您的私鑰然後使用收件者的公鑰對文件進行加密,但我不知道如何進行私鑰加密。
答案1
這不是 GPG 的工作方式。
您使用公鑰(可能是您的)加密文件,並使用私鑰解密它。
因此,如果您在互聯網上共享您的公鑰,任何人都可以使用您的公鑰加密文件,但您是唯一能夠解密該文件的人。
看 :http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-1.html
答案2
舊問題,但是......我在尋找其他東西時發現了它。
您真正想要的不是加密文件,而是創建一個驗證,證明您是文件的來源。這就是文件簽名的目的。
公鑰加密工作原理的快速基本概念:使用私鑰加密的內容只能透過公鑰解密。用你的公鑰加密的東西只能用你的私鑰解密。 (為什麼會這樣超出了這個答案的範圍。)
在正常操作中,如果有人想向您發送訊息,他們會使用您的公鑰對其進行加密,因為只有您的私鑰可以解密它。
簽署產生文件/資料的單向哈希,並顛倒公鑰和私鑰的角色:擁有您的公鑰的任何人都可以解密哈希,並且他們可以確定只有您產生加密的哈希,因為只有您的私鑰密鑰可用於首先對其進行加密。
哈希值用於驗證文件自您簽名以來未被篡改。對文件的任何更改都會更改其哈希值,並清楚地表明它已更改。由於他們沒有您的私鑰,因此他們無法產生新哈希的新簽名以使用您的公鑰進行解密。
許多系統使用此方法對其他檔案的校驗和/雜湊檔案進行簽名,以確保具有這些校驗和/雜湊的檔案是真實的。
您也可以將資料/檔案加密和簽章結合起來,確保加密的資料不能被預期接收者以外的任何人解密,並且加密的資料沒有被竄改。
“在幕後”,這就是 GPG 和相關程序的工作原理。使用密鑰資料加密資料的計算成本太高。相反,他們會產生隨機的「一次性密碼」(OTP),以使用更快的加密方法進行加密。然後,使用預期接收者的金鑰對密碼進行加密,並與加密資料一起發送。由於只有他們的私鑰才能解密用於加密資料的密碼,因此您可以非常合理地保證其他人無法解密。
最後一點:密碼學總是處於不斷變化的狀態。當我寫這篇文章時,什麼是“合理的”或“有保證的”,明天可能會因為有人發現所使用的演算法之一的弱點而變得無效。