Pull to refresh

Comments 9

Впоследствии же оказалось, что эти изменения сделали DES более стойким к дифференциальному криптоанализу, неизвестному в то время криптологическому сообществу, а DES так и не был взломан за свою долгую историю службы.

Линейный криптоанализ разработан Matsui. Этот метод позволяет восстановить ключ DES с помощью анализа 2^43 известных открытых текстов, при этом требуется примерно 2^43 шагов для выполнения. Первый экспериментальный криптоанализ DES, основанный на открытии Matsui, был успешно выполнен в течение 50 дней на автоматизированных рабочих местах 12 HP 9735.
Можете скинуть ссылку на первоисточник?
Конкретно эта инфа в вики

Но я это читал, к примеру, и у Шнайера. Он еще такой интересный вывод делал: так как АНБ защитило DES от ДКА, но не защитило от ЛКА, то в плане криптоанализа АНБ опережает открытых ученых на, примерно, 20 лет.
Надо отметить, что в данном случае линейный криптоанализ был чисто теоретической атакой. На практике проще перебрать в лоб 256 ключей, чем генерить 243 открытых текстов.

Собственно именно поэтому DES и вывели из употребления. В 1977 году мало кто ожидал такого роста скорости грубого перебора.
Непонятны пара вещей: Что такое «сложение по модулю 2 в степени длины слова», неужто инвертирование старшего бита?
И что такое входы 0 и 1.
Непонятно, как эту схему превратить в реальный алгоритм на последовательном вычислительном устройстве, где шифруемые данные представлены последовательностью бит.
Что такое «сложение по модулю 2 в степени длины слова», неужто инвертирование старшего бита?

Это просто поиск суммы s ≡ a + b (mod 2^N). Обычное сложение двоичных чисел с отбрасыванием бита переноса.

И что такое входы 0 и 1.

Вы, наверное, про генерацию псевдослучайных чисел. Так как зашифрованный текст очень похож на случайный шум (в идеале с равномерным распределением), то этим можно воспользоваться, чтобы генерировать псевдослучайные числа. Для этого просто шифруем какую-то последовательность (не обязательно случайную). Например, 0, 1, 2, 3 и т. д.

Непонятно, как эту схему превратить в реальный алгоритм на последовательном вычислительном устройстве, где шифруемые данные представлены последовательностью бит.

Это блочный шифр, он шифрует за раз не биты, а блоки. Разбиваете входной поток на блоки указанного размера (в таблице приведены поддерживаемые) и шифруете их, объединяя блоки с помощью какого-либо режима.
masai всё правильно написал.

Если вопрос про вход 0 и вход 1 касается раундовой функции, то это два слова, из которых состоит блок. Например, у Speck 64/128 длина блока 64 бит. Этот блок разбивается на два слова по 32 бит -вход 0 и вход 1. После шифрования получается тоже два слова, выход 0 и выход 1.

В режиме CTR на вход 0 можно подать счётчик, на вход 1 — nonce. Последовательность входных бит разбить на блоки и ксорить с выходом Speck, увеличивая счётчик после каждого блока.
Значит первая мысль была верна, только это вовсе не очевидно из описания алгоритма.
Опять же, входы не равноправны а значит чтобы реализации алгоритма были совместимы, должна быть привязка к тому какая часть блока считается старшей и идёт на 1 вход а какая младшей и идет на 0 вход. Иначе один девайс не сможет расшифровать то что зашифровано на другом.
В оригинальной статье есть тестовые векторы, они же используются в примерах кода и результаты совпадают. Но даже если там что-то перепутано, оба устройства скорее всего будут использовать ту же самую библиотеку с тем же самым порядком, а на криптостойкость порядок не влияет.
Sign up to leave a comment.

Articles