
這手冊建議當您只需要存取明文時,對稱加密是合適的(因此安全性不低於公鑰加密?)。但根據這貼文中,由於gpg --symmetric
只需要一個密碼,攻擊者只需暴力破解該密碼,而不是從中產生完整的 128/256 位元金鑰。
在我看來,正確的程式實際上是擁有一個 128/256 位元密鑰文件,用於對稱加密我的資料;它本身使用密碼產生的金鑰進行對稱加密,就像私鑰的保護方式一樣。這將需要攻擊者暴力破解完整的對稱金鑰 - 即使他們獲得了我的金鑰文件,他們仍然必須暴力破解我的密碼。
gpg
支持這種用法嗎?我對這種情況的理解是否有缺陷,是否有理由認為這不是一個有效的用例?
--
或者換句話說:
在這假設密碼短語保護就足夠了,但基本上我的問題是,如果我不相信自己能夠記住一個好的 256 位元密碼怎麼辦?我可以像私鑰一樣使用對稱金鑰檔案嗎?顯然,我實際上可以使用我的私鑰,但手冊表明對稱加密將是這種情況下的慣用選擇。
答案1
在 OpenPGP 中,從密碼短語派生對稱(會話)金鑰有兩種可能性:直接使用密碼短語派生金鑰,或產生隨機金鑰,該隨機金鑰本身使用產生的金鑰進行加密。然而,在這兩種情況下,對稱金鑰始終與密文儲存在一起,並且對稱金鑰無法在不失去與 OpenPGP 格式相容性的情況下分開。最後,無論採用哪種儲存方式,都可以透過密碼來暴力破解密鑰。
不過,OpenPGP 透過產生要散列的大輸入(針對散列輸入多次迭代密碼),使暴力破解密碼變得困難。這種方式暴力破解密碼的成本高很多。從RFC 4880、OpenPGP、3.7.1.3。迭代和加鹽的S2K:
這包括鹽和八位元組計數。鹽與密碼結合,結果值被重複散列。這進一步增加了攻擊者嘗試字典攻擊所需的工作量。
在 GnuPG 中,重複密碼的次數(以及其他一些選項)可以使用--s2k-*
選項進行調整。