Saya pikir persyaratan Anda valid, tetapi di sisi lain juga sulit, karena Anda mencampur enkripsi simetris dan asimetris. Harap perbaiki saya jika saya salah.
Pemikiran:
- Frasa sandi untuk kunci pribadi Anda adalah untuk melindungi kunci pribadi Anda dan tidak ada yang lain.
- Ini mengarah pada situasi berikut: Anda ingin menggunakan kunci pribadi Anda untuk mengenkripsi sesuatu yang hanya dapat Anda dekripsi. Kunci pribadi Anda tidak dimaksudkan untuk itu, kunci publik Anda ada di sana untuk melakukan itu. Apa pun yang Anda enkripsi dengan kunci pribadi Anda dapat didekripsi dengan kunci publik Anda (penandatanganan), itu tentu bukan yang Anda inginkan. (Apa pun yang dienkripsi dengan kunci publik Anda hanya dapat didekripsi dengan kunci pribadi Anda.)
- Jadi Anda perlu menggunakan kunci publik Anda untuk mengenkripsi data Anda, tetapi untuk itu, Anda tidak memerlukan kata sandi kunci pribadi Anda untuk itu. Hanya jika Anda ingin mendekripsi, Anda akan memerlukan kunci pribadi dan frasa sandi Anda.
Kesimpulan: Pada dasarnya Anda ingin menggunakan kembali frasa sandi Anda untuk enkripsi simetris. Satu-satunya program yang Anda ingin berikan passphrase Anda adalah ssh-agent dan program ini tidak melakukan enkripsi / dekripsi hanya dengan passphrase. Frasa sandi hanya ada untuk membuka kunci pribadi Anda dan kemudian dilupakan.
Rekomendasi: Gunakan openssl enc
atau gpg -e --symmetric
dengan keyfiles yang dilindungi frasa sandi untuk enkripsi. Jika Anda perlu berbagi informasi, Anda dapat menggunakan infrastruktur publik kunci dari kedua program untuk membuat PKI / Web of Trust.
Dengan openssl, sesuatu seperti ini:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
dan dekripsi sesuatu seperti
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Pembaruan: Penting untuk dicatat bahwa perintah openssl di atas JANGAN mencegah data dirusak. Sedikit flip sederhana dalam file enc akan menghasilkan data dekripsi yang rusak juga. Perintah di atas tidak dapat mendeteksi ini, Anda perlu memeriksa ini misalnya dengan checksum yang baik seperti SHA-256. Ada cara kriptografis untuk melakukan ini secara terpadu, ini disebut HMAC (Kode Otentikasi Pesan Berbasis Hash).
"gpg -e something"
tetapi untuk kasus yang berbeda?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
:, mendekripsi dengan:openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
kedua perintah meminta kata sandi. Lihatman enc
(pada rh / fedora / centos) untuk semua opsi seperti keyfiles, base64 encoding dll.Saya lebih suka menggunakan
openssl
utilitas karena tampaknya cukup ada di mana-mana.Ubah kunci publik RSA dan kunci pribadi ke format PEM:
Mengenkripsi file dengan kunci publik Anda:
Mendekripsi file dengan kunci pribadi Anda:
Tetapi, seperti yang dikomentari Gilles di atas, ini hanya cocok untuk mengenkripsi file yang lebih kecil dari kunci publik Anda, sehingga Anda dapat melakukan sesuatu seperti ini:
Menghasilkan kata sandi, mengenkripsi file dengan itu secara simetris, dan mengenkripsi kata sandi dengan publik Anda, kunci menyimpannya ke file:
Dekripsi frasa sandi dengan kunci pribadi Anda dan gunakan untuk mendekripsi file:
Anda akan berakhir dengan dua file, file terenkripsi dan frasa sandi terenkripsi Anda, tetapi dimasukkan ke dalam skrip yang akan berfungsi dengan baik.
Anda bahkan dapat menambahkan
tar cvf file file.enc file.enc.key
untuk merapikan.Secara optimal, Anda akan memaksimalkan ukuran frasa sandi Anda dan juga mengubah
rand 64
ukuran kunci publik Anda.sumber
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
untuk autogen panjang kunci. Mengingat ssh-keygen memiliki keylength minimum 768 bit, ini masih mengarah pada kunci simetris minimum 672 bit, atau 84 byte.Lihatlah luks / dm-crypt . Anda dapat menggunakan ssh-private-key Anda sebagai kunci enkripsi dengan menggunakan opsi yang sesuai.
Pembaruan: Contoh enkripsi menggunakan LUKS dengan perangkat LV-block (uji LV dalam sistem VG):
Ini seharusnya menghasilkan perangkat blok / dev / mapper / test_crypt yang dapat Anda gunakan untuk menyimpan data Anda (setelah memformatnya dengan sistem file pilihan Anda).
Untuk menghilangkannya, lakukan umount, dan gunakan
cryptsetup luksClose test_crypt
.sumber
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Jika saya bisa mengerti dengan benar, metode ini adalah enkripsi tingkat sistem file. Ini mengenkripsi fs yang Anda butuhkan umount / mount atau saya salah membaca ini?--key-file
pilihan untuk cryptsetup menggunakan konten yang sebenarnya dari file sebagai satu password yang besar. Itu tidak membaca kunci openssl dari file dan hanya menggunakan itu. Anda dapat menggunakan file byte acak untuk--key-file
jika Anda mau.--key-file
benar-benar nama yang dipilih dengan buruk untuk pilihan, seharusnya--password-file