OpenSSH: autorización basada en clave, longitud máxima de clave

9

Estoy usando Putty en Windows con autenticación basada en claves para acceder a algunos de los servidores de la mina.

Funciona totalmente bien con una clave de ~ 3700 bits, pero con una clave de 17000 bits piensa durante unos 20 segundos en el lado del cliente y luego dice "Acceso denegado" y solicita una contraseña.

¿Hay algún límite de longitud de clave o tiempo de espera en OpenSSH para la autenticación basada en clave?

Entiendo que el uso de teclas tan grandes no tiene mucho sentido práctico, especialmente al mirar estos 20 segundos de cálculo, solo tratando de resolver cualquier problema que enfrento: -) ...

BarsMonster
fuente
He visto problemas similares en algunas versiones de OpenSSH, en las que trabajé usando una longitud de clave que era una potencia de dos.
kasperd

Respuestas:

9

En un momento, busqué en la fuente de OpenSSL las claves Diffie-Hellman y descubrí que había un límite "arbitrario" de 10K en el tamaño de las claves DH. Cambié la fuente de una prueba y descubrí que funcionaba. Escribí un error a los autores, y respondieron que era un intento de diseño para evitar DoS mediante el uso de claves masivas.

No me sorprendería ver algo similar en OpenSSH.

Paul Holder
fuente
5

No hay un tamaño máximo de clave o tiempo de espera definido en el protocolo (o al menos ninguno que estaría presionando), pero una implementación podría no admitir claves tan largas. Un tiempo de procesamiento de 20 segundos con la clave privada no suena alto para una clave RSA de 17kbit. Entonces, el servidor podría no querer gastar demasiado poder de cómputo en un usuario no autenticado: rechazar claves muy grandes es una protección contra ataques DoS.

Actualmente, 2048 bits se consideran razonables para una clave RSA; 4096 bits es más alto de lo necesario pero generalmente soportado; más allá de esto, no debería sorprenderse si algunos programas rechazan la clave.

Gilles 'SO- deja de ser malvado'
fuente
Esta protección parece razonable. ¿Es sintonizable o codificado en el código fuente?
BarsMonster
No hay ninguna opción para esto en el manual, por lo que cualquier límite debe estar en el código fuente. Dicho esto, no sé si realmente hay una protección, solo quería decir que sería razonable tenerla. Sospecho que la respuesta de AndreasM está más cerca de la marca.
Gilles 'SO- deja de ser malvado'
3

¿Pudiste generar ese tamaño de clave en el sistema objetivo deseado? Es posible que se encuentre con un límite de lo que se admite. Más bien, el sistema mío actual de Centos admite un máximo de 16k que parece suficiente para claves masivas. Debería ver el máximo si intenta superarlo con ssh-keygen como se muestra a continuación.

[nathan@omni ~]# ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384
zaznet
fuente
Lo mismo en Debian 8.2. Mi netbook podría pasar bastante tiempo generando esta clave de 16384 bits ... las cosas que hago para reír.
underscore_d
Lo mismo en "Git Bash" para Windows 7, que se basa en MinGW.
user1364368
También lo mismo en OpenSuse Leap 42.1.
user1364368
1

El servidor openssh tiene una configuración de LoginGraceTime. Desde la página del manual:

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.

Esto podría ser un límite que está alcanzando si está configurado en 20 segundos.

Suposición salvaje: también podría ser que la masilla en sí misma tenga este límite, pensando que si el procesamiento de la autenticación de clave pública por parte del cliente lleva tanto tiempo, algo está mal.

AndreasM
fuente
Pensé lo mismo y configuré LoginGraceTime 1200 Bueno, el mensaje de error está en la consola, así que dudo que sea algo en Putty ...
BarsMonster
1
Verifique los registros del servidor. Con un tamaño de clave como este me sale: RSA_public_decrypt falló: error: 04067069: lib (4): func (103): reason (105). (aparentemente debido al tamaño de la clave). Intentaré con una clave 2 ^ n.
AndreasM
1
16384 bits parece funcionar. Para obtener resultados con 32 kbits, consulte hermann-uwe.de/blog/… :)
AndreasM el
1
Tiene toda la razón: Encontró thid: sshd [1014]: error: RSA_public_decrypt falló: error: 04067069: lib (4): func (103): reason (105) Entonces esto debe ser un error en sshd / OpenSSL :-)
BarsMonster