2011-07-15 6 views
2

Я хотел бы написать управление лицензиями на основе wcf-сервисов.Подтвердить службу WCF

Как я могу гарантировать, что (end) -user/"hacker" не сможет заменить наши службы управления лицензиями поврежденным сервером?

Наш сервер лицензий размещен на нашем сервере в Интернете. Когда сервер отправляет поврежденные данные клиенту, вся концепция управления лицензиями уничтожается.

спасибо

ответ

3

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

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

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

0

Я думаю public-key cryptography может быть ответ здесь. Я не эксперт в области безопасности, поэтому, возможно, я ошибаюсь, но, насколько я понимаю, у вас может быть открытый ключ для дешифрования, жестко закодированный в ваш потребитель и закрытый ключ для шифрования на вашем сервере лицензий. Затем рабочий процесс может быть следующим:

  1. Клиента генерирует случайное сообщение и отправляет на сервер
  2. сервер шифрует это сообщение и возвращает обратно в зашифрованном виде результата
  3. клиента пытается расшифровать полученное сообщение и, если он соответствует оригинальному один сервер успешно проверен.

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

+0

Единственная проблема: я могу даже перезаписать жестко закодированные переменные отражением (если я знаю структуру). Поэтому я могу ввести другой открытый ключ. У вас есть идея, как решить эту проблему? – Mimefilt

+1

IMO, если вы можете взломать клиента, тогда вам ничего не поможет. Если вы можете изменить приложение (и сменить открытый ключ, скомпилированный в него), то что перестанет просто удалять код проверки сервера? – Snowbear

+0

Конечно, он может создать новое приложение, основанное на нашем исходном коде. Но это занимает очень много времени и много мастерства. Отражение значения выполняется за несколько минут. Но, возможно, вы правы. Даже Bilzards «Star Craft 2» был «взломан», – Mimefilt

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