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

SSH: использование одного открытого ключа на нескольких удаленных машинах и подмена известным сервером

Текст песни

Обычно, люди говорят, что использование одного открытого ключа на нескольких серверах так же безопасно, как использование уникальных открытых ключей на каждом из них. (Если мы не говорим о возможности взлома закрытого ключа)

Но ... Я не понимаю, возможно ли "обмануть вашу аутентификацию" в следующем случае:

Предварительные условия

Предположим, вы счастливый обладатель ПК-1. Также есть Сервер-1 и Сервер-2, и у них один и тот же открытый ключ. Сервер-1 знает о существовании Сервер-2, но ты не хочешь Сервер-1администратора, чтобы украсть ваши данные из Сервер-2.

Итак, что здесь не так:

  1. ПК-1 пытается подключиться к Сервер-1...
  2. Сервер-1 обеспечивает ПК-1 с участием Сервер-1отпечаток пальца пользователя (известный и надежный)
  3. Сервер-1 запрос аутентификации "туннелей" от ПК-1 к Сервер-2
  4. Сервер-2 ответы на Сервер-1 (отправляет "вызов")
  5. Сервер-1 туннели бросают вызов ПК-1
  6. ПК-1 считает, что «вызов» был создан Сервер-1
  7. ПК-1 использует свой закрытый ключ для решения задачи и отправляет подпись Сервер-1
  8. Сервер-1 использует полученную подпись для аутентификации на Сервер-2

PS:

Все, что я знаю о процессе аутентификации ssh, пришло от Вот и Вот.

Я ответил на свой вопрос на security.stackexchange.com.

Основная идея - в ssh v2 общий секрет симметричного шифрования проверяется и во время аутентификации, хотя это не так очевидно.

Из Справочник OpenSSH, у нас это в разделе 15.10.3:

SSH использует систему отпечатков ключей для проверки подлинности сервера при подключении клиента. Пользователю предлагается ввести «да» только при первом подключении. Все будущие попытки входа в систему проверяются по сохраненному ключу отпечатка пальца. Клиент SSH предупредит вас, если сохраненный отпечаток пальца отличается от полученного отпечатка пальца при будущих попытках входа в систему.

Таким образом, если вы ранее входили на Сервер-2, злоумышленник на Сервере-1 будет обнаружен, потому что отпечаток Сервера-2, хранящийся на клиенте, не будет соответствовать тому, что представляет Сервер-1.

Если вы не входили в систему Server-2 в прошлом, то сервер-1 может выполнить атаку «человек посередине». Это также может быть возможно, если вы запустите ssh-клиент с некоторыми параметрами, которые говорят ему не проверять отпечаток сервера, но вам придется изо всех сил сделать это.