Как расшифровать файлы зашифрованные в формат aes 256

Обновлено: 04.07.2024

В этом примере используется AES GCM для выполнения шифрования AES строки и файла. Примеры включали шифрование AES на основе паролей.

В этой статье показано несколько примеров шифрования и дешифрования Java AES:

  • Шифрование строк AES – (шифрование и расшифровка строки).
  • Шифрование на основе пароля AES – (секретный ключ будет получен из заданного пароля).
  • Шифрование файлов AES. (на основе пароля).

В этой статье мы сосредоточимся на 256-битном шифровании AES с Режимом счетчика Галуа (GCM) .

Не используйте режим электронной кодовой книги AES (ECB) Режим AES ECB или AES/ECB/PKCS5Padding AES/ECB/PKCS5Padding//Режим AES//ECB//(в Java) не является семантически безопасным – Зашифрованный в ECB зашифрованный текст может привести к утечке информации об открытом тексте. Вот дискуссия о Почему я не должен использовать шифрование ECB?

Для шифрования и дешифрования AES нам нужны следующие входные данные:

Лучшая практика шифрования AES Не используйте повторно капельницу с одним и тем же ключом.

1.1 IV (начальное значение или начальный вектор), это случайные байты, обычно 12 байт или 16 байт. В Java мы можем использовать SecureRandom для генерации случайного IV.

1.2 Секретный ключ AES, либо AES-128 , либо AES-256 . В Java мы можем использовать Генератор ключей для генерации секретного ключа AES.

1.3 Секретный ключ AES, полученный из заданного пароля. В Java мы можем использовать SecretKeyFactory и PBKDF2WithHmacSHA256 для генерации ключа AES из заданного пароля.

Мы используем соль для защиты от атак rainbow, и это тоже случайный байт, мы можем использовать тот же 1.1 получите случайный Nonce , чтобы сгенерировать его.

1.4 Мы группируем вышеперечисленные методы в один класс util , чтобы не повторять один и тот же код снова и снова.

2. Шифрование и дешифрование AES.

AES-GCM является наиболее широко используемым аутентифицированным шифром. В этом примере будет зашифрована и расшифрована строка с использованием 256-битного AES в Режиме счетчика Галуа (GCM) .

  • Секретный ключ AES (256 бит)
  • IV – 96 бит (12 байт)
  • Длина (в битах) тега аутентификации – 128 бит (16 байт)

2.1 В Java мы используем AES/GCM/NoPadding для представления алгоритма AES-GCM . Для зашифрованного вывода мы добавляем 16 байт IV к зашифрованному тексту (зашифрованному тексту), потому что нам нужен тот же IV для расшифровки.

В этом примере для шифрования обычного текста будет использоваться AES Привет, мир AES-GCM и позже расшифруйте его обратно в исходный обычный текст.

Простой текст: Привет, Мир AES-GCM

3. Шифрование и дешифрование на основе паролей AES.

Для шифрования на основе пароля мы можем использовать Спецификацию криптографии на основе пароля (PKCS), определенную RFC 8018 , для генерации ключа из заданного пароля.

Для входов PKCS:

  • Пароль, вы предоставляете это.
  • Соль – Не менее 64 бит (8 байт) случайных байтов.
  • Количество итераций – Рекомендуется минимальное количество итераций 1000.

Что такое соль и количество итераций?

  • соль создает широкий набор ключей для данного пароля. Например, если соль составляет 128 бит, для каждого пароля будет целых 2^128 ключей. Поэтому это увеличивает сложность радужных атак. Кроме того, радужная таблица, которую злоумышленники создают для пароля одного пользователя, стала бесполезной для другого пользователя.
  • Количество итераций увеличивает стоимость получения ключей из пароля, следовательно, увеличивает сложность и замедляет скорость атак.

3.1 Для зашифрованного вывода мы добавим 12 байт IV и соль пароля к зашифрованному тексту, потому что для расшифровки нам нужны те же IV и соль пароля (для секретного ключа). Кроме того, мы используем кодировщик Base64 для кодирования зашифрованного текста в строковое представление, чтобы мы могли отправлять зашифрованный текст или зашифрованный текст в строковом формате (массив байтов was).

3.2 Если пароль не совпадает, Java выдает Исключение AEADBadTagException: Несоответствие тегов!

4. Шифрование и расшифровка файлов AES.

