ZC4

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

  1. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    Перечитывал тут ветки Вашего форума и увидел, что люди интересуются хорошим криптоалгоритмом для встраивания в микроконтроллеры с возможностью дистанционного апдейта софта. Могу предложить свой алгоритм, разработанный 5 лет назад, и прошедший всестороннюю обкатку. Он быстрее TEA и RC4, создает неповторяющиеся последовательности(если использовать в начале файла random bytes) и не требует проверки CRC распакованного файла(это происходит автоматически). Алгоритм очень похож на RC4 и SAPPHIRE, но создавался независимо и на других принципах, из RC4 был взят и доработан алгоритм разворачивания ключа.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    довольно просто. но для красоты лучше еще BoF убрать :)
     
  3. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    2 FreeManCPM:
    несовсем понял Ваше замечание :dntknw:

    2 All:
    а где отзывы, критика, пожелания ?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    buffer overflow при вызове strcpy
     
  5. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    Ах это ! Ну во-первых, это не сетевое приложение(к тому же досовское где длина командной строки ограничена 128 байтами), во-вторых buffer то статический и никакого переполнения быть не может(ну почти), в-третьих это лишь демонстрация алгоритма и написана за 15 минут, к тому же в моих реализациях вообще нет разворачивания ключа(развернутая таблица уже сидит во флеше)
     
  6. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    мне оч понравился алгоритм простотой. но никак руки не дойдут потестеть, посмотреть как пашет. насторожили слова
    так вот не просче их самомтоятельно добавлять если они нужны при шифровании и удолять при дешифровке?
    если действительно надежный алго, почему бы его не использовать в проэктах...
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    оформил для себя в виде длл, переписал на асм. если LazyCat не протев, могу выложить исходники.
     
  8. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    я абсолютно не против любых переработок(доработок) алгоритма и за его распространение в любом виде(по возможности желательно не менять названия).
    Random bytes я добавляю исключительно для рандомизации при передаче абсолютно одинаковых файлов, а при приеме естественно их отбрасываю(ну почти,но это детали моих проектов). Кстати, при передаче я в конец файла добавляю сигнатуру(обычно 4 нуля), а при приеме ее проверяю. Это круче чем любой CRC !!!
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    frmn.org.ua/zc4.rar
     
  10. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    Кстати, для изучения энтропии зашифрованных файлов удобно использовать какой-нибудь архиватор(например rar) или следующую drag&drop програмку
     
  11. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    куда-то файл пропал :dntknw:
     
  12. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    Тут умные люди посоветовали чуть-чуть изменить процедуру разворачивания ключа, а то раньше 6, 65, 654 - это один и тот же ключ :dntknw:
    Код (Text):
    1. void initialize_machine(void) {
    2.   short x;
    3.  
    4.   for(x = 0; x < 256; x++)
    5.     state[x] = x + key_length;
    6.   for(x = 0; x < 256; x++) {
    7.     xor += state[x] + key[x % key_length];
    8.     swap_byte(&state[x], &state[xor]);
    9.   }
    10. }
     
  13. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    ещё можно сделать для выровненных данных чтобы обрабатывался не один байт за раз, а к примеру dword, чуточку быстрее будет
     
  14. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    2Avoidik
    Для данного алгоритма это невозможно да и нецелесообразно, т.к. данная процедура выполняется 1 раз на подготовительной стадии и на быстродействие вцелом не влияет, к тому же разговор начался про 8-битовые микроконтролеры
     
  15. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    684
    Я вот всё жду жду когда же гуру с ренг.ру паявяться и заплюют )) ну или хотя бы про стойкость расскажут
    А их всё нету ) Раптор? Дмит ? Ррельф наконец ? )))
     
  16. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    Ну это вряд ли :))
     
  17. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    а ты перепости это на reng.ru
     
  18. LazyCat

    LazyCat New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    40
    А зачем ? Они и так все здесь, только ответить, наверное, нечего :))
     
  19. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    LazyCat
    жжошь =)
     
  20. Scratch

    Scratch New Member

    Публикаций:
    0
    Регистрация:
    1 янв 2005
    Сообщения:
    161
    sl0n
    отпиши на ru.crypt. Там если сразу не пошлют, то будут долго и мучительно заплевывать )