Технически, это намеренная задержка состоит в том, чтобы предотвратить атаки, такие как "атака линеаризации" (есть и другие атаки и причины).
Чтобы проиллюстрировать атаку, рассмотрим программу (без этой преднамеренной задержки), которая проверяет введенный серийный номер, чтобы увидеть, соответствует ли он правильному серийному номеру , который в данном случае является « 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 догадок, который представляет собой тривиальное количество работы.
Большая часть письменного военного материала взята из этого (взято из «Информационной безопасности: принципы и практика» Марка Стэмпа). Кроме того, приведенные выше расчеты не учитывают количество догадок, необходимых для определения правильной серийной длины.