Этот пример представляет собой шифрование файлов на основе пароля AES. Идеи те же, но нам нужны некоторые классы ввода-вывода для работы с ресурсами или файлами.

Вот текстовый файл в папке ресурсы .

4.1 Этот пример аналогичен 3.1 EncryptorAesGcmPassword.java , с некоторыми незначительными изменениями, такими как возврат байта[] вместо строки в кодировке base64.

Добавить зашифровать файл и расшифровать файл для работы с файлом.

4.2 Прочитайте вышеизложенное readme.txt файл из пути к классу, зашифруйте его и зашифрованные данные в новый файл c:\test\readme.encrypted.txt .

4.3 Прочитайте зашифрованный файл, расшифруйте его и распечатайте выходные данные.

Как только троян-вымогатель / шифровальщик попадает в вашу систему, уже поздно пытаться спасти несохраненные данные. Удивительно, но многие киберпреступники не отказываются от своих обязательств после оплаты выкупа и действительно восстанавливают ваши файлы. Конечно, никто гарантий вам не даст. Всегда есть шанс, что злоумышленник заберет деньги, оставив вас наедине с заблокированными файлами.

Тем не менее, если вы столкнулись с заражением шифровальщиком, не стоит паниковать. И даже не думайте платить выкуп. Сохраняя спокойствие и хладнокровие, проделайте следующие шаги:

1. Запустите антивирус или антивирусный сканер для удаления трояна

Запустите антивирус или антивирусный сканер для удаления трояна

Строго рекомендуется удалить заражение в безопасном режиме без сетевых драйверов. Существует вероятность того, что шифровальщик мог взломать ваше сетевое подключение.

Удаление вредоносной программы является важным шагом решения проблемы. Далеко не каждая антивирусная программа сможет справится с очисткой. Некоторые продукты не предназначены для удаления данного типа угроз. Проверьте, поддерживает ли ваш антивирус данную функцию на официальном сайте или связавшись со специалистом технической поддержки.

Основная проблема связана с тем, что файлы остаются зашифрованы даже после полного удаления вредоносного заражения. Тем нем менее, данный шаг как минимум избавит вас от вируса, который производит шифрование, что обеспечит защиту от повторного шифрования объектов.

Попытка расшифровки файлов без удаления активной угрозы обычно приводит к повторному шифрованию. В этом случае вы сможете получить доступ к файлам, даже если заплатили выкуп за инструмент дешифрования.

2. Попробуйте расшифровать файлы с помощью бесплатных утилит

Опять же, вы должны сделать все возможное, чтобы избежать оплаты выкупа. Следующим шагом станет применение бесплатных инструментов для расшифровки файлов. Обратите внимание, что нет гарантий, что для вашего экземпляра шифровальщика существует работающий инструмент дешифрования. Возможно ваш компьютер заразил зловред, который еще не был взломан.

“Лаборатория Касперского”, Avast, Bitdefender, Emsisoft и еще несколько вендоров поддерживают веб-сайт No More Ransom!, где любой желающий может загрузить и установить бесплатные средства расшифровки.

Первоначально рекомендуется использовать инструмент Crypto Sheriff, который позволяет определить ваш тип шифровальщика и проверить, существует ли для него декриптор. Работает это следующим образом:

Как удалить шифровальщики и восстановить данные – Crypto Sheriff

Crypto Sheriff обработает эту информацию с помощью собственной базы данных и определит, существует ли готовое решение. Если инструменты не обнаружены, не стоит отчаиваться. Одни из декрипторов все-равно может сработать, хотя вам придется загрузить и протестировать все доступные инструменты. Это медленный и трудоемкий процесс, но это дешевле, чем платить выкуп злоумышленникам.

Инструменты дешифрования

Следующие инструменты дешифрования могут расшифровать ваши файлы. Нажмите ссылку (pdf или инструкция) для получения дополнительной информации о том, с какими вымогателями работает инструмент:

Количество доступных декрипторов может изменяться с течением времени, мы будем регулярно обновлять информацию, проверяя веб-сайт No More Ransom!

Запустить средство дешифрования файлов совсем несложно. Многие утилиты поставляются с официальной инструкцией (в основном это решения от Emsisoft, Kaspersky Lab, Check Point или Trend Micro). Каждый процесс может немного отличаться, поэтому рекомендуется предварительно ознакомиться с руководством пользователя.

