11.3. Система защиты StarForce Professional | Телекоммуникации вчера, сегодня, завтра

Последовательность действий при создании объекта радиосвязи

Бланк формы №1 ТАКТИКО-ТЕХНИЧЕСКИЕ ДАННЫЕ РЭС

Поставка оборудования обеспеченного радиочастотами

Витрина



11.3. Система защиты StarForce Professional

Про StarForce (SF), систему защиты программного обеспечения, распространяемого на дисках CD-ROM, от несанкционированного тиражирования, пока написано не очень много. В основном это информация рекламного характера, исходящая от разработчиков, но попадаются высказывания и тех, кто эту защиту пытался обойти.

На официальном интернет-сайте приводится следующее описание характеристик системы защиты StarForce Professional:

- SF Professional не позволит запустить программный продукт, если компакт-диск идентифицирован как скопированный. Вне зависимости от того, где и как была сделана копия диска (в домашних условиях или на заводском оборудовании), система определит, что данный диск — нелегальный;
- компакт-диски, защищенные SF Professional, не копируются такими программами, как CloneCD, CDRWin, BlindWrite и им подобными. Защищенные приложения не запускаются на эмуляторах компакт-дисков, к которым относятся Daemon Tools, Virtual CD-ROM и т. п.;
- используя комплект разработчика на этапе создания программного кода, можно значительно усилить защиту приложения против самых эффективных методов взлома;
- для встраивания защиты SF Professional не требуется специального технологического оборудования, нужен только компьютер и доступ на один из серверов StarForce;
- компакт-диски, защищенные SF Professional, максимально совместимы с разнообразными моделями существующих устройств CD/DVD-ROM. Это обусловлено тем, что в SF Professional используется уникальный метод определения подлинности диска без вмешательства в его физическую структуру;
- система защиты использует алфавитно-цифровой 24-значный ключ, который вводится пользователем защищенного программного приложения в процессе эксплуатации только один раз — в момент первого запуска. Ключ будет работать исключительно с дисками данной партии программного обеспечения.

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

Так в одном из сообщений на http://cdfreaks.com выдвигается призыв уничтожить новую защиту в зародыше {StarForceCopyprotectionKillthebirdinitsegg).

