22.5. Внесение искажений
Если же данные все-таки изменяются между вызовами криптографических функций и это не позволяет определить алгоритм, можно попробовать следующий подход. Некоторые функции-переходники разрабатываются таким образом, что при обнаружении определенного значения в обрабатываемых данных, в них вносятся намеренные искажения. При этом, разумеется, все операции, использующие искаженные данные, пойдут по-другому, и это будет отражено в протоколе. Сравнив два протокола (оригинальный и с искажениями), можно будет легко определить, где внесенные искажения впервые повлияли на ход выполнения протокола, а значит, и локализовать место, нуждающееся в более подробном исследовании с помощью отладчика и дизассемблера.
Изучать и анализировать реконструированный криптографический протокол на несколько порядков проще, чем пытаться при помощи отладчика и дизассемблера разобраться в том, как программа обрабатывает данные.
Если же протокол является единственной секретной частью "черного ящика", реконструкция протокола, фактически, означает полный взлом защиты.