Как определить алгоритм шифрования
Перейти к содержимому

Как определить алгоритм шифрования

  • автор:

Как определить алгоритм шифрования

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

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

Симметричные алгоритмы
Алгоритмы шифрования делятся на два больших класса: симметричные (AES, ГОСТ, Blowfish, CAST, DES) и асимметричные (RSA, El-Gamal). Симметричные алгоритмы шифрования используют один и тот же ключ для зашифровывания информации и для ее расшифровывания, а асимметричные алгоритмы используют два ключа — один для зашифровывания, другой для расшифровывания.

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

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

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

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

В криптографии считается, что механизм шифрования — это несекретная величина, и злоумышленник может иметь полный исходный код алгоритма шифрования, а также зашифрованный текст (правило Керкхоффа). Еще одно допущение, которое может иметь место — злоумышленник может знать часть незашифрованного (открытого) текста.

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

Теоретическая и практическая стойкость.
В 1949 г. К.Э. Шеннон опубликовал статью «Теория связи в секретных системах». Шеннон рассматривал стойкость криптографических систем как Практическую и Теоритическую. Вывод по теоритической стойкости до сих пор остается пессимистическим: длина ключа должна быть равна длине открытого текста.
Поэтому Шеннон также рассмотрел вопрос и по практической стойкости криптографических систем. Надежна ли система, если злоумышленник обладает ограниченным временем и вычислительными ресурсами для анализа перехваченных сообщений ?

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

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

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

  • Иметь в распоряжении криптосистему (т.е. программу) и примеры зашифрованных сообщений.
  • Разобраться в криптографическом протоколе. Иначе говоря, как программа шифрует данные.
  • Разработать и реализовать алгоритм перебора Ключей для этой криптосистемы.

Алгоритмы шифрования
AES (Rijndael). В настоящее время является федеральным стандартом шифрования США. Утвержден министерством торговли в качестве стандарта 4 декабря 2001 года. Решение вступило в силу с момента опубликования в федеральном реестре (06.12.01). В качестве стандарта принят вариант шифра только с размером блока 128 бит.

ГОСТ 28147-8. Стандарт Российской Федерации на шифрование и имитозащиту данных. Первоначально имел гриф (ОВ или СС — точно не известно), затем гриф последовательно снижался, и к моменту официального проведения алгоритма через Госстандарт СССР в 1989 году был снят. Алгоритм остался ДСП (как известно, ДСП не считается грифом). В 1989 году стал официальным стандартом СССР, а позже, после распада СССР, федеральным стандартом Российской Федерации.

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

DES Федеральный стандарт шифрования США в 1977-2001 годах. В качестве федерального стандарта США принят в 1977 году. В декабре 2001 года утратил свой статус в связи с введением в действие нового стандарта.

CAST В некотором смысле аналог DES.

www.codenet.ru/progr/alg/enc
Алгоритмы шифрования, Обзор, информация, сравнение.

http://www.enlight.ru/crypto
Материалы по асимметричному шифрованию, цифровой подписи и другим «современным» криптографическим системам.

Александр Великанов,
Ольга Чебан,
Tesline-Service SRL.

Дата: 1 Марта 2004

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

Существуют ли способы узнать, имея лишь шифротекст, каким алгоритмом он был зашифрован. Например, можно ли отличить шифротекст AES от шифротекста Twofish, при этом длина блока и длина ключа идентична для двух алгоритмов 128/256 бит.

  • Вопрос задан более трёх лет назад
  • 397 просмотров

Комментировать

Решения вопроса 1

borisdenis

Довольный Айтишникъ @borisdenis

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

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Определить метод шифрования

Добрый день, подскажите возможно ли определить метод шифрования, если имеется ассемблерный листинг дешифровки файла?

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

Имеется возможность динамической проверки работы «дешифратора», так сказать в отладчике (не удобно конечно, но всё же)

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

Devill
20.04.18 10:21:08 MSK

В общем случае метод определить можно (AES, RSA, и т.п.), зашифровать — нельзя, т.к. это может быть ассиметричным шифрованием.

Deleted
( 20.04.18 10:26:53 MSK )
Ответ на: комментарий от Deleted 20.04.18 10:26:53 MSK

Если пойти от обратного, т.е. с конца кода и делать все наоборот с «выходным» хешем, не получится получить исходный-шифрованный фал?

Devill
( 20.04.18 10:39:11 MSK ) автор топика

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

Deleted
( 20.04.18 10:44:30 MSK )
Ответ на: комментарий от Devill 20.04.18 10:39:11 MSK

Угадай, почему хэш-преобразование именуется необратимым шифрованием.

Avial ★★★★★
( 20.04.18 11:14:50 MSK )
Ответ на: комментарий от Avial 20.04.18 11:14:50 MSK

