Защита сообщений в проге подобной ICQpro

Тема в разделе "WASM.CRYPTO", создана пользователем EvilsInterrupt, 27 фев 2005.

  1. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    function TCryptoFunction.CoderString(str: string): string;

    var

    i: integer;

    b: byte;

    c: byte;

    k: byte;

    begin

    Result := '';

    RandSeed := key;

    for i := 1 to length(str) do

    begin

    k := random(255);

    b := ord(str);

    c := (b+k) mod 256;

    Result := Result + chr(c);

    end;

    end;



    Мой друг написал подобный алогоритм шифрования для защиты

    сообщений в программы подобной ICQ.

    В коде как вы видете идет генерация значения k, а генерация

    инициализирована key, которая берется из ini-файла.

    В итоге как для шифровки(код выше), так и для расшифровки

    (отличие в этой строчке c := (b-k) mod 256;)

    будет одинаковая генерация последовательность k!



    Мне интересно на сколько это криптостойко, и помимо ГПСЧ, что

    еще является слабым звеном?
     
  2. flankerx

    flankerx New Member

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


    каков размер RandSeed? В самом плохом случае (стойкий ГПСЧ) прийдется перебирвать столько значений, сколько может принимать этот сид.



    А вообще это обычный поточный шифр... И если использовать хороший генератор ПСЧ (и нормально его инициализировать, и не хранить seed в инишнике :)) ), то все будет ок :)



    Что касается приведенной схемы -- то она плохая. Seed не меняется. Это значит что последовательность k будет одинакова для всех сообщений. А это значит что зная одну пару открытый текст-шифртекст можно определить часть последовательности (гаммы) длины равной длине известного текста. Зная гамму можно без проблем читать сообщения (точнее, столько знаков сообщения, сколько байт гаммы мы знаем). При использовании поточных шифров первое правило -- не допускать повторения гаммы!
     
  3. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Я не уверен, но мне кажется, что в выходной последовательности (Result) не будет равновероятного выхода символов. В нижепривденной операции:



    c:= (b+k) mod 256;



    прибавляется (допустим) абсолютно случайное число k, но вот b имеет (видимо, это символы в-основном) явно неслучаное распределение, поэтому сумма может также иметь неслучайное распределение. Например, если b - только большие английские буквы (41h..), то бит 5 (40h) у них в-основом 1, а бит 7 - в-основном 0. При добавлении случайного бита к этим битам такая особенность может сохраниться и в выходной последовательности.



    Хотя я могу и ошибаться - думал минуты 2 :)
     
  4. flankerx

    flankerx New Member

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

    да нет, если сложить случайную последовательность с неслучайной то получится все-равно случайная :)
     
  5. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Громадный thank буду думать!
     
  6. NeX

    NeX New Member

    Публикаций:
    0
    Регистрация:
    27 фев 2005
    Сообщения:
    1
    Адрес:
    Kernel
    как тут уже сказали получаем случайную последовательность с ключом, равным длине сообщения (!), что не есть гуд...т.е. надо где-то хранить его, т.к. он будет немаленького размера, что будет проблематично. Поэтому смысл этого шифрования я не совсем пойму...тогда придется хранить где-то зашифрованый ключ, т.к. при его получении str легко восстанавливается, алгоритм шифрования тут несложный.
     
  7. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    Господа, а смысл? Неужели разработчиков не устраивает что-либо проверенное временем (RCx, AES, Blowfish и т.п.)?
     
  8. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    При длине ключа равной длине файла вскрыть невозможно, да и потеря ключа если файл не сперли не проблема.

    Главное ключ сгенерить удачно.

    Я пробовал в качестве ключей свои exe'шники и temporaly internet файлы с накладкой на вводимый вручную.

    Хотя правда у меня никто не взламывал их.
     
  9. flankerx

    flankerx New Member

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

    ты не совсем прав. гамма действительно имеет длину равную длине сообщения, но получается она из гораздо более короткого ключа -- key (RandSeed). ТАк устроены все современные поточные шифры -- это ГПСЧ, вырабатывающий гамму, которая просто накладывается на сообщение. Так что хранить _всю_ гамму совершенно необязательно.
     
  10. blood

    blood New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2004
    Сообщения:
    56
    Адрес:
    Russia
    Randseed скока бит? 32? ИМХО перебор за реальное время возможен даже на обычной тачке. Прога правда будет сложной. Серьезной криптостойкости нет...
     
  11. EvilsInterrupt

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

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

    для сообщений, AES и другие тяжеловесные алгоритмы будут через чур громоздки. Это все равно что из пушки по воробьям.



    >Randseed скока бит? 32?



    Нет, не 32, а порядка двух eax:edx



    Этот ключ будет для каждого сообщения абоненту А от Б менятся и передаваться в виде добавки к сообщению. На эту добавки будет накладываться Мастер_Кей заранее оговоренный и по размеру равный Ключу - сообщения.
     
  12. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    EvilsInterrupt



    Реализация "хорошего" генератора псевдослучайных последовательностей дело достаточно сложное, и соотв. алгоритмы ничуть не проще алгоритмов шифрования навроде AES (более того, зачастую именно эти алгоритмы и используются).



    В принципе, широко известный алгоритм RC4 есть ничто иное как тот самый ГПСЧ, и существуют атаки на него, использующие эту "особенность". Тем не менее, при соотв. допущениях RC4 вполне криптостоек. Посмотрите в его сторону, может, понравиться :derisive:
     
  13. flankerx

    flankerx New Member

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





    т.е. 64?





    т.е. один раз определяем сеансовый ключ и восстанавливаем мастер-ключ? супер!





    Ерунда. Ты же под ПК а не под микроконтроллеры пишешь. А RC4 так вообще очень компактный и нетребовательный.





    Ну ты уж определись :) Или будешь защищать информацию, или нет. Если да -- то защищать нужно надежно, и чем тебя не устраевает AES или что-то другое -- не понятно :/
     
  14. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    > и восстанавливаем мастер-ключ? супер!

    Извини, но до этого я бы только потом додумался! :))) Спасибо
     
  15. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Алгоритм в самом начале да гост я практически в руках держу, т.е.80: ясно вижу что и зачем и почему и как там делается, а rijndael немогу так, еще не дорос до такого уровня!