Non è pericoloso usare le chiavi SSH per accedere a un server sconosciuto / compromesso?


9

Supponiamo che fornisca a qualcuno la mia chiave SSH pubblica, id_rsa.pub e che la installi su un server compromesso, e mi viene chiesto di accedere.

Il processo di accesso prevede l'invio della mia chiave privata al server compromesso?

Se sì, allora l'attaccante ora ha accesso alla mia chiave SSH privata, e questo è spaventoso.

Se no, allora perché vedo questa riga nell'output di ssh -vvv:

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

Ciò implica che la chiave privata è stata inviata al server e l'ha accettata.

Sto fraintendendo il problema?

Risposte:


7

NO , la tua chiave privata non viene MAI "inviata" o trasmessa ovunque.

La crittografia a chiave pubblica non è come l'autenticazione tradizionale con nome utente / password.

  • La tua chiave pubblica è proprio questo: pubblica. È perfettamente sicuro condividerlo. L'invio della tua chiave pubblica a qualcuno può rivelare la tua identità (le persone possono sapere che proviene da te perché è un numero univoco), ma non può mai consentire a qualcun altro di impersonarti o autenticarti come te. Puoi anche pubblicare la tua chiave pubblica su SuperUser o sulla tua pagina web tramite HTTP normale; è perfettamente sicuro e perfettamente inutile se qualcuno non ha la tua chiave privata.

  • La tua chiave privata è proprio questo: privata. Risiede solo su sistemi di tua proprietà e di fiducia (si spera) e dovrebbe sempre essere crittografato con una password di sblocco per la massima sicurezza, nel caso in cui qualcuno ottenga l'accesso fisico al sistema su cui è archiviato. La chiave privata non viene mai trasmessa da alcun programma di sicurezza correttamente implementato che si sta comportando secondo le regole della crittografia a chiave pubblica. Cioè, a meno che tu non abbia un programma sul tuo sistema locale che è compromesso ed è in grado di leggere la tua chiave privata (e la chiave privata non è crittografata da una password), la tua chiave privata è sempre sicura.

I messaggi sono firmati con la chiave privata, sul tuo computer , prima di essere inviati al server remoto. Pertanto, anziché inviare la chiave privata al server remoto, si sta inviando un messaggio crittografato con la chiave privata. Ma queste due cose non sono le stesse: non puoi derivare la chiave privata dal messaggio firmato; fa parte del punto della crittografia a chiave pubblica.

In breve, anche se un attaccante ostile ottiene la tua chiave pubblica e ottiene i messaggi firmati dalla tua chiave privata, non sarà comunque in grado di ottenere la tua chiave privata effettiva e, quindi, non potrà impersonare le tue credenziali o utilizzare la tua chiave privata per autenticare "come voi".


Comprendo il processo di crittografia a chiave pubblica, ma ero confuso dal messaggio di debug emesso da ssh. La risposta di @ pjc50 sembra fornire la certezza che stavo cercando.
Gurjeet Singh,

11

Stai fraintendendo il processo.

La chiave non viene inviata, piuttosto una "sfida" si costruisce crittografando qualcosa con la chiave pubblica che può essere decrittografata solo con la chiave privata corrispondente.

Se ti viene chiesta la password o esegui l'inoltro X a un server compromesso, esiste un potenziale rischio per la sicurezza.


Grazie. Anche ssh emette questo messaggio, il debug1: Offering RSA public key: <$HOME>/.ssh/id_rsache fa pensare che la chiave privata sia condivisa anche se id_rsa.pub è già stato condiviso.
Gurjeet Singh,

La chiave pubblica è ben pubblica. Puoi darlo a chiunque. Questo dà loro la possibilità di crittografare i messaggi. La chiave privata è ciò che consente di decrittografare i messaggi. Finché tieni la chiave privata per te, stai bene.
Pete,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.