Рассмотрим процесс восстановления файлов, зашифрованных трояном-вымогателем Philadelphia:

  • Выбираем один из зашифрованных файлов в системе и файл, который еще не был зашифрован. Помещает оба файла в отдельную папку на компьютере.
  • Загружает средство дешифрования Philadelphia и перемещаем его в папку с нашими файлами.
  • Выбираем оба файла и перетаскиваем их на иконку исполняемого файла декриптора. Инструмент запустит поиск правильных ключей для дешифрования.

Как восстановить данные – Philadelphia

Как восстановить данные – Philadelphia

  • После завершения работы, вы получите ключ дешифрования для восстановления доступа ко всем заблокированным шифровальщикам файлам.

Как восстановить данные – Philadelphia

Повторимся, что данный процесс не сработает, если для вашего конкретного экземпляра шифровальщика не существует декриптора. Так как многие пользователи предпочитают заплатить выкуп, а не искать альтернативные способы решения проблемы, даже взломанные шифровальщики активно используются киберпреступниками.

Если есть резервная копия: очистите систему и восстановите бэкап

Шаги 1 и 2 будут эффективны только при совместном использовании. Если они не помогут, то используйте следующие рекомендации.

Надеемся, что у вас есть рабочая резервная копия данных. В этом случае даже не стоит задумываться об оплате выкупа – это может привести к более серьезным последствиям, чем ущерб от первичного заражения.

Самостоятельно или делегировав задачу системному администратору, выполните полный сброс системы и восстановите ваши файлы из резервной копии. Защита от действия шифровальшиков – это важная причина использования инструментов резервного копирования и восстановления файлов.

Пользователи Windows могут использовать полный сброс системы до заводских настроек. На официальном сайте Microsoft доступны рекомендации по восстановлению зашифрованных троянами файлов.

Подробнее о том, как расшифровать файлы бесплатно и не платить выкуп программам-вымогателям, используя утилиты Avast по удалению вирусов-шифровальщиков.

Программы-вымогатели становятся «флагманом» вредоносного ПО. За последний год мы зафиксировали рост числа атак шифрователей более чем в два раза (на 105%). Подобные вирусы блокируют доступ к файлам на компьютере, кодируя их и вымогая выкуп за предоставление кода для расшифровки.

Как расшифровать файлы бесплатно? Мы рады объявить о выпуске четырех инструментов для удаления программ-вымогателей и дешифровки файлов: Alcatraz Locker, CrySiS, Globe и NoobCrypt. Все дешифраторы для файлов доступны на нашей странице и являются бесплатными.

Там же представлено подробное описание каждого вида программ-вымогателей. Наши инструменты смогут помочь вам удалить вирус-шифровальщик и разблокировать файлы. Утилиты постоянно обновляются по мере развития перечисленных видов угроз.

С момента выпуска первого пакета из семи инструментов Avast для дешифровки нам было приятно получить множество отзывов с благодарностями и рассказами о том, как наши утилиты спасли чьи-то ценные данные или даже бизнес. Надеемся, новые программы для дешифровки помогут еще большему количеству пользователей.

Ниже приведено краткое описание четырех новых видов программ-вымогателей, для удаления которых были разработаны новые бесплатные утилиты.

Alcatraz

Вирус-шифрователь (программа-вымогатель) Alcatraz

В отличие от большинства видов шифрователей, программа Alcatraz не имеет заданного списка расширений файлов, на которые она нацелена. Иными словами, программа шифрует все, что может. Чтобы предотвратить нанесение ущерба операционной системе, Alcatraz Locker шифрует только файлы в каталоге %PROFILES% (обычно C:\Users).

Вымогатель шифрует файлы, используя встроенные функции Windows (API-интерфейс шифрования):

Вирус-шифрователь (программа-вымогатель) Alcatraz

  1. Создается 256-битовый массив, заполняемый шестнадцатеричным значением 0x36.
  2. К первым 160 битам этого массива с начальным 160-битовым хэшем SHA1 применяется функция XOR.
  3. Рассчитывается SHA1 массива, к которому была применена функция XOR (назовем это Hash1).
  4. Создается 256-битовый массив, заполняемый шестнадцатеричным значением 0x5C.
  5. К первым 160 битам этого массива с начальным 160-битовым хэшем SHA1 применяется функция XOR.
  6. Рассчитывается SHA1 массива, к которому была применена функция XOR (назовем это Hash2).
  7. 160 битов Hash1 и 96 битов Hash2 объединяются.

