Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к серверу по паролю, Перехват трафика и взлом сервера 
:(
    Опции темы
Deepthroat
Дата 3.12.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 24.9.2007
Где: Outer Heaven

Репутация: нет
Всего: 2



Предлагаю такую задачу, если есть стандартное описанное в литературе решение, или, если эта задача уже где-то решена, ткните, пожалуйста.

Значит так, есть клиент и сервер. Клиент имеет имя пользователя и пароль, по которым он должен обращаться к серверу. На сервере эти данные хранить нельзя, поэтому я храню их хеши (есть возможность использовать md5 или более стойкий SHA-512). Так, взломав сервер, получить пароль пользователя невозможно.

Все бы хорошо, но можно перехватить трафик клиента, а там пароль передается в открытом виде.

Можно использовать схему, в которой сервер дает клиенту случайное число, тот его подписывает (да хоть так: md5(Password + Random)) и отправляет уже подпись. При перехвате трафика пароль узнать не выйдет. Но зато на сервере надо хранить пароль в открытом виде (либо зашифрованный, но ключем, который все равно хранится где-то на сервере в открытом виде). Т.е. при взломе сервера хакер получает пароль.

Работа проходит на PHP и JavaScript, так что выбор криптографических функций несколько ограничен (AES 256, SHA-512, md5).

Можно хранить на сервере пароль в зашифрованном виде, а ключ для шифрования пароля хранить на другом сервере. Но взломав наш сервак, можно получить место хранения ключа и расшифровать им сам пароль. К тому же, иметь 2 сервера - это слишком геморно.

Итак, вопрос: как мне организовать аутентификацию пользователя не храня пароль на сервере и не передавая его в открытом виде?
PM MAIL WWW ICQ   Вверх
SaDFromSpb
Дата 3.12.2007, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Deepthroat, я не особо разбираюсь в этих всяких криптографических штуках, но вроде можно просто шифрованным канал между клиентом и сервером сделать. Либо все соединение через ssl (или что-нибудь там аналогичное - хз) делать, либо только акт передачи пароля, как в gmail'е по умолчанию. Поснифать пассворд на гмэйл не получится, в отличие от многих других мыльных серверов. =)



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Alexandr87
Дата 3.12.2007, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 1
Всего: 39



Цитата(Deepthroat @  3.12.2007,  04:26 Найти цитируемый пост)
Можно использовать схему, в которой сервер дает клиенту случайное число, тот его подписывает (да хоть так: md5(Password + Random)) и отправляет уже подпись. При перехвате трафика пароль узнать не выйдет.

угу - пароль узнать не выйдет. Да и не надо. Если есть возможность активно воздействовать на траффик пользователя, можно зайти, используя перехваченную от клиента комбинацию. google man-in-the-middle.

В общем, стандартное решение в данной ситуации строится на криптографии на открытых ключах. Например - SSL, его реализация присутствует во всех современных web-серверах и web-клиентах.
Но и тут, собственно, есть несколько путей. Сервер для клиента - аутентифицируется в любом случае, а вот дальше, аутентификацию клиента вы можете проводить либо собственным способом (нехранимые пароли, как у вас или еще что-то). Кроме этого ssl, сам представляет средство для аутентификации клиента построенное опять таки на криптографии с открытым ключом.
В общем, google ssl

Это сообщение отредактировал(а) Alexandr87 - 3.12.2007, 05:45
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.