Продолжается подписка на наши издания! Вы не забыли подписаться?

Компания “NOVEX”

Защита от компьютерного пиратства. Русский стиль.


По данным BSA (Business Software Alliance), доля нелегальных копий программных продуктов в России составляет 95 % — это дает основание относиться к компьютерному пиратству как к национальному бедствию.

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

Время тоже диктует свои коррективы. В середине 90-х годов программная защита (то есть защита, построенная на основе создания некопируемых дискет, “привязки” ПО к уникальным характеристикам компьютера и т.п.) начала сдавать свои позиции. Она морально устарела и уже в принципе не могла надежно защищать новейшие программные продукты. Вместо нее на российский рынок начала выходить программно-аппаратная защита — электронные ключи.

Электронные ключи — это небольшие электронные устройства, подсоединяемые, как правило, к параллельному порту ПК и служащие для защиты программ от их нелегального использования. За несколько лет своего существования эти устройства прошли большой путь развития. Современные электронные ключи — это устройства с энергонезависимой памятью (то есть памятью, не требующей для хранения записанных в нее данных никаких источников энергии), предназначенной для хранения данных по защите, “прозрачные” для принтеров и других периферийных устройств. Наиболее “продвинутые” модели имеют множество специальных свойств, повышающих уровень их надежности, совместимости, стойкости ко взлому.

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

Разумеется, электронные ключи имеют и качественно более высокий уровень защищенности от взлома, чем программная защита. Однако не следует думать, что они являются некоей панацеей, обеспечивающей абсолютно “неснимаемую” защиту. Отечественные хакеры пребывают в постоянном поиске новых методов взлома; и в плане взлома программно-аппаратной защиты ими уже накоплен богатый опыт. Сегодня в первую очередь страдают морально устаревшие электронные ключи (а такие, учитывая скорость развития технологий, уже существуют), либо те, разработчики которых не учитывают особенностей хакерского движения в России. В результате среди имеющихся сегодня на рынке систем программно-аппаратной защиты есть и такие, взломать которые русским хакерам не сложнее, чем простенькую программную защиту.

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

Как сегодня “ломают” защиту

Постоянно растущая популярность электронных ключей заставляет хакеров изобретать все более эффективные методы взлома программно-аппаратной защиты. На сегодняшний день в их арсенале множество методов, решающих задачу взлома с той или иной эффективностью. Часть этих методов воздействуют на аппаратную часть защиты (то есть на сам электронный ключ), часть — на программную (то есть на программные модули защиты, различными путями “вживленные” в защищенную программу). Нередко комбинируют несколько различных методов, чтобы добиться лучшего эффекта.

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

Создание аппаратной копии электронного ключа

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

Создание аппаратных копий ключа применимо только в тех случаях, когда хакеру известен конкретный тип микросхемы памяти, когда хакер имеет специальное аппаратное устройство (программатор) для записи данных в микросхему памяти ключа-копии и, самое главное,— при условии, что память электронного ключа никак не защищена от ее нелегального считывания. Именно это третье условие и стало “ахиллесовой пятой” некоторых марок электронных ключей, именно слабость (а то и полное отсутствие) защиты данных в памяти ряда ключей обусловило распространение этого метода взлома.

Методу присущи несколько недостатков. Главный из них в том, что, даже получив нелегальную копию программы, не удастся решить задачу ее незаконного распространения — ведь копия так и осталась защищенной, просто теперь она “привязана” к “левому” электронному ключу. Кроме этого, достаточно велика стоимость такого копирования — зачастую дешевле просто купить легальную копию продукта. Поэтому такой метод не получил столь широкого распространения, как следующий.

Создание эмулятора электронного ключа