Я не пытаюсь сам ХЕШ расшифровать. Суть такая, имеется зашифрованный MD5_хеш, и он расшифровывается внутри программы, далее этот расшифрованный MD5_хеш сравнивается с другим ХЕШ’ем.

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

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

Devill
( 20.04.18 11:35:16 MSK ) автор топика
Ответ на: комментарий от Devill 20.04.18 11:35:16 MSK

1) Может покажешь код? Вдруг кто-то в нём узнает известный алгоритм шифрования.

2) А не проще ли пропатчить бинарник, который дешифрует и сравнивает хеш?

Deleted
( 20.04.18 11:58:20 MSK )
Ответ на: комментарий от Deleted 20.04.18 11:58:20 MSK

1) Код сильно растянут, много служебного кода — обеспечивающий контроль и расчёт счетчиков, инициализацию переменных и так далее.

2)Патчить нельзя, стандартные функции не будут работать, надо только рассчитать (кодирование исходного Хеш’а)

1.Два массива, первый Входной, второй встроен в Код (размер у них одинаковый)

2.Входной массив увеличивается в 2 раза (множится сам на себя) затем сдвигается влево(LSL+OR)

3.Встроенный массив сдвигается влево (LSL+OR)

4.Расчет Третьего Массива из первых Двух (в результате размер Третьего массива восстанавливается до исходного)

5.Третий массив (из п.4) сдвигается вправо (LSR+OR)

Дальше всё повторяется 16 раз, Только вместо Первого входного массива, подаётся результат работы фукции из п.5

Devill
( 20.04.18 13:30:53 MSK ) автор топика
Ответ на: комментарий от Devill 20.04.18 13:30:53 MSK

А можно псевдокодом? А то из описания не понятно.

Deleted
( 20.04.18 13:42:28 MSK )
Ответ на: комментарий от Devill 20.04.18 11:35:16 MSK

он расшифровывается внутри программы, далее этот расшифрованный MD5_хеш сравнивается с другим ХЕШ’ем.

А можно примеры входного и расшифрованного хеша? А то что-то мне подсказывает, что там RSA, и обратно его без закрытого ключа не обернешь.

segfault ★★★★★
( 20.04.18 20:03:39 MSK )
Ответ на: комментарий от segfault 20.04.18 20:03:39 MSK

Добрый день, извините не отвечал — уезжал по делам. Пример позже скину (надо запустить отладку чтоб скопировать)

Почитал немного про DES, AES, RSA, по-моему это что-то подобно модифицированному DES, так как имеется:

1. Входной блок(DATA)

2. Вектор инициализации(IV) (он равен размеру DATA)

3. Блок «дополнения» (увеличивает DATA в 2 раза )

4. Начальные(прямое) преобразования DATA и IV (L_сдвиг+ИЛИ)

5. Основная процедура (на вход DATA*x2 + IV) на выходе (DATA)

5. Конечное(обратное) преобразование DATA (R_сдвиг+ИЛИ)

6. Далее повторяется Раунд 16-18 раз (подзабыл уже)

Подскажите такая схема дает понять что это не RSA?

Иначе RSA — я понимаю не стоит пытаться рашифровать, так-как бесполезно.

Devill
( 24.04.18 13:39:25 MSK ) автор топика
Ответ на: комментарий от Devill 24.04.18 13:39:25 MSK

Заполнил массив DATA единицами hex значений 0x11

Заполнил массив (начальный вектор) IV двойками hex значений 0x22

На выходе получил массив размером DATA,

Данные в котором повторялись каждые 7 байт (по 56_бит) (не считая первые 4 байта)

Devill
( 24.04.18 13:52:44 MSK ) автор топика

р-к спициалисты на лоре

по машинам поцоны

missxu
( 24.04.18 13:55:43 MSK )
Ответ на: комментарий от Devill 24.04.18 13:52:44 MSK

Иди методом исключения.

  • блочный шифр (какой размер DATA?)
  • есть вектор инициалиции равный размеру блока
  • 16 раундов

Из этого можно уже ограничить круг подозреваемых.

beastie ★★★★★
( 24.04.18 14:01:11 MSK )
Ответ на: комментарий от Devill 24.04.18 13:52:44 MSK

По совокупности улик очень похоже на DES. Проверь на нулевых данных и нулевом ключе:

Если это ванильный DES, выйдет 8c a6 4d e9 c1 b1 23 a7

beastie ★★★★★
( 24.04.18 14:13:21 MSK )
Последнее исправление: beastie 24.04.18 14:19:21 MSK (всего исправлений: 1)

Ответ на: комментарий от beastie 24.04.18 14:13:21 MSK

Спасибо за помощь, проверю обязательно.

