Многие статьи предполагают, что использование аутентификации с открытым ключом более безопасно, чем использование пароля. Ссылки: http://www.linuxquestions.org/questions/linux-security-4/is-ssh-keys-authentication-more-secure-than-password-authentication-934866/ и http://www.spy-hill .net/~ myers/help/PublicKey.html.

Позволю себе не согласиться.

Проблема с аутентификацией с открытым ключом заключается в том, что он преобразует режим аутентификации из «что-то, что вы знаете» в «то, что у вас есть в вашей домашней папке».

Рассмотрим распространение атаки. Если одна машина взломана, лучше использовать атаку на той же машине, когда используется аутентификация на основе пароля, а не открытый ключ, при котором взломана каждая машина.

Мое мнение таково: если на сервере не используются скрипты, которые хранят пароль, аутентификация по паролю и блокировка учетной записи для bruteforce намного сильнее, чем открытый ключ.

Когда присутствуют скрипты - 1. Убедитесь, что сценарии выполняются как наименее привилегированный пользователь, насколько это возможно, и используйте проверку подлинности с открытым ключом для сценариев для доступа к другим компьютерам. 2. Для запуска сценариев требуются права суперпользователя, при этом используется та же непривилегированная учетная запись и локальный исполняемый файл с suid (доступный только сценарию) для запуска привилегированной команды.

Какие-нибудь мысли?

3 ответа3

1

На самом деле, при использовании PKI вы можете отозвать сертификат, если узнаете, что он скомпрометирован. Windows даже вынуждает вас использовать пароль при экспорте закрытого ключа (который выполняет расшифровку всего зашифрованного с соответствующим открытым ключом), поэтому при попытке импортировать используемый ключ злоумышленнику также потребуется знать пароль. Не говоря уже о том, что хеш SHA-512 сложнее взломать, чем, скажем, «Mike5 $ ecureP @ ssword», например :-)

1

Есть несколько причин, по которым он более безопасен, но в какой-то степени вы сравниваете яблоки с апельсинами. Сначала несколько общих замечаний -

  1. Пароли по своей природе небезопасны, поскольку они имеют (сравнительно) ограниченное пространство ключей, и люди очень плохо умеют придумывать действительно случайные пароли.
  2. Если используется пароль и любой компьютер, на котором этот пароль используется, он предоставляет множество рычагов для "грубой силы" пароля, поскольку известна зашифрованная версия.

Открытый / закрытый ключ решает эти проблемы следующим образом:

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

  2. Даже если система, в которую вы вошли (то есть, не ваша), скомпрометирована, ваша парадигма безопасности все еще не работает.

Теперь кикер и отвечу -

Возможно, вы захотите пересмотреть свое мнение о том, что аутентификация с открытым ключом «преобразует режим аутентификации из« чего-то, что вы знаете »в« то, что у вас есть в домашней папке ». Хотя вы, конечно, МОЖЕТЕ опустить парольную фразу, это не является (в общем случае) лучшей практикой, и все системы открытых / закрытых ключей, которые мне известны, поддерживают (и запрашивают по умолчанию) парольную фразу.

Подводя итог, если только взломанный компьютер не принадлежит вам, вы более защищены с помощью открытого / закрытого ключа входа в систему. Если взломанная машина принадлежит вам, пароль не поможет вам так сильно, как его можно прослушать на пути к нему !!!

1

Есть несколько причин:

  • Ключи могут быть легко ограничены определенными IP-адресами. Они также могут быть ограничены выполнением определенных команд, что полезно для сценариев (как вы заметили, сценарии требуют, чтобы закрытый ключ хранился в незашифрованном виде на жестком диске; однако вы можете значительно снизить потенциальную опасность от этого ключа). Вы также можете использовать несколько ключей для одной учетной записи, позволяя каждому сценарию иметь свой собственный ключ, который ограничен следующим образом. Если вы объедините это с парольной фразой для вашего ключа, общие учетные данные для входа не будут храниться в незашифрованном виде. Это гораздо более безопасно, чем вводить пароль в виде открытого текста, потому что это позволяет кому-то делать что-либо с вашей учетной записью.
  • Пароли отправляются на удаленный сервер; закрытых ключей нет. Это имеет значение, если удаленный сервер скомпрометирован (или если кто-то выдал себя за удаленного сервера): они могут изменить sshd для кражи пароля, но они не могут украсть ваш закрытый ключ.
  • Если закрытый ключ скомпрометирован, это очень легко изменить его. Изменение пароля на действительно надежный пароль требует от вас запомнить еще один пароль.
  • Закрытые ключи имеют гораздо большую энтропию, чем пароли. Случайно сгенерированный 20-символьный пароль не имеет значения для 2048-битной пары ключей. Это делает грубое принуждение намного сложнее, чем для паролей.
  • Если вы храните ключ с парольной фразой, злоумышленник должен получить две части информации, чтобы получить ваши учетные данные: ключ и кодовую фразу. Если кто-то наблюдает, как вы вводите фразу-пароль, у него все еще нет ключа. Если кто-то украл ключ, у него все еще нет пароля. Если вы осторожно относитесь к тому, где вы положили свой закрытый ключ, кража файла не является легкой задачей (например, если он находится на флэш-накопителе, который вы носите с собой, удаленный злоумышленник не сможет его получить).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .