如何使用GPG指令正確加密為SHA256?

如何使用GPG指令正確加密為SHA256?

我一直使用以下命令進行加密:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

和解密:

gpg --output un_encrypted.data --decrypt encrypted.data

我想知道這樣做是否安全,我在網路上只看到了該命令的 1 個參考,這裡,其他網站在沒有--cipher-algo AES256命令的情況下運行它,這將使用預設密碼,如下所示:

gpg --output encrypted.data --symmetric un_encrypted.data

我不需要添加鹽嗎?

如果我像這樣運行它而不使用以下命令,會發生什麼--symmetric

gpg --output encrypted.data --cipher-algo AES256 un_encrypted.data

我的問題是如何正確運行此命令來建立安全的 SHA256 加密檔案。上面的命令有什麼不同嗎?

答案1

如果您使用的是 gpg 的穩定版本,--cipher-algo AES256那麼它應該正確使用 AES256 進行加密(SHA256 是雜湊值)。

它會自動選擇自己的鹽和關鍵轉換輪次,因此您不必(也不能)自己選擇可能較弱的選項。 OpenSSL 有很多選項,但它的預設(尤其是它的enc)可能不是最強的。您連結的 Q 實際上引用了我的其他答案OpenSSL 與 GPG- 基本上 gpg 可以工作,它已經經過了數十年的測試,可以難倒大政府,並且 OpenSSL 的enc命令可能仍然沒有迭代計數的選項(2017 年11 月2 日的1.1.0f 手冊頁仍然列出了該錯誤)。

添加一些(多個)-v選項以查看更多詳細信息,例如鹽(下面的 772B0F3B94AD86BA):

$ gpg -vvvvvvvvv  test.gpg 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
# off=0 ctb=8c tag=3 hlen=2 plen=13
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
        salt 772B0F3B94AD86BA, count 9961472 (211)
gpg: AES256 encrypted data
# off=15 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: encrypted with 1 passphrase
# off=36 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=38 ctb=ad tag=11 hlen=3 plen=25420
:literal data packet:
        mode b (62), created 1519523431, name="test",
        raw data: 25405 bytes
gpg: original file name='test'
gpg: decryption okay

如果你省略,--symmetric那麼 gpg 會試著猜測你的意思,如果檔案沒有 gpg 加密,那麼它將放棄/失敗:

$ gpg -vvvvvvvvv --cipher-algo AES256 test 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error

省略該--cipher-algo選項應使用「使用的預設對稱密碼是 AES-128」(如頁面上man gpg有關該選項的說明),但預設值可能會因版本而異,或者我相信會被您的個人設定覆蓋。僅供參考,可以使用選項列出可用的演算法--version,例如:

Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

--output除非您喜歡,否則您也不真正需要該選項,gpg 將.gpg根據需要添加和刪除擴充功能。

  • 僅供參考,這是一個鏈接RFC2440描述 OpenPGP 使用的資料元素(至少在 1999 年,儘管我確信它幾乎仍然完全相關,特別是對諸如字串到鍵(s2k)以及迭代和鹽之類的內容的描述)

相關內容