Взломостойкость DRM-системы: исследуем зависимости и связи
Второй аспект защиты от нелегального распространения – создание трудноустранимой связи внедряемого кода DRM-системы с приложением – решается производителями DRM-систем по-разному. Здесь важно отметить два момента. Во-первых, существуют способы решения этой задачи, обеспечивающие хорошую взломостойкость.
Во-вторых, очень часто разработчики приложения не уделяют достаточного внимания соблюдению всех рекомендаций производителя по защите приложения, ограничиваясь автоматическими средствами встраивания DRM-системы, в результате задача устранения из приложения кода DRM для злоумышленника существенно упрощается.
Ограничение времени использования и пробный период. В случае использования привязки к серверу данная задача решается тривиально. Аналогично дело обстоит и с активными объектами привязки (тут, правда, появляется уязвимость, связанная с возможностью модификации лицензии в памяти объекта привязки и нарушения работы внутренних часов объекта привязки, однако и в этом случае достижение высокого уровня взломостойкости не является проблемой).
В случае же использования пассивного объекта привязки приходится использовать менее надежные решения.
Технические решения задач, связанных с ограничением времени работы приложения при использовании пассивных объектов привязки
Задача | Решение | Уязвимости |
Сохранение информации о начале пробного периода | Хранение скрытой информации на компьютере конечного пользователя (как правило, на жестком диске). | Возможность обнаружения и удаления скрытой информации |
Сохранение информации о потраченном количестве запусков и потраченном суммарном времени работы приложения | То же. | То же. |
Определение текущего времени | Использование системных часов компьютера конечного пользователя | Перевод часов назад. Частично проблему перевода часов удается решить сохранением скрытой информации о времени последнего запуска, но эту информацию можно удалить. |
Источник: "Протекшен Технолоджи Ресеч", 2012
Удаленные сервера не применяются для сохранения информации об использовании лицензии или о текущем времени, т.к. при этом исчезает главное преимущество пассивных объектов привязки перед привязкой к серверу: возможность работы без подключения к интернету.
Ограничение функционала и демонстрационный режим. Если функционал защищаемого приложения, который нужно предоставлять опционально (только в полной версии или за отдельную плату), обширен и хорошо локализован в виде отдельных функций, то теоретически его можно защитить столь же хорошо, как и основное приложение. Действительно, обширный и отделимый от приложения функционал можно рассматривать как отдельное независимое приложение. При этом задача ограничения функционала сводится просто к защите еще одного приложения.
На практике же достижению хорошей взломостойкости могут препятствовать 2 фактора. Первый - недостаточная проработка вопросов взломостойкости при ограничении функционала авторами DRM-системы, которые рассматривают данную задачу как вспомогательную. Вторая преграда - недостаточное обособление функционала разработчиками защищенного приложения.
Продажи дополнительного контента. Хотя задача ограничения использования контента внешне похожа на рассмотренную выше задачу ограничения функционала, в плане взломостойкости на практике обычно получается хуже. Действительн+о, решение об использовании того или иного файла данных обычно принимается в одной точке программы, тогда как в случае ограничения функционала проверку объекта привязки можно осуществить во многих точках. Это облегчает злоумышленнику взлом путем модификации кода DRM-системы.
Защита от анализа и модификации. Любой взлом DRM-системы предполагает осуществление злоумышленником анализа работы ее программного кода. При этом модификация не всегда является обязательным элементом, так как иногда при анализе злоумышленнику удается найти уязвимость системы, с помощью которой механизмы защиты могут быть преодолены без модификации. Характерный пример взлома такого рода – создание генератора ключей.
Решение задач защиты от анализа и модификации обычно является основным ноу-хау DRM-систем, хотя до сих пор не существует идеальных решений: со временем для всех методов защиты появляются средства преодоления. Тем не менее, своевременное обновление решений может обеспечить системам DRM хороший уровень взломостойкости.
Основными подходами к защите от анализа являются преобразование алгоритмов, делающее их непонятными (переименование функций, введение в код избыточных программных конструкций, введение в код ложных связей и т.п.), и использование системно-специфических средств противодействия анализу, таких как защита от отладчиков.
Защита от модификации обычно подразумевает вычисление контрольных сумм (в широком смысле) участков кода и проверку их неизменности.
В целом взломостойкость любой системы DRM не является фиксированным параметром, а зависит от многих факторов. Есть три наиболее типичные причины ухудшения взломостойкости: несоблюдение рекомендаций производителя DRM-системы по достижению высокого уровня взломостойкости, в том числе по интеграции защищенного приложения с активным объектом привязки или с удаленным сервером, использование пробного периода в случае использования DRM-систем с привязкой к оборудованию или компакт-диску, использование демонстрационного режима при недостаточном программном обособлении платного функционала.
Для того чтобы защита была надежной и совместимой, необходимо начать задумываться о ее установке заранее, 2-3 месяца до релиза программы. Производители DRM-систем накопили значительный опыт, поэтому хорошый советдля правообладателей, желающих надежно защитить свою интеллектуальную собственность, - всегда консультироваться с производителем и не пренебрегать его указаниями.
Александр Зацепин, технический директор "Протекшен Технолоджи Ресеч"