OpenSSH: autorizzazione basata su chiave, lunghezza massima della chiave


9

Sto usando Putty su Windows con autenticazione basata su chiave per accedere ad alcuni dei miei server.

Funziona perfettamente con la chiave ~ 3700 bit, ma con la chiave ~ 17000 bit pensa per circa 20 secondi sul lato client e poi dice "Accesso negato" e chiede una password.

Esiste un limite di lunghezza della chiave o un timeout in OpenSSH per l'autenticazione basata su chiave?

Capisco che l'uso di tasti così grandi non ha molto senso pratico, specialmente quando si guarda a questi 20 secondi di calcolo, solo cercando di risolvere tutti i problemi che devo affrontare: -) ...


Ho visto problemi simili accadere su alcune versioni di OpenSSH, che ho risolto usando una lunghezza della chiave che era una potenza di due.
Kasperd,

Risposte:


9

A un certo punto ho esaminato la fonte di OpenSSL per le chiavi Diffie-Hellman e ho scoperto che c'era un limite "arbitrario" di 10 KB sulla dimensione delle chiavi DH. Ho cambiato la fonte per un test e ho scoperto che ha funzionato. Ho scritto un bug agli autori e loro hanno risposto che era intenzione progettuale prevenire DoS usando chiavi enormi.

Non mi sorprenderei vedere qualcosa di simile in OpenSSH.


5

Non ci sono dimensioni massime della chiave o timeout definiti nel protocollo (o almeno nessuno che si dovrebbe colpire), ma un'implementazione potrebbe non supportare chiavi così lunghe. Un tempo di elaborazione di 20 secondi con la chiave privata non sembra elevato per una chiave RSA a 17 kbit. Quindi il server potrebbe non voler spendere troppa potenza di calcolo su un utente non autenticato: rifiutare chiavi molto grandi è una protezione contro gli attacchi DoS.

Attualmente 2048 bit sono considerati ragionevoli per una chiave RSA; 4096 bit è superiore al necessario ma generalmente supportato; oltre a ciò non dovresti essere sorpreso se alcuni programmi rifiutano la chiave.


Questa protezione sembra ragionevole. È sintonizzabile o hardcoded nel codice sorgente?
BarsMonster,

Non ci sono opzioni per questo nel manuale, quindi qualsiasi limite deve essere nel codice sorgente. Detto questo, non so se esiste effettivamente una protezione, volevo solo dire che sarebbe ragionevole averne una. Sospetto che la risposta di AndreasM sia più vicina al segno.
Gilles 'SO- smetti di essere malvagio' il

3

Sei stato in grado di generare quella dimensione di chiave sul sistema di destinazione previsto? Potresti avere un limite a ciò che è supportato. Il mio attuale sistema Centos supporta un massimo di 16k che sembra sufficiente per chiavi di massa. Dovresti vedere il massimo se provi a superarlo con ssh-keygen come mostrato di seguito.

[nathan@omni ~]# ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384

Lo stesso su Debian 8.2. Il mio netbook potrebbe impiegare parecchio tempo a generare questa chiave a 16384 bit ... le cose che faccio per ridere.
underscore_d

Lo stesso su "Git Bash" per Windows 7, basato su MinGW.
user1364368

Lo stesso vale per OpenSuse Leap 42.1.
user1364368

1

Il server openssh ha un'impostazione LoginGraceTime. Dalla pagina man:

The server disconnects after this time if the user has not suc-
cessfully logged in.  If the value is 0, there is no time limit.
The default is 120 seconds.

Questo potrebbe essere un limite che stai colpendo se è impostato su 20 secondi.

Immaginazione selvaggia: potrebbe anche essere che lo stesso mastice abbia questo limite, pensando che se l'elaborazione lato client dell'autenticazione con chiave pubblica impiega così tanto tempo, qualcosa non va.


Ho pensato lo stesso e ho impostato LoginGraceTime 1200 Bene, il messaggio di errore è nella console, quindi dubito che sia qualcosa in Putty ...
BarsMonster

1
Controllare i registri del server. Con una dimensione chiave come questa ottengo: RSA_public_decrypt non riuscito: errore: 04067069: lib (4): func (103): reason (105). (a causa delle dimensioni della chiave apparentemente.) Proverò una chiave 2 ^ n.
AndreasM,

1
16384 bit sembra funzionare. Per risultati con 32kbit, consultare hermann-uwe.de/blog/… :)
AndreasM,

1
Hai ragione mortale: Trovato thid: sshd [1014]: errore: RSA_public_decrypt non riuscito: errore: 04067069: lib (4): func (103): motivo (105) Quindi questo deve essere un bug in sshd / OpenSSL :-)
BarsMonster
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.