Как обнаружить неправильный ключ, используемый для расшифровки openssl rc2-64-cbc nopad

У меня есть некоторые зашифрованные данные, которые зашифрованы с помощью rc2-64-cbc NO PADDING. У меня нормально расшифровывается.

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

Я пробовал из командной строки openssl Linux и моей программы C/C++ (используя вызовы EVP_* API).

Есть ли какой-либо вариант/способ openssl для определения того, что используется неправильный ключ? (вызовы командной строки или EVP_* C/C++ API)


person subhash kollipara    schedule 13.04.2017    source источник
comment
1) Нет языка C/C++. 2) Речь идет об openssl, а не о языках C или C++.   -  person too honest for this site    schedule 13.04.2017


Ответы (2)


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

Предполагая, что аутентификация не была добавлена ​​к сообщению, возможные методы включают в себя:

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

  2. Сделайте тест на случайность.

  3. Если данные являются текстовыми, проверьте наличие недопустимых символов, таких как 0x00 - 0x1f.

  4. Подумайте о других тестах, применимых к вашим данным.

person zaph    schedule 13.04.2017

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

person cpp_enthusiast    schedule 03.08.2018