Как избежать подмены открытого ключа?
Я делаю сервер активации, который позволит пользователям активировать свое программное обеспечение. Проблема в том, что они владеют открытым ключом. Для метода проверки необходим открытый ключ для проверки подписи файла лицензии. Меня беспокоит то, что кто-то может сгенерировать свой собственный файл лицензии, используя два ключа (открытый и закрытый), а затем изменить открытый ключ на клиенте, который подделает его текущую лицензию.
Есть ли способ избежать этого? Где должен храниться открытый ключ? Вы должны принять во внимание, что проверка выполняется на клиенте, а подпись создается на сервере.
Благодарю.
2 ответа
Не используйте файл лицензирования. Каждый раз, когда приложение запускается, подключите его к серверу лицензирования для проверки.
Так? Весь смысл шифрования с открытым ключом в том, что дешифрование может быть выполнено только с помощью ключа. Если ваше приложение зашифровывает что-то с помощью открытого ключа пользователя и отправляет его на ваш сервер, они не смогут расшифровать этот пакет данных, потому что будет работать только ваш личный ключ.
Если файл лицензии пользователя зашифрован вашим личным ключом, только его открытый ключ может расшифровать его. Таким образом, даже если файл лицензии станет общедоступным, вы сможете отследить, кто им поделился, потому что только один ключ пользователя смог бы его расшифровать.