Bagaimana cara mengenkripsi sebagai SHA256 dengan perintah GPG dengan benar?

0

Saya telah menggunakan perintah berikut untuk enkripsi:

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

dan dekripsi:

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

Saya bertanya-tanya apakah aman melakukannya dengan cara ini, saya hanya melihat 1 referensi di internet untuk perintah ini, di sini , dan situs web lain menjalankannya tanpa --cipher-algo AES256perintah, yang akan menggunakan kode default, seperti ini:

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

Tidakkah saya perlu menambahkan di sana garam, apakah tidak ada perintah untuk memasok garam seperti dengan OpenSSL, atau apakah itu ditangani oleh perangkat lunak secara otomatis.

Juga apa yang terjadi jika saya menjalankannya seperti ini, tanpa --symmetric:

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

Pertanyaan saya adalah tentang menjalankan perintah ini dengan benar untuk membuat file terenkripsi SHA256 yang aman. Apakah ada perbedaan antara perintah di atas?

David
sumber

Jawaban:

0

Jika Anda menggunakan versi stabil gpg, dengan --cipher-algo AES256, maka itu harus mengenkripsi menggunakan AES256 dengan benar (SHA256 adalah hash).

Itu mengambil putaran transformasi garam & kunci itu sendiri secara otomatis, jadi Anda tidak perlu (dan tidak bisa) memilih opsi yang berpotensi lemah sendiri. OpenSSL memiliki banyak opsi, tetapi defaultnya (terutama dengan itu enc) mungkin bukan yang terkuat. Q Anda yang ditautkan sebenarnya mereferensikan jawaban saya yang lain tentang OpenSSL vs GPG - pada dasarnya gpg berfungsi, telah diuji selama beberapa dekade, dapat mengalahkan pemerintah besar, dan encperintah OpenSSL mungkin masih tidak memiliki opsi untuk penghitungan iterasi (halaman manual 1.1.0f dari 2017 -11-02 masih mencantumkan bug itu).

Tambahkan beberapa (beberapa) -vopsi untuk melihat lebih detail seperti garam (772B0F3B94AD86BA di bawah):

$ 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

Jika Anda menghilangkan --symmetricmaka gpg akan mencoba dan menebak apa yang Anda maksud, jika file tersebut tidak dienkripsi maka gpg akan menyerah / gagal:

$ 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

Menghilangkan --cipher-algoopsi harus menggunakan "Cipher simetris default yang digunakan adalah AES-128" (seperti man gpghalaman mengatakan tentang opsi itu) tetapi default dapat bervariasi menurut versi atau saya percaya ditimpa oleh pengaturan pribadi Anda. Algoritma FYI yang tersedia dapat dicantumkan dengan --versionopsi, seperti:

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

Anda juga tidak benar-benar membutuhkan --outputopsi kecuali Anda menyukainya, gpg akan menambah & menghapus .gpgekstensi sesuai kebutuhan.

  • FYI, inilah tautan ke RFC2440 yang menggambarkan elemen data yang digunakan oleh OpenPGP (setidaknya pada tahun 1999, meskipun saya yakin itu hampir seluruhnya masih relevan, terutama deskripsi hal-hal seperti String-to-key (s2k) dan iterasi dan garam)
Xen2050
sumber