Способы создания ключевых дисков

ПРОГРАММНАЯ ЗАЩИТА

 

 

Методы программной защиты, которые реализовывают подходы к защите авторских прав, осно­ванные на противодействии либо созданию копий программы (воспроизведению), либо попыткам запуска и/или исполнения неза­конной копии.

!

Подчеркнем еще раз, что любая программная защита может быть снята за конечное время.

 

Преимуществами обладает программная защита такой сложности, при которой нарушитель для взлома защиты должен затратить средства (материальные и временные), не­сравнимые со средствами, необходимыми на покупку программного продукта или создание собственного кода. Говоря другими словами, надежной является такая программная защита, если для взлома или обхода механизма защиты нарушителю необходимо обладать высо­ким потенциалом нападения, то есть обладать высокой квалифика­цией, располагать значительными материальными, трудовыми и временными ресурсами.

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

Традиционные методы защиты от копирования

 

В связи с тем, что долгое время программные продукты рас­пространялись посредством гибких магнитных дисков, наиболее раз­витыми являлись средства защиты программных продуктов, разме­щенных на гибких магнитных дисках. А методы защиты програм­мных продуктов от копирования часто назывались методами защиты дисков от копирования или, коротко, методами защиты дисков.

Методы защиты гибких магнитных дисков от копирования базируются на следующем. На диск, содержащий защищаемую про­грамму, помещается некоторая скрытая ключевая информация, назы­ваемая ключевым признаком или ключом. Иногда ключе­вой признак называют меткой диска.

Диск, содержащий ключевой признак, называют ключевым диском.

Очевидно, что отсутствие ключа на диске, на котором при­сутствует копия программы, свидетельствует о незаконности копии.

Практически для реализации защиты с помощью ключевого диска основной код программы дополняется модулем, задачей которого является проверка диска на наличие ключа или, другими словами, ключевое сравнение. При совпадении ключа с эталоном необходимо передать управление основному коду программы, в противном слу­чае - завершить выполнение программы.

!

Главной задачей защиты от копирования программы является не допустить копирование ключевого признака на другой диск.

 

Способы создания ключевых дисков

Рассмотрим наиболее распространенные приемы создания ключей для защиты от копирования гибких магнитных дисков.

Создать ключ для защиты от копирования можно двумя спо­собами:

1) аппаратным путем;

2) программным путем.

В первом случае с помощью аппаратуры (чаще с помощью лазера для большей точности) специально повреждается некоторая часть поверхности диска. Затем вычисляются (например, путем записи и чтения в каждый сектор) номера поврежденных секторов, которые и будут являться ключом защиты. На диске, содержащем незаконную копию про­граммы, секторы с соответствующими номерами не будут повреж­денными, так как средствами копирования невозможно воспроизвести поврежденные секторы. При проверке легальности копии в секторы с определенными номерами необходимо записать произвольную информацию и считать ее. Легальная копия обнару­живает ошибку при чтении или записи.

Замечание. Данный метод применяется в основном для гибких маг­нитных дисков.

Программные методы создания ключевых дисков более раз­нообразны.

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

Необходимо отметить, что первоначально программные методы защиты были ориентированы на программы копирования, которые распозна­вали только стандартные форматы дискет. Стандартный формат дискет обеспечивает строго определенную структуру, в которой параметры форматирования (нумерация цилиндров, дорожек, секторов диска, размер секторов и другие) имеют предопределенные значения. Например, для дискет диаметром 3,5 дюйма и емкостью 1,44 Мб стандартно номера цилиндров из­меняются последовательно от 0 до 79, а секторов - от 1 до 18.

Следовательно, если отформатировать дискету особым (нестандартным) образом и разместить ключ на такой дискете, обыч­ные программы копирования не смогут воспроизвести ключевой признак. Методы защиты от копирования, основанные на данной идее, объединены общим названием - метод нестандартного форма­тирования гибкого магнитного диска. Практическая реализация метода заключается в том, что часть гибкого магнитного диска (обязательно системные об­ласти плюс некоторое пространство диска) форматируется со стан­дартными параметрами. Остальная часть диска форматируется не­стандартно, и здесь размещается защищаемая программа. В стан­дартно отформатированной области хранится специальная про­грамма, предназначенная для загрузки и запуска на выполнение защищаемой программы, которой «известны» нестандартные параметры.

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

