Инструмент шифрования и дешифрования DES
Поддержка DES и Triple DES (3DES), пять режимов шифрования
Настройки шифрования
Что такое DES?
DES (Data Encryption Standard) появился в 1977 году, разработан IBM и доработан АНБ перед утверждением в качестве федерального стандарта США. Использует сеть Фейстеля, разделяющую 64-битный открытый текст на две половины и проходящую 16 раундов преобразований. Ключ номинально составляет 64 бита, но 8 бит зарезервированы для проверки чётности — остаётся 56 бит полезной длины ключа. В своё время 56 бит считались надёжными, но в 1999 году специализированное оборудование смогло подобрать ключ методом перебора за 22 часа. Triple DES (3DES) был разработан для продления жизни DES: он применяет шифрование DES трижды с тремя разными ключами, достигая 168 бит полезной длины. 3DES по-прежнему широко используется в финансовом секторе — в EMV-чип картах и банковских протоколах. Хотя AES официально заменил DES как стандарт шифрования, оба алгоритма продолжают работать в унаследованных системах, финансовых протоколах и встроенных устройствах. Этот инструмент поддерживает оба алгоритма с режимами CBC, ECB, CFB, OFB и CTR.
Как использовать
Как использовать
- Выберите алгоритм: DES (56-битный ключ) или 3DES (168-битный ключ)
- Выберите режим шифрования — рекомендуется CBC
- Выберите схему дополнения — PKCS#7 подходит для большинства случаев
- Введите ключ или нажмите «Generate Random Key»
- Для режимов, требующих IV, введите или сгенерируйте его
- Введите открытый текст (для шифрования) или шифротекст (для дешифрования) слева
- Результат появляется справа автоматически
Режимы шифрования
- CBC — Режим сцепления блоков шифротекста (Cipher Block Chaining). Над каждым блоком открытого текста выполняется операция XOR с предыдущим блоком шифротекста перед шифрованием. Требует вектор инициализации (IV). Высокий уровень безопасности, самый распространённый режим.
- ECB — Режим электронной кодовой книги (Electronic Codebook). Каждый блок шифруется независимо — одинаковые блоки открытого текста дают одинаковый шифротекст. Подходит для отдельных 8-байтовых блоков, не рекомендуется для более длинных данных.
- CFB — Режим обратной связи по шифротексту (Cipher Feedback). Превращает блочный шифр в потоковый. Подходит для побайтовой обработки данных или небольших фрагментов.
- OFB — Режим обратной связи по выходу (Output Feedback). Похож на CFB, но ошибки не распространяются. Полезен при зашумлённом канале связи.
- CTR — Режим счётчика (Counter mode). Использует инкрементируемый счётчик для генерации потока ключей. Поддерживает параллельное шифрование и дешифрование с высокой производительностью.
Советы
- Используйте AES, если есть возможность — DES существует в основном для обратной совместимости
- 3DES значительно безопаснее DES, но примерно в три раза медленнее
- Всегда используйте уникальный случайный IV для каждого шифрования
- Не используйте ECB для шифрования данных длиной более 8 байт
- Генерируйте случайные ключи, а не придумывайте запоминаемые строки
Применение
Технический принцип
DES — блочный шифр сети Фейстеля, опубликованный как FIPS 46 в 1977 году. Он работает с 64-битными блоками при 64-битном ключе, из которых 8 бит — контрольные (parity), оставляя 56 бит полезного ключевого материала. Шифрование начинается с начальной перестановки (IP), разделяет 64-битное состояние на две 32-битные половины L0 и R0 и выполняет 16 раундов Фейстеля вида (L_{i+1}, R_{i+1}) = (R_i, L_i XOR F(R_i, K_i)). Раундовая функция F расширяет 32 бита до 48 бит через E-блок, выполняет XOR с 48-битным раундовым ключом K_i, полученным по расписанию ключей PC-1 / PC-2, применяет восемь S-блоков 6→4 бита (S1..S8) и выполняет перестановку P-блока. Финальная перестановка (FP = IP^-1) даёт шифротекст. Triple DES, определённый в NIST SP 800-67, применяет DES трижды в конструкции «зашифровать-расшифровать-зашифровать» (EDE): C = E_{K3}(D_{K2}(E_{K1}(P))). Вариант ключа 1 использует три независимых 56-битных ключа (168 бит «сырого» материала, ~112 бит эффективной защиты от атаки «встреча посередине»); вариант ключа 2 устанавливает K1 = K3 (~80 бит эффективной защиты). Режимы блочных шифров оборачивают DES/3DES для обработки сообщений длиннее 64 бит: ECB шифрует каждый блок независимо и раскрывает закономерности открытого текста; CBC связывает блоки по формуле C_i = E_K(P_i XOR C_{i-1}) со случайным 8-байтовым IV; CFB и OFB превращают блочный шифр в самосинхронизирующийся или синхронный потоковый шифр; CTR выполняет XOR открытого текста с E_K(nonce || counter). Пространство ключей DES в 2^56 ≈ 7,2 × 10^16 допускает полный перебор: машина EFF DES Cracker вскрыла DES-задачу за 22 часа в 1998 году на специализированных ASIC, а современные GPU/FPGA-кластеры справляются за часы. NIST SP 800-131A вывел одинарный DES из употребления в 2005 году и запретил Triple DES для шифрования после 2023 года; атака Sweet32 по принципу дня рождения (CVE-2016-2183) дополнительно ослабляет 3DES в TLS, поскольку его 64-битный размер блока допускает коллизии после ~2^32 блоков (~32 ГБ) при одном ключе. Современные системы должны использовать AES-128 или AES-256 в аутентифицированном режиме, таком как GCM или ChaCha20-Poly1305.
- Ключ DES — 8 байт, включая контрольные биты (56 полезных бит); ключи 3DES — 16 байт (2-ключевой, ~80 бит защиты) или 24 байта (3-ключевой, ~112 бит защиты от атаки «встреча посередине»).
- Размер блока — 64 бита / 8 байт; CBC, CFB, OFB и CTR требуют 8-байтовый IV/nonce, ECB не использует IV (и раскрывает закономерности на уровне блоков).
- Дополнение PKCS#7 добавляет N байт со значением N (1 ≤ N ≤ 8); полный 8-байтовый блок 0x08 добавляется, когда длина открытого текста уже кратна 8.
- Слабые ключи 0x0101010101010101, 0xFEFEFEFEFEFEFEFE и четыре пары полуслабых ключей дают K1 = K2 в расписании ключей, поэтому E_K = D_K — избегайте их при генерации случайных ключей.
- Sweet32 (CVE-2016-2183) эксплуатирует 64-битный блок 3DES: при одном ключе коллизии возникают после ~2^32 блоков (~32 ГБ открытого текста при одном ключе в режиме CBC).
- NIST SP 800-67 Rev. 2 запретил Triple DES для шифрования после 31 декабря 2023 года; в новых решениях следует использовать AES-GCM или ChaCha20-Poly1305, а не DES или 3DES.
- EFF DES Cracker (Deep Crack) взломал DES за 22 часа в июле 1998 года менее чем за $250 000 в ценах 1998 года; современные GPU-кластеры справляются за часы, поэтому одинарный DES не обеспечивает конфиденциальность.
Примеры
Шифрование DES-CBC
Открытый текст: Hello World
Ключ (hex): 0123456789abcdef
IV (hex): fedcba9876543210
Режим: CBC / PKCS#7
Выход: шифртекст в Base64Шифрование 3DES
Алгоритм: Triple DES
Ключ (hex): 24 байта (48 hex-символов)
Режим: CBC / PKCS#7
Примечание: 168-битный ключ всё ещё считается безопасным сегодня, но для новых проектов предпочтительнее AESECB одиночный блок
Открытый текст: 8 байт (ровно один блок DES)
Ключ: 0123456789abcdef
Режим: ECB / PKCS#7
Примечание: ECB безопасен только для одного 8-байтного блока; никогда не используйте его для более длинных данныхЧасто задаваемые вопросы
Безопасно ли ещё использовать DES?
Нет. У обычного DES эффективный ключ 56 бит, и он был публично взломан в 1998 году — специализированное оборудование подбирает ключ менее чем за сутки, а современные облачные GPU справляются за минуты. NIST официально отозвал DES в 2005 году. Для любой новой системы используйте AES.
А что насчёт Triple DES (3DES)?
3DES применяет DES трижды с двумя или тремя ключами, обеспечивая примерно 112 бит эффективной стойкости. NIST признал 3DES устаревшим в 2017 году и запретил его для новых приложений после 2023 года из-за атак на основе парадокса дней рождения (Sweet32) при 64-битном размере блока. Он сохраняется только в унаследованных системах (старые банковские и POS-сети) — мигрируйте, как только сможете.
Почему страница всё ещё показывает DES?
Потому что в реальном мире унаследованные системы по-прежнему его используют. Инструмент полезен, когда нужно взаимодействовать со старым банковским форматом, встроенной прошивкой или решать учебные задачи. Это не рекомендация — для нового кода используйте AES.
Какие режимы DES существуют и что они означают?
ECB шифрует каждый блок независимо и выдаёт паттерны. CBC сцепляет блоки и требует IV. CFB и OFB превращают DES в потоковый шифр. CTR использует счётчик в качестве nonce. Для DES предпочтительнее CBC с PKCS#7-дополнением, если нужна совместимость; никогда не используйте ECB на реальных данных.
Каков размер блока и ключа DES?
У DES размер блока 64 бита и размер ключа 64 бита, из которых только 56 бит — материал ключа (8 бит — биты чётности). У 3DES с тремя ключами всё ещё 64-битный блок — именно поэтому Sweet32 стал проблемой при больших объёмах данных.
Расчёт выполняется в моём браузере?
Да. DES вычисляется локально через JavaScript. Ключи и открытый текст не покидают устройство. Это можно проверить во вкладке Network во время шифрования и расшифрования.
Почему мой 3DES-результат не совпадает с системой партнёра?
Частые причины: неправильные биты чётности ключа, иной порядок байт ключа, неверный режим (ECB vs CBC), отсутствующий или лишний IV, неверное дополнение (PKCS#7 vs ZeroPadding) или вход, закодированный в UTF-8 на одной стороне и в UTF-16 на другой. Согласуйте с партнёром известный тестовый вектор, прежде чем отлаживать реальные данные.