OpenSSH: Schlüsselbasierte Autorisierung, maximale Schlüssellänge


9

Ich verwende Putty unter Windows mit schlüsselbasierter Authentifizierung, um auf einige meiner Minenserver zuzugreifen.

Mit ~ 3700-Bit-Schlüssel funktioniert es einwandfrei, aber mit ~ 17000-Bit-Schlüssel denkt es auf der Clientseite etwa 20 Sekunden lang und sagt dann einfach "Zugriff verweigert" und fragt nach einem Passwort.

Gibt es in OpenSSH ein Limit für die Schlüssellänge oder ein Zeitlimit für die schlüsselbasierte Authentifizierung?

Ich verstehe, dass die Verwendung so großer Tasten nicht viel praktischen Sinn hat, besonders wenn man sich diese 20 Sekunden der Berechnung ansieht und nur versucht, alle Probleme zu lösen, mit denen ich konfrontiert bin: -) ...


Ich habe ähnliche Probleme bei einigen OpenSSH-Versionen gesehen, die ich mithilfe einer Schlüssellänge um eine Zweierpotenz umgangen habe.
Kasperd

Antworten:


9

Irgendwann habe ich in der OpenSSL-Quelle nach Diffie-Hellman-Schlüsseln gesucht und festgestellt, dass die Größe der DH-Schlüssel "willkürlich" auf 10 KB begrenzt ist. Ich habe die Quelle für einen Test geändert und festgestellt, dass dies funktioniert hat. Ich habe den Autoren einen Fehler geschrieben, und sie antworteten, es sei beabsichtigt, DoS durch die Verwendung massiver Schlüssel zu verhindern.

Würde mich nicht überraschen, etwas Ähnliches in OpenSSH zu sehen.


5

Im Protokoll ist keine maximale Schlüsselgröße oder Zeitlimit definiert (oder zumindest keine, die Sie treffen würden), aber eine Implementierung unterstützt möglicherweise nicht so lange Schlüssel. Eine Verarbeitungszeit von 20 Sekunden mit dem privaten Schlüssel klingt für einen 17-kbit-RSA-Schlüssel nicht hoch. Dann möchte der Server möglicherweise nicht zu viel Rechenleistung für einen nicht authentifizierten Benutzer ausgeben: Das Ablehnen sehr großer Schlüssel ist ein Schutz vor DoS-Angriffen.

Derzeit werden 2048 Bit für einen RSA-Schlüssel als angemessen angesehen. 4096 Bit sind höher als nötig, werden aber normalerweise unterstützt. Darüber hinaus sollten Sie sich nicht wundern, wenn einige Programme den Schlüssel ablehnen.


Dieser Schutz sieht angemessen aus. Ist es im Quellcode abstimmbar oder fest codiert?
BarsMonster

Dafür gibt es im Handbuch keine Option, daher muss jede Beschränkung im Quellcode enthalten sein. Das heißt, ich weiß nicht, ob es tatsächlich einen Schutz gibt, ich meinte nur, dass es vernünftig wäre, einen zu haben. Ich vermute, dass die Antwort von AndreasM näher an der Marke liegt.
Gilles 'SO - hör auf böse zu sein'

3

Konnten Sie diese Schlüsselgröße auf dem beabsichtigten Zielsystem generieren? Möglicherweise stoßen Sie auf ein Limit für das, was unterstützt wird. Das derzeitige Centos-System von mir unterstützt ein Maximum von 16 KB, was für massive Schlüssel ausreichend zu sein scheint. Sie sollten das Maximum sehen, wenn Sie versuchen, mit ssh-keygen darüber zu gehen, wie unten gezeigt.

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

Gleiches gilt für Debian 8.2. Mein Netbook könnte eine ganze Weile damit verbringen, diesen 16384-Bit-Schlüssel zu generieren ... die Dinge, die ich zum Lachen mache.
underscore_d

Gleiches gilt für "Git Bash" für Windows 7, das auf MinGW basiert.
user1364368

Gleiches gilt auch für OpenSuse Leap 42.1.
user1364368

1

Der openssh-Server verfügt über eine LoginGraceTime-Einstellung. Von der Manpage:

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.

Dies könnte ein Limit sein, das Sie erreichen, wenn es auf 20 Sekunden eingestellt ist.

Wilde Vermutung: Es könnte auch sein, dass Putty selbst diese Grenze hat und denkt, dass etwas nicht stimmt, wenn die clientseitige Verarbeitung der Authentifizierung mit öffentlichem Schlüssel so lange dauert.


Ich habe das gleiche gedacht und LoginGraceTime 1200 eingestellt. Nun, Fehlermeldung ist in der Konsole, also bezweifle ich, dass es etwas in Putty ist ...
BarsMonster

1
Überprüfen Sie die Serverprotokolle. Mit einer Schlüsselgröße wie dieser erhalte ich: RSA_public_decrypt fehlgeschlagen: Fehler: 04067069: lib (4): func (103): Grund (105). (Wegen der Schlüsselgröße anscheinend.) Ich werde einen 2 ^ n-Schlüssel versuchen.
AndreasM

1
16384 Bits scheinen zu funktionieren. Für Ergebnisse mit 32kbits siehe hermann-uwe.de/blog/… :)
AndreasM

1
Sie haben tödliches Recht: Gefunden thid: sshd [1014]: Fehler: RSA_public_decrypt fehlgeschlagen: Fehler: 04067069: lib (4): func (103): Grund (105) Dies muss also ein Fehler in sshd / OpenSSL sein :-)
BarsMonster
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.