Bagaimana cara mengenkripsi file menggunakan OpenSSL dan AES-256 dengan SHA-256?

1

Sistem: Linux Mint 18.3 Cinnamon 64-bit.

OpenSSL: 1.0.2g

Biasanya, saya akan mengenkripsi file sebagai berikut:

openssl enc -aes-256-cbc -salt -in somefile -out somefile.enc

Tapi saya ingin tahu algoritma apa yang akan digunakan untuk hash kata sandi saya dan jika saya bisa mengubahnya?

LinuxSecurityFreak
sumber
Dupe superuser.com/questions/455463/… kecuali itu kedaluwarsa sampai sekarang; untuk detail selengkapnya, lihat crypto.stackexchange.com/questions/3298/… . Perhatikan bahwa hash tunggal adalah PBKDF yang buruk; SHA-256 tidak terasa lebih baik dari MD5. Dan -salttelah menjadi default selama lebih dari satu dekade, hampir dua.
dave_thompson_085
@ dave_thompson_085: OpenSSL tidak menggunakan KDF bukan hash sederhana, meskipun nampaknya masih homegrown dan agak lemah (lihat EVP_BytesToKey).
grawity
1
@Grawity jawaban saya untuk crypto QI yang ditautkan menjelaskan hal ini secara rinci. EVP_BytesToKey adalah tweak PBKDF1 dari PKCS5, tetapi commandline enc menggunakan EVP_BytesToKey dengan iterasi jumlah 1 sehingga hanya melakukan satu hash per blok output, TIDAK benar-benar iterate sebagaimana PBKDF seharusnya. Beruang setuju: security.stackexchange.com/questions/29106/…
dave_thompson_085
Vlastimil: Anda tidak menggunakan ini untuk keamanan antipeluru, kan? Pertimbangkan GPG / PGP sebagai gantinya, itu masih harus tunggul pemain terbesar. @ dave_thompson_085 Mereka hanya mengulangi sekali saja? Yowza. Beranjak dari MD5 setidaknya merupakan langkah kecil. Apakah mereka melacak hash & enkripsi yang digunakan, atau Anda masih harus mengingat diri Anda juga? (Saya sudah mengutip beruang juga ;-)
Xen2050

Jawaban:

1

Saya menemukan secara tidak sengaja, di sini , bahwa untuk opensslversi 1.1.0:

-md digest
    Use the specified digest to create the key from the passphrase. The default algorithm is sha-256.

Jadi, tidak ada gunanya menentukan algoritma intisari pesan untuk versi yang lebih baru opensslkarena sudah menggunakan SHA-256.

Tetapi karena di sistem saya ada opensslversi 1.0.2g, saya menggali lebih jauh dan menemukan, di sini , bahwa:

... In OpenSSL 1.1.0 we changed from MD5 to SHA-256 ...

Pada dasarnya, ini berarti, opensslkehendak saya secara default menggunakan MD5 yang lama dan usang.

Untungnya, ini dapat diubah menjadi SHA-256 dengan opensslversi 1.0.2g:

openssl enc -aes-256-cbc -md sha256 -salt -in somefile -out somefile.enc

Jika Anda memiliki opensslversi yang lebih lama dari saya, Anda mungkin ingin mencoba -md sha1, jika gagal.

LinuxSecurityFreak
sumber