Почему некорректная попытка пароля занимает намного больше времени, чем правильная?

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

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

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

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

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

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

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

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

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

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

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

Linearization.java.

Линеаризация.docx, выборка вывода

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

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

  • Сброс пароля root в Linux
  • ПК в качестве динамиков Bluetooth
  • Скажите aptitude игнорировать сломанный пакет
  • Почему я не могу использовать общую папку VirtualBox?
  • Как анализировать использование диска в командной строке linux?
  • Как автоматически удалить исходные файлы после шифрования с помощью GPG?
  • Удалите все файлы внутри каталога через FTP с помощью BASH
  • Использование нескольких веб-камер USB в Linux
  • Как прозрачно туннелировать порт с IPv4 на удаленное устройство IPv6?
  • Получите разрешение экрана из командной строки для Linux Desktop
  • Как освободить память «полностью спящий» процесс?
  • Давайте будем гением компьютера.