Получившийся объединенный хэш используется в качестве исходного ключа для AES256.

После выполнения шифрования AES-256 программа-вымогатель также кодирует уже зашифрованный файл с помощью позиционной системы счисления с основанием 64 (BASE64), в результате чего зашифрованный файл приводится к типичной модели:

Вирус-шифрователь (программа-вымогатель) Alcatraz

CrySiS

Программа CrySiS (известная также как JohnyCryptor и Virus-Encode) известна с сентября 2015 года. Использует сильные алгоритмы шифрования AES и RSA. Также особенность заключается в том, что она содержит список файловых расширений, которые не подвергаются блокировке.

Хотя идентификационный номер и адрес электронной почты меняются довольно часто, есть только три различных имени расширений, которые, используются до сих пор:

.xtbl, .lock и .CrySiS.

В результате имена зашифрованных файлов могут выглядеть так:

Каждый подобный элемент содержит все данные, которые необходимы для его расшифровки. Файлы размером менее 262 144 байта зашифровываются полностью, а в окончании находится код, содержащий зашифрованный ключ AES вместе с остальными данными, такими как исходное имя файла, что позволяет выполнить полную расшифровку. Стоит отметить, что файлы, размер которых превышает 262 144 байта, шифруются лишь частично, однако и в этом случае использовать их не удастся. Такой способ работы вымогателя приводит к тому, что крупные файлы после шифрования еще больше увеличиваются в размере.

Вирус-шифрователь (программа-вымогатель) CrySis

Вирус-шифрователь (программа-вымогатель) CrySis

Globe

Данная программа, существующая примерно с августа 2016 года, написана на языке Delphi и обычно упакована UPX. Некоторые варианты также упакованы при помощи установщика Nullsoft:

  • bc4c0b2f6118d36f4d476db16dbd6bcc0e393f2ad08429d16efe51f3d2870d58
  • fdc8de22653ebcf4cb8f5495b103e04079b0270efa86f713715f0a81f1b2e9b0

Вирус-шифрователь (программа-вымогатель) Globe

В распакованном бинарном виде программа представляет собой глобальный интерфейс «настройки», в которой автор вымогателя может вносить некоторые изменения в ее характеристики:

Так как злоумышленники могут изменять программу, мы столкнулись со множеством различных вариантов создания зашифрованных файлов с разнообразными расширениями.

Примечательно, что программа-вымогатель имеет режим отладки, который может быть включен при помощи следующей настройки реестра:

Вирус-шифрователь (программа-вымогатель) CrySis

Вирус блокирует файлы при помощи алгоритмов RC4 или BlowFish. Когда программа-вымогатель настроена на шифрование имен файлов, она выполняет его при помощи того же алгоритма, который использовался в отношении самого файла. Затем название шифруется при помощи собственной реализации кодирования Base64.

Вот несколько примеров созданных расширений, которые могут быть расшифрованы при помощи утилиты Avast:

Как правило, данная программа-вымогатель создает файлы с именем «Read Me Please.hta» или «How to restore files.hta», которое отображается после входа пользователя в систему.

Вирус-шифрователь (программа-вымогатель) CrySis

Не платите вымогателям! Используйте дешифратор для файлов Globe.

NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Чтобы расшифровать файлы, программа NoobCrypt предлагает «код разблокировки», который необходимо купить. В Twitter мной были опубликованы бесплатные ключи для удаления всех известных версий программы NoobCrypt (примеры: 1, 2, 3). Однако определять, какой из них следует использовать, приходилось вручную. Благодаря нашему инструменту для дешифровки вам уже не придется гадать, какой код нужно применить.

Вскоре после публикации кодов, исследователь программ-вымогателей с сетевым именем xXToffeeXx сообщил нам о создании новой версии NoobCrypt, которая рекламировалась во множестве магазинов в сетях Darknet. Стоимость этой версии, находящейся в продаже, составляет $300.

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Автор даже подготовил демонстрационное видео, демонстрирующее функции, которые представлены как новые, в том числе использование «шифрования военного уровня» и «невозможность обнаружения антивирусами (кроме AVG)», что является обманом: многие антивирусы способны обнаружить эту программу.

Как видно на снимке внизу, автор даже упоминает мое имя на экране с инструкциями по выплате денег и за что-то меня благодарит. Возможно, за то, что я дал этому набору некачественного кода соответствующее название (теперь оно используется официально).

