Методы и средства определения алгоритма шифрования данных

Тема в разделе "WASM.CRYPTO", создана пользователем NSDev, 11 янв 2010.

  1. NSDev

    NSDev New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2010
    Сообщения:
    2
    Привет!

    Пытаюсь определить алгоритм шифрования данных при следующих деталях:

    Имеется некоторое число пар значений типа:
    - начальный текст
    - преобразованный текст

    Известно следующее:
    - длина начального текста составляет 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, и как его восстановить" - не особо понял. Все как-то поверхностно...

    Спасибо за внимание:)
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Приведите примеры таких пар (лучше больше).

    CRC32 - это "checksum" (контрольная сумма). Маловероятно что она используется как алгоритм шифрования (тем более что 32 бита > 11 бит у вас).
     
  3. NSDev

    NSDev New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2010
    Сообщения:
    2
    Извиняюсь, ошибся с длиной начального и преобразованного сообщения - 32 бита
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Короткий ответ - нельзя. Задача криптологов при известном алгоритме сделать невозможной задачу построения дешифровальщика за приемлимое время, а не вообще "напустить туман". Если ключи короткие ваша задача неразрешима - я могу просто построить таблицу подстановок на основе генератора случайных чисел. а вы будете функцию искать :) Кстати и при длинных сообщениях тоже самое, но для криптологии это все не годится, т.к. я должен передать таблицу "абоненту". Это так называемый шифро-блокнот и метод "почти неуязвимый" ...
    Математически задача "проста" - надо выбрать набор простых функций, которыми можно задать любую зависимость, но к криптологии это никакого отношения не имеет - криптология давно уже в "угадайку" не играет - там совсем другие методы и главное цели.
     
  5. Solo

    Solo New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    131
    CRC - линейное преобразование.
    Если используется любое линейное преобразование, то его восстановить очень просто.
    Нужно составить систему линейных уравнений в уравнениях которой каждый бит результата выразить через биты исходного текста и неизвестные коэффициенты.
    Решив систему получаем коэффициенты, следовательно восстанавливаем преобразование...
     
  6. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Нет, константу итерировать не надо - она вычисляется:
    "вычислить константу (вычислить crc с нулевой константой и поксорить результат с ожидаемым)".
    Что здесь непонятно?
     
  7. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Не знаю что там на "высшем уровне" типа госбезопасности, но в "обычной" практике - как раз вполне реальная задача.

    NSDev

    Так вы будете ваши "пары" показывать или решили сами что-ли? :derisive:
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    PSR1257
    В обычной практике проще все-таки "покопать" программу шифрования. Но ТС считает, что проще построить универсальную функцию. Вот только выбор он неправильный сделал. Все это от незнания вопроса. Он будет полжизни перебирать какие-то алгоритмы и все бесполезно. Ну точнее - программировать может научится.
    И я конечно упростил, говоря про "угадайку". Просто нормальная угадайка ТС тоже не под силу. Придется высшую математику учить и т.д.