Triple DES

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Triple DES
изображение
Создатель:

IBM

Опубликован:

1978 г.

Размер ключа:

112 (2TDES) или 168 bits (3TDES)

Размер блока:

64 бит

Число раундов:

48 DES-эквивалентных раундов

Тип:

Сеть Фейстеля

Triple DES (3DES) — симметричный блочный шифр, созданный Уитфилдом Диффи, Мартином Хеллманом и Уолтом Тачманном в 1978 году на основе алгоритма DES, с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом полного перебора ключа. Скорость работы 3DES в 3 раза ниже, чем у DES, но криптостойкость намного выше — время, требуемое для криптоанализа 3DES, может быть в миллиард раз больше, чем время, нужное для вскрытия DES. 3DES используется чаще, чем DES, который легко взламывается при помощи сегодняшних технологий (в 1998 году организация Electronic Frontier Foundation, используя специальный компьютер DES Cracker, вскрыла DES за 3 дня). 3DES является простым способом устранения недостатков DES. Алгоритм 3DES построен на основе DES, поэтому для его реализации возможно использовать программы, созданные для DES. Официальное название алгоритма, используемое в стандартах - TDEA или Triple DEA (англ. Triple Data Encryption Algorithm). Однако, термин "3DES" используется более широко поставщиками, пользователями и разработчиками криптосистем.

Алгоритм[править | править вики-текст]

Схема алгоритма 3DES имеет такой вид, как на рисунке. Простой вариант 3DES можно представить так:

DES(k_3;DES(k_2;DES(k_1;M)))\,\!

где k_1\,\!, k_2\,\!, k_3\,\! — ключи для каждого DES-шага, M \,\! — входные данные, которые нужно шифровать. Это вариант известен как в ЕЕЕ, так как 3DES операции являются шифрованием. Существует 3 типа алгоритма 3DES:

  • DES-EEE3: Шифруется три раза с тремя разными ключами (операции шифрование-шифрование-шифрование).
Шифрование: C = E_{k_3}(E_{k_2} (E_{k_1} (P)))
Расшифрование: P = E^{-1}_{k_1}(E^{-1}_{k_2} (E^{-1}_{k_3} (C)))
  • DES-EDE3: 3DES операции шифровка-расшифровка-шифровка с тремя разными ключами.
Шифрование: C = E_{k_3}(E^{-1}_{k_2} (E_{k_1} (P)))
Расшифрование: P = E^{-1}_{k_1}(E_{k_2} (E^{-1}_{k_3} (C)))
  • DES-EEE2 и DES-EDE2: Как и предыдущие, за исключением того, что на первом и третьем шаге используется одинаковый ключ.
Шифрование: C = E_{k_1}(E^{-1}_{k_2} (E_{k_1} (P)))
Расшифрование: P = E^{-1}_{k_1}(E_{k_2} (E^{-1}_{k_1} (C)))

Самая популярная разновидность 3DES — это DES-EDE3.

Выбор ключей[править | править вики-текст]

При выполнении алгоритма 3DES ключи могут быть выбраны так:

  • k_1\,\!, k_2\,\!, k_3\,\! независимы.
  • k_1\,\!, k_2\,\! независимы, а k_1=k_3\,\!
  • k_1=k_2=k_3\,\!

Самым безопасным является первый вариант: длина ключа DES равна 56 битов, а длина 3DES в 3 раза больше, то есть равна 168 битов (в каждом байте 64-разрядного ключа DES используется только 7 битов, поэтому на самом деле длина ключа равна 56 битов, а не 64, и длина ключа 3DES равна 168, а не 192 бита).

Второй вариант является несколько менее стойким, с длиной ключа, равной 2 × 56 = 112 бит. Однако, этот вариант шифрования более надежен, чем обычное двойное шифрование с помощью DES с ключами k_1 и k_2: он защищает от атак «встреча посередине».

Третий вариант эквивалентен по надежности DES: здесь длина ключа тоже равна 56 битам. При использовании алгоритма DES-EDE3, из-за такого выбора ключей, шифрование (первый шаг) и расшифрование (второй шаг) сводят друг друга на нет. Такой выбор ключей теперь не рекомендуется национальным институтом стандартов и технологий (НИСТ) [1] и не поддерживается стандартом ISO/IEC 18033-3.

