Аутентификация на веб-сайте

Тема в разделе "WASM.CRYPTO", создана пользователем TheBits, 10 дек 2008.

  1. TheBits

    TheBits Сергей

    Публикаций:
    0
    Регистрация:
    7 апр 2006
    Сообщения:
    50
    Адрес:
    St.Petersburg
    Здравствуйте.

    Данные сессии клиента на веб-сайте я храню в cookie. Всего 16 байт, зашифрованные blowfish, ключом тоже примерно в 16 байт. Cookie живёт примерно неделю.
    Скажите пожалуйста, так делать безопасно?
     
  2. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Если у темя хеш-сумма после криптования меньше или равна длине пароля, то значит для такого хеша существует несколько паролей, а это нехорошо.
    А вообще... безопасно все до тех пор, пока не окажется что нас поимели. Если у тебя ещё не было с этим обломов - значит ты в безопасности. Если обломы были, значит оказывается ты был не в безопасности...
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    по-моему при длине 16 байти сроке 1 неделю это не "нехорошо", а просто "фиолетово"
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Почему бы хранить SHA/MD5 хеш? Или просто не воспользоваться механизмом сессий? Там кстати PHPSISSID тоже 16 байт.
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Как-то мутил такую систему авторизации.

    Код (Text):
    1. <script>
    2. function proceed(_actn,_p0,_p1)
    3. {
    4. v_code='zoCNSHKScsG';
    5. mask=Array(192,215,170,205,25,111,137,35,159,0,171,114,96,223,29,128,181,97,105,105,110,206,212,113,149,233,11,32,98,72,3,57);
    6. if (pass=prompt('Administration password :',''))
    7.   {
    8.   pl=pass.length;
    9.   cl=v_code.length;
    10.   var key=Array();
    11.   for(i=0;i<256;i++) key[i]=(pass.charCodeAt(i%pl)+(i%pl))^v_code.charCodeAt(i%cl);
    12.   var s=Array(),tmp;
    13.   for(i=0;i<256;i++) s[i]=i;
    14.   j=0;
    15.   for(i=0;i<256;i++)
    16.     {
    17.     j=(j+s[i]+key[i])&255;
    18.     tmp=s[i];
    19.     s[i]=s[j];
    20.     s[j]=tmp;
    21.     }
    22.   v_code='';
    23.   for (i=0;i<32;i++)
    24.     {
    25.     c=s[mask[i]];
    26.     v_code+=String.fromCharCode(Math.floor(c/16)+65)+String.fromCharCode((c%16)+65);
    27.     }
    28.   frm=document.forms[0];
    29.   frm.vc.value=v_code;
    30.   frm.actn.value=_actn;
    31.   frm.p0.value=_p0;
    32.   frm.p1.value=_p1
    33.   frm.submit();
    34.   }
    35. }
    36. </script>
    Введенный пароль перемешивается со специальным salt-кодом (v_code), который случайно генерится сервером и разворачивается в 256-байтную таблицу по алгоритму RC4. Далее из этой развернутой таблицы производится выборка 32 байт по номерам(mask), которые также случайно генерятся сервером. И полученный хеш передается на сервер. Смысл в том, что данные авторизации невозможно узнать, перехватывая трафик на пути к серверу. Также обламываются всякие формграбберы.
     
  6. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia

    Никак? Точно? :derisive: Ох я бы не был так уверен на вашем месте! 32 байта (25%) от самой этой таблицы один раз слегка перемешанной паролем – это слишком много информации, более чем достаточно чтобы пароль восстановить, тем более если имеются несколько разных таких challenge-response пар для одного и того же пароля.

    Это неправильно сделано. RC4 – это не хаш функция, а уж тем более настолько кастрированный RC4. Надо хотя бы весь RC4 реализовать и первые несколько байт [настоящего RC4 выхода] пропустить.

    Где эта поделка используется? За такое надо публично позорить полным сломом, а не рекомендовать людям в форумах... Я бы рекомендовал эту задачу студентам первого, максимум второго курса криптологии на слом.
     
  7. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Ruptor
    Если ты гарантируешь "полный слом" я тебе скину в личку адрес.
    Могу даже скинуть разумное количество challenge-response пар.
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Ruptor
    Так что, будет какое-то подтверждение вашим словам?
     
  9. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Если вам нужно бесплатное подтверждение – дайте студентам криптологии, они это быстро сломают. Это я вам могу гарантировать. Все опубликованные атаки против RC4 – это атаки против всего алгоритма, никто же не додумывается саму таблицу отдавать – это самоубийство. А если вам нужны мои услуги, за них естественно придётся платить. Время – деньги.
     
  10. TheBits

    TheBits Сергей

    Публикаций:
    0
    Регистрация:
    7 апр 2006
    Сообщения:
    50
    Адрес:
    St.Petersburg
    Контекст задачи. В этих 16 байтах хранится некоторая информация обозначающая уровни доступа клиента (4 байта), идентификатор клиента (4 байта), хеш некоторого уникального значения для аутентификации клиента (4 байта) и хеш (для проверки целостности) от всего предыдущего (4 байта).
    Что бы веб-сайт или веб-приложение работало быстро надо минимизировать количество обращений к БД, вынести всё на уровень кеша, тем более данные изменяются не часто и выигрыш получается очень хороший. По первым четырём байтам можно определить что можно показывать пользователю, а что нельзя. То есть права пользователя мы можем получить в самом запросе от пользователя. При модифицировании данных уже проверять есть на это права у пользователя или нет.
    Насколько я понял ММВБ использует такую схему с blowfish шифрованием. Мне кажется это не нужно, хватит просто подписи HMAC к данным. HMAC ведь быстрее вычисляется чем blowfish?
     
  11. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Ruptor
    У меня нет студентов криптологии.

    Вобщем, если не можете привести реальных подтверждений, то надо уточнять, что это не более чем ваше мнение, а не истина в последней инстанции.

    Мы уже видели ваши бездоказательные нападки на TEA.
     
  12. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Ищите в ближайшем университете.
    А где она, истина в последней инстанции? В ведах наверное... В криптологии её точно нет, только набор мнений. Форум – тоже набор высказанных мнений. Моё экспертное мнение таково, что это легко ломается и я знаю как, хоть и не собираюсь тратить на это время. Любой опытный криптаналитик со мной согласится – это очень легко ломается и не надо такие схемы людям рекомендовать. Я уже подобную поделку из RC4 в этом форуме ломал чтобы больше не тратить времени на подобные доказательства.
    А несколько опубликованных академиками бумаг и сломанный X-Box благодаря дыре в TEA – не достаточное доказательство?

    Вы очень быстро опускаетесь до личных атак. Я на вас не нападал, я только предупреждаю читателей этого форума об опасности использования рекомендованного вами очевидно легко ломаемого алгоритма, указав при этом на ошибку в нём. Если выдавать настоящий RC4 поток пропустив первые несколько байт, то никаких проблем бы не было.
     
  13. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    В ближайших ко мне универститетах (да и не ближайших тоже) студентов-криптологов нет.

    Если вы не заметили, то рекомендовал я использовать механизм сессий или SHA хеш, а данные хранить на сервере. А эту схему привел "джаст фор фан" без каких-либо рекомендаций.
     
  14. Ruptor

    Ruptor Marcos el Ruptor

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    167
    Адрес:
    Australia
    Это называется "без каких-либо рекомендаций"? Ok...