В криптографии Triple DES ( 3DES или TDES ), официально называемый тройным алгоритмом шифрования данных ( TDEA или Triple DEA ), представляет собой блочный шифр с симметричным ключом , который применяет алгоритм шифрования DES трижды к каждому блоку данных. 56-битный ключ стандарта шифрования данных (DES) больше не считается адекватным перед лицом современных криптоаналитических методов и мощности суперкомпьютеров. CVE -2016-2183 , выпущенная в 2016 году, выявила серьезную уязвимость безопасности в алгоритмах шифрования DES и 3DES. Этот CVE в сочетании с неадекватным размером ключа DES и 3DES привел к тому, что NIST отказался от использования DES и 3DES для новых приложений в 2017 году, а к концу 2023 года для всех приложений. [1] Он был заменен более безопасным и удобным. надежный AES .
Хотя государственные и отраслевые стандарты сокращают название алгоритма как TDES (тройной DES) и TDEA (алгоритм тройного шифрования данных), [2] в RFC 1851 он упоминается как 3DES с момента первого обнародования этой идеи, и с тех пор этот тезка появился широко используется большинством поставщиков, пользователей и криптографов. [3] [4] [5] [6]
В 1978 году Уолтер Тачман предложил метод тройного шифрования с использованием DES с двумя 56-битными ключами ; в 1981 году Меркл и Хеллман предложили более безопасную версию 3DES с тройным ключом и 112 битами безопасности. [7]
Алгоритм тройного шифрования данных по-разному определяется в нескольких стандартных документах:
Размер ключа исходного шифра DES, составлявший 56 бит, в целом был достаточен на момент разработки этого алгоритма, но доступность растущей вычислительной мощности сделала возможными атаки методом грубой силы . Тройной DES обеспечивает относительно простой метод увеличения размера ключа DES для защиты от таких атак без необходимости разработки совершенно нового алгоритма блочного шифрования.
Наивный подход к повышению надежности алгоритма блочного шифрования с короткой длиной ключа (например, DES) заключался бы в использовании двух ключей вместо одного и шифровании каждого блока дважды: . Если исходная длина ключа равна битам, можно было бы надеяться, что эта схема обеспечит безопасность, эквивалентную использованию длинных ключей. К сожалению, этот подход уязвим для атаки «встреча посередине» : учитывая известную пару открытого текста , такую , что можно восстановить пару ключей поэтапно , вместо шагов, которые можно было бы ожидать от идеально безопасного алгоритма с битами ключа. .
Таким образом, Triple DES использует «связку ключей», состоящую из трех ключей DES , и , каждый из которых имеет длину 56 бит (исключая биты четности ). Алгоритм шифрования:
То есть DES шифрует с помощью , DES расшифровывает с помощью , затем DES шифрует с помощью .
Расшифровка обратная:
То есть расшифровать с помощью , зашифровать с помощью , затем расшифровать с помощью .
Каждое тройное шифрование шифрует один блок из 64 бит данных.
В каждом случае средняя операция обратна первой и последней. Это повышает надежность алгоритма при использовании варианта ключа 2 и обеспечивает обратную совместимость с DES с вариантом ключа 3.
Стандарты определяют три варианта ключа:
Каждый ключ DES состоит из 8 байтов нечетной четности , из которых 56 бит ключа и 8 бит обнаружения ошибок. [9] Для комплекта ключей требуется 24 байта для варианта 1, 16 для варианта 2 или 8 для варианта 3.
NIST (и текущая спецификация TCG версии 2.0 утвержденных алгоритмов для Trusted Platform Module ) также запрещает использование любого из 64 следующих 64-битных значений в любых ключах (обратите внимание, что 32 из них являются двоичным дополнением 32 других; и что 32 из этих ключей также являются обратной перестановкой байтов 32 других), перечисленных здесь в шестнадцатеричном формате (в каждом байте младший бит представляет собой бит, сгенерированный с нечетной четностью, он отбрасывается при формировании эффективных 56-битных ключей) :
01.01.01.01.01.01.01.01, FE.FE.FE.FE.FE.FE.FE.FE, E0.FE.FE.E0.F1.FE.FE.F1, 1F.01.01.1F.0E.01.01. 0Е,01.01.FE.FE.01.01.FE.FE, FE.FE.01.01.FE.FE.01.01, E0.FE.01.1F.F1.FE.01.0E, 1F.01.FE.E0.0E.01. ФЭ.Ф1,01.01.E0.E0.01.01.F1.F1, FE.FE.1F.1F.FE.FE.0E.0E, E0.FE.1F.01.F1.FE.0E.01, 1F.01.E0. ФЭ.0Е.01.Ф1.ФЭ,01.01.1F.1F.01.01.0E.0E, FE.FE.E0.E0.FE.FE.F1.F1, E0.FE.E0.FE.F1.FE.F1.FE, 1F.01.1F.01.0 Е.01.0Е.01,01.FE.01.FE.01.FE.01.FE, FE.01.FE.01.FE.01.FE.01, E0.01.FE.1F.F1.01.FE.0E, 1F. ФЭ.01.Е0.0Е.ФЭ.01.Ф1,01.FE.FE.01.01.FE.FE.01, FE.01.01.FE.FE.01.01.FE, E0.01.01.E0.F1.01.01.F1, 1F.FE.FE.1F.0E.FE. ФЭ.0Е,01.FE.E0.1F.01.FE.F1.0E, FE.01.1F.E0.FE.01.0E.F1, E0.01.1F.FE.F1.01.0E.FE, 1F.FE.E0. 01.0E.FE.F1.01,01.FE.1F.E0.01.FE.0E.F1, FE.01.E0.1F.FE.01.F1.0E, E0.01.E0.01.F1.01.F1.01, 1F. ФЭ.1Ф.ФЕ.0Е.ФЕ.0Е.ФЕ,01.E0.01.E0.01.F1.01.F1, FE.1F.FE.1F.FE.0E.FE.0E, E0.1F.FE.01.F1.0E.FE.01, 1F. Е0.01.FE.0E.F1.01.FE,01.E0.FE.1F.01.F1.FE.0E, FE.1F.01.E0.FE.0E.01.F1, E0.1F.01.FE.F1.0E.01.FE, 1F. Е0.FE.01.0E.F1.FE.01,01.E0.E0.01.01.F1.F1.01, FE.1F.1F.FE.FE.0E.0E.FE, E0.1F.1F.E0.F1.0E.0E.F1, 1F.E0. Е0.1Ф.0Е.Ф1.Ф1.0Е,01.E0.1F.FE.01.F1.0E.FE, FE.1F.E0.01.FE.0E.F1.01, E0.1F.E0.1F.F1.0E.F1.0E, 1F. Е0.1Ф.Е0.0Е.Ф1.0Е.Ф1,01.1F.01.1F.01.0E.01.0E, FE.E0.FE.E0.FE.F1.FE.F1, E0.E0.FE.FE.F1.F1.FE.FE, 1F.1F.01.01. 0Э.0Э.01.01,01.1F.FE.E0.01.0E.FE.F1, FE.E0.01.1F.FE.F1.01.0E, E0.E0.01.01.F1.F1.01.01, 1F.1F.FE.FE.0E. 0E.FE.FE,01.1F.E0.FE.01.0E.F1.FE, FE.E0.1F.01.FE.F1.0E.01, E0.E0.1F.1F.F1.F1.0E.0E, 1F.1F. Е0.Е0.0Е.0Е.Ф1.Ф1,01.1F.1F.01.01.0E.0E.01, FE.E0.E0.FE.FE.F1.F1.FE, E0.E0.E0.E0.F1.F1.F1.F1, 1F.1F.1F .1F.0E.0E.0E.0E,
Учитывая эти ограничения на разрешенные ключи, Triple DES был повторно одобрен только с вариантами ключей 1 и 2. Обычно три ключа генерируются путем взятия 24 байтов из генератора сильных случайных чисел, и следует использовать только вариант ключа 1 (для варианта 2 требуется только 16 случайных байтов, но генераторы сильных случайных чисел трудно утверждать, и считается лучшей практикой использовать только вариант 1). ).
Как и во всех блочных шифрах, шифрование и дешифрование нескольких блоков данных могут выполняться с использованием различных режимов работы , которые обычно могут быть определены независимо от алгоритма блочного шифрования. Однако ANS X9.52 прямо указывает, а NIST SP 800-67 через SP 800-38A [19] указывает , что некоторые режимы должны использоваться только с определенными ограничениями, которые не обязательно применимы к общим спецификациям этих режимов. Например, ANS X9.52 определяет, что для цепочки блоков шифрования вектор инициализации должен каждый раз быть другим, тогда как ISO/IEC 10116 [20] этого не делает. FIPS PUB 46-3 и ISO/IEC 18033-3 определяют только одноблочный алгоритм и не накладывают никаких ограничений на режимы работы для нескольких блоков.
В общем, тройной DES с тремя независимыми ключами (вариант ключа 1) имеет длину ключа 168 бит (три 56-битных ключа DES), но из-за атаки « встреча посередине» эффективная безопасность, которую он обеспечивает, составляет только 112 бит. [16] Вариант шифрования 2 уменьшает эффективный размер ключа до 112 бит (поскольку третий ключ такой же, как и первый). Однако этот вариант подвержен определенным атакам с использованием выбранного открытого текста или известного открытого текста , [21] [22] и поэтому NIST определяет его как имеющий только 80 бит безопасности . [16] Это можно считать небезопасным, и, как следствие, Triple DES был признан устаревшим NIST в 2017 году. [23]
Размер короткого блока в 64 бита делает 3DES уязвимым для атак на основе коллизии блоков, если он используется для шифрования больших объемов данных с помощью одного и того же ключа. Атака Sweet32 показывает, как это можно использовать в TLS и OpenVPN. [24] Практическая атака Sweet32 на наборы шифров на основе 3DES в TLS требовала блоков (785 ГБ) для полной атаки, но исследователям повезло, что они столкнулись сразу после обхода блоков, что заняло всего 25 минут.
На безопасность TDEA влияет количество блоков, обрабатываемых одним набором ключей. Один комплект ключей не должен использоваться для применения криптографической защиты (например, шифрования) более чем 64-битных блоков данных.
- Рекомендации по блочному шифру с тройным алгоритмом шифрования данных (TDEA) (SP 800-67 Rev2) [13]
OpenSSL не включает 3DES по умолчанию, начиная с версии 1.1.0 (август 2016 г.), и считает его «слабым шифром». [25]
Тройной DES использует три 56-битных (т.е. 168-битных) ключа. Однако внутренние клавиши гораздо больше. Тройной DES использует три 56-битных ключа для генерации 3 * 16 48-битных подключей, т. е. 2304 бита. Ограничение ключа в 168 бит является искусственным, поэтому его можно увеличить до 2304 бит. В 2014 году был выпущен Triple DES-2304. Он использует тот же принцип, что и Triple DES, но подразделы 3 * 16 генерируются односторонней хэш-функцией. В результате получается алгоритм, работающий с той же скоростью, что и Triple DES, но с ключом длиной 2304 бита. [26] Обратите внимание, что в Triple DES-2304 не существует слабых ключей, поскольку подразделы генерируются односторонней хеш-функцией.
По состоянию на 2008 год индустрия электронных платежей использует Triple DES и продолжает разрабатывать и распространять основанные на нем стандарты, такие как EMV . [27]
Более ранние версии Microsoft OneNote , [28] Microsoft Outlook 2007 [29] и Microsoft System Center Configuration Manager 2012 [30] используют Triple DES для защиты паролем пользовательского контента и системных данных. Однако в декабре 2018 года Microsoft объявила о прекращении использования 3DES во всей своей службе Office 365. [31]
Firefox и Mozilla Thunderbird [32] используют Triple DES в режиме CBC для шифрования учетных данных для аутентификации веб-сайта при использовании главного пароля.
Ниже приведен список библиотек шифрования, поддерживающих Triple DES:
Некоторые реализации, описанные выше, могут не включать 3DES в сборку по умолчанию в более поздних или более поздних версиях.
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь ){{cite magazine}}
: Журналу Cite требуется |magazine=
( помощь ){{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )Алгоритм шифрования тройного DES с ключом двойной длины (см. ISO/IEC 18033-3) является одобренным криптографическим алгоритмом, который будет использоваться в механизмах шифрования и MAC, указанных в Приложении A1.
Алгоритм основан на (едином) алгоритме DES, стандартизированном в ISO 16609.
Применяется к: Microsoft Office Outlook 2007.