Создание надежного сервиса SECURE с использованием ASP.NET MVC 3 - PullRequest
7 голосов
/ 04 августа 2011

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

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

Я возился с этим методом, чтобы отправлять зашифрованные строки в мой сервис: http://robtiffany.com/windows-phone-7/dont-forget-to-encrypt-your-windows-phone-7-data/

Но я действительно не понимаю, как синхронизировать этотпроцесс как на стороне приложения, так и на стороне сервера из-за генерации ключа.

Если кто-то создал сервис с высокими показателями и у него есть несколько полезных советов.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

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

Чтобы сделать его действительно безопасным, вам, вероятно, нужно отправить какой-нибудь журнал игры на сервер, и сервер должен будет убедиться, что журнал является правдоподобным способом завершения игры (т. Е. В игру можно было поиграть). таким образом). Чтобы подделать счет в этой системе, злоумышленник должен создать журнал игры - что означает создание ИИ, который может играть в игру лучше, чем человек (чтобы получить лучший результат). Это все еще возможно (если игра проста для компьютеров), но я думаю, вряд ли кто-то будет беспокоиться.

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

[РЕДАКТИРОВАТЬ: Я не эксперт WP7, поэтому WP7 может предложить что-то особенное, но, в принципе, проблема будет та же]

0 голосов
/ 04 августа 2011

Вы можете попробовать использовать сертификат клиента для шифрования данных. Этот - достойная тема, если кто-то пытается сделать то же самое.

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