Назад | Перейти на главную страницу

OpenSSH: авторизация на основе ключа, максимальная длина ключа

Я использую Putty в Windows с аутентификацией на основе ключей для доступа к некоторым из моих серверов.

Он отлично работает с ~ 3700-битным ключом, но с ~ 17000-битным ключом он думает около 20 секунд на стороне клиента, а затем просто говорит «Доступ запрещен» и запрашивает пароль.

Есть ли ограничение на длину ключа или тайм-аут в OpenSSH для аутентификации на основе ключа?

Я понимаю, что использование таких больших клавиш не имеет большого практического смысла, особенно если смотреть на эти 20 секунд вычисления, просто пытаясь решить любые проблемы, с которыми я сталкиваюсь: -) ...

В какой-то момент я заглянул в исходный код OpenSSL для ключей Диффи-Хеллмана и обнаружил, что существует «произвольный» предел в 10 КБ на размер ключей DH. Я изменил источник для теста и обнаружил, что он работает. Я написал авторам об ошибке, и они ответили, что это было намерение дизайна предотвратить DoS с помощью массивных ключей.

Не удивлюсь, увидев что-то подобное в OpenSSH.

В протоколе не определен максимальный размер ключа или тайм-аут (или, по крайней мере, такой, который вы бы нажали), но реализация может не поддерживать такие длинные ключи. 20-секундное время обработки с закрытым ключом кажется невысоким для 17-битного ключа RSA. Тогда сервер может не захотеть тратить слишком много вычислительной мощности на неаутентифицированного пользователя: отказ от очень больших ключей - это защита от DoS-атак.

В настоящее время 2048 бит считается разумным для ключа RSA; 4096 бит больше, чем необходимо, но обычно поддерживается; Помимо этого, вы не должны удивляться, если некоторые программы отвергают ключ.

Удалось ли вам сгенерировать ключ такого размера в предполагаемой целевой системе? Вы можете столкнуться с ограничением того, что поддерживается. Моя относительно современная система Centos поддерживает максимум 16k, что кажется достаточным для массивных ключей. Вы должны увидеть максимум, если попытаетесь превысить его с помощью 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 секунд.

Дикие предположения: может также случиться так, что сама замазка имеет этот предел, полагая, что если клиентская обработка аутентификации открытого ключа занимает так много времени, что-то не так.