Вдругом сообщении на том же сайте можно заметить техническое любопытство: как StarForce ухитряется обходить методы побитового копирования, используемые программами типа CloneCD (I'mcurioushawtheyareabletobypassthe 1:1 copy-methodthatCloneCDandallotherburningprogramsuse...).

Но любопытство быстро сменяется на серьезные опасения, что новая система защиты скоро станет весьма популярной, потому что не требуется специальное оборудование, не существует универсального способа взлома и защищенные диски не копируются с помощью CloneCD (This StarForce Protection system for CD's and CD-R's seems to be very popular soon, because all steps in making protected cd's can be done inhouse; also there is no generic crack available and this protection can't be copied by CloneCD).

А в одном сообщении на форуме поддержки Daemon Tools (одного из самых мощных эмуляторов компакт-дисков) утверждается, что сделать копию диска, защищенного StarForce, практически невозможно из-за особенностей защитного механизма (ft will be nearly impossible to make a backup of StarForce CDs, because of the nature of their protection). Да и разработчик Daemon Tools подтверждает это утверждение своей репликой о том, что защищенный диск может быть скопирован только на специальную болванку, соответствующую конкретной партии дисков (What concerns StarForce it is not possible to burn even theoretically with any program or writer, unless you get special media, which can be differentfor each title or even party of CDs of same title. Soforgetif).

Однако, как известно, непробиваемых защит не бывает, что подтверждают, например, статьи на www.reversing.net, в которых рассказывается о методах получения расшифрованной версии ЕХЕ-файла, работоспособной без оригинального компакт-диска.

В форуме Daemon Tools один человек утверждал, что ему удалось сделать копию диска, которая опознается как оригинал в 9 случаях из 10. А в другом сообщении разработчик Daemon Tools практически обещает реализовать эмуляцию дисков, защищенных StarForce (Youhavetowaituntildumpingprogramsappearthatcandumpitcorrectly. Most likely FantomCD will be one of the programs capable to produce such images (MDSformat). Beta version of Daemon already works successfully with mounted StarForce images so the question is in images only).

На фоне всего вышеизложенного задача оценить, насколько надежной является защита StarForce и что она собой представляет в действительности, показалась довольно интересной. Ниже приводятся результаты научно-исследовательской работы, выполненной кафедрой "Информационная безопасность" (ИУ-8) МГТУ им. Н. Э. Баумана по соглашению с компанией Protection Technology. Представители Protection Technology не возражали против публикации этих результатов. В качестве экспериментального образца использовалась игра "Heroes of Might and Magic IV", защищенная StarForce 2.0.

11.3.1. Общая характеристика защиты

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

Исследование средств защиты исполняемых модулей от отладки и снятия правильно работающего дампа — занятие неблагодарное. Для грамотно защищенной программы, с умом использующей все возможности, предоставляемые защитой, процесс восстановления исполняемого модуля доступен только высококлассным специалистам и практически не поддается автоматизации. То есть для снятия защиты с каждой новой программы потребуется большую часть исследований проводить сначала. Да и полной гарантии стопроцентной работоспособности получить не удастся. Фрагменты защиты могут быть вставлены в труднодостижимые места. Например, какая-нибудь проверка вполне может выполняться только в седьмой миссии многоуровневой игры, до которой невозможно добраться быстрее, чем за трое суток непрерывных сражений! Так что оставим снятие защиты через восстановление исполняемых модулей фанатикам исследований программ и перейдем к рассмотрению части защиты, связанной с проверкой аутентичности компакт-диска.

Как утверждают разработчики StarForce, при изготовлении защищенных писков не требуется никакое специальное оборудование, позволяющее наносить лазерные метки или какие-либо иные повреждения поверхности компакт-диска. Да и современные программы побитового копирования дисков, такие как CloneCD или BlindRead/BlindWrite, способны настолько точно воссоздавать все ошибки, что защита оказывается неспособна отличить оригинал от копии. Однако практика показывает, что в подавляющем большинстве случаев копия диска, защищенного StarForce, не опознается как эригинальный диск, какой бы программой ни выполнялось копирование.

Гак как же StarForce опознает оригинальный диск? Правильный ответ на этот вопрос знают только разработчики, однако в форуме поддержки Daemon Tools можно найти высказывание, что StarForce использует инфор-иацию об углах между секторами и метод получения этой информации совместим с 99.9 % приводов CD-ROM (StarForceusesangleinfoandthemethodVretrievingthismakesit 99.9 % compatiblewithanyCD-ROM).

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

11.3.2. Модель задержек при чтении информации с компакт-диска

В популярных источниках легко найти описание характеристик звукового компакт-диска.

Компакт-диск (КД)
КД имеет диаметр 120 мм и центральное посадочное отверстие диаметром 15 мм. Зона записи звука заключена в кольце с внутренним диаметром 50 мм и наружным — 116 мм. Вне ее находится зона, содержащая вспомогательную информацию, которая позволяет автоматизировать процесс воспроизведения. Сигнал записан на дорожке, расположенной на КД в виде спирали. Шаг витков спирали 1.6 мкм, т.е. поперечная плотность записи 625 дорожек/мм. Всего дорожка образует на КД 20 000 витков общей протяженностью 5 км и начинается не у наружной границы зоны записи, как на обычных грампластинках, а у внутренней.

Все вышесказанное справедливо и для компакт-дисков, на которых записаны данные. Спираль разбивается на последовательно идущие сектора, длиной 2352 байт каждый (16-байтовый заголовок, 2048-байтовая область данных и 288-байтовая зона коррекции ошибок). Также известно, что линейная плотность информации вдоль спирали является постоянной на всем диске.

Для дальнейших рассуждений примем, что расстояние между дорожками (1.6 мкм) одинаково на любых компакт-дисках, а длина сегмента спирали, принадлежащего одному сектору, является постоянной для конкретного экземпляра диска. Размеры зоны записи (внутренний и внешний радиусы) и полезная емкость носителя могут варьироваться от одного диска к другому. Так современные матрицы для записи КД имеют емкость от 650 до 800 Мбайт.

Положение на диске сектора с любым номером однозначно описывается двумя характеристиками диска:

Rinnerрасстояние от центра диска, на котором начинается нулевой сектор спирали;
Lsectдлина сегмента спирали, соответствующая одному сектору.

Выведем формулы, необходимые для определения точного положения сектора на диске по его номеру. Достаточно вспомнить школьный курс математики, потребуются лишь формула вычисления длины окружности и навыки по выполнению простейших арифметических операций.
Число витков спирали N поперечной плотностью Dвитков/мм от радиуса R1 до радиуса R2 определяется формулой:

N = (R2-R,) *D

Длина спирали Lв том же диапазоне радиусов выражается как:

L=n *(R2+ R1) *N=π *(R2 + R1J *(R2-R1) *D = n *(R22- R12) *D

РасстояниеLi- от начала спирали до i-ого сектора будет равно:

Li = i Lsect=π (R2i - Rinner2) D

Радиус R1, на котором начинается i-ый сектор, определяется как:

Ri   = Sqrt (i* Lsect/D/π +Rinner2)

Число витков Niот начала спирали до i-ого сектора вычисляется по формуле:

Ni= (R1 -Rinner)*D = (Sqrt (i* Lsect/D)/n + Rinner 2)- Rinner)*D     (1)

Целая часть Niзадает номер витка, а дробная часть — угловое положение сектора.

Теперь перейдем к физическим характеристикам привода.

В качестве базового тезиса при разработке компакт-дисков использовалась идея о постоянной линейной плотности записанных данных, а значит, и постоянной линейной скорости чтения диска. Но из-за того что длина витка спирали зависит от радиуса, для обеспечения постоянной линейной скорости чтения угловая скорость вращения диска должна быть переменной. И в первых приводах скорость вращения диска изменялась примерно от 500 оборотов в минуту на внутренних витках спирали до 200 оборотов в ми-нугу на внешних, более длинных витках. Однако в настоящее время существуют многоскоростные приводы, у которых угловая скорость вращения диска является постоянной, а линейная скорость чтения растет при переходе к внешним виткам спирали. И, судя по всему, таких приводов большинство, т. к. ограничения на повышение скорости передачи информации, читаемой с компакт-диска, накладываются не столько интерфейсом между приводом и оперативной памятью компьютера, сколько механическими свойствами самого привода, например значительными вибрациями на больших скоростях вращения. И практически нет разумных поводов для снижения скорости вращения при чтении информации с внешних витков спирали. Таким образом, будем исходить из того, что привод, с которым мы имеем дело, имеет постоянную угловую скорость вращения диска и двигатель привода выключается только по истечении некоторого значительного периода времени, на протяжении которого не было ни одного обращения.

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

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

Ty=(n+ fract (Nj) -fraci(Ni)) * Р,               (2)

где:

  • i, jномер сектора, следующего за последним прочитанным во время первого или второго запроса сектором;
  • Ту — задержка между окончаниями выполнения запросов;
  • Nj,Njположения i-ого j-ого сектора на спирали, вычисленные по формуле (1);
  • fract (х) — дробная часть x;
  • Р — период вращения диска (время, за которое происходит один полный оборот);
  • п— произвольное целое число.

То есть задержка состоит из времени, необходимого для нескольких полных оборотов  диска,   и времени на поворот диска от углового положения fract (Nj) до углового положения fract (Nj).

11.3.3. Как StarForce проверяет диск

Проверка подлинности диска состоит из нескольких этапов. Сначала читается информация о диске, установленном в приводе, и проверяется его метка тома. Затем выполняется 8 запросов на чтение случайных одиночных секторов с номерами в диапазоне от 1 до 65 536. Результаты чтения никак не используются, и, скорее всего, эти действия нужны для разгона диска до номинальной скорости вращения. Затем еще раз читается (но уже не проверяется) информация о диске. Все перечисленное выше проходит через драйвер файловой системы CDFS, никак не защищено от анализа и, следовательно, наверняка не влияет на процесс аутентификации.

Все остальные обращения к диску идут на более низком уровне. В той версии StarForce, анализ которой проводится, обращения адресовались драйверу устройства Cdrom и представляли собой SCSI-команды. Последовательность этих команд такова.

1. Чтение содержания диска (Table Of Content, TOC).
2. Чтение одиночных секторов с номерами 16, 17, 17 (дважды читается 17-ый сектор).
3. Чтение одиночных секторов с номерами 173117, 173099, 173081, 173063, 173045, 173027, 173009, 172991, 172973.
4. Чтение случайных 17 блоков по 8 секторов с номерами первого читаемого сектора в диапазоне примерно от 168100 до 173200.
5. SCSI-команда с кодом ОхВВ, описание которой не удалось найти в документации, но которая, скорее всего, отвечает за управление скоростью вращения привода.
6. Чтение одиночного сектора с номером 173117.

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

Попробуем разобраться, зачем может потребоваться каждый из шагов.

Чтение ТОС, скорее всего, требуется для определения номера сектора, с которого начинается последняя сессия мультисессионного диска. Так как сессия всего одна, то в 16 и 17 секторах как раз и хранятся описания структуры тома (метка тома, количество секторов, адрес директории диска и т. д.). А повторное чтение сектора 17, скорее всего, используется для того, чтобы примерно оценить порядок времени, затрачиваемого на один оборот диска. Разница времени между двумя чтениями одного сектора должна быть кратна длительности оборота диска.

В последовательности номеров секторов 173117, 173099, 173081, 173063, 173045, 173027, 173009, 172991, 172973 легко усматривается закономерность — каждое следующее значение на 18 меньше предыдущего. Число 18 тоже явно не случайное — на том радиусе диска, где размещаются сектора с указанными номерами, на один виток спирали помещается примерно 18 секторов. А чтение секторов в порядке убывания номера с большой вероятностью используется для того, чтобы предотвратить чтение с предупреждением, когда привод считывает во внутренний буфер не только заданные сектора, но и несколько последующих, на случай если данные читаются последовательно.

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

А дальше выполняется 17 чтений блоков со случайными номерами с целью измерения 16 интервалов времени. Если все интервалы хорошо (с малыми отклонениями) укладываются в формулу (2), то диск признается подлинным. Если же отклонения от ожидаемых величин превышают некоторое пороговое значение, то проводится повторное вычисление скорости вращения и повторное измерение задержек между чтением блоков по 8 секторов.

11.3.4. Способ обхода защиты

Чтобы заставить StarForce поверить, что в приводе стоит оригинальный диск, надо совсем не много: чтобы задержки между чтениями соответствовали ожидаемым. А для этого необходимо знать точные характеристики диска: радиус, на котором начинается спираль, и размер сектора. Для определения этих величин можно провести те же самые измерения, что проводит StarForce при проверке диска, а затем варьировать начальный радиус и размер сектора, пока не будут найдены оптимальные значения. Критерием оптимальности, например, может служить сумма отклонений разностей углов, вычисленных по формуле (1), и углов, полученных из замеренных интервалов времени по формуле, обратной (2).

Современное оборудование (во всяком случае, оборудование бытового класса) действительно не позволяет создавать копии защищенного диска, но написание эмулятора, способного обмануть StarForce, не представляет сверхсложной задачи. Достаточно перехватывать обращения к драйверу CD-ROM и в случае, если выполняется команда чтения, делать временною задержку, какую мог бы иметь оригинальный диск, и только после этого возвращать управление вызывающей программе.

В качестве практической демонстрации возможности эмуляции был разработан драйвер, функционирующий под операционной системой Windows 2000 и выполняющий описанные выше действия. Когда драйвер загружен, StarForce оказывается не в состоянии отличить подделку от оригинала. Игра стабильно запускается практически с любой копии оригинального диска, с виртуального диска, созданного программой Daemon Tools, и даже с дисков, которые похожи на оригинальный только тем, что имеют правильную метку тома и размер области данных не менее 350 Мбайт, чтобы существовали сектора с запрашиваемыми номерами.

11.3.5. Резюме по защите StarForce

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

Однако проведенное исследование показывает, что для эмуляции защищенного диска нужно совсем немного.

Примерно через 3 месяца после выполнения работы, результаты которой были приведены ранее, компания Protection Technology объявила о выпуске следующей версии своей системы защиты — StarForce Professional 3.0. Разработчики утверждают, что одно из многочисленных улучшений заключается как раз в усилении противодействия эмуляции компакт-дисков.

Кстати, вскоре после появления StarForce 3.0 буквально в течение одного месяца авторы как минимум трех эмуляторов компакт-дисков объявили о том, что новые версии их программ способны эмулировать диски, защищенные StarForce версий 1 и 2. С тех пор прошло больше года, но поддержка StarForce 3.0 так и не появилась ни в одном из эмуляторов. Так что по состоянию на сегодняшний день, компакт-диски, защищенные при помощи StarForce, продолжают оставаться устойчивыми к взлому.



Поиск по сайту


Смотрите также