Вирус-шифрователь (программа-вымогатель) NoobCrypt

Сегодня мы представляем инструмент для дешифровки NoobCrypt, подходящий для всех его известных версий. Процесс разблокировки теперь выглядит намного проще, чем подбор нужного кода. Теперь вам не нужно платить деньги за предоставление ключа. И тем более полагаться на расшифровку своих файлов программе-вымогателю.

Ознакомьтесь с описанием программы NoobCrypt и инструментом для дешифровки на нашем сайте.

Как не стать жертвой программы-вымогателя

Прежде всего убедитесь, что на всех ваших устройствах установлен антивирус, например Avast (даже смартфоны могут быть заражены программой-вымогателем). Антивирус сможет заблокировать программы-вымогатели еще до того, как они причинят ущерб.

Необходимо также выполнять регулярное и правильное резервное копирование своих данных. Храните резервные копии данных удаленно, иначе они могут также быть заблокированы вредоносным ПО.

Если вам не повезло и вы стали жертвой программ-вымогателей, попробуйте наши инструменты для дешифровки и проверьте, сможем ли мы помочь вам вернуть свои файлы!

Выражаю благодарность своим коллегам, Ладиславу Зезуле (Ladislav Zezula ) и Петру Щепански (Piotr Szczepanski), за подготовку дешифраторов, а также Яромиру Горейши (aromír Hořejší) за его анализ программы Alcatraz Locker.

image

Байтовая подстановка шифра AES-256 определяется некоторой последовательностью операций в поле и также может быть задана массивом из 256 байт:

63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

Определим модифицированный вариант шифра – «AES-256-М», который будет отличаться от оригинального только подстановкой, а именно:

2b c4 4d a2 76 99 10 ff 56 b9 30 df 0b e4 6d 82
db 34 bd 52 86 69 e0 0f a6 49 c0 2f fb 14 9d 72
95 7a f3 1c c8 27 ae 41 e8 07 8e 61 b5 5a d3 3c
65 8a 03 ec 38 d7 5e b1 18 f7 7e 91 45 aa 23 cc
cb 24 ad 42 96 79 f0 1f b6 59 d0 3f eb 04 8d 62
3b d4 5d b2 66 89 00 ef 46 a9 20 cf 1b f4 7d 92
75 9a 13 fc 28 c7 4e a1 08 e7 6e 81 55 ba 33 dc
85 6a e3 0c d8 37 be 51 f8 17 9e 71 a5 4a c3 2c
6f 80 09 e6 32 dd 54 bb 12 fd 74 9b 4f a0 29 c6
9f 70 f9 16 c2 2d a4 4b e2 0d 84 6b bf 50 d9 36
d1 3e b7 58 8c 63 ea 05 ac 43 ca 25 f1 1e 97 78
21 ce 47 a8 7c 93 1a f5 5c b3 3a d5 01 ee 67 88
8f 60 e9 06 d2 3d b4 5b f2 1d 94 7b af 40 c9 26
7f 90 19 f6 22 cd 44 ab 02 ed 64 8b 5f b0 39 d6
31 de 57 b8 6c 83 0a e5 4c a3 2a c5 11 fe 77 98
c1 2e a7 48 9c 73 fa 15 bc 53 da 35 e1 0e 87 68

Задача. Имеется шифртекст длиной 5120 бит (40 блоков), который был получен шифрованием открытого текста шифром «AES-256-М» в режиме простой замены на неизвестном ключе. Известен первый блок открытого текста. Предложить осуществимый на практике способ вскрытия неизвестной части шифртекста.

Теоретическое введение

Рассмотрим общую структуру LSX-шифров, одним из представителей которых является AES Rijndael.

Структура LSX-шифра

В основе шифров LSX-архитектуры лежит итеративное применение раундовой функции к блоку a преобразуемого текста (длина блока a для большинства современных шифров – 128 бит).
Раундовая функция состоит из трех преобразований:

— сложение по модулю 2 входного блока с итерационным ключом (, где – число раундов шифра);
— применение фиксированной подстановки к каждому байту блока;
— линейное преобразование.

Схематично LSX-преобразование можно представить как

image

В каждом раунде LSX-шифра используется отдельный раундовый ключ некоторым образом формируемый из первичного ключа . Битовая длина первичного ключа обычно равна длине итерационного ключа или превосходит её. Процедуры ключевой развертки итерационных ключей из первичного существенным образом отличаются у различных шифров.

