Intisari default diubah dari MD5 ke SHA256 di Openssl 1.1
Coba gunakan -md md5
[email protected]:~$ echo "it-works!" > file.txt
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.1.0/ openssl-1.1.0/apps/openssl aes-256-cbc -a -salt -in ~/file.txt -out ~/file.txt.enc -md md5
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.0.1f/ openssl-1.0.1f/apps/openssl aes-256-cbc -a -in ~/file.txt.enc -d
enter aes-256-cbc decryption password:
it-works!
Detail jeleknya:
Kata sandi yang dimasukkan tidak digunakan sebagaimana adanya oleh aes (atau enkripsi lainnya) tetapi perintah secara implisit mendapatkan kunci darinya. Derivasi kunci menggunakan intisari pesan yang diubah di openssl 1.1 Gunakan SHA256 bukan MD5 sebagai intisari default.
Jika Anda ingin membuatnya tetap sederhana, dan tidak mulai mengotak-atik keying bela diri (-K,-iv) cukup paksa intisari yang sama dengan -md
Saya menguji enkripsi dan dekripsi AES dengan versi 1.1.0a (diunduh dari openssl.org) dan versi 1.0.2g-fips (dari ubuntu 16.04 saya)
Saat menggunakan -p
aktif dengan 2 versi berbeda dari openssl
, IV dan kuncinya berbeda:
$ LD_LIBRARY_PATH=~/openssl-1.1.0a/ ~/openssl-1.1.0a/apps/openssl aes-256-cbc -a -p -salt -in file -out file.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
salt=6A80B2A3B4CFE048
key=637E17094DF7892A7AFC14957EAA13991DFFD3273A2459EDA613F3AD8A406C38
iv =6AC7CE5C9AADC6C46C633BF5124DAFBF
$ openssl aes-256-cbc -a -d -p -in file.enc -out file.dec
enter aes-256-cbc decryption password:
salt=6A80B2A3B4CFE048
key=6220AF2E25CB0B5D9994A0A1B05503D82AC5B0B4C9015E241CACBF8BF62DAC77
iv =2DC04EF29AA57478EBE606DF87277EA6
bad decrypt
140557073118872:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592:
Saya menduga penurunan kunci dan IV yang berbeda berdasarkan garam dengan 2 versi.
Jika Anda ingin menghilangkan kesalahan dekripsi ini, Anda dapat menghapus -salt
opsi dan gunakan opsi -K
untuk kunci dan -iv
dalam perintah openssl Anda.
Masalah ini juga dapat terjadi antara OpenSSL 1.1 dan LibreSSL. Dalam kasus ini, dan dalam kasus lain di mana intisari pesan yang lebih aman tersedia, Anda harus menghindari penggunaan -md md5
untuk mengenkripsi file baru karena algoritma MD5 memiliki kerentanan yang luas.
Anda sebaiknya menggunakan -md sha256
atau intisari pesan lain yang lebih aman yang didukung oleh semua versi. -md md5
hanya boleh digunakan untuk mendekripsi file lama, dan idealnya file tersebut harus dienkripsi ulang menggunakan sha256. Ini juga disebutkan dalam FAQ OpenSSL:
Intisari pesan digunakan untuk membuat kunci enkripsi/dekripsi dari frasa sandi yang dimasukkan manusia. Di OpenSSL 1.1.0 kami mengubah dari MD5 ke SHA-256. Kami melakukan ini sebagai bagian dari perubahan keseluruhan untuk beralih dari algoritme MD5 yang sekarang tidak aman dan rusak. Jika Anda memiliki file lama, gunakan tanda "-md md5" untuk mendekripsinya.
Untuk memeriksa intisari pesan mana yang didukung oleh berbagai versi yang Anda mainkan, jalankan openssl help
:
LibreSSL 2.2.7 (disertakan dengan macOS 10.13 High Sierra):
$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
gost-mac md4 md5 md_gost94
ripemd160 sha sha1 sha224
sha256 sha384 sha512 streebog256
streebog512 whirlpool
…
OpenSSL 1.1f:
$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
blake2b512 blake2s256 gost md4
md5 rmd160 sha1 sha224
sha256 sha384 sha512
…