Интересное уравнение с XOR

Тема в разделе "WASM.RESEARCH", создана пользователем the_fixer, 4 апр 2005.

Статус темы:
Закрыта.
  1. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine
    В общем долго распространяться не буду, перейду сразу к делу.



    Есть некая защита.

    Для того чтобы ее сломать необхомо решить слудующее уравнение :



    K = (x << 4 + D) ^ (x >> 5 - E) ^ (x + H)



    под "решить" подразумевается найти х



    Все числа кроме х - константы



    Есть подозрение граничащее с уверенностью что решений может быть >1 Необходимо хотя бы одно.



    Переборы.. Ну если быстрые, потому что такая функция гоняется в защите довольно таки часто с разными константами..
     
  2. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    Есть подозрение, что решений может быть 2<sup>5</sup>, т.к. первые 5 битов можно взять произвольно, а остаток вычислять побитово. Хотя могу и ошибаться, проверьте кто-нибудь.
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    А будут ли известны константы(насколько я понял):lol: ,E,H. Каждый раз как изменился X?
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    И еще:

    Порядок операций -(x << 4 + D) и (x >> 5 - E) такой как определен в с++ или же другой? (просто уточнение)
     
  5. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine




    констанами являются :

    K, D, E, H



    Да, каждый раз они известны



    реально защита выглядит так



    x= initial_value;

    for()

    {

    K = (x << 4 + D) ^ (x >> 5 - E) ^ (x + H)

    x= f(K);

    }
     
  6. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine
    по поводу приоритетов

    K = ((x << 4) + D) ^ ((x >> 5) - E) ^ (x + H)
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Тогда по поводу умножения и деления, т.к. сдвиг влево есть умножение, а вправо - деление.

    Т.е shl eax,2 умножение числа в eax на 4.



    Налагаются какие либо нуансы, критерии, ограничения на числа?
     
  8. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine




    Да, да.. x << 4 == x * 32 это не суть важно..



    Ограничения..



    все значения 32х-разрядные.



    вродле все ;)
     
  9. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine




    Да, да.. x << 4 == x * 16 это не суть важно..



    Ограничения..



    все значения 32х-разрядные.



    вродле все ;)
     
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Блин, непонимаю. Если есть константы, есть формула. по которой тебе можно вычислить икс. То что тебе мешает ее применить?
     
  11. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine




    икс нельзя вычислить. слева стоит К



    ((x << 4) + D) ^ ((x >> 5) - E) ^ (x + H) ^ K = 0



    Если так легче..
     
  12. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Решение существует не для всех наборов (D,E,H,K).

    Но если оно существует, то, по-видимому, самый быстрый способ найти иллюстрируется следующей программой (на C):

    [​IMG] 197326281__ttt.c
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    the_fixer





    Не понятно зачем нужно K.

    Всё сводится к
    Код (Text):
    1. x = f( (x << 4 + D) ^ (x >> 5 - E) ^ (x + H) );


    Известена ли эта f() ?

    Или как раз и требуется воссоздать её текст (вместо решения начального уравнения) ?
     
  14. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine
    f() очень просто реверсится, поэтому она неинтересна.

    Интересен именно момент с XOR.

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



    А f() была указана для того, чтобы подчеркнуть, что однократный подбор 32-хбитного значения не даст нужного результата..
     
  15. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Это не уравнение с XOR, а известный уже 15 лет криптоалгоритм TEA. При повторении цикла более 14 раз при неизвестном ключе признан стойким. И добро пожаловать в раздел "Криптография".



    Вот и описание нашел (правда код на Паскале) :

    http://www.citforum.ru/internet/infsecure/its2000_19.shtml
     
  16. the_fixer

    the_fixer New Member

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    8
    Адрес:
    Ukraine
    OLS

    Гм. было такое подозрение.. на самом то деле ..

    Но делать поиск по "алгоритм шифрования с XOR" особого смысла не имело.



    Всем ответившим спасибо. Вопрос снимается.
     
Статус темы:
Закрыта.