терминальные лицензии тоже по количеству компов (пользователей), использующих удаленные подключения. Т.е. не по количеству одновременных подключений к серверу удаленных раб. столов
Можно в протокол обмена добавить рэндомное число. Клиент генерит случайный код, отправляет на сервер вместе с регистрационным кодом, сервер шифрует этот случайный код своим закрытым ключом и отправляет результат клиенту. Клиент расшифровывает ответ своим открытым ключом и если результат совпадает с отправленным, то сервер гарантировано наш.
Или почитать еще про алгоритмы защищенных каналов связи.
e_danilchenko:
Например. Пользователь загружает дистрибутив. Покупает у вас ключ на запуск программы. Программа при запуске спрашивает ключ у пользователя, лезет на сайт, где скрипт проверяет действительность ключа. Если ключ действительный, то скрипт возвращает положительный ответ. После чего помечает данный ключ, как использованный.