Otak saya melilit poros pada kunci publik dan pribadi. Ketika Anda membuat server cloud (contoh) pada layanan EC2 Amazon dan kemudian ingin terhubung melalui SSH, Amazon mengharuskan Anda untuk mengunduh kunci pribadi untuk membuat koneksi. Bukankah ide di balik kunci publik / pribadi menyarankan bahwa Amazon harus meminta Anda untuk mengunduh kunci publik?
Lebih lanjut, jika saya menyiapkan server SFTP untuk digunakan oleh pelanggan, haruskah saya menginstal kunci mereka di server atau memberi mereka kunci dari server? Dalam kedua kasus, haruskah itu kunci publik atau pribadi?
Jawaban:
Berpikir lebih dalam tentang proses otentikasi, apa yang perlu dirahasiakan? Amazon mengetahui bagian publik dari kunci, dan siapa pun dapat mengetahui bagian publik. Setengah publik dari keypair, ketika dicocokkan dengan setengah privat, menunjukkan bahwa separuh privat digunakan untuk otentikasi.
Anda kunci pribadi yang diberikan kepada Anda ketika Amazon menghasilkan keypair untuk Anda hanya berguna jika Anda satu-satunya yang memilikinya. Jika itu bukan rahasia, maka siapa pun yang mengetahuinya juga dapat mengotentikasi kepada siapa saja yang memegang setengah publik dari keypair.
Siapa pun yang diautentikasi harus memiliki setengah privasi . Tidak apa-apa jika semua orang di dunia dapat mengotentikasi Anda dengan memegang setengah kunci publik, tetapi hanya Anda yang harus mengendalikan setengah privat.
sumber
Amazon menyediakan layanan pembuatan kunci karena beberapa sistem operasi (batuk, Windows, batuk) mungkin tidak membuatnya mudah untuk menghasilkan keypairs SSH.
Dengan SSH (dan SFTP), kunci publik dipasang di file otor_keys pengguna saat instance EC2 dijalankan. Kunci pribadi dipegang hanya oleh pengguna dan disajikan untuk mengotentikasi terhadap server.
Dari dokumentasi di:
http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html
nampaknya Amazon menghasilkan keypair pada server mereka dan mengirimkan Anda kunci pribadi melalui HTTPS. Ini mungkin kurang sempurna (idealnya, Anda dan tidak ada orang lain yang memiliki kunci privat), tetapi mungkin tidak begitu, mengingat bahwa ini semua terjadi dalam konteks sesi terotentikasi Anda dan hanya Anda (dan Amazon sementara) yang melihat kunci pribadi. Anda juga dapat selalu menghasilkan dan mengunggah kunci publik Anda sendiri untuk penggunaan EC2, sambil menjaga kunci pribadi sepenuhnya pribadi.
Untuk mengatur pengguna SFTP untuk otentikasi kunci, mereka harus menghasilkan kunci SSH pada mesin mereka. Setelah mereka menghasilkan pasangan kunci, mereka seharusnya hanya mengirim Anda kunci publik untuk menginstal di file berwenang_kunci yang relevan. Kunci pribadi, seperti namanya, adalah pribadi.
sumber
Otentikasi kunci publik berfungsi dalam arah sebaliknya dengan cara yang Anda pikirkan. Kunci publik mengenkripsi pesan dan kunci pribadi mendekripsi mereka. Server menyimpan kunci publik pemegang akun dan menggunakannya untuk mengenkripsi pesan. Hanya pemegang kunci pribadi yang dapat mendekripsi pesan itu.
Jika Anda mengirim seseorang rahasia yang dienkripsi dengan kunci publik mereka, jika mereka dapat memberi tahu Anda apa rahasia itu, maka Anda tahu mereka memegang kunci pribadi yang cocok. Pengguna kemudian diautentikasi.
AWS mengharuskan Anda untuk mengunduh dan menyimpan kunci pribadi Anda karena mereka tidak akan menyimpannya, karena alasan keamanan. Karena kunci pribadi tidak disimpan di mana pun di AWS, Anda dapat yakin bahwa instance EC2 Anda aman.
sumber
Di satu sisi, itu tidak masalah. Sepasang kunci pribadi / publik terdiri dari dua bagian, dan mana di antara mereka yang publik yang terserah Anda. Jika ada sesuatu yang dienkripsi dengan satu kunci, Anda perlu yang lain untuk mendekripsi. Jika Anda telah menerbitkan satu kunci secara publik dan bukan yang lain, kunci pribadi adalah yang tidak Anda terbitkan.
Mendapatkan pertanyaan Anda yang sebenarnya: agaknya kunci yang diberikan Amazon kepada Anda adalah memungkinkan Anda untuk mengontrol sumber daya Anda sendiri, jadi itu tidak boleh diberikan kepada orang lain. Dalam konteks ini, Anda harus mempercayai Amazon untuk memiliki kunci pribadi Anda, setidaknya cukup lama untuk disiapkan.
Jika Anda ingin pelanggan Anda masuk dengan cara ini, Anda perlu mereka memberi Anda kunci yang siap mereka bagikan dengan Anda, jadi karena itu kunci publik mereka. Anda menginstal ini di server di otor_keys, yang secara efektif mengatakan "siapa pun yang memiliki kunci pribadi yang cocok dengan publik ini dapat mengakses sumber daya ini".
sumber