Security
使用 gpg 加密文件(並且它們對密鑰進行對稱加密) - 在 *nix 世界中這樣做是正常的嗎?
我閱讀了很多關於使用 gpg 加密電子郵件的文章,但我想用它來加密一些文件——主要是一堆 *.isos。我將描述我想我會做什麼,所以你可以拍我或者只是添加一些建議。
我打算去做
tar -cvjf myiso.iso.tar.bz2 myiso.iso
我計劃使用 gpg 生成的密鑰加密這個 myisio.tar.bz2(不知道具體怎麼做。我將閱讀手冊頁)。他們,我將把這個生成的用於加密的 gpg 密鑰保存在快閃記憶體驅動器中,並用對稱密鑰對這個密鑰本身進行編碼。
是不是瘋了?
您可以使用 GPG 對帶有密碼片語 (
gpg -c
) 的文件進行對稱加密。如果密碼具有足夠的熵,則不需要生成密鑰的額外步驟。“足夠的熵”是什麼意思?您的加密需要抵禦離線攻擊,攻擊者可以在硬體允許的範圍內盡可能快地進行破解嘗試。使用小型 PC 場,攻擊者可能每秒可以進行數千億次嘗試,這大約是每十年 2^69 次。因此,熵為 2^70 時,您將是安全的。這意味著如果您的密碼由完全隨機的字母(小寫或大寫)和數字組成,那麼它應該是 12 個字元長。現在要儲存該密碼,您可以使用 GPG 及其常用的密鑰對。用於
gpg --gen-key
生成密鑰對,並gpg -e
加密用於為一個或多個密鑰對加密大文件的密碼。這是有關如何進行加密的草圖(請注意,我避免將密碼片語放在命令行或環境中,以確保其他使用者在命令執行時通過查看輸出找不到它
ps
):passphrase=$(pwgen -s 12 -1) echo "The passphrase for myiso.iso.gpg is: $passphrase" | gpg -e -r somebody -r somebodyelse >passphrase.gpg echo "$passphrase" | gpg -c --passphrase-fd 3 3<&0 <myiso.iso >myiso.iso.gpg
以及如何解密:
passphrase=$(gpg -d <passphrase.gpg) echo "$passphrase" | gpg -d --passphrase-fd 3 3<&0 <myiso.iso.gpg >myiso.iso
使用密碼(共享密鑰)而不是直接加密的原因是它允許文件在幾個人之間共享。如果要添加收件人,則只需重新加密小密碼(僅當您知道收件人無法訪問明文並且無論如何都需要重新編碼密文時,刪除收件人才有意義)。