Хотел бы сообщить, что в недавнем обновлении сервера активации мы ограничили возможность создания сетевых ключей Guardant SP в пределах от 1 до 50 лицензий. Это связано с производительностью ключей: защитные технологии ключа требуют достаточно больших вычислительных ресурсов.
Если совсем кратко, то для исполнения любого фрагмента ключа происходит следующее:
- проверка ЭЦП фрагмента ключа под псевдокодом в драйвере на 0-ом кольце
- динамическое вычисление ключей шифрования исходя из характеристик комплектующих компьютера
- попытка расшифрования фрагмента ключа получившимися ключами шифрования (если ключ был активирован именно на этом компьютере, то он расшифруется) - также под псевдокодом в драйвере
- выполнение расшифрованного кода (алгоритмов ключа), под псевдокодом в драйвере
Соответственно, псевдокод Guardant это фирменная технология виртуализации кода используемая для защиты всех наших разработок. Краткое описание технологии есть на нашем сайте: https://www.guardant.ru/technology/protect-source/.
Преимущество: делает реверс-инжиниринг защищенного кода практически невозможным, однако код замедляется на 3-4 порядка.
Возвращаясь к сетевым софтверным ключам: при чрезмерном использовании алгоритмов ключа нагрузка на процессор сервера становится весьма заметной при нескольких десятках лицензий в ключе. Однако, использование сетевых ключей на большое (сотни) количество лицензий все же возможно при грамотном проектировании защиты.
В связи с этим мы предусмотрели возможность создания ключей на неограниченное количество лицензий. Такие ключи можно приобрести после консультаций с техподдержкой.
Кстати на практике с аппаратными ключами с неограниченным числом лицензий существует то же самое ограничение: вычислительная мощность ключа просто не позволит сделать на 1-ом ключе серьезную защиту для нескольких сотен копий продукта. Одно обращение к аппаратному ключу занимает от 20 миллисекунд (шифрование 32 байт). Придется либо делать обращения к ключу более редкими (что не самым лучшим образом сказывается на степени защищенности), либо распараллеливать запросы на несколько физических ключей.