Исаия
- 1 year ago
- 0
- 0
XXTEA — криптографический алгоритм , реализующий блочное симметричное шифрование и представляющий собой сеть Фейстеля . Является расширение алгоритма Block TEA. Разработан и опубликован и Роджером Нидхемом в 1998 году . Выполнен на простых и быстрых операциях: XOR , подстановка, сложение.
На симпозиуме в декабре 1994 года Дэвид Уилер и Роджер Нидхэм, профессора́ , представили новый криптографический алгоритм TEA . Данный алгоритм проектировался как альтернатива DES , который к тому моменту уже считался устаревшим.
Позже в 1996 году в ходе личной переписки Дэвида Уилера с Дэвидом Вагнером была выявлена уязвимость для атаки на связанных ключах , которая была официально представлена в 1997 году на Первой Международной Конференции ICIS группой учёных, состоявшей из Брюса Шнайера , Джона Келси и Дэвида Вагнера. Данная атака послужила основанием для улучшения алгоритма TEA , и в октябре 1996 года Уилер и Нидхэм опубликовали внутренний отчет лаборатории, в котором приводилось два новых алгоритма: XTEA и Block TEA.
10 октября 1998 года группа новостей опубликовала статью Маркку-Юхани Сааринена, в которой была найдена уязвимость Block TEA на стадии дешифрования . В том же месяце Дэвид Уилер и Роджер Нидхэм опубликовали внутренний отчёт лаборатории, в котором приводилось улучшение алгоритма Block TEA — XXTEA.
XXTEA, как и остальные шифры семейства TEA, обладает рядом отличительных особенностей по сравнению с аналогичными шифрами:
Исходный текст разбивается на слова по 32 бита каждый, из полученных слов формируется блок. Ключ также разбивают на 4 части, состоящие из слов по 32 бита каждый, и формируют массив ключей. В ходе одного раунда работы алгоритма шифруется одно слово из блока. После того, как были зашифрованы все слова, заканчивается цикл, и начинается новый. Количество циклов зависит от количества слов и равно , где — количество слов. Шифрование одного слова состоит в следующем:
На данный момент существует атака на основе адаптивно подобранного открытого текста, опубликованная Элиас Яаррков в 2010 году. Существует два подхода, в которых используется уменьшение количества циклов за счет увеличения количества слов.
Пусть у нас есть некий открытый текст. Возьмем из него 5 неких слов, начиная с , которые мы шифруем с . Прибавим какое-нибудь число к , и получим новый открытый текст. Теперь выполним первый цикл шифрования для этих текстов. Если после шифрования разница осталась только в данном слове, то продолжаем шифрование. Если начали появляться разницы в других словах, то начинаем поиск заново либо меняя исходный, либо пытаясь подобрать другую разницу. Сохранение разницы только в одном слове возможно, так как функция шифрования не биективна для каждого соседа. Элиас Яаррков провел ряд экспериментов и выяснил, что вероятность прохождения разности 5 полных циклов давала вероятность между и для большинства ключей, то есть если пара текстов прошла 5 из 6 полных циклов, то её можно считать верной, так как если поместить разницу в конец блока, будут возникать разницы в большинстве слов. Данная атака была проведена и был восстановлен ключ для алгоритма с количеством циклов уменьшенным до трёх.
Второй подход отличается от первого тем, что после первого раунда шифрования слова, разница должна перейти в него самого из слова, при этом разница может измениться, а после следующего раунда шифрования разница вернется в слово и станет равна изначальному, но изменит знак. После проведения оценки данного метода, Элиас Яаррков получил, что для успешного нахождения правильной пары достаточно 2 59 текстов, причем разница должна лежать в интервале , где , причем увеличение d не улучшило результатов. После была проведена успешная атака на XXTEA с количеством циклом, уменьшенным до 4, и правильная пара была получена с помощью 2 35 пар текстов, а предыдущая оценка даёт необходимость в 2 34.7 пар текстов.
Зная правильную пару текстов, достаточно прогнать алгоритм в обратном порядке, так как теперь нам известно все кроме ключа.