Передача нетронутых данных из приложения Flash на сервер? - PullRequest
2 голосов
/ 05 сентября 2008

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

Один простой способ - выполнить некоторые операции с данными, например, хэш, и передать хэш обратно на сервер вместе с данными. Однако это легко может быть нарушено кем-то, имеющим доступ к исходному коду клиента.

Редактировать : Я понимаю, что ничто не будет взломано, но я хочу сделать это как можно сложнее. Лучшим вариантом, на мой взгляд, является решение @ jcnnghm для шифрования данных с помощью открытого ключа и, при необходимости, для проверки работоспособности и / или пересчета журналов игр. Шифрование SSL также является хорошей идеей, так как это затрудняет расшифровку того, что фактически отправляется обратно на сервер.

Ответы [ 5 ]

3 голосов
/ 05 сентября 2008

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

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

Обновление: @mark: Flash изначально поддерживает SSL.

2 голосов
/ 05 сентября 2008

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

1 голос
/ 05 сентября 2008

Проверьте пакет AS3Crypto на http://code.google.com/p/as3crypto/. Я не пробовал, но этот пакет утверждает, что (частично) поддерживает протокол TLS 1.0.

TLS обеспечит безопасный туннель между вашим приложением Flash и сервером. http://en.wikipedia.org/wiki/Secure_Sockets_Layer

@ jcnnghm Обычно вы не хотите использовать шифрование с открытым ключом (RSA, DSA) для массового шифрования данных из-за его большого вычислительного времени. Шифрование с открытым ключом должно использоваться на этапах установления связи и согласования ключей в протоколе безопасности, но шифрование больших объемов данных должно выполняться симметричным шифром, таким как AES и TDES. Протоколы TLS и SSL работают таким образом.

0 голосов
/ 10 августа 2009

Я согласен с ответами, которые ни о чем не говорят, является доказательством хакера. Потому что, прочитав его, вы можете манипулировать / копировать его и, следовательно, декомпилировать.

Другой подход, который я планировал, заключается в создании уникальных ключей pr. Сеанс игрока (включая некоторое время / дату в виде солей).

Затем через приложение, возможно, периодически отправлять / передавать оценку состояния и получать новый действительный ключ. Если эта синхронизация не удалась, прервите весь сеанс.

Недостатком этого может быть слишком много одновременных игроков, которые снижают скорость ответа сервера и, следовательно, делают "фальшивые таймауты" + оставляя игровой сервер открытым для DoS-атак.

Но что-то с обновлением "сеансового ключа", пока у пользователя есть сеанс, потребует дополнительного управления сеансом, но если это заставит читеров работать немного сложнее, я обязательно попробую:

С другой стороны, НИЧТО не является доказательством хакера, поэтому не доверяйте ему на 100% - независимо от того, какое умное решение вы придумали.

Последнее замечание также будет разделять ваше приложение на модули / уровни и т. Д., Чтобы вы не получили доступ к каждому фрагменту кода, просто запустив его.

В настоящее время я планирую построить большой многоуровневый мир, и клиент / игрок получит ТОЛЬКО файлы, прикрепленные к части, в которой находится игрок.

Надеюсь, это пригодится вашим мыслям.

0 голосов
/ 05 сентября 2008

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

Музыкальная и киноиндустрия потратили десятки миллионов на DRM, который взломали домашние любители за несколько дней / недель. Если они не могут защитить свои вещи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...