Обеспечение
защиты не должно создавать значительных неудобств. Еще один
аспект — эффект "слабого звена". Общая степень защищенности
системы определяется уровнем безопасности, который обеспечивает
самый
слабый
узел защиты.
Неудобства
для пользователя.
Один из
распространенных способов защиты программ от
несанкционированного копирования (тиражирования) связан с
использованием регистрационного кода, который пользователь
должен ввести в окне регистрации для получения работоспособной
версии программы. Регистрационный код, как правило, вычисляется
автором (владельцем прав) или распространителем (продавцом)
программного продукта на основании предоставленной пользователем
информации (например его имени и названия компании, в которой он
работает).
Процедура вычисления может быть основана на некотором
секретном алгоритме, разработанном автором, или на криптографии
с открытым ключом. В обоих случаях в программе должен
присутствовать обратный алгоритм, позволяющий проверить
правильность регистрационного кода. Но в случае применения
криптографии с открытым ключом, зная алгоритм проверки,
математически сложно полностью воссоздать алгоритм вычисления
регистрационного кода. А при использовании секретного алгоритма
чаще всего обращение алгоритма проверки после его извлечения из
программы не является математически сложной задачей. Для
обеспечения заданного уровня стойкости необходимо использовать
ключи не короче определенной длины. Но использование длинных
ключей может создавать неудобства пользователю.
Снижение производительности.
Производительность (скорость выполнения) тоже довольно часто
страдает, если защищаемая программа злоупотребляет функциями
защиты. Задержки в процессе выполнения часто свойственны
системам, использующим аппаратные ключи для защиты от
несанкционированного тиражирования. Дело в том, что разработчики
ключей защиты любят вводить задержку в аппаратную часть ключа
для того, чтобы снизить скорость и эффективности атаки методом
перебора. Также разработчики рекомендуют выполнять случайные,
фиктивные обращения к ключу целью затруднить построение
компактной таблицы для эмуляции ответов ключа.
Если программа
при проверке корректности защиты делает большое число
последовательных обращений к ключу, суммарное задержки
оказывается весьма ощутимым, и в некоторых "особо выдающихся"
программах пользователя заставляют ждать несколько секунд, пока
не завершатся все запросы к ключу. Если же используется
установленный не на локальном компьютере, а в сети, ко времени
ожидания ответа от ключа добавляется время, затрачиваемое на
поиск сервера, обслуживающего ключ, и обмен с ним запросами и
ответами. К счастью, большое количество обращений к ключу обычно
выполняется только при запуске программы, а в процессе работы
производятся только отдельные обращения, но даже единичное
длительное ожидание при запуске программы явно не доставляет
пользователю особой радости.
(продолжение)
|