Создание защиты для программных пакетов, на примере системы дистанционного обучения

Автор: Пользователь скрыл имя, 19 Февраля 2013 в 10:27, практическая работа

Описание работы

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

Содержание

ВВЕДЕНИЕ
ГЛАВА 1. СОЗДАНИЕ ЗАЩИТЫ ДЛЯ ПРОГРАММНЫХ ПАКЕТОВ, НА ПРИМЕРЕ СИСТЕМЫ ДИСТАНЦИОННОГО ОБУЧЕНИЯ
1.1. Вопросы защиты информации, стоящие перед автоматизированными системами дистанционного обучения
1.2. Обзор публикаций по данной проблеме
1.3. Задачи поставленные перед создаваемой системой защиты
1.4. Выбор класса требований к системе защиты
1.5. Выводы
ГЛАВА 2. СОЗДАНИЯ СИСТЕМЫ ЗАЩИТЫ ИНФОРМАЦИИ
2.1. Выбор объектов для защиты
2.2. Шифрование данных
2.3. Функциональность системы защиты
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Работа содержит 1 файл

Отчет.doc

— 241.50 Кб (Скачать)

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

Криптографические системы с открытым ключом используют так называемые необратимые или односторонние функции, которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y=f(x), то нет простого пути для вычисления значения x.

Множество классов необратимых функций  и порождает все разнообразие систем с открытым ключом. Но не всякая необратимая функция годится для использования в реальных ИС.

В самом  определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить  обратное значение, используя современные вычислительные средства за обозримый интервал времени.

Поэтому чтобы гарантировать надежную защиту информации, к системам с открытым ключом (СОК) предъявляются два важных и очевидных требования:

  1. преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
  2. определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. при этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.

Алгоритмы шифрования с открытым ключом получили широкое распространение  в современных информационных системах. Так, алгоритм RSA стал мировым стандартом де-факто для открытых систем.

Вообще, все предлагаемые сегодня  криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований:

  1. Разложение больших чисел на простые множители.
  2. Вычисление логарифма в конечном поле.
  3. Вычисление корней алгебраических уравнений.

Здесь же следует отметить, что  алгоритмы криптосистемы с открытым ключом (СОК) можно использовать в трех назначениях.

  1. Как самостоятельные средства защиты передаваемых и хранимых данных.
  2. Как средства для распределения ключей. алгоритмы СОК более трудоемки, чем традиционные криптосистемы. Поэтому часто на практике рационально с помощью СОК распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками.
  3. Средства аутентификации пользователей."

4. Существует возможность создания универсальной программы просмотра файлов с заданиями и ответами. Таким образом, студент имеет возможность узнать верные ответы на вопросы в тестах.

Естественным выходом из данной ситуации является применение шифрования данных. Но принципиально данную проблему разрешить невозможно. Студенту необходимо задать вопрос и сверить с ответом, а для этого необходимо расшифровать данные с эталонными ответами. Для их расшифровки необходим ключ, который в любом случае надо где-то хранить. Следовательно, при желании, информацию можно получить в открытом виде.

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

5. Возможность модификации программного  кода системы тестирования с  целью изменения алгоритма выставления оценок.

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

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

Хотелось бы здесь отметить, что  перед тем, как поощрять процесс отыскивания прорех, надо все-таки создать систему защиты достаточно высокого уровня. С точки зрения модификации программного кода, данная статья не предлагает соответствующих методов защиты. Далее, не понятно, каким образом можно встраивать специальные механизмы, позволяющие наблюдать за действиями студентов. Точнее, достаточно сложно создание надежного механизма, за счет которого система дистанционного обучения сообщит о своем взломе соответствующей системе на стороне преподавателя. Таким образом, поставленный вопрос весьма важен и требует тщательной проработки.

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

Немаловажным фактором является то, что существующие на данный момент различные системы автоматизации  процесса обучения написаны на разных языках. Это Visual C++, Delphi и Visual Basic и другие языки. Следовательно, для взаимодействия с ними нужно удобный и, главное, поддерживаемый всеми этими языками механизм взаимодействия. Можно использовать такие средства, как именованные каналы, сокеты. Но использование таких механизмов хотя и стандартно в ОС Windows, но их использование совсем не простое. Надо иметь определенные знания по данному вопросу.

 

1.3. Задачи, поставленные  перед системой защиты

 

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

К сожалению, первые две проблемы лежат  вне сферы возможности программных  средств без применения дополнительного  аппаратного обеспечения. Напомним их.

1. Отсутствие возможности достоверно  определить, прошел ли студент  тестирование самостоятельно. Для  этой задачи он вполне мог  использовать другого человека (например, более подготовленного студента).

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

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

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

3. Существует возможность создания  универсального редактора файлов  результатов тестирования. Он может  использоваться студентом для  корректировки оценок выставленных программой тестирования.

Здесь на помощь может прийти применение механизма открытых ключей. Именно такой механизм необходимо будет реализовать в системе защиты. Отметим, что будет использоваться шифрование с использованием открытого ключа не в классическом понимании. Метод будет состоять в генерации полиморфных алгоритмов шифрования/расшифрования. При этом одному алгоритму шифрования будет соответствовать один алгоритм расшифровки. А воссоздание алгоритма шифровки/расшифровки по имеющимся в наличии обратного алгоритма слишком трудоемко. Модуль должен будет обеспечить построении сложного для анализа полиморфного кода, что должно препятствовать построению обратного алгоритма.

4. Существует возможность создания  универсальной программы просмотра  файлов с заданиями и ответами. Таким образом, студент имеет  возможность узнать верные ответы на вопросы в тестах.

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

Дополнительную сложность должен внести генератор алгоритмов шифрования/расшифрования. Путем хранения данных в пакетах, отдаваемых студенту, и зашифрованных различными алгоритмами, будет достигаться дополнительная сложность создания универсальной программы просмотра.

5. Возможность модификации программного  кода системы тестирования, с  целью изменения алгоритма выставления  оценок или другого кода.

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

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

Возможно создание программы, взламывающей систему тестирования, базирующуюся на методах динамической модификации  памяти программы или на создании и загрузки слепка данных в память. Но создание подобной программы уже само по себе весьма сложно и требует высокой квалификации.

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

Эта задача полностью лежит в  сфере информационных технологий и  имеет достаточно простое решение. В ОС Windows существует механизм, который позволит легко адаптировать уже существующие системы дистанционного обучения и тестирования, причем, созданных на различных языках. Он обладает широкой поддержкой средств разработки и библиотек. Это COM (Component Object Model). COM - модель компонентных объектов Microsoft.

В частности, примером простоты работы с COM-модулями может служить Visual Basic. В других средствах разработки программного обеспечения этому механизму  уделено много внимания. В Visual C++ существует мощная библиотека ATL (Active Template Library) для разработки COM-модулей и взаимодействия с ними. ATL - библиотека активных шаблонов, которая представляет собой множество шаблонов языка C++, предназначенных для построения эффективных СОМ-компонентов. Но главное преимущество в том, что для того чтобы подключить модуль защиты, кроме самой DLL, понадобится только библиотека типов (TLB файл). Библиотека типов предназначена для предоставления другим приложениям и средам программирования информации о составных объектах, которые в ней содержатся.

Информация о работе Создание защиты для программных пакетов, на примере системы дистанционного обучения