我對一般加密尤其是 GPG 很陌生。我的用例是將個人文件儲存在網路磁碟機上。這些文件是掃描件(例如文憑、論文)。我使用 產生了一個 GPG 金鑰gpg --gen-key
,然後使用 加密了一些圖像gpg -e -r <name> <file>
。預設情況下,它似乎輸出以原始文件命名並以 為後綴的文件.gpg
,例如diploma.jpg
變為diploma.jpg.gpg
.
如果文件的類型已知,我是否為已知的明文攻擊打開了大門?
另外,我應該採取什麼步驟來備份我的密鑰(將其列印在紙上...)?
答案1
我不會擔心檔案名稱和前幾個位元組的可能知識。但如果你對此感到不安,請考慮一下:
- 您可以使用帶有 aes 加密的容器,.7z 或 .zip
- 您可以使用容器程序,例如 truecrypt
記住:
gpg 以混合模式加密您的文件,這意味著:它使用非對稱金鑰來加密“會話金鑰”,然後使用該會話金鑰來加密實際資料。因此,使用非對稱金鑰來加密只有您關心的內容實際上沒有任何好處(請記住:非對稱加密僅在資料量相對較小時對金鑰交換等有用)
沒有理由不使用對稱加密,因為無論如何您都想記住文件/容器的密碼:
gpg --symmetric -e
既然您將自己描述為該主題的新手:請在 gnupg 手冊中閱讀一些相關內容:
答案2
GPG 會在加密之前先壓縮文件,這樣無論文件類型如何,都會減少純文字攻擊的可能性。此外,如果發生訊息洩露的罕見情況,則不是表示該訊息的接收者之間的密鑰已洩露。
後一部分的原因與 GPG 加密訊息和文件的過程有關。首先,通常使用 zlib 壓縮內容。然後,使用稱為會話金鑰的一次性密碼對壓縮資料進行對稱加密。然後,會話金鑰使用接收者的公鑰進行非對稱加密。當訊息被解密時,過程相反:接收者使用他們的密鑰和密碼解鎖會話密鑰,GPG 使用會話密鑰解密對稱加密的數據,最後將其解壓縮。
對單一訊息的攻擊更有可能導致確定會話密鑰,而不是洩露任何公鑰。
如果您仍然想隱藏文件類型,請執行以下操作:
gpg -ear $RECIPIENT_ID -o filename.asc filename.odt
若要在解密時恢復原始檔案名,請執行下列操作:
gpg --use-embedded-filename filename.asc
GPG 會將解密的資料寫入原始檔案名,該檔案名稱與重建資料所需的其他資訊一起儲存在對稱加密的資料中。
注意:如果從電子郵件程式手動解密密文,尤其是使用 Thunderbird 和 Enigmail 時,請勿使用上述嵌入檔案名稱標誌。許多電子郵件加密程式(包括 Thunderbird 和 Enigmail)不會從草稿中指派原始檔案名,這種方式解密可能會導致問題,例如嘗試將資料寫入空白檔案名稱。
答案3
據我所知,知道加密檔案保存的資料類型對於破解來說根本沒有用,因為加密不關心資料類型。對於加密來說,它們只是毫無意義的位元(數位)。
關於您的金鑰,最安全的選擇是記住它,因為您的思想無法被存取;)
答案4
回答你問題的第二部分:
另外,我應該採取什麼步驟來備份我的密鑰(將其列印在紙上...)?
我們先來說說吊銷證書。您絕對應該建立並備份主金鑰的吊銷憑證。許多人製作紙本副本(ASCII 碼或二維碼)並將其存放在安全的地方,例如保險箱、上鎖的防火箱或銀行的保險箱。如果您的主金鑰(認證金鑰)遭到洩露,您將擁有一個備份,可以在撤銷憑證從您的裝置中消失或裝置遺失等情況下撤銷它。
如果您沒有吊銷證書,請使用以下命令進行製作。 「mykey」是金鑰的名稱,可以是指紋的最後 8 個字元。
gpg --output revoke.asc --gen-revoke mykey
吊銷證書看起來像這樣,很容易列印。但你必須小心。列印可能會使其受到損害。
-----開始 PGP 公鑰區塊-----
註:這是吊銷證書
iQG2BCABCAAgFiEEiz1thFzdqmEJkNsdNgBokN1gxcwFAlsrcOsCHQAACgkQNgBo kN1gxczZ1Qv/aUNZgG0Sjasbu2sDMcX+rjEUNpIGUB6zjcTsPW3fk qFdT8DKkuQk6XgKnX3NieahG/dFaVANXyHR ................................ ..這是只是一個吊銷憑證範例.................................... ................ ……=4lcB
-----PGP 公鑰區塊結束-----
現在,關於備份主金鑰:
解決方案一:備份主金鑰就像複製整個檔案一樣簡單。解決方案二:擁有離線主金鑰 (C) 確實會增加您的安全性,並且可能值得這樣做,具體取決於個人的風險評估。如果您使用筆記型電腦或上網本來儲存密鑰,那麼將主密鑰離線可能是一個特別好的主意。
擁有離線主密鑰有兩種方法: 艱難的道路和更容易的困難的方法。
從主密鑰 (C) 中刪除密鑰並運行後
GPG2-K
結果應該是這樣的:
注意#旁邊秒--這表示密鑰不再存在。