На гибком магнитном диске данные записаны на обеих поверхностях диска (двусторонние дискеты). Каждая поверхность диска обслуживается соответствующей головкой (нижняя сторона дискеты головкой с номером 0, верхняя - с номером 1). Поверхность диска представляет собой последовательность дорожек. Дорожка - это концентрическая окружность, на которой в виде последовательности битов хранится информация. Пара противолежащих дорожек называется цилиндром. Каждая дорожка программным образом (программа форматирования) размечается на секторы. Длина всех секторов одинакова. Количество секторов определяется при форматировании.

Каждый сектор включает

· поля синхронизации (два, одно - заголовка сектора, другое - области данных сектора);

· маркеры, указывающие один - на начало сектора, второй - на начало области данных сектора; заметим, что на каждой дорожке еще присутствует маркер начала дорожки; (маркеры отличаются от данных записью с нарушением битов синхронизации;)

· идентификационный заголовок, состоящий из номера цилиндра, головки, сектора (логические координаты сектора) и контрольной суммы заголовка сектора (CRC);

· области данных сектора (для DOS-стандарта - 512 байт);

· поля, в котором хранится контрольная сумма области данных сектора, предназначенная для контроля целостности данных.

Кроме перечисленных полей, у каждого сектора есть два специальных поля: зазор заголовка сектора (16 байт) и зазор области данных (50 байт), которые предназначены[1] для предотвращения ошибок устройств.

Рассмотрим некото­рые способы нестандартного форматирования гибкого диска и размещения ключевого признака. Подчеркнем еще раз, что данные механизмы защиты рассчитаны на то, что копии защищенной программы будут создаваться с помощью стан­дартных программ копирования.

Размещение ключа на специально отформатированной дополни­тельной дорожке.

Например, для дискеты емкостью 1,44 Мб можно отформати­ровать дорожку с номером 80 (или более) и разместить на ней ключ. Стандартная программа копирования не может копи­ровать информацию с дорожки с таким номером.

Неформатированные дорожки.

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

Нестандартно пронумерованные секторы на дорожке.

Дело в том, что стандартный формат поддерживает последо­вательное возрастание номеров секторов на дорожке. Но воз­можна произвольная нумерация. Проверка расположения секторов в этом случае осуществляется измерением времени между чтениями двух секторов на стандартной и ключевой дорожке.

 

 

Нестандартный размер секторов.

Можно отформатировать большее число секторов малой длины, а записывать информацию в виде длинных секторов.

Создание сектора с неправильной контрольной суммой.

Стандартные программы не копируют секторы с неправиль­ной контрольной суммой (поле, в котором записана контрольная сумма области данных сектора занимает два байта). Идея заключается в том, чтобы прервать запись после записи информации в сектор, но до за­писи второго байта контрольной суммы. В данном случае ключом является несовпадение контрольной суммы и содер­жимое сектора, доступ к которому открыт.

Изменение контрольной суммы.

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

Для противодействия более совершенным программам копирования, которые не зависят от стандартных параметров форматирования, ис­пользуются более сложные способы. Приведем некоторые.

Уменьшение межсекторных промежутков.

Межсекторные промежутки - это зазоры области данных (см. описание формата сектора). За счет уменьшения межсекторных промежутков на дорожке помещается еще один сектор размером 512 байт. В данном случае ключом может являться наличие такого дополнитель­ного сектора и/или его содержимое.

Размещение информации в межсекторных промежутках.

Для получения доступа к межсекторным промежуткам сле­дует задать размер сектора в заголовке большим, чем его реа­льный размер, указанный при форматировании. При чтении такого сектора будет прочитано его поле данных, затем межсек­торный промежуток, затем заголовок следующего сектора и т.д. Запись в такой сектор затрет заголовок следующего сек­тора, и на дорожке одновременно будут находится секторы разных размеров.

Отсутствующие маркеры полей секторов.

Напомним, что каждый сектор имеет два маркера - маркер заголовка и мар­кер данных. Каждый маркер может отсутствовать.

Логическое превышение объема дорожки.

Секторы на самом деле поме­щаются на дорожке, но конец последнего сектора попадает на начало дорожки. При записи такого сектора затрется начало первого сектора (конечно, если вовремя не прервать операцию!).

Физическое превышение объема дорожки.

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

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