it-swarm-id.com

Menggunakan kembali Kunci Pribadi / Publik

Saya memiliki akun di beberapa situs pihak ketiga - Bitbucket, Bluehost, dll.

Dari apa yang telah saya kumpulkan, adalah praktik umum untuk menggunakan satu pasangan kunci untuk semua [id_rsa, id_rsa.pub], tetapi hanya untuk memberikan kunci publik

Apakah itu penggunaan yang benar, atau lebih baik menghasilkan pasangan baru untuk setiap situs?

Tampaknya bagi saya ini tidak aman - situs apa pun yang saya percayai dengan niat jahat [atau yang diretas] dapat mengambil kunci pribadi saya ketika saya menghubungkan pertama kali, dan menggunakannya untuk masuk ke situs lain.

Bisakah seseorang yang memahami SSH memverifikasi bahwa aman untuk menggunakan satu pasangan kunci di mana saja, dan jika demikian, mungkin menjelaskan mengapa?

Juga, jika saya memiliki dua komputer rumah, apakah ada alasan untuk menggunakan pasangan kunci yang berbeda dari masing-masing?

Terima kasih semuanya.

45
SamGoody

Kunci pribadi Anda tidak pernah dikirim ke situs lain sehingga sangat aman untuk menggunakan kembali kunci publik. Tidak masalah untuk menggunakan kembali kunci yang sama dengan komputer lokal Anda. Namun, ingatlah bahwa jika seseorang mencuri kunci, mereka kemudian memiliki akses ke semuanya. Ini mungkin atau mungkin tidak menjadi perhatian.

42
artbristol

Ada beberapa pasang kunci di SSH. Yang Anda bicarakan adalah pasangan kunci klien . Klien (yaitu mesin yang ada di meja Anda, di bawah kendali fisik Anda) menyimpan kunci pribadi - dan kunci pribadi tidak pernah dikirim ke server. Kunci publik disimpan di server (biasanya di $HOME/.ssh/authorized_keys file).

Ketika klien terhubung ke server, klien menggunakan kunci pribadi untuk menunjukkan kepada server bahwa ia mengendalikan kunci privat, dan dapat melakukan perhitungan dengannya (yaitu tanda tangan digital ). Server memverifikasi tanda tangan berkat kunci publik. Pengetahuan tentang kunci publik tidak tidak memberikan kekuatan untuk menghasilkan tanda tangan baru, itulah sebabnya mengapa disebut kunci "publik": kunci ini dapat dipublikasikan , tanpa efek buruk. Secara khusus, menyalin kunci publik Anda pada sejumlah server tidak memberikan kekuatan pada server mana pun di atas server lain, baik itu jujur ​​atau sepenuhnya dikendalikan oleh penyerang.

Seperti yang ditunjukkan @artbristol, itulah kunci pribadi yang penting. Jika Anda menyalin kunci publik Anda ke sepuluh server, dan seseorang mencuri pribadi kunci (mungkin dengan meretas ke dalam sistem desktop Anda, atau secara fisik menggunakannya), lalu bahwa seseorang mendapatkan akses langsung ke sepuluh server sekaligus. Kunci pribadi bernilai berharga .

18
Thomas Pornin

Tampaknya bagi saya ini tidak aman - situs apa pun yang saya percayai dengan niat jahat [atau yang diretas] dapat mengambil kunci pribadi saya ketika saya menghubungkan pertama kali, dan menggunakannya untuk masuk ke situs lain.

Bisakah seseorang yang memahami SSH memverifikasi bahwa aman untuk menggunakan satu pasangan kunci di mana saja, dan jika demikian, mungkin menjelaskan mengapa?

Kunci publik berfungsi berdasarkan otentikasi tantangan. Pada dasarnya, Anda memberikan beberapa situs kunci publik Anda, sehingga setiap situs dapat memberikan tantangan kepada Anda. Tantangan ini unik setiap saat dan hanya dapat dijawab oleh seseorang dengan kunci pribadi.

Contoh yang disederhanakan adalah jika server mengambil kunci publik Anda dan mengenkripsi pesan seperti "Kunci sesi untuk pengguna X pada 19 Desember 16: 30: 03.351213 UTC adalah XPa7sK35WjMgAezrPmG1Sq4CV7nsFN1Uc3TRW6P8Evc". Komputer klien Anda menerima pesan terenkripsi, mendekripsi dengan kunci pribadi Anda, dan kemudian mengirim kembali kunci sesi yang didekripsi ke server, memvalidasi bahwa Anda memiliki kunci pribadi dalam kepemilikan Anda di mana server mengotentikasi Anda. (Dalam praktiknya, seringkali lebih rumit dengan server biasanya memiliki kunci Host publik/pribadi, sehingga Anda dapat mengenkripsi pesan Anda ke server dan mengautentikasi bahwa server itu sesuai dengan yang dikatakannya).

Memiliki kunci publik Anda tidak memberikan metode serangan tambahan server jahat dengan pengecualian mencoba memfaktorkan modulus dari kunci publik Anda untuk membuat ulang kunci pribadi Anda. Ini hanya mungkin jika kunci Anda terlalu kecil, yaitu kunci 512-bit di-crack satu dekade lalu, kunci RSA 768-bit dilaporkan retak tahun lal (dengan sekitar 10 ^ 20 operasi; atau 2000 tahun pada satu inti prosesor modern); Kunci 1024-bit masih aman, dan standar ssh adalah kunci 2048-bit.

6
dr jimbob

Dokumen ini memiliki semua detail tentang bagaimana otentikasi kunci publik bekerja di SSH. Saya telah merangkumnya di bawah ini.

Klien mengirim paket berikut:

 deskripsi tipe data/nilai 
 byte SSH_MSG_USERAUTH_REQUEST 
 nama pengguna string 
 layanan string 
 string "publickey" 
 boolean TRUE 
 string nama algoritma kunci publik string 
 ____.] kunci publik string yang akan digunakan untuk otentikasi 
 string tanda tangan

di mana tanda tangan adalah tanda tangan menggunakan kunci pribadi di atas data berikut:

 pengidentifikasi sesi string 
 byte SSH_MSG_USERAUTH_REQUEST 
 nama pengguna string 
 string service 
 string "publickey" 
 boolean TRUE 
 nama algoritma kunci publik string 
 string kunci publik yang akan digunakan untuk otentikasi 

Server kemudian mencari apakah kunci publik yang ditentukan diotorisasi untuk kunci publik yang diberikan (@ThomasPornin membahas bagaimana hal ini dilakukan dalam jawabannya). Server kemudian memeriksa untuk memastikan tanda tangan itu benar (ini dilakukan menggunakan kunci publik). Jika itu berhasil, maka otentikasi berhasil.

Seperti yang Anda lihat (dan seperti yang ditunjukkan dalam jawaban @ artbristol), kunci pribadi tidak pernah dikirim ke server. Anda hanya perlu membuktikan bahwa Anda mengetahui kunci privat dengan mengirim tanda tangan digital.

4
mikeazo