OpenSSH: авторизация на основе ключа, максимальная длина ключа
Я использую Putty на окнах с аутентификацией на основе ключей для доступа к некоторым из моих серверов.
Он отлично работает с ключом ~3700 бит, но с ключом ~17000 он думает около 20 секунд на стороне клиента, а затем просто говорит "Доступ запрещен" и запрашивает пароль.
Существует ли какое-либо ограничение длины ключа или тайм-аут в OpenSSH для аутентификации на основе ключей?
Я понимаю, что использование таких больших клавиш не имеет большого практического смысла, особенно если посмотреть на эти 20 секунд расчета, просто пытаясь решить любые проблемы, с которыми я сталкиваюсь:-)...
4 ответа
В какой-то момент я изучил источник OpenSSL для ключей Диффи-Хеллмана и обнаружил, что существует "произвольный" предел в 10 КБ для размера ключей DH. Я изменил источник для теста, и обнаружил, что работает. Я написал ошибку авторам, и они ответили, что целью проекта было предотвратить DoS с помощью массивных ключей.
Не удивлюсь, если я увижу нечто подобное в OpenSSH.
В протоколе не определен максимальный размер ключа или время ожидания (или, по крайней мере, ни один из них), но реализация может не поддерживать такие длинные ключи. 20-секундное время обработки с закрытым ключом не кажется высоким для 17-битного ключа RSA. Тогда сервер может не захотеть тратить слишком много вычислительной мощности на пользователя, не прошедшего проверку подлинности: отказ от очень больших ключей является защитой от DoS-атак.
В настоящее время 2048 бит считается разумным для ключа RSA; 4096 бит выше, чем необходимо, но обычно поддерживается; кроме этого, вы не должны удивляться, если некоторые программы отклонят ключ.
Удалось ли вам сгенерировать ключ такого размера в предполагаемой целевой системе? Вы можете столкнуться с ограничением того, что поддерживается. Моя текущая система Centos поддерживает максимум 16 КБ, что кажется достаточным для массивных ключей. Вы должны увидеть максимальное значение, если попытаетесь превысить его с помощью ssh-keygen, как показано ниже.
[nathan@omni ~]# ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384
Сервер openssh имеет настройку LoginGraceTime. Со страницы руководства:
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.
Это может быть предел, который вы бьете, если он установлен на 20 секунд.
Неожиданное предположение: может быть, что сама замазка имеет этот предел, думая, что если обработка на стороне клиента аутентификации с открытым ключом занимает столько времени, что-то не так.