Хакер, изучив внутреннюю логику работы электронного ключа, создает некий программный модуль — резидент, DLL, драйвер и т.п., — который в той или иной степени эмулирует (то есть воспроизводит) работу электронного ключа. Качественно написанный эмулятор способен воспроизвести работу ключа во всех тонкостях, включая особенности протокола обмена между защищенной программой и ключом, генерацию им верных ответов для “всех случаев жизни” и т.д. В результате защищенная программа будет спокойно работать, даже не подозревая, что имеет дело отнюдь не с электронным ключом, а с программным “суррогатом-заменителем”.

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

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

Но в любом случае эмуляторы должны верно воспроизводить не только посылаемые ключом данные, но и протокол обмена с ним (в противном случае защищенная программа не сможет “понять” переданных эмулятором данных).

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

Сегодня электронные ключи многих марок содержат аппаратные алгоритмы, отличающиеся степенью сложности и свойствами. Однако, к сожалению, отнюдь не всякий аппаратный алгоритм способен надежно защитить электронный ключ от эмуляции. Для этого аппаратный алгоритм должен быть сложным, чтобы хакер не смог его вычислить эмпирическим путем; он должен уметь обрабатывать большой объем информации за один сеанс (например, если алгоритм может одновременно преобразовывать только 2 байта данных, это означает, что количество всех возможных вопросов — а значит и ответов — ключа равно... 65536! Для составления полной таблицы ответов такого ключа хакеру потребуется меньше часа); электронные ключи у разных пользователей системы защиты должны содержать разные аппаратные алгоритмы, чтобы хакер не смог написать универсальный эмулятор для всех электронных ключей этой марки.

Отделение модуля автоматической защиты

Метод автоматической защиты готовых программ (его еще называют методом envelope или “конвертом” защиты) доступен практически во всех системах программно-аппаратной защиты. Его преимущества очевидны: при помощи специальной утилиты в считанные секунды можно “надеть” защиту на любую готовую программу. Экономится масса времени, которого всегда не хватает, не требуется никаких навыков в области построения защиты, а порой этот метод вообще является единственно возможным (например, если по каким-либо причинам Вам недоступны исходные тексты защищаемых программ). Однако у этого метода есть своя “ахиллесова пята”. Так как защита устанавливается на готовую программу, она не может образовать с программной неразрывного целого. Модуль автоматической защиты как бы “приклеивается” к программе, а это значит, что у хакера есть теоретическая возможность отделить, “отклеить” его — причем без ущерба для самой программы. Российскими хакерами накоплен в этом плане огромный опыт, есть даже специальные утилиты автоматического взлома программ, защищенных таким методом.

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

Другой действенный метод спасти защиту от быстрого взлома — это комбинирование автоматической защиты с защитой при помощи функций API. В этом случае хакер, даже “отсоединив” модуль автоматической защиты, не получит незащищенной программы — во многих местах ее тела останутся нетронутыми вызовы функций API защиты.

Удаление вызовов функций API

Помимо автоматической защиты, в распоряжение пользователя предоставлен набор функций API защиты. Как правило, API существуют для всех популярных языков программирования и содержат самые разнообразные функции. Пользователь защиты должен вписать вызовы нужных функций в исходный текст защищаемой программы, скомпилировать и слинковать его с соответствующим объектным модулем API. В результате защита будет внедрена глубоко в тело программы, и при правильной организации логики своей работы будет составлять с программой неразрывное целое. Взломать защиту такого типа хакеру гораздо сложнее, чем автоматическую — хотя бы потому, что невозможно создать универсальное средство автоматического взлома. Поэтому на взлом программ, защищенных при помощи API, хакеры идут лишь на очень выгодных для себя условиях. При помощи дисассемблеров и отладчиков они изучают логику работы программы, находят места, в которых происходят вызовы функций API (либо точки входа в сами эти функции — смотря что оказывается проще), и нужным образом исправляют программный код. Для борьбы с этим методом взлома есть несколько испытанных способов:

