| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Проведение аутентификации в сети |
| Автор: Nuzur 6.7.2006, 10:59 |
Есть Клиент и Сервер написаные мною, мне необходимо чтобы сервер опозновал клиентов и давал им права в зависимости от того какими он их опознал. Введение пароля-логина выглядит как-то не очень красиво поскольку нужно будет синхрогизироваит БД пользователей да и подсознательно мне етот способ как-то не нравиться. Уважаемые експерты, да и просто если есть мысли умные, подскажите пожалуйста. Постскриптум - выход в интернет не факт что будет, тоесть аутентификации через сайт тоже отпадает. Введение ключа, а куда его вводить то не в текстовый же файл, даже если его потом шифровать. Короче нужны идеи |
| Автор: adonin 6.7.2006, 12:10 |
| Не изобретайте велосипед! Всё уже придумано до вас: http://knowhow.virtech.ru/qa/8.3 http://networkdoc.ru/files/insop/win2000/w2k_kerberos.doc |
| Автор: Nuzur 6.7.2006, 16:13 |
| adonin, Я почитал, спасибо конечно но все же хочеться чего то попроще. Кроме того не факт что мы будем работать в одном домене, возможно и подключение через нет, как в таком случаи быть? Выходит пользователь который захочет получить доступ к моему серверу не обИзательно будет зарегистрирован в той системе. |
| Автор: sllh 8.7.2006, 12:40 |
| Хм... в таком случае, самым простым будет отправка псевдо-случайнов величины, преобразованной по определенному алгоритму, например "суббота, 13:40" в том же МД5. Конечно, существует вероятность, что если сообщение было отправлено в 40, а получено в 41 минут, то опознание не пройдет, но вероятность мала -- сделать повторный запрос... Как вариант, можно использовать аналог http://www.portknocking.org/ |
| Автор: Nuzur 10.7.2006, 17:54 |
| sllh, ну идея то неплохая, вопрос в том не что отправлять, а как зашифровать. Ведь в таком-то случаи можно и использовать и парольль с логином то. Нужно как-то менять ключ и ето нужно делать одновременно, а вот обойтись без малой крови то? |
| Автор: adonin 12.7.2006, 10:50 |
| Извините, что долго не отвечал. Nuzur, я не имел ввиду, что вы должны пользоваться средствами Windows, я говорил о том, что Вы можете использовать идеи, реализованные в протоколе Kerberos. Довольно простая процедура аутентификации, обеспечивающая высокую безопасность выглядит так: 1) Пользователь вводит на клиенте логин и пароль; 2) Клиент получает хеш логина и пароля; 3) Клиент формирует запрос, содержащий логин пользователя и некую зашифрованную фразу. В качестве ключа используется хеш логина и пароля. 4) Запрос передаётся на сервер. Сервер по логину находит в базе пароль пользователя и получает хеш логина и пароля. 5) сервер, зная хеш логина и пароля расшифровывает зашифрованную фразу. 6) сервер случайным образом генерирует сессионный ключ, шифрует его и передаёт клиенту. В качестве ключа может использоваться как хеш пароля, так и переданная клиентом в запросе зашифрованная фраза. 7) клиент расшифровывает ответ сервера, получая сессионный ключ, которым шифрует все следующие пакеты. При этом Вы гарантируете что ни один ключ не будет передан по сети в открытом виде; Для каждой сессии будет сгенерирован свой сессионный ключ. Для реализации этого алгоритма нужно, чтобы сервер хранил базу логинов и паролей всех пользователей. |
| Автор: Nuzur 12.7.2006, 17:42 |
| adonin, да идея неплохая. А вы случайно |
| Автор: NiJazz 12.7.2006, 17:46 |
| Nuzur, можно использовать сертификаты CryptoAPI. |