Bukankah berbahaya menggunakan kunci SSH untuk masuk ke server yang tidak dikenal / dikompromikan?

9

Katakanlah saya memberikan seseorang dengan kunci SSH publik saya, id_rsa.pub dan dia menginstalnya di server yang dikompromikan, dan saya diminta untuk masuk.

Apakah proses login melibatkan pengiriman kunci pribadi saya ke server yang dikompromikan?

Jika ya, maka penyerang sekarang memiliki akses ke kunci SSH pribadi saya, dan itu menakutkan.

Jika tidak, lalu mengapa saya melihat baris ini di ssh -vvv output:

debug1: Server accepts key: pkalg ssh-rsa blen 277

Ini menyiratkan bahwa kunci pribadi dikirim ke server, dan itu menerimanya.

Apakah saya salah paham masalah?

Gurjeet Singh
sumber

Jawaban:

11

Anda salah mengerti prosesnya.

Kunci tidak dikirim, melainkan "tantangan" dibangun dengan mengenkripsi sesuatu dengan kunci publik yang hanya dapat didekripsi dengan kunci pribadi yang cocok.

Jika Anda diminta kata sandi, atau Anda meneruskan X ke server yang dikompromikan, maka ada risiko keamanan potensial.

pjc50
sumber
Terima kasih. ssh juga memancarkan pesan ini debug1: Offering RSA public key: <$HOME>/.ssh/id_rsayang membuat orang berpikir bahwa kunci pribadi sedang dibagikan meskipun id_rsa.pub telah dibagikan.
Gurjeet Singh
Kunci publik adalah, juga publik. Anda bisa memberikannya kepada siapa saja. Itu memberi mereka kemampuan untuk mengenkripsi pesan. Kunci pribadi adalah apa yang memungkinkan Anda mendekripsi pesan. Selama Anda menyimpan kunci pribadi Anda untuk diri sendiri, Anda baik-baik saja.
Pete
7

TIDAK , kunci pribadi Anda TIDAK PERNAH "dikirim" atau dikirim ke mana pun.

Kriptografi kunci publik tidak seperti otentikasi nama pengguna / kata sandi tradisional.

  • Kunci publik Anda hanya itu - publik. Sangat aman untuk membagikannya. Mengirim kunci publik Anda kepada seseorang dapat memberikan identitas Anda (orang-orang dapat mengetahui bahwa itu dari Anda karena ini nomor unik), tetapi itu tidak akan pernah memungkinkan orang lain menyamar sebagai Anda atau mengotentikasi Anda. Anda mungkin juga memposting kunci publik Anda di SuperUser atau di halaman web Anda melalui HTTP biasa; itu sangat aman, dan sama sekali tidak berguna jika seseorang tidak memiliki kunci pribadi Anda.

  • Kunci pribadi Anda hanya itu - pribadi. Ini hanya berada pada sistem yang Anda miliki dan percayai (semoga), dan harus selalu dienkripsi dengan kata sandi pembuka untuk keamanan maksimum, jika seseorang mendapatkan akses fisik ke sistem tempat penyimpanannya. Kunci privat tidak pernah dikirimkan oleh program keamanan yang diimplementasikan dengan baik yang berperilaku sesuai dengan aturan kriptografi kunci publik. Yaitu, kecuali Anda memiliki program pada sistem lokal Anda yang dikompromikan dan mampu membaca kunci pribadi Anda (dan kunci pribadi tidak dienkripsi dengan kata sandi), kunci pribadi Anda aman, selalu.

Pesan ditandatangani dengan kunci pribadi, di komputer Anda , sebelum dikirim ke server jarak jauh. Jadi, daripada mengirim kunci pribadi ke server jauh, Anda mengirim pesan yang dienkripsi dengan kunci pribadi. Tetapi kedua hal ini tidak sama: Anda tidak dapat memperoleh kunci pribadi dari pesan yang ditandatangani; itulah bagian dari titik kriptografi kunci publik.

Singkatnya, bahkan jika penyerang yang bermusuhan mendapatkan kunci publik Anda dan mendapatkan pesan yang ditandatangani oleh kunci pribadi Anda, mereka masih tidak akan dapat memperoleh kunci pribadi Anda yang sebenarnya, dan dengan demikian, mereka tidak dapat menyamar sebagai kredensial Anda atau menggunakan kunci pribadi Anda untuk mengotentikasi "sebagai kamu".

allquixotic
sumber
Saya memahami proses crypo kunci publik, tetapi bingung dengan pesan debug yang dikeluarkan oleh ssh. Jawaban dari @ pjc50 tampaknya memberikan jaminan yang saya cari.
Gurjeet Singh