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