Apakah aman untuk memberikan kunci publik SSH saya untuk bekerja?

60

Saat ini saya bekerja jarak jauh untuk sejumlah organisasi yang membutuhkan saya untuk mengakses server mereka secara teratur untuk pemeliharaan dan peningkatan. Apakah saya aman untuk menambahkan kunci SSH publik RSA saya ke .ssh/authorized_keysfile untuk memungkinkan saya untuk login lebih cepat / tanpa harus mencari kata sandi? Saya beroperasi dengan anggapan bahwa tidak mungkin menghasilkan kunci privat dari kunci publik, tetapi apakah saya benar dalam asumsi saya?

Melangkah lebih jauh, apakah akan ada risiko keamanan apa pun dalam memposting konten kunci publik RSA saya ke internet? Saya tahu bahwa jika kunci pribadi saya diperoleh, saya dalam banyak masalah, tetapi selain itu, apakah ada ancaman keamanan nyata yang mungkin?

Naftuli Kay
sumber

Jawaban:

77

Ya, tidak mungkin memulihkan kunci pribadi dari kunci publik. Jika mungkin, RSA akan rusak secara fundamental, dan ini akan menjadi berita besar (melanggar RSA tidak hanya akan merusak banyak keamanan komunikasi Internet, tetapi juga memungkinkan semua jenis penipuan perbankan, antara lain).

Masuk dengan kunci publik alih-alih kata sandi sebenarnya cenderung meningkatkan keamanan. Jika kata sandi Anda tidak cukup kuat, itu bisa dipaksakan oleh penyerang dengan bandwidth yang cukup. Jika penyerang tidak memiliki salinan file kunci pribadi Anda, kunci RSA secara efektif tidak dapat dipaksakan (kunci 1024-bit setara dengan sesuatu seperti kata sandi 160 karakter yang terbuat dari huruf dan digit peka huruf besar-kecil) . Seseorang yang mengawasi bahu Anda mungkin dapat melihat kata sandi dan frasa sandi kunci Anda, tetapi dengan kunci mereka juga perlu mendapatkan kunci.

Kunci pribadi tidak selalu lebih aman daripada kata sandi. Jika penyerang memperoleh salinan file kunci pribadi Anda (misalnya dengan mencuri laptop atau media cadangan Anda), ia dapat mencoba untuk memaksa paksa frasa sandi, dan ia dapat melakukannya dengan kecepatan tinggi karena Anda tidak memiliki cara untuk membatasi rate (tidak seperti tebak kata sandi yang perlu dibuat online). Jika frasa sandi Anda cukup baik dan Anda melihat pencurian dengan segera, Anda masih punya waktu untuk mencabut kunci.

Kunci publik memperkenalkan elemen paparan privasi: jika seseorang tahu bahwa Anda telah menggunakan kunci publik yang sama untuk masuk ke A dan masuk ke B, mereka tahu orang yang sama masuk ke A dan B. Hanya memiliki kunci publik membuat Anda tersangka bahwa Anda juga memiliki kunci pribadi, sehingga Anda kehilangan anonimitas. Tapi itu biasanya minor, terutama jika Anda hanya menyimpan kunci di ~/.sshmana hanya administrator sistem (yang juga tahu dari mana alamat IP Anda login) dapat melihatnya.

Selain pertimbangan keamanan ini, kunci pribadi memiliki banyak manfaat praktis. Anda tidak perlu mengetikkan kata sandi terlalu sering, dan khususnya dapat menjalankan skrip otomatis yang tidak meminta Anda begitu Anda memasukkan kunci di ssh-agent atau sejenisnya. Anda tidak perlu mengetik kata sandi terlalu sering, sehingga Anda dapat membuatnya dengan entropi yang lebih tinggi (lebih lama, lebih sulit untuk diketik). Anda tidak perlu mengetikkan kata sandi terlalu sering, jadi ada sedikit risiko bahwa itu akan diintai oleh pengamat manusia atau kamera.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
@NaftuliTzviKay Sebenarnya ada sesuatu yang harus dipertimbangkan di sini yang diabaikan. Untuk menggunakan kunci publik Anda, sistem tempat Anda mengambil harus memiliki akses ke kunci pribadi Anda. Tidak apa-apa. Jika kunci pribadi disimpan pada sistem itu, ia rentan, dan sistem jarak jauh menjadi rentan. Dua hal membantu dengan ini, folder rumah terenkripsi, dan kata sandi pada kunci Anda. Karenanya, untuk mencapai peningkatan penuh dalam keamanan yang diberikan oleh PKI, Anda akan kehilangan efisiensi. Anda, atau organisasi Anda, perlu melakukan analisis risiko untuk menentukan di mana harus menentukan batas.
Xalorous
16

Jawaban Gilles umumnya baik, kecuali

... terutama jika Anda hanya menyimpan kunci di ~ / .ssh di mana hanya administrator sistem (yang juga tahu alamat IP tempat Anda masuk) yang dapat melihatnya.

Kunci ssh Anda ~/.sshjuga dapat dibaca oleh perangkat lunak apa pun yang berjalan di bawah akun Anda sendiri. Yang mungkin sebagian besar perangkat lunak yang Anda jalankan. Jadi, Anda harus mempercayai perangkat lunak itu dan mereka yang menulisnya.

Stephen Blott
sumber
2
Anda harus selalu menggunakan kunci SSH terenkripsi karena alasan ini
ItalyPaleAle