Автор работы: Пользователь скрыл имя, 07 Мая 2013 в 21:13, доклад
Для защиты программ от исследования необходимо применять методы защиты от исследования файла с ее исполняемым кодом, хранящемся на внешнем носителе, а также методы защиты исполняемого кода, загружаемого в оперативную память для выполнения этой программы. В первом случае защита может быть основана на шифровании секретной части программы, а во втором - на блокировании доступа к исполняемому коду программы в оперативной памяти со стороны отладчиков. Кроме того, перед завершением работы защищаемой программы должен обнуляться весь ее код в оперативной памяти. Это предотвратит возможность несанкционированного копирования из оперативной памяти дешифрованного исполняемого кода после выполнения защищаемой программы.
Министерство образования и науки Российской Федерации
Федеральное Государственное бюджетное образовательное
учреждение высшего
«Сибирская государственная
(ФГБОУ ВПО «СГГА»)
ИКиП
Кафедра «Безопасности
Доклад
По дисциплине: «Безопасность информации»
Тема: «Методы защиты программного обеспечения от исследования»
Новосибирск 2012 г
Для защиты программ от исследования необходимо применять методы защиты от исследования файла с ее исполняемым кодом, хранящемся на внешнем носителе, а также методы защиты исполняемого кода, загружаемого в оперативную память для выполнения этой программы.
В первом случае защита может быть основана на шифровании секретной части программы, а во втором - на блокировании доступа к исполняемому коду программы в оперативной памяти со стороны отладчиков. Кроме того, перед завершением работы защищаемой программы должен обнуляться весь ее код в оперативной памяти. Это предотвратит возможность несанкционированного копирования из оперативной памяти дешифрованного исполняемого кода после выполнения защищаемой программы.
Таким образом, защищаемая от исследования программа должна включать следующие компоненты:
- инициализатор;
- зашифрованную секретную часть;
- деструктор (деициниализатор).
Инициализатор должен обеспечивать выполнение следующих функций:
- сохранение параметров операционной среды функционирования (векторов прерываний, содержимого регистров процессора и т.д.);
- запрет всех внутренних и внешних прерываний, обработка которых не может быть запротоколирована в защищаемой программе;
- загрузка в оперативную память и дешифрование кода секретной части
- программы;
- передача управления секретной части программы.
Секретная часть программы предназначена для выполнения основных целевых функций программы и защищается шифрованием для предупреждения внесения в нее программной закладки.
Деструктор после выполнения секретной части программы должен выполнить следующие действия:
- обнуление секретного кода программы в оперативной памяти;
- восстановление параметров операционной системы (векторов прерываний, содержимого регистров процессора и т.д.), которые были установлены до запрета неконтролируемых прерываний;
- выполнение операций, которые невозможно было выполнить при запрете неконтролируемых прерываний;
- освобождение всех незадействованных ресурсов компьютера и завершение работы программы.
Для большей надежности инициализатор может быть частично зашифрован и по мере выполнения может дешифровать сам себя.
Дешифроваться по мере выполнения может и секретная часть программы.
Такое дешифрование называется динамическим дешифрованием исполняемого кода. В этом случае очередные участки программ перед непосредственным исполнением расшифровываются, а после исполнения сразу уничтожаются.
Для повышения эффективности защиты программ от исследования необходимо внесение в программу дополнительных функций безопасности, направленных на защиту от трассировки. К таким функциям можно отнести:
- периодический подсчет контрольной суммы области оперативной памяти, занимаемой защищаемым исходным кодом; сравнение текущей контрольной суммы с предварительно сформированной эталонной и принятие необходимых мер в случае несовпадения;
- проверку количества занимаемой защищаемой программой оперативной памяти; сравнение с объемом, к которому программа адаптирована, и принятие необходимых мер в случае несоответствия;
- контроль времени выполнения отдельных частей программы;
- блокировку клавиатуры на время отработки особо секретных алгоритмов.
Для защиты
программ от исследования с помощью
дизассемблеров можно использовать
и такой способ, как усложнение
структуры самой программы с
целью запутывания
Список использованной литературы
Информация о работе Методы защиты программного обеспечения от исследования