Triple 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 можно представить так:

D E S ( k 3 ; D E S ( k 2 ; D E S ( k 1 ; M ) ) ) {displaystyle DES(k_{3};DES(k_{2};DES(k_{1};M)))}

где k 1 {displaystyle k_{1}} , k 2 {displaystyle k_{2}} , k 3 {displaystyle k_{3}} — ключи для каждого DES-шага, M {displaystyle M} — входные данные, которые нужно шифровать. Существует 3 типа алгоритма 3DES:

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

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

Выбор ключей

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

  • k 1 {displaystyle k_{1}} , k 2 {displaystyle k_{2}} , k 3 {displaystyle k_{3}} независимы.
  • k 1 {displaystyle k_{1}} , k 2 {displaystyle k_{2}} независимы, а k 1 = k 3 {displaystyle k_{1}=k_{3}}
  • k 1 = k 2 = k 3 {displaystyle 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 {displaystyle k_{1}} и k 2 {displaystyle k_{2}} : он защищает от атак «встреча посередине».

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

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

Шифрование более одного блока

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

Криптостойкость

3DES с тремя различными ключами имеет длину ключа, равную 168 бит, но из-за атак «встреча посередине» эффективная криптостойкость составляет только 112 бит. В варианте DES-EDE c k 1 = k 3 {displaystyle k_{1}=k_{3}} номинальный размер ключа также составляет 112 бит. Однако, такой выбор ключей уязвим для определенных атак на основе открытых текстов, что уменьшает эффективную длину ключа до 80 бит. Для успешной атаки на 3DES потребуется около 2 32 {displaystyle 2^{32}} бит известного открытого текста, 2 113 {displaystyle 2^{113}} шагов, 2 90 {displaystyle 2^{90}} циклов DES-шифрования и 2 88 {displaystyle 2^{88}} бит памяти. На данный момент это непрактично, и, по оценкам НИСТ, алгоритм с выбором трех различных ключей должен остаться надежным до 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 может поддерживаться для обратной совместимости, он больше не рекомендован к использованию.