17

Самое заметное место, которое я заметил, это когда SSH работает на работе, но я чувствую, что я наблюдал такое поведение и в других местах.

Когда я пытаюсь войти на серверы Linux со своего рабочего стола Windows на работе, я заметил, что если я неправильно введу свой пароль, потребуется около 5 секунд, прежде чем я получу "Отказано в доступе". Затем, когда я правильно ввожу свой пароль, вход в систему (вместе с приветственными сообщениями и т.д.) Происходит практически мгновенно.

Есть ли какая-либо логическая причина для этого, или это было бы до какой-то странной конфигурации, которая специфична для машин здесь, на работе?

3 ответа3

21

Вероятно, есть встроенный искусственный тайм-аут, чтобы затруднить атаку грубой силой.

Вы увидите это во многих приглашениях входа в систему, которые включают безопасную аутентификацию ...

10

Это некоторая предполагаемая задержка для предотвращения атак грубой силой. Более длительная задержка также препятствует тому, чтобы злоумышленник смог угадать разницу между именем пользователя и неверным паролем (хеширование и проверка пароля занимает заметно больше времени, чем проверка имени пользователя).

1

Технически, это намеренная задержка состоит в том, чтобы предотвратить атаки, такие как "атака линеаризации" (есть и другие атаки и причины).

Чтобы проиллюстрировать атаку, рассмотрим программу (без этой преднамеренной задержки), которая проверяет введенный серийный номер, чтобы увидеть, соответствует ли он правильному серийному номеру , который в данном случае является « xyba ». Для эффективности программист решил проверять по одному символу за раз и выходить, как только будет найден неправильный символ, перед началом также проверяются длины.

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

  • Таким образом, злоумышленник может выбрать строку из четырех символов, и строка, начинающаяся с x, занимает больше всего времени. (угадай работу)
  • Затем атакующий может зафиксировать символ как x и изменить второй символ, и в этом случае он обнаружит, что y занимает больше всего времени.
  • Затем атакующий может исправить первые два символа как xy и изменить третий символ, и в этом случае он обнаружит, что b занимает самое длинное.
  • Затем атакующий может зафиксировать первые три символа как xyb и изменить четвертый символ, и в этом случае он обнаружит, что a занимает больше всего времени.

Следовательно, злоумышленники могут восстановить серийный символ по одному за раз.

Linearization.java.

Linearization.docx, пример вывода

Серийный номер длиной четыре символа и каждый символ имеет 128 возможных значений. Тогда есть 128 4 = 2 28 = 268 435 456 возможных сериалов. Если злоумышленник должен случайным образом угадать полные серийные номера, он будет угадывать серийный номер примерно в 2 27 = 134 217 728 попыток, что является огромным объемом работы. С другой стороны, с помощью линеаризации атаки выше, в среднем только 128/2 = 64 догадок требуется для каждой буквы, на общую работу ожидается около 4 * 64 = 2 8 = 256 догадок, который представляет собой тривиальное количество работы.

Большая часть письменного военного материала взята из этого (взято из «Информационной безопасности: принципы и практика» Марка Стэмпа). Кроме того, приведенные выше расчеты не учитывают количество догадок, необходимых для определения правильной серийной длины.

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