Итак, как видите, есть много способов взлома даже такой мощной защиты, как электронные ключи. А есть ли система защиты, способная по-настоящему хорошо противостоять всем этим методам? Несомненно, в природе не существует защиты, самим фактом своего существования сводящей на нет все усилия хакеров по ее взлому. Любая система защиты — это не готовое решение, это инструмент. И воспользоваться этим инструментом можно по-разному. Можно подойти к вопросу формально, потратить на процесс защиты от силы 10–15 минут — и результат будет неудовлетворительным, даже если используется самая лучшая защита в мире! А можно, изучив систему во всех тонкостях, реализовать все возможности защиты — и, как говорится, результат превзойдет ожидания. Иными словами, очень многое зависит от квалификации и трудолюбия программиста, “надевающего” защиту на программу. И в этом нет ничего удивительного: ведь, к примеру, и с помощью одного и того же компилятора можно создать надежный, мощный, конкурентоспособный программный продукт, а можно и такой, который, кроме “зависания” операционной системы, не способен сделать ничего.

Но все же главное зависит от возможностей самого инструмента, самой системы защиты. Ведь чем этих возможностей больше, чем лучше они реализованы, тем быстрее и проще можно добиться хорошего результата.

Вот почему ключевым моментом, влияющим на всю последующую работу с защитой, является сам процесс выбора конкретной системы. При этом не стоит уповать только лишь на громкие имена и регалии ее разработчиков. Рынок защиты — особенно в нашей стране — меняется очень динамично, российские хакеры с поразительной легкостью свергают с пьедесталов, казалось бы, “непотопляемых” лидеров, и их место занимают другие. В такой ситуации человеку, не владеющему полной картиной происходящего на рынке, легко стать жертвой иллюзий и поставить на “героя вчерашних дней”. Поэтому проблему выбора защиты нужно решать комплексно, отталкиваясь от своих собственных нужд и от объективной технической информации о той или иной системе защиты. И, при прочих равных условиях, лучше отдать предпочтение той из них, которая имеет действительно серьезные характеристики.

Технология Stealth на страже ваших доходов

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

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

Речь идет о технологии Stealth, разработанной в России в конце 1996 года как ответ на новую фазу “холодной войны” между хакерами и разработчиками защиты. Электронные ключи, выполненные по этой технологии, обеспечивают такое качество и стойкость защиты, о котором раньше не приходилось и мечтать. Сейчас по этой технологии выпускаются 2 типа электронных ключей — Guardant Stealth и Guardant Net.

Электронные ключи, выполненные по технологии Stealth, характеризуются несколькими общими признаками: они предназначены для работы в параллельном порту IBM-совместимого компьютера, выполнены на базе микроконтроллера, поддерживают генерацию аппаратных алгоритмов, имеют энергонезависимую память, полностью “прозрачны” для любых периферийных устройств.

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

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

Аппаратные алгоритмы Y=F(X). В отличие от своего предшественника, Stealth-ключи имеют аппаратные алгоритмы кодирования данных. Они обеспечивают высочайший уровень защищенности от взлома и снабжают Stealth-ключи принципиально новыми возможностями.

До 18 алгоритмов в одном Stealth-ключе. В одном Stealth-ключе можно организовать до 18 различных аппаратных алгоритмов. Для защиты можно одновременно пользоваться несколькими алгоритмами. Это еще больше усложнит процесс взлома защиты.

Высочайшая сложность аппаратных алгоритмов. В формировании каждого аппаратного алгоритма участвует так называемый определитель — последовательность байт, защищенная от чтения и модификации. Длина определителя может достигать 200 байт или 1600 бит. Нетрудно подсчитать, что для подбора алгоритма с таким определителем хакеру придется перебрать до 21600 различных комбинаций. Взяв минимальное время работы такого алгоритма, получим, что для его подбора хакеру потребуется порядка 10475... тысячелетий!!!

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

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

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

