Защита программных кодов — это методики и средства защиты непосредственно кода программных приложений от возможности анализа и применения в других программных продуктах.
Введение
Непрерывный прогресс в развитии современных компьютерных технологий постоянно повышает актуальность различных задач в области информационной безопасности. Одним из главных направлений защиты информации выступает защита программных продуктов, которые считаются такой же интеллектуальной собственностью, как и сама информация, обладая схожими механизмами распространения. Однако защита программных кодов может быть охарактеризована как более трудоемкая операция с позиций защиты, так как при этом появляются разные технические ограничения,
Проектирование самой эффективной методики защиты для разных видов программ в настоящее время стало одной из наиболее важных задач для большинства программистов, занимающихся формированием специализированных платных программных продуктов, поскольку это предоставляет им возможность продажи своего интеллектуального труда и исключает возможности его нелегального использования потребителями. Иначе говоря, пользователю будет невозможно использовать оригинальную лицензионную копию некоторого программного кода, если сначала он не купит лицензионную копию программного продукта. Для того чтобы решить эту задачу, могут использоваться разные системы лицензирования, которые не позволяют выполнить запуск отдельных частей программы без подтверждения оплаты продукта и ввода действующей лицензии на него.
Защита программных кодов
Обфускацией называется процесс запутывания программного продукта, который позволяет модифицировать исходный код программы таким образом, что интерфейс пользователя и поведение программного продукта останутся без изменений. Иначе говоря, в плане защиты информации, обфускацией считается процесс модификации исходного текста или исполняемого кода программы к виду, который сохраняет ее функциональные возможности, но затрудняет анализ, то есть, понимание алгоритмов работы и возможность внесения корректив после процесса декомпиляции.
Сегодня компьютерное «пиратство» получило широкое распространение среди потребителей программных продуктов и приобрело просто глобальные масштабы. Исследования, проводимые различными компаниями, показали, что примерно двадцать пять процентов программных продуктов, которые используются сейчас в мире, поддельные, а в некоторых отдельных регионах мира этот показатель доходит до уровня семидесяти процентов.
Но не только нелегальное распространение, но и нелегальное модифицирование программных приложений также может представлять угрозу. После получения копии программного продукта, злоумышленник может осуществить такие изменения в приложении, которые предоставят ему возможность получения каких-либо преимуществ в сравнении с другими пользователями этого программного продукта. Так, к примеру, злоумышленник может выключить проверку лицензионного кода, разблокировать набор платных возможностей, увеличить свой баланс в приложении для реализации внутренних взаиморасчетов.
Любое из аналогичных действий является нарушением не только прав автора программного продукта, но и потенциально может ущемлять права остальных пользователей, которые обязаны иметь равные возможности при прочих равных условиях. Именно по этой причине такой аспект защиты программного кода считается самым приоритетным на текущий момент. В сравнении с шифрованием кода, обфускация обладает следующим набором достоинств:
- Обфускация не может ограничиваться государственными стандартами на длину ключа. Общеизвестно, что, в зависимости от географического местоположения программного продукта, на шифрование могут накладываться ограничения со стороны государства. Ограничение накладывается на длину ключа, который может использоваться для шифрования. Данное ограничение несомненно может ослабить защиту программы и данных. С другой стороны, так как для обфускации не нужны шифрование и применение ключей, то, когда применяется запутывание кода для защиты программы, это ограничение не работает.
- При шифровании программного продукта одним из наиболее популярных методов защиты считается шифрование байт-кода. Байт-код сохраняется в приложении в зашифрованном виде и подлежит расшифровке лишь в момент исполнения. Но к сожалению, в уже рабочем приложении злоумышленник способен создать доступ к оперативной памяти, памяти центрального процессора и его регистрам. По этой причине каждый фрагмент приложения, который уже был расшифрован, может сразу использоваться злоумышленником для анализа приложения. Когда применяется обфускация, шифрование байт-кода не выполняется, однако осуществляется запутывание кода самого программного продукта. Поэтому злоумышленник не сможет получить никаких преимуществ от добычи фрагментов программы из оперативной памяти или регистров.
- Для работы приложения необходимо получить доступ к его байт-коду. Байт-код может исполняться центральным процессором или виртуальной машиной. Если байт-код был изначально зашифрован, то для дальнейшей работы необходима его расшифровать. Этот процесс может потребовать очень много времени при использовании достаточно надежных алгоритмов, тогда как при обфускации дополнительных затрат времени на шифровку и расшифровку байт-кода не потребуется.
- При реализации шифровки всех исходных кодов совместно и применении поточных алгоритмов шифрования, становится невозможной организация случайного доступа к участкам исходного кода. То есть, для работы программного приложения необходимо изначально осуществить его полную расшифровку. В случае применения запутывания кода этот недостаток отсутствует, то есть, возможность случайного доступа к определенным участкам кода сохраняется.