Должна ли MMORPG использовать шифрование?

Прежде всего, делают ли эти успешные коммерческие MMORPG шифрование для передачи игровых данных?

У меня сложилось впечатление, что многие разработчики не используют шифрование, потому что не могут предотвратить обратное проектирование для обмана и создания частного сервера, но не эффективно ли это уменьшает количество?

Шифрование также влияет на производительность, даже немного.

Хорошее шифрование предотвращает сетевое смешение и man-in-the-middle, эти важные для MMORPGs?

Как насчет защиты сообщений чата для обеспечения конфиденциальности?

Как вы думаете?

PS: Я говорю об игровых данных, а не о пользователях/паролях, информация об аутентификации должна быть зашифрована точно.

Ответ 1

Шифрование - это инструмент. Убедитесь, что инструмент подходит к проблеме.

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

Второе, что нужно учитывать, это тот факт, что клиент имеет ключи, и поэтому вы должны предположить, что у злоумышленника также есть ключи. Даже если вы используете асимметричное шифрование, клиент имеет ключ к расшифровке всего, что он получает. Если вы отправляете клиенту "личные данные", атака может найти ключ и расшифровать его.

Хорошая MMORPG (неудачная, чтобы затруднить обман) должна принимать две вещи: a) пользователь/злоумышленник может видеть любые данные, отправленные клиенту (поэтому не отправляйте вещи клиенту, который вы не хотите видеть пользователю) б) злоумышленник может отправить любую возможную команду пользователю (так что не полагайтесь на клиента для обеспечения безопасности).

В большинстве MMORPG клиент - это нечто большее, чем немой терминал с впечатляющей графикой. Все вычисления, проверка ошибок и проверка выполняются на стороне сервера. Клиент не определяет, попадаете ли вы или промахиваете, а также не определяете, сколько урона. Клиент просто сообщает серверу "Я атакую ​​с помощью пункта 382903128." или какое-то другое действие (не результат). Сервер подтверждает, что плеер имеет доступ к этому параметру, имеет элемент, и команда действительна в это время. Чтобы предотвратить атаки нюханием, клиенту предоставляются только данные, к которым у пользователя будет доступ в любом случае.

Ответ 2

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

Атакующий А имеет доступ к машине, на которой запущен игровой клиент, и хочет написать бота для автоматизации своих действий, чтобы легко выиграть битвы.

Атакующий B подслушивает пакеты в локальной сети с целью

  • Кража учетных данных для входа в игру бесплатно.
  • Шпионаж на чат-чат от игрока к игроку, возможно, чтобы получить преимущество в игре или, возможно, за шантаж или преследование в реальном мире.
  • Вставка дополнительного поведения в поток команд, например. инструкции по покупке или продаже предметов по ценам, которые делают деньги для злоумышленника.

Шифрование не влияет на злоумышленника A (так как игровой клиент может расшифровать сообщение, так что злоумышленник может принять меры борьбы на сервере), но побеждает злоумышленника B.

Я не согласен с некоторыми другими ответами о значении передаваемых данных. Ваши личные чаты с другими игроками так же достойны защиты, как ваши мгновенные сообщения с ними, а ваше золото и имущество, заработанное часами работы, заслуживают некоторой защиты со стороны злоумышленников, если возможно, не так много, как ваши доллары на банковском счете.

Ответ 3

В течение 90 Ever Quest использовался шифрование пакетов низкого уровня. Я с любовью вспоминаю, что раньше было стороннее приложение, которое бы обнюхивало пакетные данные и предоставляло вам информацию о зоне для всех в зоне. Команда EQ искалечила это некоторое время, когда они добавили шифрование пакетов, но это не остановило сообщество хакеров, поскольку они просто вытащили ключ из клиентской машины. Поэтому, в конце концов, это действительно никоим образом не помогло. Что касается другой MMO, я не смотрел на данные пакета, чтобы сделать определение так или иначе.

Ответ 4

Вам не требуется шифрование для обеспечения безопасности.

Рассмотрим этот "пакет":

<USER_ID><COMMAND><MD5HASH>

MD5HASH генерируется из USER_ID + COMMAND + другого значения, которое знают как сервер, так и клиент, но не передается по проводу (электронная почта пользователя или какой-либо токен, поставленный безопасно во время входа в систему). Сервер может восстановить строку, используемую для хэширования, и проверить подлинность команды. Если какой-то человек-в-середине изменяет COMMAND, хэш не будет соответствовать.

Помимо проверки подлинности этот метод также позволяет проверить, что вы получили всю инструкцию. (Возможно, ваш "игровой пакет" распространяется на несколько пакетов TCP/IP, некоторые могут потеряться и т.д.).

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

Ответ 5

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

Для MMORPGS я не вижу преимуществ ни в безопасности, ни в производительности, так как большинство данных сильно связаны с сеансом, а атаки "человек в центре" маловероятны (потому что после всего, почему вы хотите понюхать и атаковать такое соединение?).

Что я буду делать, так это передавать пароли и учетные данные для входа в качестве хэшированных значений (или даже шифровать только эту часть) и оставить остальную часть открытого текста соединения; поэтому вы не страдаете от зависания процессора и задержки, вызванных шифрованием (особенно при большой нагрузке на сервер).

Ответ 6

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

Шифрование данных, переданных во время самой игры, не так важно.

Вам нужно различать шифрование и обфускацию, которые имеют совершенно разные цели.
Например, SSL полезен как шифрование, но бесполезен как обфускация, поскольку шифрование происходит в известных API-интерфейсах, и тривиально перехватывать открытый текст при его передаче в/из этих API.
Обфускация должна быть смешана с вашим собственным кодом и не нуждается в криптографической защите.

Ответ 7

Необходимое шифрование для администраторов локальной сети или Wi-Fi, они потенциально могут обнюхать ваш трафик/пакеты и захватить/изменить информацию об игре/пароли.

Tipically (99.99999%) учетные записи взломаются троянами, а не обнюханием пакетов. Так что в 99.99999% шифрования бесполезно.

Шифрование абсолютно бесполезно против Botting или Cheating. В этом случае существуют специальные силы, такие как: Anti-Cheating/Bot systems.