Общая формула шифрующего преобразования для LSX-шифра с числом раундов, равным , может быть записана в следующем виде:


Схематично общую структуру LSX-шифра можно представить как

image

Процесс расшифрования выполняется с помощью обратных преобразований:

— сложение по модулю 2 входного блока с итерационным ключом;
— применение обратной к подстановки;
— применение обратного -преобразования ( – единичная подстановка).

Формула для расшифрования -раундового LSX-шифра:

Подстановки в LSX-шифрах

В шифрах LSX-архитектуры огромную роль играют подстановки – биективные отображения вида , где . Неудачно выбранная подстановка может привести к снижению стойкости всего шифра, а в худшем случае к применимой на практике атаке на шифр.

Не буду поэтапно разбирать сам алгоритм AES, на этом ресурсе это делали уже не один раз: например, можно почитать такие замечательные статьи как эта, вот эта, и, конечно, официальную документацию шифра.

Решение

Я постараюсь воспроизвести ход решения данной задачи с точки зрения малоопытного криптографа (самого себя), чтобы показать логику размышлений в случае, когда абсолютно не знаешь, за что браться в первую очередь.

Разведка

Очевидно, что ключевая особенность этой задачи – это уязвимая подстановка (S-box), поэтому мое исследование проблемы началось с построения таблицы дифференциальных характеристик. Несмотря на то, что классический дифференциальный метод является непрактичным по отношению к AES-like шифрам (число раундов слишком велико), некоторую полезную информацию о модифицированном S-box'е можно попытаться извлечь.

Итак, строим таблицу:


И не удивляемся результату: оказывается, таблица имеет вырожденный вид – в каждой ее строке есть запись с вероятностью 256/256 (остальные записи соответственно равны 0).

Далее выдвигается предположение, что такой вид дифф. таблица модифицированной подстановки имеет в силу особенностей построения, т. е. она генерирована искусственно. В таком случае было бы неплохо найти возможный способ генерации таких подстановок.

Из базового курса криптографии известно, что основная роль S-box'а в блочном шифре заключается во внесении нелинейности в криптограмму (другими словами, в максимальном сокрытии статистической связи между открытым текстом и шифртекстом), и раз данный нам S-box является уязвимым местом AES-256-M, можно предположить, что он не выполняет свою целевую функцию. Значит, скорее всего, этот S-box является результатом применения какой-либо линейной функции к диапазону чисел .

Экспериментальным методом выясняем, что в роли генератора подстановки выступила простая аффинная функция вида , где

— двоичная матрица размера 8x8,

Таким образом, наше предположение оказалось верным: если представить байты подстановки в виде двоичных векторов, то модифицированная подстановка превращается в представленное выше аффинное преобразование с линейной зависимостью между входным и выходным набором бит.

Теперь даже можно написать небольшой скрипт для генерации таких подстановок.

Подготовка к атаке

Итак, единственный компонент шифра, который должен был быть нелинейным, оказался очень даже линейным, поэтому нетрудно догадаться, в каком направлении двигаться дальше.

Найдем альтернативное бит-ориентированное представление всех линейных преобразований шифра AES Rijndael такое, чтобы было возможно «встроить» линейную теперь операцию применения подстановки к каждому байту блока в одну большую линейную трансформацию.

SubBytes

Операция SubBytes, как раз представляющая преобразование в LSX-шифре, теперь выглядит как , где — шифруемый блок, и описаны выше.

Следовательно, бит-ориентированное представление операции SubBytes пример вид:

ShiftRows

Обратимся к [1] для определения матрицы, отвечающей за операцию ShiftRows. Эта матрица имеет следующий вид:

И преобразование ShiftRows принимает вид .

MixColumns

Далее: любой элемент из представи́м как сумма базисных . Тогда запомним результаты умножения элемента на все базисные:


Так как выполняется дистрибутивность по сложению и умножению, то в совокупности с рассуждениями выше элемент можно представить в виде матрицы с коэффициентами из :


Тогда очевидно, что элемент перейдет в единичную матрицу , а элемент перейдет в .

Для проверки наших рассуждений можно заглянуть в [2], где предлагается аналогичная матрица для бит-ориентированного умножения на элемент из .

В результате, принимая во внимание то, что во время оригинальной трансформации MixColumns строка MDS-матрицы умножается на столбец состояния state, составим матрицу для бит-ориентированного представления данной трансформации (под спойлером).

