Как защитить лицензию на ПО от фальшивой цифровой подписи? - PullRequest
0 голосов
/ 27 января 2012

Я думаю использовать DSS для распространения лицензии на программное обеспечение для конечного пользователя.

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

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

Однако это слабость этого протокола. Лицензия на программное обеспечение представляет собой читаемый текстовый файл. Любой может сгенерировать пару открытого / закрытого ключа, подписать лицензию на программное обеспечение и исправить программное обеспечение поддельным открытым ключом. Он пройдет процесс проверки и может создать собственную лицензию на программное обеспечение.

Есть ли какой-нибудь хороший способ защиты от поддельной цифровой подписи?

Ответы [ 4 ]

3 голосов
/ 27 января 2012

Я не знаю, какие инструменты вы используете для разработки своего кода, но есть превосходное описание того, как этого добиться в мире .NET Framework, см. http://www.codeproject.com/Articles/4940/Using-XML-Digital-Signatures-for-Application-Licen. Открытый ключ встраивается в код самого приложения. Я использовал схему, подобную этой, чтобы лицензировать плагин Ruby.

Если кто-то действительно решит взломать вашу защиту, он это сделает. Тем не менее, эта схема будет удерживать 99,9% от тех, кто испытывает желание украсть ваше программное обеспечение.

2 голосов
/ 27 января 2012

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

Но, опять же, если ваше программное обеспечение стоит взломать, оно будет взломано.

1 голос
/ 26 января 2016

Любой может сгенерировать пару открытого / закрытого ключа, подписать лицензию на программное обеспечение и залатать программное обеспечение поддельным открытым ключом. Он пройдет процесс проверки и может создать собственную лицензию на программное обеспечение.

Есть ли хороший способ защиты от фальшивой цифровой подписи?

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

0 голосов
/ 15 мая 2019

Есть два способа предотвратить подпись с новой парой ключей.

  1. Вставить открытый ключ с помощью DLL. Таким образом, открытый ключ скрыт.

  2. Использование открытого ключа Pinning Методы. Это включает в себя получение сертификата от подписывающего органа, что сложно для физических лиц. Все это подпадает под PKI (Инфраструктура открытых ключей).

  3. Третий способ - применить метод асимметричного шифрования (например, AES), чтобы зашифровать ваш файл подписанной лицензии и вставить его в вашу dll лицензии. Это делает информацию в лицензии немного менее очевидной и предотвратит основные атаки.

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

...