Способы создания ключевых дисков
ПРОГРАММНАЯ ЗАЩИТА
Методы программной защиты, которые реализовывают подходы к защите авторских прав, основанные на противодействии либо созданию копий программы (воспроизведению), либо попыткам запуска и/или исполнения незаконной копии.
! |
Подчеркнем еще раз, что любая программная защита может быть снята за конечное время.
Преимуществами обладает программная защита такой сложности, при которой нарушитель для взлома защиты должен затратить средства (материальные и временные), несравнимые со средствами, необходимыми на покупку программного продукта или создание собственного кода. Говоря другими словами, надежной является такая программная защита, если для взлома или обхода механизма защиты нарушителю необходимо обладать высоким потенциалом нападения, то есть обладать высокой квалификацией, располагать значительными материальными, трудовыми и временными ресурсами.
Следовательно, максимально возможное затруднение обнаружения, исследования и/или модификации механизма защиты - первоочередная задача автора программной защиты.
Традиционные методы защиты от копирования
В связи с тем, что долгое время программные продукты распространялись посредством гибких магнитных дисков, наиболее развитыми являлись средства защиты программных продуктов, размещенных на гибких магнитных дисках. А методы защиты программных продуктов от копирования часто назывались методами защиты дисков от копирования или, коротко, методами защиты дисков.
Методы защиты гибких магнитных дисков от копирования базируются на следующем. На диск, содержащий защищаемую программу, помещается некоторая скрытая ключевая информация, называемая ключевым признаком или ключом. Иногда ключевой признак называют меткой диска.
Диск, содержащий ключевой признак, называют ключевым диском.
Очевидно, что отсутствие ключа на диске, на котором присутствует копия программы, свидетельствует о незаконности копии.
Практически для реализации защиты с помощью ключевого диска основной код программы дополняется модулем, задачей которого является проверка диска на наличие ключа или, другими словами, ключевое сравнение. При совпадении ключа с эталоном необходимо передать управление основному коду программы, в противном случае - завершить выполнение программы.
! |
Главной задачей защиты от копирования программы является не допустить копирование ключевого признака на другой диск.
Способы создания ключевых дисков
Рассмотрим наиболее распространенные приемы создания ключей для защиты от копирования гибких магнитных дисков.
Создать ключ для защиты от копирования можно двумя способами:
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Е, которое уничтожит секторы, сформированные на первом обороте, если, конечно, не прервать форматирование. Копировщики, не учитывающие эту возможность, не смогут скопировать такую дорожку.
Методы защиты гибких магнитных дисков предполагают, что при каждом запуске защищенной программы ключевая дискета должна находиться в дисководе. Это не всегда удобно. Кроме того, существует возможность инсталляции программы на винчестер.