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