- •Вопросы трпп экз
- •1Основные понятия и определения программных продуктов.
- •2Классификация программных продуктов.
- •3Особенности создания программного продукта.
- •4Понятие и основные модели жизненного цикла программного продукта. Понятие модели жизненного цикла разработки программного продукта.
- •1.3.4. Обзор существующих моделей Модели жизненного цикла разработки программного продукта
- •5Процессы жизненного цикла программного продукта.
- •6Каскадная модель жизненного цикла программного продукта. Ее достоинство и недостатки. Каскадная модель жизненного цикла разработки по
- •7. Модель быстрой разработки приложений (rao-модель), область применения, достоинства и недостатки.
- •8Спиральная модель жизненного цикла программного продукта, ее достоинства и недостатки. Спиральная модель жизненного цикла разработки по
- •9Модель зрелости компании cmm.
- •10. Система стандартов iso 9001.
- •11Роль метрик в процессе разработки программного продукта
- •12Размерно-ориентированные метрики
- •13Функционально-ориентированные метрики
- •14Планирование работ по созданию программного продукта
- •Другие задачи проектирования
- •Составление временного графика выполнения пп
- •15Основные принципы структурного подхода к программированию
- •16Основные принципы объектно-ориентированного проектирования программных продуктов.
- •17Этап разработки программного продукта. Модульное тестирование.
- •1.1. Основные этапы технологического процесса разработки программ.
- •18Модульное программирование. Сущность. Основные характеристики.
- •19 Разработка справочной системы программного продукта.
- •20. Разработка дистрибутивов и управление версиями программного продукта. Разработка дистрибутивов и управление версиями программного продукта
- •Управление созданием версий и поставками пп.
- •Идентификация версий.
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •21Общая характеристика этапа тестирования программного продукта. Цикл тестирования.
- •Модульное тестирование
- •22Программные ошибки. Категории программных ошибок.
- •23Методы борьбы с ошибками по.
- •24Основные принципы разработки тестов для программных продуктов
- •25Сопровождение программных продуктов.
- •26Управление поставками программных продуктов. Общие сведения об управлении поставками
- •Классификация поставляемых программных продуктов
- •Классификация доставляемых программных продуктов
- •Действия, выполняемые при поставке программного продукта
- •27Основные понятия о надежности программного продукта и методах ее обеспечения.
- •28Инструментальные средства разработки программных продуктов.
- •29Защита программных продуктов от несанкционированного использования.
- •30Правовые методы защиты пп.
- •31Криптографические методы защиты информации.
- •32Аппаратная защита программного обеспечения.
- •1. Драйвер ключа.
- •2. Встраиваемый модуль.
- •3. Реализация.
- •34Принципы, виды и методы отладки программных продуктов.
- •Комплексная отладка программного средства.
- •Программные ошибки. Категории программных ошибок
- •Наиболее распространенные категории программных ошибок:
- •35Эффективность и оптимизация программ.
- •Обеспечение качества программного продукта
- •36Коллективная разработка программных средств.
- •Ролевой состав коллектива разработчиков, взаимодействие между ролями в различных технологических процессах
32Аппаратная защита программного обеспечения.
Допустим, вы написали супер-крутую программу. И хотите ее продавать. И даже существуют люди, которым ваша программа нужна позарез. Но почему-то находится очень мало желающих платить за вашу программу назначенную вами цену. И вот - программа расходится по рукам, выкладывается на сайтах в сети Интернет, появляется на пиратских компактах... Обидно? Да и затраченные на разработку силы и средства хочется как-то оправдать - вы же не благотворительностью занимаетесь…
На заре компьютеризации в России чаще всего применяли защиту, основанную на нестандартном использовании носителей информации – в основном, гибких дисков (“хитрое” форматирование, запись в служебные промежутки между секторами, проверка специально сделанных дефектов носителя и т.п.). Таким образом обычно защищалась программа установки, а сама прикладная программа “привязывалась” к аппаратным характеристикам компьютера (типу материнской платы или процессора, размеру оперативной памяти, размеру жесткого диска…). При очевидной простоте и дешевизне, для пользователя этот способ ужасно неудобен: резервную копию софта сделать невозможно, на другой компьютер перенести – тоже; а при порче дистрибутива приходилось снова обращаться к поставщику. К тому же, со временем появились средства “побитового” копирования таких “защищенных” носителей информации (например, программка FDA), которые свели все усилия разработчиков защиты на нет.
Еще один вариант защиты – использование так называемого “серийного номера”, т.е. сформированного по определенному алгоритму числа, которое указывается при установке программы. Программа установки (или сама прикладная программа) проверяет введенное значение на соответствие известному ей алгоритму, и в случае успеха - продолжает работать в штатном режиме. Таким образом защищаются, например, операционные системы Windows, программные пакеты Corel Draw!, Adobe PhotoShop и многие другие. Вариант очень удобен для конечного пользователя: можно сделать сколько угодно резервных копий, можно установить программу на любое количество компьютеров… Но именно это и не устраивает разработчиков ПО: действительно, имея один “правильный” ключ, можно создать сколько угодно “пиратских” копий, за которые платить совсем не обязательно.
В результате появилось целое направление в компьютерной индустрии, занимающееся обеспечением защиты тиражируемого программного обеспечения от несанкционированного использования. И сегодня практически все “коробочные” варианты серьезного коммерческого ПО используют программно-аппаратные комплексы защиты, более известные как “аппаратные ключи защиты”. В России их разработкой занимаются компании “Актив” (www.novex.ru), “Aladdin Software Security R.D.” (www.aladdin.ru) и некоторые другие.
Аппаратные ключи защиты состоят из собственно ключа, подключаемого к LPT или COM-порту компьютера (недавно анонсированы ключи, подключаемые к USB-шине), и программного обеспечения (драйверов для различных операционных систем и модуля, встраиваемого в защищаемую программу).
Аппаратная часть таких ключей выполнена на микросхемах FLASH-памяти, на PIC-котроллерах или на заказных ASIC-чипах. Информационный обмен между ключом и компьютером происходит, обычно, в последовательном виде, с использованием, формируемого драйвером.
Итак, рассмотрим аппаратные реализации ключей защиты. Самый простой и самый легко взламываемый - ключ на основе FLASH-памяти. Основная его идея в том, чтобы перед продажей защищаемого программного обеспечения записать в ключ некоторые данные и/или части программного кода, а на этапе проверки легальности использования ПО считать эти данные из ключа. Ломается защита примерно так: определяется алгоритм обмена информацией между компьютером и ключом, считывается информация из FLASH-памяти ключа и пишется соответствующий эмулятор (драйвер, который подменяет собой штатный драйвера электронного ключа и - вместо обмена с реальным устройством - передает прикладной программе заранее подготовленные данные). Кроме того, такие ключи обладают наименьшей степенью прозрачности для стандартных протоколов обмена (т.к. данные, не предназначенные для ключа, теоретически могут быть восприняты им как команда на чтение или запись FLASH-памяти, что приведет либо к порче хранимой информации, либо к нарушению протокола обмена с другим устройством, подключенным к тому же порту компьютера).
Ключи, сделанные на основе PIC или ASIC-чипов, имеют на порядок большую устойчивость к взлому и “прозрачность” для штатных протоколов обмена. Обе эти микросхемы представляют собой контроллеры, содержащие в себе процессор, некоторое количество оперативной памяти, FLASH-память команд и память для хранения микропрограммы. Микропрограмма и внутренняя память обычно защищается от внешнего считывания, так что сделать аппаратную копию ключа довольно проблематично. Основное отличие PIC-ключей от ASIC-ключей в том, что PIC-чипы программируются разработчиком ключей (т.е. он может относительно легко изменить алгоритмы работы), а ASIC-чипы являются заказными микросхемами (т.е. алгоритмы жестко задаются на этапе производства микросхем). Поэтому ASIC-ключи получаются более дешевыми, чем собранные на основе PIC-чипов, но по этой же причине защита на их основе менее надежна (определив алгоритм обработки данных в одном из ASIC-чипов, можно написать эмулятор ключа для всей партии, которая - в силу особенностей производства - обычно бывает достаточно большой). Широко известен случай, когда был определен алгоритм работы электронного ключа производства компании “Aladdin Software Security R.D.” (как оказалось, данная функция может быть реализована одной строкой на языке С), после чего появилось большое количество эмуляторов ключей данной фирмы. И разработчики ничего не могли с этим поделать, так как для изменения алгоритма им пришлось бы заказывать производство новой партии микросхем.
Завершая обзор аппаратных реализаций ключей защиты, отметим наличие в некоторых ключах дополнительных возможностей: энергонезависимых таймеров (для ограничения работы защищаемой программы по времени), энергонезависимой памяти (для ограничения количества инсталляций или запусков программы), возможность использования одного и того же ключа для защиты нескольких пакетов прикладного программного обеспечения (выбор алгоритма кодирования данных в зависимости от идентификатора защищаемой программы).
Программная часть
Программная часть защитного комплекса состоит из драйвера аппаратного ключа и модуля, встраиваемого в прикладную программу.
