Привет! Пытаюсь определить алгоритм шифрования данных при следующих деталях: Имеется некоторое число пар значений типа: - начальный текст - преобразованный текст Известно следующее: - длина начального текста составляет 11 бит. Начальный текст включает в себя только цифры и два пробела. - длина преобразованного текста 9 бит (Как может быть число, так может быть и набор символов). Неизвестен сам алгоритм шифрования. Были догадки про алгоритм шифрования crc32 - забрутфорсил (итерация полинома) одну пару чисел, получил полином (35016dbb) для первой пары значений (пол дня где-то по времени), попробывал применить на вторую, третию... пары чисел, понял что проблема в самом алгоритме (То есть, при одном и том же поленоме преобразованный не совпадает). Сам код не писАл, заюзал готовый велос с http://www.zorc.breitbandkatze.de/crc.html, немного его видоизменил. Почитал тему на форуме по адресу: - http://wasm.ru/forum/viewtopic.php?id=30943 Не особо понял следующую мысль: {RElf Воин дзена Re: Помогите распознать контрольную сумму Но можно обойтись и без математики - сделать цикл по всем 2^32 возможным полиномам. И для каждого полинома на одном наборе данных вычислить константу (вычислить crc с нулевой константой и поксорить результат с ожидаемым), а на другом наборе проверить дает ли текущий полином и вычисленная константа нужное значение crc. Таким образом, за не более чем 2^33 вычислений crc искомый полином отыщется (если это действительно crc).} " И для каждого полинома на одном наборе данных вычислить константу" - То есть просиходит итерация полинома затем ищется желаемая контрольная сумма с учетом итерации константы от нуля до FFFFFFFF, затем следующее значение поленома и т.д., так что ли? По-сути, могут над конечым преобразованным числом делать дополнительные операции типа перестановка, замена там и т.д. Не факт что алгоритм шифрования именно crc32 Вопрос: Можно ли программным путем выявить алгоритм шифрования данных зная пару ключей (доступный текст, зашифрованный текст), но не зная самого алгоритма шифрования (если да, какие есть методы криптоанализа позволяющие решать такие задачи; безумно был бы рад за любую литературу)? Либо можно выявить как-то математическим путем последовательность изменения значений ключей??? з.ы. Вообще по crc32 алгоритму не могу "нормальную" литературу найти, в тойже википедии, не особо хорошо с точки зрения математики расписано все, дескать нету конкретного примера для разбора, просто море теории. Так же читал статьи: "Ross N. Williams - Элементарное руководство по CRC-алгоритмам обнаружения ошибок", "Anarchriz/DREAD - CRC, и как его восстановить" - не особо понял. Все как-то поверхностно... Спасибо за внимание
Приведите примеры таких пар (лучше больше). CRC32 - это "checksum" (контрольная сумма). Маловероятно что она используется как алгоритм шифрования (тем более что 32 бита > 11 бит у вас).
Короткий ответ - нельзя. Задача криптологов при известном алгоритме сделать невозможной задачу построения дешифровальщика за приемлимое время, а не вообще "напустить туман". Если ключи короткие ваша задача неразрешима - я могу просто построить таблицу подстановок на основе генератора случайных чисел. а вы будете функцию искать Кстати и при длинных сообщениях тоже самое, но для криптологии это все не годится, т.к. я должен передать таблицу "абоненту". Это так называемый шифро-блокнот и метод "почти неуязвимый" ... Математически задача "проста" - надо выбрать набор простых функций, которыми можно задать любую зависимость, но к криптологии это никакого отношения не имеет - криптология давно уже в "угадайку" не играет - там совсем другие методы и главное цели.
CRC - линейное преобразование. Если используется любое линейное преобразование, то его восстановить очень просто. Нужно составить систему линейных уравнений в уравнениях которой каждый бит результата выразить через биты исходного текста и неизвестные коэффициенты. Решив систему получаем коэффициенты, следовательно восстанавливаем преобразование...
Нет, константу итерировать не надо - она вычисляется: "вычислить константу (вычислить crc с нулевой константой и поксорить результат с ожидаемым)". Что здесь непонятно?
Не знаю что там на "высшем уровне" типа госбезопасности, но в "обычной" практике - как раз вполне реальная задача. NSDev Так вы будете ваши "пары" показывать или решили сами что-ли?
PSR1257 В обычной практике проще все-таки "покопать" программу шифрования. Но ТС считает, что проще построить универсальную функцию. Вот только выбор он неправильный сделал. Все это от незнания вопроса. Он будет полжизни перебирать какие-то алгоритмы и все бесполезно. Ну точнее - программировать может научится. И я конечно упростил, говоря про "угадайку". Просто нормальная угадайка ТС тоже не под силу. Придется высшую математику учить и т.д.