новый шифр на слом

Тема в разделе "WASM.CRYPTO", создана пользователем RElf, 12 сен 2007.

  1. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Предлагаю провести known plaintext атаку на этот шифр.
    Я зашифровал 102400 нулевых байтов на каком-то ключе - вот результат (зеркало). Ваша задача вычислить мой ключ (int64).

    P.S. Задача имеет эффективное (непереборное) решение.
     
  2. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Seichas glianem... Mne interesno, a chto tam delayetsa algoritmu kogda uint64 * 2310 perepolniayetsa? ;) Na perviy vzgliad algoritm ochen OCHEN deshoviy. Suka v C++ napisan, no vsio ravno seichas trahnem.

    RElf, a ti smozhesh zashifrovanniy RAR, JPEG ili GIF slomat? :derisive:

    Ruptor
     
  3. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Prisoyediniayus k RElfu. Prisilaite kakiye ugodno files skolko ugodno raz zashifrovanniye etim "shifrom". Yesli oni dostatochno bolshiye, to dazhe known plaintext ne nado i dazhe format file ne nado ukazivat. Hot JPEG, hot ZIP, hot MP3...
     
  4. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    RElf
    Зачем тебе это нужно? Ну я смог придумать быстрый алгоритм определения ключа где-то минут за 10. Но писать программу сейчас влом. Сейчас используются алгоритмы следующего вида:
    x_0=k (ключ)
    x_n+1=Ax_n, b_n=f(x_n).
    b_n - выходная последовательность. x_i - булевы вектора. f - булева функция.
     
  5. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159
    Зачем нужно - разминка для мозгов.
    "писать программу сейчас влом" как решение не засчитывается.
    А, может, твой алгоритм ошибочен. Так что, уж будь добр программу написать и ключик вычислить.
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    RElf
    если уж хочешь разминку для мозгов:) - сломай вот этот шифр: c=t xor key xor key[key]+key[key+key[key]]. key - ключ, t-text, c-cipher. длинна ключа 128 байт:)
     
  7. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    UbIvItS
    128 байт known plaintext'а. и даже ломать ничего не надо.
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    некоторые дополнения - алгос полностью выглядит так:
    a=key; b=key+key[key];
    <if key>127>
    {
    a=key mod 127;
    }
    <if key+key[key>127>
    {
    b=key*key[key mod 127;
    }
    c=(t xor key xor key[a])+key;
     
  9. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    UbIvItS
    c = t xor CONST1 + CONST2
    тебе уже сказали - 128 байт known palin и все.
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    flankerx
    не согласен: по известному тексту - шифровки обычно ищут ключ, а потом его юзают для взлома оставшегося шифра.
    infern0

    это откуда?
    ---------------------
    а ясно, но по этой формуле одназначно ключ можно выщимить перебором. 2^1024 вариантов не ахти как мало, к тому же, есть ложные ключи и они вовсе не облегчают задачу. добавив ещё трансформацию ключа, мы получим весьма надёжный шифр.
     
  11. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    прямо как RSA :)
     
  12. hwegh

    hwegh New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    54
    UbIvItS
    А зачем находить ключ в первоначальном варианте? Как видно из кода шифра, у него имеется ключ key' = F(key), после чего зашифрование выглядит как c= t ^ key', значит key' = t ^ c. Следовательно нам надо иметь равное длине ключа количество плейнтекста чтобы вскрыть шифр не находя изначальный ключ.
     
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    hwegh
    вообще-то формула выглядит так: c=(t xor a) +b. как ты отшелушишь a & b(??) - сложение и ксор разные вещи.
     
  14. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    UbIvItS
    Запарил :)

    Давай килобайт плейнтекста, килобайт шифртекста и код на C, который выполняет твое преобразование.
     
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    flankerx
    о реальный разговор:) - Уважаю.
    вот тебе алгос криптора:
    Код (Text):
    1. i=-1;
    2.           while(abs(++i)<num_read) {
    3.               buff_initial_file[i]+=buff_crypto_key[i];
    4.               buff_initial_file[i]^=buff_crypto_key[buff_crypto_key[i]/2];
    5.             }
    ключ статичен, длинна 128 байт, файл текст одной из моих любимых книг, первые 1024 байт найдёшь в архиве: http://depositfiles.com/files/2032796 и там же шифровка.
    Удачи в бою, Воин Кода !!!!!!!!!!!!!!!!!
     
  16. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    ЧТо-то начало плейнтекста странновато выглядит.

    Выложи все же полный исходник программки, а то не все понятно...
     
  17. hwegh

    hwegh New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    54
    Зашибись файл выложил, хрен скачаешь.
    Это наверно часть защиты?
     
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    hwegh
    ты оскорбляешь сам себя такими жалобами...
    flankerx
    такие претензии не принимаю - там то, что в начальном файле........
    всё остальное в проге не имеет значение - у тебя в руках криптор и часть известного текста.......... взломщику больше не нужно.

    Зы.
    алгос со стат. ключом чуть надёжней ксора...... считай это за мою подсказку.
     
  19. hwegh

    hwegh New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    54
    Надо выкладывать там, откуда можно скачать. Я уже давно прогу для слома сделал, а твоих файлегов достать не могу. Так что хрен с ними, имхо с тебя хватит кода:

    Поиск ключа:
    Код (Text):
    1. for (i = 0; i < 128; i++)
    2.     {
    3.         for (k1 = 0; k1 < 256; k1++)
    4.         {
    5.            
    6.             for (k2 = 0; k2 < 256; k2++)
    7.             {
    8.                 eqt = 1;
    9.                
    10.                 for (x = 0; x < 3; x++)
    11.                 {
    12.                     idx = (128 * x) + i;
    13.  
    14.                     if ( crypt[idx] != ((playn[idx] ^ k1) + k2) )
    15.                     {
    16.                         eqt = 0;
    17.                         break;
    18.                     }
    19.                 }
    20.  
    21.                 if (eqt != 0)
    22.                 {
    23.                     key1[i] = k1;
    24.                     key2[i] = k2;
    25.                     goto kfnd;
    26.                 }
    27.             }
    28.         }
    29.  
    30. kfnd:;
    31.     }
    Дешифрование по ключу:
    Код (Text):
    1. for (i = 0; i < length; i++)
    2.     {
    3.         idx = (i % 128);
    4.  
    5.         playn[i] = ((crypt[i] - key2[idx]) % 256) ^ key1[idx];
    6.     }
     
  20. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    UbIvItS
    Это не так. Там тот же текст, но в DOS-кодировке. Это принципиально. И предоставление "левых" данных — это проявление неуважения к hwegh и ко мне.

    Несколькими постами выше ты убеждал всех что твой алгоритм имеет стойкость около 2^1024. Так чему же верить-то? А на момент "подсказки" как минимум у двух людей был рабочий код разлома твоего алгоритма, который не работал по причинам, изложенным выше.

    Твой алгоритм не тянет на шифрование вообще. Его стойкость при самой тупой реализации перебора стсавляет 2^16 на каждый байт ключа. Более того, приведенный тобой шифртекст можно сломать вообще без плейнтекста, т.к. твой шифр сохраняет статистику исходного сообщения, и является он по сути полиалфавитным шифром побайтовой замены с кол-вом алфавитов 128.

    В общем, забей на криптографию и займись чем-нибудь, что у тебя получается лучше.