Кодирование до 255 байт данных одновременно. Любой из аппаратных алгоритмов Stealth-ключа за один сеанс способен обработать до 255 байт (или 2040 бит) данных. Причем на шифруемую последовательность длиной N байт накладывается нециклическая шифрующая последовательность длиной N байт. Возможность кодирования большого объема данных обеспечивает мощнейшую защиту от подбора хакерами верных ответов Stealth-ключа.

Наличие “быстрых” алгоритмов. Помимо аппаратных алгоритмов, Вы можете использовать для защиты алгоритм быстрого преобразования данных. Эта уникальная возможность позволит Вам производить кодирование сверхбольших объемов данных с такой высокой скоростью, что сам процесс будет совершенно незаметен для пользователя Вашего защищенного приложения.

Множественность кодов доступа к электронному ключу. Для выполнения любой операции со Stealth-ключом требуется задать код доступа к нему. Существуют Общий код и 3 Личных кода доступа. Не зная какого-либо из Личных кодов, невозможно выполнить с ключом и соответствующий этому коду набор операций! Использование нескольких кодов доступа значительно осложняет задачу получения любого нелегального доступа к Stealth-ключу.

Аппаратные запреты. Вы можете наложить аппаратные запреты на чтение или запись любой области доступной Вам памяти Ваших Stealth-ключей. И тогда никакими программными средствами хакерам не удастся ни считать, ни модифицировать данные, записанные в этой области памяти.

Кодирование данных в памяти Stealth-ключа. Все данные хранятся в памяти Stealth-ключей в кодированном виде, причем в каждом ключе кодирование производится уникальным образом. Самим же процессом кодирования / декодирования занят микроконтроллер ключа. Такой метод хранения данных делает бессмысленным их считывание — даже при помощи дорогостоящих аппаратных устройств, защититься от которых невозможно. Ведь, например, для получения аппаратной копии ключа нужно эти данные записать в другой Stealth-ключ (так называемый ключ-копию). Но микроконтроллер любого другого Stealth-ключа будет неверно интерпретировать эти данные, так как будет декодировать их иначе.

Аппаратная блокировка отладчиков. Stealth-ключ имеет уникальную аппаратную защиту от изучения логики его работы под отладчиком. Если ключ обнаружит, что протокол обмена с ним выполняется в среде отладчика (а в этом случае все временные интервалы неизбежно увеличиваются), он попросту перестает отвечать на любые запросы. Таким образом, Stealth-ключ сразу же выбивает из-под ног хакера привычную ему почву, заставляя использовать какие-то нестандартные и неудобные методы его изучения.

Особенности протокола обмена со Stealth-ключом

Протокол обмена со Stealth-ключом:

Эти два свойства протокола помогают обеспечить надежную защиту от создания эмуляторов Stealth-ключей.

Эти свойства значительно повышают надежность обмена со Stealth-ключом и обеспечивают ему высокий уровень совместимости с аппаратным и программным обеспечением.

Энергосбережение и полная “прозрачность” Stealth-ключа

В Stealth-ключе используется уникальная гибкая система энергопотребления — микроконтроллер управляет уровнем потребления Stealth-ключом энергии, оперативно меняя свою тактовую частоту. Кроме 2 стандартных состояний (“сон”/активная работа), Stealth-ключ имеет и уникальное промежуточное состояние, которое отличается очень низким уровнем энергопотребления. В это состояние Stealth-ключ переходит в случае, если на его вход приходят данные для подключенного через него периферийного устройства. Наличие гибкой системы энергопотребления и промежуточного состояния работы ключа обеспечило ему наивысший уровень “прозрачности”. На практике Stealth-ключи полностью “прозрачны” для любых периферийных устройств и для любых протоколов обмена с ними.Кстати, именно это свойство ключей, выполненных по новой технологии, легло в основу названия самой технологии (“stealth”— по-английски “невидимка”).

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

Сергей Качур



Copyright © 1994-2016 ООО "К-Пресс"