В криптографии Triple DES ( 3DES или TDES ), официально Triple Data Encryption Algorithm ( TDEA или Triple DEA ), представляет собой симметричный блочный шифр , который применяет алгоритм шифрования DES три раза к каждому блоку данных. 56-битный ключ стандарта шифрования данных (DES) больше не считается адекватным перед лицом современных криптоаналитических методов и суперкомпьютерной мощности; Triple DES увеличивает эффективную безопасность до 112 бит. CVE, выпущенная в 2016 году, CVE-2016-2183 , раскрыла серьезную уязвимость безопасности в алгоритмах шифрования DES и 3DES. Эта CVE в сочетании с недостаточным размером ключа 3DES привела к тому, что NIST объявил 3DES устаревшим в 2019 году и запретил все виды использования (кроме обработки уже зашифрованных данных) к концу 2023 года. [1] Он был заменен на более безопасный, более надежный AES .
В то время как правительство США и отраслевые стандарты сокращают название алгоритма до TDES (Triple DES) и TDEA (Triple Data Encryption Algorithm), [2] RFC 1851 называет его 3DES с того момента, как впервые обнародовал эту идею, и с тех пор это название широко используется большинством поставщиков, пользователей и криптографов. [3] [4] [5] [6]
В 1978 году Уолтер Такман предложил метод тройного шифрования с использованием DES с двумя 56-битными ключами ; в 1981 году Меркл и Хеллман предложили более безопасную версию 3DES с тройным ключом и 112-битной безопасностью. [7]
Алгоритм тройного шифрования данных по-разному определяется в нескольких стандартных документах:
Размер ключа оригинального шифра DES в 56 бит считался в целом достаточным, когда он был разработан, но доступность растущей вычислительной мощности сделала атаки методом перебора возможными. Тройной DES обеспечивает относительно простой метод увеличения размера ключа DES для защиты от таких атак без необходимости разрабатывать совершенно новый алгоритм блочного шифра.
Наивный подход к повышению стойкости алгоритма блочного шифрования с короткой длиной ключа (например, DES) будет заключаться в использовании двух ключей вместо одного и шифровании каждого блока дважды: . Если исходная длина ключа составляет биты, можно было бы надеяться, что эта схема обеспечивает безопасность, эквивалентную использованию ключа длиной биты. К сожалению, этот подход уязвим для атаки «встреча посередине» : имея известную пару открытого текста , такую что , можно восстановить пару ключей по шагам, вместо шагов, которые можно было бы ожидать от идеально безопасного алгоритма с битами ключа.
Таким образом, Triple DES использует «ключевой пакет», который состоит из трех ключей DES , , и , каждый из 56 бит (исключая биты четности ). Алгоритм шифрования:
То есть, зашифровать с помощью , расшифровать с помощью , затем зашифровать с помощью .
Расшифровка обратная:
То есть расшифровать с помощью , зашифровать с помощью , затем расшифровать с помощью .
Каждое тройное шифрование шифрует один блок из 64 бит данных.
В каждом случае средняя операция является обратной первой и последней. Это повышает стойкость алгоритма при использовании варианта ключа 2 и обеспечивает обратную совместимость с DES с вариантом ключа 3.
Стандарты определяют три варианта ключа:
Это самый сильный, с 3 × 56 = 168 независимыми битами ключа. Он по-прежнему уязвим для атаки meet-in-the-middle , но атака требует 2 2 × 56 шагов.
Это обеспечивает более короткую длину ключа 56*2 или 112 бит и разумный компромисс между DES и вариантом ключа 1, с той же оговоркой, что и выше. [18] Это улучшение по сравнению с «двойным DES», которому требуется всего 2 56 шагов для атаки. NIST запретил этот вариант в 2015 году. [16]
Это обратно совместимо с DES, поскольку две операции отменяют друг друга. ISO/IEC 18033-3 никогда не допускал эту опцию, а NIST больше не допускает K 1 = K 2 или K 2 = K 3 . [16] [13]
Каждый ключ 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.0E,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.FE.F1,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.FE.0E.01.F1.FE,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.0E.01.0E.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.FE.01.E0.0E.FE.01.F1,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.FE.0E,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.FE.1F.FE.0E.FE.0E.FE,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.E0.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.E0.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.E0.1F.0E.F1.F1.0E,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.E0.1F.E0.0E.F1.0E.F1,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.0E.0E.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.E0.E0.0E.0E.F1.F1,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 определяют только алгоритм с одним блоком и не накладывают никаких ограничений на режимы работы для нескольких блоков.
В общем, Triple DES с тремя независимыми ключами (вариант ключа 1) имеет длину ключа 168 бит (три 56-битных ключа DES), но из-за атаки meet-in-the-middle эффективная безопасность, которую он обеспечивает, составляет всего 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]
Начиная с 2008 года, индустрия электронных платежей использует Triple DES и продолжает разрабатывать и распространять основанные на нем стандарты, такие как EMV . [26]
Более ранние версии Microsoft OneNote [27] , Microsoft Outlook 2007 [28] и Microsoft System Center Configuration Manager 2012 [29] используют Triple DES для защиты пользовательского контента и системных данных паролем. Однако в декабре 2018 года Microsoft объявила об отказе от 3DES во всем своем сервисе Office 365. [30]
Firefox и Mozilla Thunderbird [31] используют Triple DES в режиме CBC для шифрования учетных данных для аутентификации на веб-сайте при использовании мастер-пароля.
Ниже приведен список криптографических библиотек, поддерживающих Triple DES:
Некоторые реализации, описанные выше, могут не включать 3DES в сборку по умолчанию в более поздних или более поздних версиях.
Алгоритм шифрования тройного DES с ключом двойной длины (см. ISO/IEC 18033-3) является одобренным криптографическим алгоритмом для использования в механизмах шифрования и MAC, указанных в Приложении A1. Алгоритм основан на (едином) алгоритме DES, стандартизированном в ISO 16609.
Применимо к: Microsoft Office Outlook 2007