Размер Блока не увязывается не в один алгоритм, во всех примерах блоков много и они по 32,64,128,256 бит, а тут получается Один блок и он около 200 Байт .

Основную функцию еще толком не смотрел и ключ даже не искал, теперь понимаю что он должен быть. В основной процедуре по копаюсь (она не маленька), сходу там видно только что имеются константы FFFFFFFF. А может он копируется откуда-нибудь на определённом этапе

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

В преобразованиях идёт работа с блоками по 32 бита (4_байта)

Они сдвигаются и 7(семь)бит с одного блока операцией ИЛИ подмешиваются в следующий блок.

Devill
( 24.04.18 15:00:31 MSK ) автор топика
Ответ на: комментарий от beastie 24.04.18 14:13:21 MSK

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

При «00» происходит выход из функции, на начальном этапе, не происходит ни одного цикла.

Стоит цикл проверки DATA на сравнение с «00_00_00_00», и если такое значение появляется, то достигнут конец — DATA

(как-то так я понял)

Devill
( 24.04.18 15:19:21 MSK ) автор топика

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

Legioner ★★★★★
( 24.04.18 16:04:13 MSK )
Последнее исправление: Legioner 24.04.18 16:05:34 MSK (всего исправлений: 1)

Ответ на: комментарий от Legioner 24.04.18 16:04:13 MSK

Спасибо. Буду изучать основную функцию, что там происходит.

Подскажите еще пожалуйста, Если не брать этот случай, а чисто в теории:

Если используется стандартный алгоритм (DES, AES и их модификации), плюс имеется шифротекст, вектор_инициализации, ну и пароль выудить, то в чём сложность Дешифровки сообщений, ведь имеются стандартные функции «Зашифровать/Расшифровать»

Или я чего-то не понял ещё 🙂 ?

Devill
( 24.04.18 17:20:28 MSK ) автор топика
Ответ на: комментарий от Devill 24.04.18 17:20:28 MSK

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

Legioner ★★★★★
( 24.04.18 17:34:13 MSK )
Ответ на: комментарий от Legioner 24.04.18 17:34:13 MSK

Спасибо я вас понял.

В моем случае на вход подаётся hex файл 200 байт, на выходе тоже hex 200 байт — Расшифрованный.

(Забудьте про MD5 это только наводит путаницу)

Devill
( 24.04.18 21:37:08 MSK ) автор топика
Ответ на: комментарий от Devill 24.04.18 21:37:08 MSK

1. DATA 200 -> DATA 400

2. DATA 400 -> (LSL+OR) = 400

3. IV 200 -> (LSL+OR) = 200

4. Result = Func_Decode (DATA_400, IV_200)

5. Result 200 -> (LSR+OR) = 200

Devill
( 24.04.18 21:46:13 MSK ) автор топика
Ответ на: комментарий от Devill 24.04.18 13:39:25 MSK

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

segfault ★★★★★
( 24.04.18 23:09:43 MSK )
Ответ на: комментарий от segfault 24.04.18 23:09:43 MSK

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

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

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

Долго видимо разбираться придётся, самое интересное каждые 7 байт повторяется в выходном файле, если на вход подать одинаковые данные (массив с повторяющимся значением)

Devill
( 27.04.18 08:39:13 MSK ) автор топика
Ответ на: комментарий от Devill 27.04.18 08:39:13 MSK

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

beastie ★★★★★
( 27.04.18 09:11:45 MSK )
Ответ на: комментарий от beastie 27.04.18 09:11:45 MSK

Подскажите существуют блочные методы шифрования не использующие операции XOR или OR?

В моем случае используется только + и -, в функции получения Раундового ключа : и *

Скорее всего тут не Вектор, а Гамма — которая после обработки ключом и складывается либо вычитается из входных данных. Так-как равна длине входного сообщения, хотя и для Виктора подходит, уфф

Интересно все это, сколько оказывается методов придуманно

Devill
( 19.05.18 12:41:30 MSK ) автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум Помогите определить метод шифрования (2016)
  • Форум Помогите определить какой метод шифрования (2018)
  • Форум [офтопег][security][rsa-1024] вирус-шантажист (2008)
  • Форум Методы шифрования. (2008)
  • Форум Определение метода шифрования (2016)
  • Форум Как называется метод шифрования. (2012)
  • Форум Помогите понять метод шифрованя (2019)
  • Форум Помогите определить алгоритм шифрования. (2016)
  • Форум [криптография]Помогите определить алгоритм шифрования (2010)
  • Форум Изменение метода шифрования в PDC LDAP (2013)

Как узнать алгоритм шифрования?

2ord

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

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

windows

  • Windows
  • +1 ещё

Как расшифровать зашифрованные файлы в Windows?

  • 2 подписчика
  • 17 окт.
  • 203 просмотра

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *