Как я могу использовать эквивалентную слабость ключей для взлома шифра TEA?

Как можно использовать эквивалентную слабость ключей алгоритма TEA, чтобы получить два 32-битных ключа из шифра TEA с двойным кодированием, используя встречу в середине атаки, в C?

У меня есть 4 части известного простого текста и соответствующий зашифрованный текст, мне нужно получить 2 ключа.

Это закодировано так:

encode(plaintext,k1);
encode(plaintext,k2); // plaintext being the result from encode number 1

Я также могу пойти другим путем с декодированием, включив встречу в середине атаки, так как я знаю зашифрованный текст.

Он имеет 32-битный размер блока и 32-битный ключ, ключ поставляется в виде двух 16-битных чисел.

Например, мне удалось обнаружить, что эти два ключа создают одинаковый зашифрованный текст; Мне повезло, и я наткнулся на бумагу с 128-битным ключом (800000000,00000000,00000000,00000000) и ключом (00000000,00000000,800000000,00000000). Я изменил их до 32-битных (скорее всего, но это сработало).

Скриншот

1 ответ

Он ослаблен, потому что он использует 2 32-битных ключа для двойного шифрования. Приятно видеть, что всякий раз, когда Майк Скотт устанавливает назначение, вы можете видеть, что его спрашивают о stackru:D

Также крот, это та же проблема, только ключи 32-битные, а не 16-битные. причина, по которой 2 ключа работают одинаково, называется "равносторонними ключами", это известный недостаток чая в том, что в оригинальном алгоритме было 4 равнозначных ключа.

Другие вопросы по тегам