2013-12-01 2 views
0

Вот что я пытаюсь сделать.Алгоритм проверки клиента?

У меня есть игра и исполняемый сервер. Клиенты подключаются к серверу для воспроизведения.

В настоящее время проблема заключается в том, что кто-то может использовать telnet или что-то подобное для имитации клиента.

В настоящее время пользователь отправляет только строку приветствия после того, как они подключены, и если это правильно, я принимаю данные от них.

Я пытался использовать сертификаты/ssl без успеха, поэтому я пытаюсь найти эффективный способ узнать, действительно ли клиент игры является клиентом.

Проще говоря, что было бы эффективным способом проверки клиента?

Меня не интересует человек в средней атаке, так как пользователи не входят в систему и не предоставляют пароли, а просто имя сеанса.

Я подумал о возможности отправки сервером фиксированной длины случайной строки, затем клиент модифицирует эту строку с помощью алгоритма, а затем отправит ее обратно.

Мне интересно, есть ли более умные способы, чем это.

У меня действительно есть сертификат для моего сервера, это pfx, если это помогает.

СООБЩЕНИЕ

+0

Извините, но если пользователи не предоставляют имена пользователей/паролей, в чем смысл обеспечения безопасности вашего сервера? Если кто-то может подключиться, нет смысла кого-то эмулировать клиента. –

+0

@ PawełStawarz Я согласен, но если они могут олицетворять клиента, они могут послать неверные игровые сообщения, которые могут замерзнуть или сбой сервера. – jmasterx

+0

Если у вас нет сообщений, сообщающих серверу о сбое или зависании, они не могут. Hovewer они могут сделать DoS или «Ping of Death», и если это так, ваша проблема в другом месте. –

ответ

1

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

Тем не менее, есть некоторые простые ответы на вопросы, которые вы можете сделать, чтобы улучшить ситуацию.

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

  • Сервер отправляет запрос, включая nonce (например, время + случайное число).
  • Клиент отправляет ответ, который включает в себя безопасный хэш (nonce + secret)
  • Сервер знает о несе и тайне, поэтому они могут проверить полученный хэш правильно и, таким образом, могут подтвердить, что «клиент» также знает секрет.

Это базовая симметричная схема валидации.

Смежные вопросы