it-swarm-id.com

Keamanan kunci pribadi yang dilindungi frasa sandi

Jika penyerang mendapatkan kunci pribadi yang dibuat tanpa frasa sandi, ia jelas mendapatkan akses ke semua yang dilindungi dengan kunci itu. Seberapa amankah kunci pribadi diatur with sebuah frasa sandi? Jika seorang penyerang mencuri kunci yang dilindungi frasa sandi, seberapa sulitkah kompromi kunci itu? Dengan kata lain, apakah kunci pribadi dengan frasa sandi yang baik aman bahkan jika diakses oleh penyerang?

45
jrdioko

Dengan OpenSSL, OpenSSH dan GPG/PGP algoritma pembungkus akan cukup kuat sehingga Anda tidak perlu khawatir tentang hal itu (dan jika Anda perlu khawatir tentang hal itu maka Anda memiliki masalah yang lebih besar, dan ini adalah yang paling sedikit dari kekhawatiran Anda) .

Seperti kata sandi atau frasa sandi apa pun, itu tergantung pada kekuatan kata sandi tersebut. Frasa sandi 40 karakter sama sulitnya dengan kekuatan sebagai kunci 256-bit (karena ASCII hanya menggunakan 7 bit). Aturan yang sama untuk kata sandi yang kuat berlaku di sini:

  • Acak lebih baik
  • Lebih lama lebih kuat
24
bahamat

Setelah blok data terenkripsi ada di tangan penyerang, itu tidak pernah aman selamanya - ini adalah pertanyaan tentang berapa lama dan sarana apa yang tersedia untuk memecahkannya.

Inilah beberapa hal yang perlu dipertimbangkan:

  • kekuatan algoritma pembungkus - Saya bersedia mempercayai bahamat tentang OpenSSL, OpenSSH dan GPG/PGP - ini adalah komponen yang cukup baik diperiksa.

  • kuran ruang utama - mis. - ukuran dan kompleksitas kata sandi - biaya tipikal dari brute force guessing berlaku. Sebagai catatan, beberapa bentuk penyimpanan kunci membatasi jenis karakter yang dapat digunakan dalam kata sandi - misalnya, JKS (the Java Key Store) menghilangkan beberapa karakter khusus, mengurangi potensi ukuran ruang kunci. Juga waspada terhadap sistem yang memotong ukuran kunci ke sejumlah karakter tertentu.

  • biaya percobaan seberapa mahal komputasi untuk mencoba membuka kunci? Itu akan memperlambat upaya brute force.

  • algoritma apa? - tergantung pada bagaimana file aman disimpan - apakah sudah jelas algoritma apa yang digunakan untuk enkripsi?

  • adakah teks cipher yang tersedia untuk dibandingkan? bagaimana penyerang tahu dia berhasil - apa mekanisme pengujiannya? Salah satu elemen yang lebih kuat dalam menangkap penyimpanan kunci adalah bahwa penyerang mungkin dapat menguji upayanya tanpa deteksi lebih lanjut oleh sistem yang menyimpan kunci tersebut.

  • berapa banyak sumber daya yang tersedia bagi penyerang? - umumnya analisis ancaman melibatkan menganalisis apa saja sumber daya penyerang. Apakah dia punya 1 komputer? Bank komputer? Dan seluruh jaringan viral daya CPU curian yang dimilikinya? Bergantung pada apakah Anda sedang berbicara tentang script anak berusia 13 tahun di sebelah atau negara nakal.

  • berapa lama sampai kunci diubah? & berapa lama data harus tetap terlindungi? - jika penyerang membutuhkan waktu lebih lama untuk memecahkan kata sandi menyimpan daripada kegunaan data di dalam toko, maka toko dianggap aman cukup

15
bethlakshmi

Menurut Martin Kleppmann :

perlindungan kunci pribadi [default OpenSSH] memiliki dua kelemahan:

  • Algoritme digest adalah hard-coded menjadi MD5, yang berarti bahwa tanpa mengubah format, tidak mungkin untuk meningkatkan ke fungsi hash lain (mis. SHA-1). Ini bisa menjadi masalah jika MD5 ternyata tidak cukup baik.
  • Fungsi hash hanya diterapkan sekali --- tidak ada peregangan. Ini adalah masalah karena MD5 dan AES keduanya cepat untuk dikomputasi, dan karenanya frasa sandi pendek cukup mudah dipecahkan dengan brute force.

Jika kunci SSH pribadi Anda pernah sampai ke tangan yang salah [dan jika itu dilindungi frasa sandi menggunakan pengaturan OpenSSH default dan jika] frasa sandi Anda adalah kamus Kata, mungkin dapat [didekripsi] dalam hitungan detik. ... Tetapi ada kabar baik: Anda dapat meningkatkan ke format kunci privat yang lebih aman, dan semuanya terus berfungsi!

Dia kemudian menjelaskan bagaimana menggunakan "PKCS # 8" sesuai RFC 5208 untuk mendapatkan kunci privat terenkripsi yang lebih aman:

$ mv test_rsa_key test_rsa_key.old
$ openssl pkcs8 -topk8 -v2 des3 \
    -in test_rsa_key.old -passin 'pass:super secret passphrase' \
    -out test_rsa_key -passout 'pass:super secret passphrase'
7
sampablokuper

Enkripsi kunci pribadi OpenSSH rentan?

Melindungi kunci pribadi dengan frasa sandi perlu dilakukan dengan hati-hati, seperti yang biasanya terjadi dalam masalah crypto. Umumnya pendekatannya adalah mengenkripsi kunci privat dengan algoritma simetris menggunakan kunci yang diturunkan dari frasa sandi melalui fungsi derivasi kunci. Contoh klasik dari fungsi derivasi kunci yang sesuai adalah PBKDF2 dari RFC 2898 - PKCS # 5: Spesifikasi Kriptografi Berbasis Sandi Versi 2. .

Menurut Colin Percival's scrypt presentation , "OpenSSH menggunakan MD5 sebagai fungsi derivasi kunci untuk frasa sandi pada file kunci". Dari konteksnya kelihatannya dia mengatakan mereka tidak menggunakan garam atau iterasi, yang menakutkan mengingat betapa cepatnya kekerasan yang terjadi akhir-akhir ini. Ada beberapa format berbeda yang digunakan OpenSSH untuk menyimpan kunci privat, jadi saya ingin mengetahui lebih detail dan persis versi apa yang terpengaruh, tapi itu kedengarannya jauh dari PBKDF2 atau yang lainnya iterasi, teknik asin yang sudah ada sejak 1978 .

Saya melihat referensi yang mengklaim bahwa PGP dan GPG memang menggunakan teknik iterasi/peregangan saat melindungi kunci pribadi yang disimpan dalam file, tetapi sekali lagi belum tahu detailnya.

4
nealmcb