none
Уникальный ключ программы RRS feed

  • Вопрос

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

    Есть ли какие то наработки на эту тему?


    Влюблен в WPF
    14 ноября 2011 г. 11:33
    Отвечающий

Ответы

  • Кому нужно, тот все равно сломает. Тут вопрос только насколько это действительно нужно будет. Можно например для текущей системы зашифровать время и хранить его на сервере. Зашифровать можно с помощью класса ProtectedData. Он достаточно прост и шифрует данные, используя данные либо текущей машины, либо текущего пользователя. Расшифровать закодированную строку можно будет только на текущей машине, либо под текущим пользователем.

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

    • Помечено в качестве ответа LXGDARKEditor 15 ноября 2011 г. 10:00
    15 ноября 2011 г. 8:03
    Отвечающий

Все ответы

  • Можно настроить Windows Authentication между программой и сервером. Тогда проблем не будет - программа при старте будет посылать Credentials нужные и юзер будет однозначно идентифицироваться.

    Если нужен файлик, то смотрите в сторону ЭЦП. Вся ответственность по утере ключа ложится на юзера.

    Можно просто на сервере сделать таблицу логин/пароль и привилегии. При старте программы будут запрашиваться логин/пароль.

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

    14 ноября 2011 г. 17:06
    Отвечающий
  • Да мне нужно именно лицензию. Тое сть триал период пользователя будет определятся по уникальному ключу его программы, но для этого нужна гарантия, что этот ключ не будет поменян не добросовестным пользователем. Вот отсюда и вопрос где его безопасно хранить?
    Влюблен в WPF
    14 ноября 2011 г. 17:18
    Отвечающий
  • Кому нужно, тот все равно сломает. Тут вопрос только насколько это действительно нужно будет. Можно например для текущей системы зашифровать время и хранить его на сервере. Зашифровать можно с помощью класса ProtectedData. Он достаточно прост и шифрует данные, используя данные либо текущей машины, либо текущего пользователя. Расшифровать закодированную строку можно будет только на текущей машине, либо под текущим пользователем.

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

    • Помечено в качестве ответа LXGDARKEditor 15 ноября 2011 г. 10:00
    15 ноября 2011 г. 8:03
    Отвечающий