![]() |
|
|
![]()
|
|
| Deepthroat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 24.9.2007 Где: Outer Heaven Репутация: нет Всего: 2 |
Предлагаю такую задачу, если есть стандартное описанное в литературе решение, или, если эта задача уже где-то решена, ткните, пожалуйста.
Значит так, есть клиент и сервер. Клиент имеет имя пользователя и пароль, по которым он должен обращаться к серверу. На сервере эти данные хранить нельзя, поэтому я храню их хеши (есть возможность использовать md5 или более стойкий SHA-512). Так, взломав сервер, получить пароль пользователя невозможно. Все бы хорошо, но можно перехватить трафик клиента, а там пароль передается в открытом виде. Можно использовать схему, в которой сервер дает клиенту случайное число, тот его подписывает (да хоть так: md5(Password + Random)) и отправляет уже подпись. При перехвате трафика пароль узнать не выйдет. Но зато на сервере надо хранить пароль в открытом виде (либо зашифрованный, но ключем, который все равно хранится где-то на сервере в открытом виде). Т.е. при взломе сервера хакер получает пароль. Работа проходит на PHP и JavaScript, так что выбор криптографических функций несколько ограничен (AES 256, SHA-512, md5). Можно хранить на сервере пароль в зашифрованном виде, а ключ для шифрования пароля хранить на другом сервере. Но взломав наш сервак, можно получить место хранения ключа и расшифровать им сам пароль. К тому же, иметь 2 сервера - это слишком геморно. Итак, вопрос: как мне организовать аутентификацию пользователя не храня пароль на сервере и не передавая его в открытом виде? |
|||
|
||||
| SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Deepthroat, я не особо разбираюсь в этих всяких криптографических штуках, но вроде можно просто шифрованным канал между клиентом и сервером сделать. Либо все соединение через ssl (или что-нибудь там аналогичное - хз) делать, либо только акт передачи пароля, как в gmail'е по умолчанию. Поснифать пассворд на гмэйл не получится, в отличие от многих других мыльных серверов. =)
-------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 1 Всего: 39 |
угу - пароль узнать не выйдет. Да и не надо. Если есть возможность активно воздействовать на траффик пользователя, можно зайти, используя перехваченную от клиента комбинацию. google man-in-the-middle. В общем, стандартное решение в данной ситуации строится на криптографии на открытых ключах. Например - SSL, его реализация присутствует во всех современных web-серверах и web-клиентах. Но и тут, собственно, есть несколько путей. Сервер для клиента - аутентифицируется в любом случае, а вот дальше, аутентификацию клиента вы можете проводить либо собственным способом (нехранимые пароли, как у вас или еще что-то). Кроме этого ssl, сам представляет средство для аутентификации клиента построенное опять таки на криптографии с открытым ключом. В общем, google ssl Это сообщение отредактировал(а) Alexandr87 - 3.12.2007, 05:45 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |