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