Теория и практика защиты программ

Целью настоящего курса является углубление


« Целью настоящего курса является углубление и развитие трудностей, лежащих в основе современной

теории...»
А.А. Власов
Из  кн. «Физики шутят». – М.: Мир, 1993.
Центральным информационно-активным звеном любых компьютерных систем является их математическое, программное, информационное  и лингвистическое обеспечение. Современные компьютеры и сети компьютеров, обладающие «потрясающими» вычислительными, информационными и телекоммуникационными возможностями, со своим сложным «внутренним технологическим миром», остаются широким полем деятельности для человека, который создает и совершенствует и сами компьютеры, и те задачи, которые они решают. При этом основным техническим инструментом для этого является программное обеспечение, которое наряду с интеллектом человека, его навыками и знаниями, позволяет создавать сложные и порою удивительные компьютерные объекты, существенно расширяющие горизонты деятельности человека, облегчающие нашу повседневную жизнь и делающие ее активнее и разнообразнее.

www.kiev-security.org.ua
BEST rus DOC FOR FULL SECURITY



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

www.kiev-security.org.ua
BEST rus DOC FOR FULL SECURITY

Таким образом, необходимость внесения в программное обеспечение защитных функций на всем протяжении его жизненного цикла от этапа уяснения замысла на создание программ и их разработки до этапов испытаний, эксплуатации, модернизации и сопровождения программ, не вызывает сомнений.
В связи с этим, в гл. 1 рассмотрены методологические основы проблемы защиты программ различных объектов автоматизации. Описаны жизненный цикл современных программных комплексов, модели угроз и принципы обеспечения безопасности программного обеспечения.
В главах 2-10 рассмотрены современные методы обеспечения безопасности программ на этапе их разработки и испытаний. Важное место отводится методам создания алгоритмически безопасного программного обеспечения, позволяющим «игнорировать», а в ряде случаев и устранять, программные дефекты деструктивного характера. При этом в главах 2 и 3 рассматриваются методы высокоуровневой защиты программ от так называемых «программных закладок», а в главах 4 и 5 – теоретические основы защиты программ от компьютерных вирусов и от копирования. В главах 6-10 рассматриваются вопросы обеспечения технологической безопасности программ, реализуемые на этапах тестирования и испытания программных комплексов и методы защиты программ от генерации программных закладок инструментальными средствами.
Современные методы обеспечения эксплуатационной безопасности программного обеспечения рассматриваются в главах 11-14. Основное внимание уделено методам обеспечения целостности и достоверности программного кода, защите программ от несанкционированного копирования и распространения.


Для этих же целей служат также и нормативно-правовые и организационно-технические методы обеспечения качества разработки и эксплуатации программ, а также современные методы сертификации программных комплексов. Данные вопросы рассматриваются в заключительной 15-й главе книги. Кроме того, исследуются особенности поведения программиста – разработчика, который может осуществлять, в том числе,  широкий набор злоумышленных действий.
В заключении публикуется обширный список литературы, посвященной современной проблематике защиты программного обеспечения, а также ряд приложений, в которых приводятся необходимые базовые сведения из теории сложности вычислений и криптологии, вспомогательные сведения о характеристиках и типах программ, так или иначе связанных с проявлением программных дефектов, список международных рекомендаций и стандартов, посвященных проблематике обеспечения безопасности программ. Кроме того,  в приложении рассматриваются вопросы применения современных контрольно-испытательных методов для проведения сертификационных испытаний на отсутствие в заявленных для сертификации программах недекларированных возможностей.
Главы книги расположены так, что предлагаемый для прочтения материал, от начальных глав к последующим, соответствует жизненному циклу программного обеспечения современных компьютерных систем. При этом сущность процесса разработки и эксплуатация программ предполагает, что на начальных этапах их жизненного цикла необходимо больше уделять внимание теоретическим аспектам разработки безопасного программного обеспечения. Поэтому предлагаемый в начальных главах материал предполагает определенную теоретическую подготовку читателя в области теории алгоритмов, теории сложности вычислений, теории кодирования, теории информации, криптографии и криптоанализа и теории вероятностей. Тем не менее, в конце каждой главы автор постарался привести прикладные аспекты применения предлагаемых теоретических конструкций.
Прикладные методы защиты программного обеспечения, к которым наряду с их теоретическими основаниями можно отнести такие методы как методы защиты программ от компьютерных вирусов, от несанкционированного копирования, методы обеспечения целостности и достоверности программного кода имеют достаточно широкую теоретическую и практическую базу и широко освещены в современной отечественной и зарубежной литературе.


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

автор

Содержание раздела