Проблема защиты информации существует с момента появления самой информации
как интеллектуальной собственности. Конец 20 века дал стремительное развитие
вычислительных мощностей и развитие самой информации, а также развитие средств
доступа к ней. После того, как были разработаны устройства, позволяющие
копировать в неограниченном объеме и распространять информацию на удобных
и малогабаритных компакт-дисках и дискетах, информация буквально начала
растекаться по всему миру. Этому также способствует развитие глобальной сети
INTERNET, развитие и внедрение на предприятия и организации которой также
пришлось на конец 20 века. Поэтому естественным желанием разработчиков
серьезных программных продуктов стала защита от нелегального запуска и
копирования. Нелегальный запуск и копирование - одни из основных ключевых
моментов в проблемах защиты информационного программного продукта, поскольку
сама сущность его распространения предусматривает его копирование
(инсталлирование) и работу с ним, т.е. запуск. Таким образом, защита
информационной сущности действительно необходима, особенно в настоящее время,
когда распространение информации приобретает все более развитый темп. Это
доказывает актуальность выбранной темы магистерской работы.
Конечно же, существует определенное множество лиц, цель которых - обратно
противоположная разработке методов защиты, и состоит в том, чтобы как можно
быстрее вскрыть тот или иной метод защиты. К сожалению, невозможно разработать
метод, который было бы невозможно взломать - вопрос упирается лишь во время,
которое будет для этого затрачено. Если информация, защищенная тем или иным
методом, представляет собой достаточную ценность, то можно сказать, что рано
или поздно она будет вскрыта.
Обзор состояния исследований и разработок по теме
Исходя из логики функционирования ПК, можно выделить 2 основных направления, по
которым ведется защита информации:
По данным
По коду
Система защиты информации по данным представляет собой законченный полноценный
программный продукт. С точки зрения пользователя он имеет интерфейс, при
помощи которого пользователь выбирает файл с данными, которые предназначены
для шифрования, выбирает метод защиты, настраивает соответствующим образом
систему и др. Результатом деятельности такого комплекса защиты всегда
является файл с зашифрованной информацией. Общий вид схемы кодирования
информации по данным демонстрирует ФЛЕШ - анимация, приведенная на рис. 1.
Следует отметить, что комплексы защиты информации по данным могут
встраиваться в различные по назначению и функциональности программы.
Типичным примером таких программ являются файловые менеджеры
WINDOWS COMMANDER, TOTAL COMMANDER и др.
Системы защиты информации по коду представляют собой интегрируемые программные
продукты, которые обычно поставляются в виде динамически подключаемых
библиотек (DLL) или комплектов SDK. Один из лучших примеров такого
комплекта - Copy Protection SDK. Он позволяет проводить лицензирование и
защитить программу от несанкционированного взлома. Если система защиты
информации ориентирована на определенный набор языков программирования, то
она может также поставляться в виде подключаемых модулей (для языка
DELPHI - *.dcu, для языка ПАСКАЛЬ - *.tpu, для языка С - *.lib, *.h и т.п.).
Интеграция комплекта защиты представляет собой вызов функций комплекта из
той программы, которая защищается. Естественно, чем больше будет подобных
вызовов, и чем в более неожиданных местах защищаемого кода они будут
встречаться, тем труднее будет взломать такую программу, тем более человеку,
у которого не будет исходного защищаемого кода. Общий вид схемы кодирования
информации по коду демонстрирует ФЛЕШ - анимация, приведенная на рис. 2.
Все выше рассмотренные способы защиты информации могут иметь 2 вида практической
реализации:
Программная
Программно-аппаратная.
Программная защита реализована во всех примерах, рассматриваемых выше.
Основное удобство такой защиты состоит в том, что для ее корректной работы
не нужно никаких дополнительных аппаратных компонент. Основной недостаток -
низкая степень защиты.
Программно-аппаратная защита предполагает наличие специализированного
аппаратного устройства, которое в дальнейшем будем называть ключом. В
качестве ключа может выступать либо специальное устройство на
микроконтроллере, либо стандартное. В ключе обычно содержится локальная
база данных ключа и/или алгоритм шифрования. Если ключ не попадет в
чужие руки, то можно гарантировать уже как минимум на порядок более
надежную защиту, чем в случае, рассмотренном ранее. Подобный ключ
поставляется, например, с известной системой 1С:ПРЕДПРИЯТИЕ. Этот ключ
подключается к любому свободному LPT-порту. Он также имеет ответное гнездо
для подключения принтера, т.е. представляет собой переходник. Таким образом,
на работу системы такой ключ существенного влияния не оказывает. Основной
недостаток подобной системы защиты - возможность написания виртуального
драйвера параллельного порта, который имитирует наличие ключа в системе.
Простота работы с последовательным портом (за исключением операционных систем
семейства XP) оборачивается против разработчиков системы защиты.
Перечень нерешенных вопросов; цель и задачи работы
Из всего выше сказанного следует, что аппаратный ключ необходимо разрабатывать
на основе интерфейса, обеспечивающего более сложный обмен информацией.
Интерфейс также должен быть универсальным и должен обеспечивать легкость
подключения ключа. На настоящий момент таким интерфейсом является интерфейс
USB. Этот интерфейс обеспечивает динамическое подключение и отключение
устройств, при этом даже не требуется перезагрузка компьютера,
что обеспечивает явное удобство пользователя защищенной программы.
С другой стороны, интерфейс USB является достаточно сложным с точки зрения
практической реализации, имеет достаточно сложный протокол обмена и написать
программу, которая бы работала с интерфейсом USB напрямую довольно сложно
даже опытному программисту. Существенным достоинством является также то,
что передача данных по интерфейсу возможна только по инициативе
хост-контроллера, при этом устройство USB должно быть подключено, и должно
находиться в рабочем состоянии. Поэтому написание виртуального драйвера для
устройства USB, на мой взгляд, представляется невозможным, а значит, система,
обладающая ключом на основе интерфейса USB, будет довольно надежно защищена от
взлома.
К сожалению, по состоянию на 2004 год подобные системы защиты автору неизвестны.
Поэтому целью настоящей работы является исследование способов защиты на
основе интерфейса USB, а также интегрирование уже известных способов
защиты информации на интерфейс USB с целью повышения их криптографической
стойкости. Основная задача, которая при этом будет выполнена, - это разработка
программно-аппаратного комплекса защиты на основе интерфейса USB.
Научная новизна результатов работы; творческий вклад автора
Как уже упоминалось ранее, системы, обладающие повышенной стойкостью на основе
интерфейса USB, автору неизвестны. Поэтому рассматриваемая в настоящей
магистерской работе система защиты информации обладает научной новизной в
высшей степени. Кроме этого, в системе будет реализована возможность гибкого
интерфейса пользователя и участие самого пользователя в процессе шифрования.
Участие пользователя сводится к следующему. Пользователь может выбрать
основной алгоритм шифрования одним из следующих способов:
Выбор стандартного алгоритма защиты. В системе будет предусмотрено
наличие списка с наиболее известными и наиболее надежными алгоритмами защиты
(RC2, RC3, RC4, Эль-Гамаль и др.). Пользователь сможет выбирать из алгоритмов
требуемый.
Генерирование случайного алгоритма защиты. В этом случае пользователь
указывает лишь количество инструкций кодирования, после чего система
генерирует указанное количество инструкций, распределяя их по случайному
закону. К числу этих инструкций относятся обратимые ассемблерные команды,
такие как XOR, циклические сдвиги, умножение на константу и др.
Программирование алгоритма защиты. Данный способ подобен предыдущему,
однако позволяет программисту самому выбирать инструкции из числа обратимых
ассемблерных команд. Данный способ может применяться только в случае, если
пользователь знаком хотя - бы с базовыми командами языка АССЕМБЛЕР.
Идеи последних 2 способов генерации алгоритмов были внедрены автором и
являются творческим вкладом автора в настоящую магистерскую работу.
Практическая ценность работы
С точки зрения практической реализации настоящая магистерская работа также
имеет определенную ценность, так как в ней предполагается разработать
программную часть программно-аппаратного вышеупомянутого комплекса защиты.
В качестве же аппаратной части предполагается использовать обычную FLASH - память.
Поскольку ключевая информация занимает довольно мало места (максимум 10 кб),
то FLASH - память, помимо выполнения функций ключа может использоваться как
обычный переносимый носитель информации. Однако требование непопадания этого
экземпляра FLASH - памяти в чужие руки остается в силе. Предполагается,
что ключевая информация будет записана таким образом, чтобы исключить
взаимное влияние ее с другими данными, хранимыми во FLASH - памяти.
Основные материалы работы и результаты
Предполагается, что разрабатываемый комплекс сможет реализовать следующие принципы защиты:
По данным;
По коду.
Оба принципа защиты отражают рисунки 1 и 2.
Основные требования к комплексу:
По данным:
защита любых файлов;
требуемый файл шифруется пользователем по выбранному методу защиты.
Допускается также возможность случайной генерации алгоритма защиты,
либо генерация метода пользователем вручную при условии знания языка
АССЕМБЛЕР. В этом случае требуемый файл шифруется побайтово либо
блоками.
Наличие удобного интерфейса пользователя.
По программному коду
Программное обеспечение будет поставляться в откомпилированных
программных модулях для большинства популярных языков
программирования.
Защиту организует пользователь комплекса, который при написании
программ вызывает в определенных местах своего кода функции
защиты комплекса.
Общие требования
Запись ключевой информации и сведений об используемом методе
шифрования либо сгенерированного кода защиты во FLASH-память.
Передача данных будет осуществляться через интерфейс USB.
Работа с FLASH-памятью предполагается осуществить на низком уровне
при передаче команд управления, а также необходимой информации с
использованием DDK. Таким образом, будет осуществлен универсализм
системы и ее адаптация к любым операционным системам.
В связи с требованиями, предъявляемыми выше, предполагается следующая
структура разрабатываемого ПО комплекса (рис.3):
Рис. 3. Структура и взаимодействие ПО комплекса защиты и защищаемых объектов.
В качестве аппаратной поддержки комплекса используется FLASH-память или т.н. "USB-брелок".
Взаимодействие FLASH-памяти и программной части комплекса защиты осуществляется
через хост-контроллер USB (другое название - корневой разветвитель USB),
доступ к которому, в свою очередь, можно получить через интерфейс PCI.
Процесс взаимодействия и передачи данных является достаточно сложным.
Чтобы упростить задачу, в настоящей магистерской работе для обеспечения
взаимодействия будут использованы функции библиотеки DDK (Driver Development
Kits), которые позволяют работать с ФЛЕШ - памятью на уровне интерфейса.
Взаимодействие (прием и передачу данных) будет осуществлять ПО комплекса защиты
(см. рис. 3).
Кроме того, в ПО комплекса защиты можно выделить еще как минимум три составляющие:
модуль алгоритмов шифрования, который содержит все известные и
используемые алгоритмы. Данный модуль по существу является ядром
проекта и, собственно, выполняет шифрование;
интерфейс пользователя - обеспечивает доступ и облегчает настройки
системы при выполнении операции шифрования данных;
функции управления - представляют собой набор функций, которые
обеспечат защиту ПО по коду путем непосредственного включения их
в код защищаемой программы.
На настоящий момент по теме магистерской работы реализована часть, которая
отвечает за прием-передачу данных по интерфейсу USB.
Выводы по работе
Несмотря на широкое применение устройств с интерфейсом USB, вследствие его
универсальности, разработка специализированного ПО является довольно
трудоемкой задачей, так как протокол обмена по шине USB достаточно сложен.
Поэтому разрабатываемый программно-аппаратный комплекс защиты обладает научной
новизной и имеет важное практическое значение, поскольку здесь подробно
рассмотрен данный протокол. При разработке комплекса защиты была поставлена
задача наличия так называемой универсальности - благодаря этому в комплексе
появились дополнительные функции автоматического генерирования и ручного
программирования алгоритмов защиты.
Перспективы дальнейших исследований
В связи с рассмотренной выше структурой комплекса защиты появляется
колоссальная возможность использовать в комплексе защиты COM-архитектуру -
это одно из многочисленных направлений перспективы дальнейшей разаработки.
При правильной организации клиента и сервера становится возможным защищать
любую информацию на любой машине в пределах локальной сети. Предполагается
также, что человек, пытающийся взломать систему, не имеет доступа к этой сети.
Только в этом случае можно гарантировать надежность защиты.
Pассмотрим рис. 4, где показано преобразование общей схемы комплекса
защиты (рис. 3) к виду клиент-сервер (рис.4).
Рис 4. Комплекс защиты, приведенный к виду клиент-сервер.
К основным функциям сервера следует относить следующие:
прием команд и данных от клиента;
расшифровка команды и ее выполнение (включает опрос
устройства USB, расшифровку данных и другие операции);
отправка клиенту расшифрованных данных и статуса завершения команды.
Аналогично можно выделить основные функции клиента:
настройка на необходимую конфигурацию;
передача данных в зашифрованном виде серверу и кода команды;
прием расшифрованных данных от сервера.
Как видно из рис. 4, в простейшем случае, клиенты и сервер могут общаться
через интерфейс ICoder и диспетчерский интерфейс ICoderDisp.
Описание интерфейса ICoder на языке DELPHI приводится ниже:
Следует отметить, что если в алгоритме шифрования используется текущее время
(такие алгоритмы пресекают процесс трассировки), то использование
COM-технологии становится возможным только в том случае, если сервер является
быстродействующим, т.е. он реализован в виде DLL на локальной машине
пользователя.
Литература по теме
Кулаков В.Г. "Программирование на аппаратном уровне", Специальный
справочник, 2 издание, Санкт-Петербург, издательский дом "ПИТЕР", 2003
Шнайер Б. "Прикладная криптография", 2 издание, перевод с английского.
Электронный вариант данного издания можно найти здесь.
Oney, Walter. "Programming the Microsoft Windows Driver Model", Microsoft Press
A Division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399.
Электронный вариант данного издания можно найти здесь.
Сборник трудов магистрантов 2003 Донецкого национального технического
университета. Выпуск 2. - Донецк, ДонНТУ Министерство образования
и науки Украины, 2003.
Соколов А.В., Шаньгин В.Ф. "Защита информации в распределительных
корпоративных сетях и системах." М.: ДМК Пресс, 2002ю - 656с.
Мешков А., Тихомиров Ю. "Visual C++ и MFC. Программирование для Windows NT
и Windows 95": В трех томах. - СПб.:BHV-Санкт-Петербург,1997. - 464 с.,
464 с.,365 с.