( C2 00 00 00 C3 00 00 00 C1 00 00 00 C1 00 00 00 )
( 00 C2 00 00 00 C3 00 00 00 C1 00 00 00 C1 00 00 )
( 00 00 C2 00 00 00 C3 00 00 00 C1 00 00 00 C1 00 )
( 00 00 00 C2 00 00 00 C3 00 00 00 C1 00 00 00 C1 )
( C1 00 00 00 C2 00 00 00 C3 00 00 00 C1 00 00 00 )
( 00 C1 00 00 00 C2 00 00 00 C3 00 00 00 C1 00 00 )
( 00 00 C1 00 00 00 C2 00 00 00 C3 00 00 00 C1 00 )
( 00 00 00 C1 00 00 00 C2 00 00 00 C3 00 00 00 C1 )
( C1 00 00 00 C1 00 00 00 C2 00 00 00 C3 00 00 00 )
( 00 C1 00 00 00 C1 00 00 00 C2 00 00 00 C3 00 00 )
( 00 00 C1 00 00 00 C1 00 00 00 C2 00 00 00 C3 00 )
( 00 00 00 C1 00 00 00 C1 00 00 00 C2 00 00 00 C3 )
( C3 00 00 00 C1 00 00 00 C1 00 00 00 C2 00 00 00 )
( 00 C3 00 00 00 C1 00 00 00 C1 00 00 00 C2 00 00 )
( 00 00 C3 00 00 00 C1 00 00 00 C1 00 00 00 C2 00 )
( 00 00 00 C3 00 00 00 C1 00 00 00 C1 00 00 00 C2 )

И тогда соответствующее преобразование примет вид .

Атака

Анализ практически завершен, подготовим все необходимое для атаки.

Один раунд

Рассмотрим один раунд шифра AES-256-M.

В стандартном виде:


В матричном виде над :


где — матрица, представляющая весь линейный рассеивающий слой AES-256-M.

Несколько раундов


Рассмотрим 15 раундов (14 + раунд инициализации ключом) шифра AES-256-M в матричном виде:


где — условный «мастер-ключ», который можно использовать для дешифрования других блоков (т. к. шифрование проводится в режиме ECB):


И вот та самая «магическая» формула для дешифровки остальных блоков шифртекста, из-за который мы сегодня собрались:

Примечание

В оригинальной реализации AES Rijndael операция MixColumns опущена на последнем раунде шифра в силу своей бесполезности на этом этапе. В данном решении это не учитывается (т. е. MixColumns используется и после сложения с последним раундовым ключом) для упрощения демонстрации результата.

Заключение, код, литература


Сперва хотелось бы отметить, что матрицу можно легко получить с помощью алгебраического аппарата Sage:

Исходный код

Небольшое программное демо, которое покажет «вживую», как проходит взлом, выложено на Гитхабе.

Простое шифрование и дешифрование текстов

Какая польза от этих инструментов для шифрования текстов?

Шифрование и дешифрование текстов с помощью AES бесплатно

Цель этих полностью бесплатных онлайн-инструментов - позволить нам зашифровать введенный текст, и, настроив разные длины ключей, режимы шифрования и частный ключ дешифрования, мы получим полностью зашифрованный текст, которым мы сможем поделиться с кем угодно. Если мы применим исходный закрытый ключ к этому зашифрованному тексту, тот же режим и алгоритм шифрования, мы сможем легко и быстро получить доступную для чтения информацию.

Лучшие бесплатные онлайн-инструменты для шифрования и дешифрования текстов

В этой статье мы собираемся предложить вам список совершенно бесплатных инструментов для шифрования и дешифрования текстов, нам нужно будет только получить доступ к официальному веб-сайту инструмента и заполнить различные поля, доступные для адаптации симметричного шифрования AES к нашим конфигурациям ( закрытый ключ, вектор инициализации IV, тип шифрования, длина ключа, а также режим шифрования).

Шифрование AES

Чтобы начать использовать Шифрование AES мы должны получить доступ к его главной веб-странице, где мы найдем простой интерфейс для ввода текста и шифрования содержимого, хотя мы также можем расшифровать его в том же интерфейсе, просто введя пароль.


