Шароварная криптография или пишем систему лицензий на коленке, часть первая

December 10th, 2008 Begemot Posted in Шаровароварение

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

Но есть и минусы: навесные зашиты не идеальны, и возможно со временем вы захотите перейти на другую, а много ключей уже распозлось по счастливым клиентам. Или вы решите занятся экспансией и ворваться на рынки карманных устройств или альтернативных ОС. Ну или у вас просто нет денег на навесную защиту, а то, что вас будут ломать вы еще пока просто не верите. Я сам много лет назад использовал подобную схему и теперь, к сожалению, жестко привязан к выбранной тогда защите. Ее смена означает приличную нагрузку на саппорт по раздаче новых ключей все клиентам, удовольствие еще то…:(

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

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

Первое, что надо сделать – придумать формат лицензии.  Тут все просто – думаете какие данные вы хотите хранить в ключе, потом выбираете удобнуй формат записи. Дальше пишете код который собирает все это вместе и сериализует – для кейгена. И код который разбирает данные по косточками – для программы. На придумывания формата у меня ушло 10 минут, на написание кода и уточнения формата еще 2 дня:)

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

Related:

8 Responses to “Шароварная криптография или пишем систему лицензий на коленке, часть первая”

  1. Ждем-с второй серии. 🙂

    Лично мне это очень интересно, так как столкнулся с той же проблемой.

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

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

  3. У нас тоже самописная защита:).

    Кстати, с купленной защитой иногда бывают “глюки”, наш конкурент, например, покупает защиту, и у него, когда заканчивается триальный период, в окошечке появляются три кнопки: “Купить”, “Ввести ключ” (надпись почти не влазит на кнопку) и (барабанная дробь:)) снова “Купить”. Кнопка “Выход” или “Отмена” отсутствует как класс;).

  4. Norfolc, ну сравнил изменения места хранения ключа у купленной защиты и написание своей 🙂

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

  5. ——–
    “Купить”, “Ввести ключ” (надпись почти не влазит на кнопку) и (барабанная дробь:)) снова “Купить”.
    —-
    Это не глюк, это фича.
    ;))

  6. Судя по дальнейшим постам было бы интересно как ты шифруешь ключ используя DSA 🙂

  7. topmedia: Судя по дальнейшим постам было бы интересно как ты шифруешь ключ используя DSA

    А из чего вы сделали вывод, что кто-то пытается что-то шифровать с помощью DSA?

  8. Промахнулся с окмментом, он к другому посту. И, кстати, уже понял, что подписывает, а не шифрует.