Каждый ключ DES хранится и передается как 8 байтов, каждый байт - с нечетным паритетом[2], так что полный набор ключей займет 24 байта в первом варианте, 16 во втором и 8 в третьем.

Шифрование более одного блока[править | править вики-текст]

Как и с другими блочными шифрами, шифрование и расшифрование нескольких блоков данных может быть произведено с помощью одного из режимов шифрования, определяемых независимо от самого алгоритма блочного шифрования. Однако, ANS X9.52 указывает напрямую, а NIST SP 800-67 - через SP 800-38A[3], что некоторые режимы могут быть использованы только с определенными ограничениями, не являющимися необходимыми в общем случае. Например, ANS X9.52 уточняет, что для режима сцепления блоков шифротекста, вектор инициализации должен каждый раз меняться, тогда как ISO/IEC 10116[4] этого не требует. FIPS PUB 46-3 и ISO/IEC 18033-3 определяют 3DES только для одного блока, и не накладывают никаких ограничений на режимы шифрования нескольких блоков. Несмотря на то, что режим сцепления блоков шифротекста (Triple CBC) улучшает стойкость шифра, режим электронной кодовой книги (Triple ECB) на данный момент более распространен.

Криптостойкость[править | править вики-текст]

3DES с тремя различными ключами имеет длину ключа равную 168 бит, но из-за атак «встреча посередине» эффективная криптостойкость составляет только 112 бит. В варианте DES-EDE c k_1=k_3\,\!, номинальный размер ключа также составляет 112 бит. Однако, такой выбор ключей уязвим к определенным атакам на основе открытых текстов, что уменьшает эффективную длину ключа до 80 бит. Для успешной атаки на 3DES потребуется около 2^{32}\,\! бит известного открытого текста, 2^{113}\,\! шагов, 2^{90}\,\! циклов DES-шифрования и 2^{88}\,\! бит памяти[5]. На данный момент это непрактично, и, по оценкам НИСТ, алгоритм с выбором трех различных ключей должен остаться надежным до 2030-х.

Применение 3DES[править | править вики-текст]

3DES с тремя ключами реализован во многих приложениях, ориентированных на работу с Интернет, в том числе в PGP и S/mime. Тройной DES является довольно популярной альтернативой DES и используется при управлении ключами в стандартах ANSI X9.17 и ISO 8732 и в PEM (Privacy Enhanced Mail). Индустрия электронных платежей использует 3DES и продолжает активно разрабатывать и публиковать стандарты, основанные на нем (например, EMV). Microsoft OneNote, Microsoft Outlook 2007 и Microsoft System Center Configuration Manager 2012 используют 3DES для защиты данных системы и пользователей с помощью паролей. Известных криптографических атак, применимых на практике, на 3DES не существует.

Тем не менее, 3DES понемногу выходит из употребления: на смену ему приходит новый алгоритмом AES Rijndael. Rijndael, реализованный программно, работает в шесть раз быстрее. Поэтому 3DES больше подходит для аппаратных реализаций. Многие системы безопасности продолжают поддерживать как 3DES, так и AES, по умолчанию используя AES. Хотя 3DES может поддерживаться для обратной совместимости, он больше не рекомендован к использованию.

Ссылки[править | править вики-текст]

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Специальное издание НИСТ 800-67 Ревизия 1: Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher, 2012.
  2. ANSI X3.92-1981 (один из стандартов, определяющих DES), секция 3.5: "One bit in each 8-bit byte of the KEY may be utilized for error detection in key generation, distribution, and storage. Bits 8, 16,..., 64 are for use in ensuring that each byte is of odd parity."
  3. Специальное издание НИСТ 800-38A, Recommendation for Block Cipher Modes of Operation, Methods and Techniques, 2001 (PDF)
  4. ISO/IEC 10116:2006 Information technology — Security techniques — Modes of operation for an n-bit block cipher
  5. Stefan Lucks: Attacking Triple Encryption (PDF), Fast Software Encryption 1998, стр. 239–253.