Saya ingin mengenkripsi file menggunakan AES-256. Bagaimana saya bisa melakukannya dengan cepat dan mudah, dan bagaimana saya bisa - atau orang lain - mendekripsi lagi?
Saya ingin mengenkripsi file menggunakan AES-256. Bagaimana saya bisa melakukannya dengan cepat dan mudah, dan bagaimana saya bisa - atau orang lain - mendekripsi lagi?
Jawaban:
Sayangnya, tidak ada solusi mudah untuk mengamankan barang-barang Anda. Pikirkan tentang use case Anda, mungkin sesuatu selain AES biasa lebih cocok.
Jika Anda ingin enkripsi independen platform yang sangat sederhana, Anda dapat menggunakan openssl .
Jika Anda masih ingin menggunakan openssl:
Enkripsi:
openssl aes-256-cbc -in attack-plan.txt -out message.enc
Dekripsi:
openssl aes-256-cbc -d -in message.enc -out plain-text.txt
Anda bisa mendapatkan openssl ke base64
-encode pesan dengan menggunakan -a
sakelar enkripsi dan dekripsi. Dengan cara ini, Anda dapat menempelkan ciphertext dalam pesan email, misalnya. Ini akan terlihat seperti ini:
stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=
Perhatikan bahwa Anda memiliki pilihan cipher dan mode operasi. Untuk penggunaan normal, saya sarankan aes 256 dalam mode CBC. Ini adalah mode sandi yang Anda miliki (hanya menghitung AES):
aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb
Lihat juga:
Tolong dicatat:
OpenSSL akan meminta Anda kata sandi. Ini bukan kunci enkripsi, tidak terbatas pada 32 byte! Jika Anda akan mentransfer file dengan orang lain, rahasia Anda yang dibagikan harus sangat kuat. Anda dapat menggunakan situs ini untuk mengetahui seberapa baik kata sandi Anda:
Peringatan: Saya telah memeriksa bahwa situs-situs ini tidak mengirimkan kata sandi Anda ke server, tetapi itu dapat berubah sewaktu-waktu. Gunakan situs-situs ini dengan alat dev / inspektur dan periksa apakah mereka mengirim sesuatu sebelum mengetikkan kata sandi Anda yang kuat.
/usr/bin/openssl enc -aes-256-cbc -a -salt -in $1 -out ${1}.enc
dengan kebalikannya seperti yang Anda harapkan.
openssl
alat baris perintah sebagian besar merupakan bukti konsep untuk menguji pustaka OpenSSL. Jawaban yang tepat untuk pertanyaan ini adalah GPG atau pengarsip seperti 7z .
openssl enc
sebenarnya tidak terlalu aman jika Anda memiliki kata sandi yang lemah. Saya sebelumnya merekomendasikan penggunaan tertentu openssl enc
, tetapi sekarang menyarankan untuk menggunakannya gpg
karena menggunakan KDF dengan cara yang lebih baik. Lihat jawaban ini .
Saya suka menggunakan gpg
perintah:
Enkripsi:
gpg --cipher-algo AES256 --symmetric filename.tar.gz
Steno:
gpg --cipher-algo AES256 -c filename.tar.gz
Ini akan meminta kata sandi.
Dekripsi:
gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg
Steno:
gpg -o filename.tar.gz -d filename.tar.gz.gpg
Anda juga dapat menambahkan cipher-algo AES256
untuk ~/.gnupg/gpg.conf
membuat AES256 default. (Menurut halaman manual itu adalah CAST5 )
AES
(artinya AES-128). AES-128 sedikit lebih cepat dan tidak kalah aman.
gpg
caching kata sandi?
7z (ketika opsi kata sandi digunakan) menggunakan enkripsi AES 256bit (dengan peregangan kunci SHA256 ).
Instal ( p7zip-full
), klik kanan pada file atau direktori yang ingin Anda enkripsi, dan pilih Kompres , .7z dan Opsi / Kata Sandi lainnya .
Untuk dekripsi, klik kanan pada file .7z dan pilih Ekstrak di sini .
Situs web tertaut berisi alat 256-bit aes mengenkripsi / mendekripsi alat open-source dan multiplatform - MacO, Windows, Linux, dan lainnya melalui Java.
Enkripsi: aescrypt -e <file>
Dekripsi: aescrypt -d <file>
Anda dapat membuat cadangan dan mengenkripsi folder beranda menggunakan sintaks:
tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes
make
sudo make install
Unduh binari atau kode sumber dari situs web.
Banyak saran yang saya buat sudah diajukan di utas ini. Pada dasarnya, openssl adalah cara termudah untuk mengenkripsi file atau skrip. Namun, saya akan memperingatkan untuk tidak menggunakan AES-256 hanya karena tidak tersedia di semua versi openssl pada beberapa platform. Sebagian besar OS yang lebih baru ... yaitu Linux memilikinya. Tetapi yang lain seperti AIX 5.3 tidak (saya pikir juga HP-UX). Jika Anda ingin menggunakan file atau skrip Anda di berbagai platform, saya sangat menyarankan menggunakan AES-128 karena ini tersedia di mana-mana.
Bagaimana Anda bisa "dengan cepat dan mudah" mengenkripsi file menggunakan AES-128?
Situs seperti www.ShellScrypt.com menggunakan openssl AES-128 dengan cukup intens untuk mengenkripsi skrip shell dan kemudian membuat salinan terenkripsi dari skrip dieksekusi. Yang harus Anda lakukan adalah menempelkan skrip ke situs, dan file zip akan dibuat untuk Anda. File zip itu akan berisi versi file Anda yang terenkripsi (dan dapat dieksekusi). Ini memungkinkan Anda untuk " dengan mudah " dan "dengan mudah " mengenkripsi file / skrip tanpa harus memenuhi persyaratan paket atau modul pada setiap sistem yang Anda maksudkan untuk menggunakan skrip atau menjalankan beberapa mantra kompleks dan membingungkan perintah openssl.
Yang ditunjukkan di bawah ini adalah perintah openssl mengenkripsi / mendekripsi dasar yang menggunakan AES-128:
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$
test@test-VirtualBox:~$
Menambah jawaban Stefano Palazzo, saya membuat fungsi bash kecil yang bekerja mirip dengan perintah base64.
Itu akan aes256 mengenkripsi file, dan kemudian base64 menyandikannya. Ketika melakukan kebalikannya, itu akan base64 decode, decrypt, dan kemudian memuntahkan teks asli.
aes256() {
decodeMe=""
isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"
if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
decodeMe="-d"
shift
fi
if [ "$isPipe" = "true" ]; then
read input
printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
exitCode="$?"
else
openssl aes-256-cbc -a $decodeMe -in "$*"
exitCode="$?"
fi
unset isPipe decodeMe input
return "$exitCode"
}
Pemakaian:
echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=
echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string
aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password
aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
openssl aes-256-cbc
lebih pendek dariopenssl enc -aes-256-cbc
dan berfungsi juga. Halaman manual untuk ini tersedia dengan menjalankanman enc
. Jangan pernah gunakanecb
untuk data yang tidak bisa di-tempered, selalu gunakancbc
.-salt
redundan karena default. Jika Anda menghilangkan-out filename
output akan ditulis ke output standar yang berguna jika Anda hanya perlu menganalisis data, tetapi tidak menuliskannya ke disk. THe perintah selanjutnya menunjukkan cound baris untuk plaintext:openssl aes-256-cbc -d -in filename | wc -l
. (penggunaan lain, membaca file:openssl aes-256-cbc -d -in filename | less
)