Его использование очень простое. Как мы видим, у нас есть 4 элемента в поле шифрования:

  • Поле для ввода текста, который мы хотим зашифровать или расшифровать.
  • Поле для ввода ключа шифрования. Чем длиннее и сложнее ключ, тем надежнее шифрование.
  • Панель выбора длины ключа (128 бит, 192 бит или 256 бит).
  • Кнопки, чтобы зашифровать текст или расшифровать его как нам нужно.

В текстовое поле мы должны ввести текст, который мы хотим зашифровать, а под ним ключ, которым мы собираемся его зашифровать. Мы нажмем кнопку «Зашифровать», и ниже мы сможем увидеть наш зашифрованный текст.


Чтобы расшифровать его, мы скопируем текст в текстовое поле на AES Шифрование веб-сайт и введите ключ шифрования. Мы нажмем на кнопку «Расшифровать» и внизу будет показан наш расшифрованный текст. Внизу веб-сайта шифрования AES мы можем увидеть исходный код для всех тех пользователей, которые хотят его проанализировать, чтобы убедиться, что это действительно безопасное шифрование, которое будет далеко от досягаемости АНБ, и они также могут его реализовать. на других сайтах или сервисах легко.

Онлайн-инструмент для шифрования и дешифрования Devglan AES

  • Режим шифрования: ECB или CBC
  • Длина ключа: 128, 192 или 256 бит
  • Секретный пароль

После того, как все данные были введены, мы можем экспортировать вывод зашифрованного текста в BASE64 или шестнадцатеричный формат, этот вывод появится чуть ниже, где он указывает «AES Encrypted Output».


Генератор Javainuse AES

  • Режим шифрования: ECB или CBC
  • Длина ключа: 128, 192 или 256 бит
  • Вектор инициализации, если вы используете CBC из 16 символов, если вы используете 128 бит, 24 символа, если вы используете 192 бит и 32 символа, если вы используете 256 бит.
  • Секретный пароль
  • Вывод в формате Base64 или шестнадцатеричном формате

Как только это будет сделано, мы нажмем кнопку «Зашифровать», и введенный текст будет зашифрован.


Чтобы расшифровать информацию, мы укажем зашифрованный текст в формате Base64 или Hexadecimal, остальные параметры конфигурации, которые нам нужно будет ввести, точно такие же, как и раньше, режим шифрования, длина ключа, вектор инициализации, если вы используете CBC и также секретный ключ. Как только все будет введено, мы нажимаем «Расшифровать», и он вернет нам простой текст.


Кодировать-декодировать

После того, как мы выбрали шифрование, нам нужно будет ввести открытый текст в поле слева вместе с ключом шифрования. В случае наличия зашифрованного текста нам нужно будет поместить его в поле справа, а также ввести ключ дешифрования в этом случае. Внизу мы найдем соответствующие кнопки «Зашифровать» или «Расшифровать», чтобы зашифровать или расшифровать информацию.


Этот инструмент является одним из самых полезных и быстрых, которые мы можем найти, кроме того, возможность выбора между различными алгоритмами симметричного шифрования является очень положительным моментом.

Cryptii

  • Блокировать шифрование (вы можете выбрать другой тип)
  • Алгоритм: AES-128 или AES-256
  • Режим шифрования: CBC или CTR
  • Ключ дешифрования в шестнадцатеричном формате
  • Вектор инициализации в шестнадцатеричном формате

В этом случае вам придется использовать шестнадцатеричный преобразователь для ввода ключа шифрования / дешифрования и вектора инициализации.


Хотя этот инструмент является отличной альтернативой, мы считаем, что дополнительная сложность использования Hex заставляет нас предпочесть использовать другие инструменты.

Toolnb AES

Этот бесплатный инструмент также позволит нам шифровать и расшифровывать данные с помощью AES. В левом поле мы введем открытый текст или шифрование, затем мы введем ключ шифрования, вектор инициализации, тип шифрования (AES-128, AES-192 или AES-256), а также режим шифрования (CBC, CFB, ECB, OFB и т. Д.), И как только мы его завершим, нажмите кнопку «AES Encryption» или «AES decryption».


Этот инструмент также очень полезен для тестирования зашифрованных и расшифрованных текстов.

Как вы видели, сегодня у нас есть большое количество возможностей для бесплатного онлайн-шифрования текстов с помощью AES и других алгоритмов симметричного шифрования. В зависимости от наших потребностей и тестов, мы можем выбрать те или иные инструменты, в зависимости от доступных параметров конфигурации и их возможностей.

Читайте также: