Построение систем защиты информации для программных пакетов, используемых в монопольном доступе
Анализ и разработка методов защиты информации без использования вспомогательных аппаратных средств. Создание интегрируемого пакета программных модулей для защиты систем автоматизации дистанционного обучения (АСДО) вне доверенной вычислительной среды.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 11.08.2010 |
Размер файла | 772,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Описание используемых параметров:
handle - дескриптор файла для чтения.
FileName - имя файла добавляемого в зашифрованное хранилище.
read - возвращает размер прочитанных данных в байтах.
HRESULT ToFile(
[in] short handle,
[in] BSTR FileName,
[out, retval] long *written);
Функция ToFile производит обратное действие относительно FromFile. Она извлекает файл из хранилища.
Описание используемых параметров:
handle - дескриптор файла для чтения.
FileName - имя извлекаемого файла.
written - возвращает размер записанных данных в байтах.
Интерфейс IProtectConformity объединяет набор вспомогательных функций, призванных облегчить использование системы с большим количеством файлов, с алгоритмами и зашифрованными данными. Например, возьмем АРМ преподавателя. В этой системе может быть большое количество различных данных, связанных с определенными студентами. Если эти данные зашифрованы, то необходимо знать, каким именно файлом с алгоритмом это сделано. Все эти взаимосвязи необходимо хранить. В случае, если такая система написана с использованием СУБД, сложностей возникнуть не должно. Если же нет, то придется вносить некоторую дополнительную функциональность, которая является подмножеством возможности СУБД. Чтобы облегчить адаптацию таких проектов, не использующих БД, предназначены функции описываемого интерфейса. Фактически, они позволяют строить и работать с таблицами соответствий. Такая таблица представляет собой набор пар, содержащий имя зашифрованного файла и имя соответствующего файла алгоритма для шифрования или расшифрования. В такой таблице возможен поиск, как по имени зашифрованного файла, так и по имени файла с алгоритмом. В дальнейшем файлы, хранящие информацию о соответствии файлов с данными и соответствующими файлами с алгоритмами, будем называть файлами соответствий. Отметим также, что файлы соответствий тоже подвергаются шифрованию.
interface IProtectConformity : IDispatch
{
[id(1), helpstring("method Create Conformity File")]
HRESULT CreateConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForRead,
[in] BSTR uptFileNameForWrite,
[in] BSTR ArrayOfStrings);
[id(2), helpstring("method Easy Create Conformity File")]
HRESULT EasyCreateConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForCreate,
[in] BSTR ArrayOfStrings);
[id(3), helpstring("method Read Conformity File")]
HRESULT ReadConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForRead,
[out, retval] BSTR *ArrayOfStrings);
[id(4), helpstring("method Get UptAlgName by FileName")]
HRESULT GetAlgName(
[in] BSTR Strings,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
[id(5), helpstring("method Get FileName by UptAlgName")]
HRESULT GetDataName(
[in] BSTR Strings,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
[id(6), helpstring("method Get UptAlgName by FileName From File")]
HRESULT GetAlgFromFile(
[in] BSTR FileName,
[in] BSTR uptFileNameForRead,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
[id(7), helpstring("method Get FileName by UptAlgName From File")]
HRESULT GetDataFromFile(
[in] BSTR FileName,
[in] BSTR uptFileNameForRead,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
};
Теперь опишем каждую из функций интерфейса IProtect.
HRESULT CreateConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForRead,
[in] BSTR uptFileNameForWrite,
[in] BSTR ArrayOfStrings);
Функция CreateConformityFile создает новый файл соответствий и записывает в него соответствующую таблицу. Таблица предается в виде одной строки, в которой последовательно записаны имена файлов. Все нечетные - имена файлов с данными, все четные - соответствующие алгоритмы шифрования или расшифрования. Имена должны быть заключены в двойные кавычки. Это связано с тем, что иначе невозможно работать с именами файлов, содержащими пробелы. Между кавычкой в конце имени одного файла и кавычкой перед именем второго может стоять произвольное количество пробелов и символов табуляции или возврата каретки и переноса строки. Поддержка одновременного хранения информации как о файлах для шифрования, так и для расшифрования не осуществлена. Это сделано по двум причинам. Во-первых, совсем не сложно завести два файла, а интерфейс функций и их количество существенно сокращается. Во-вторых, данная функциональность соответствия двух файлов может быть применена и для других целей. Хочется сделать ее более абстрактной. Следует дать следующий совет, если для шифрования большого количества файлов одним алгоритмом: удобно создать соответствующий каталог, в который помещаются шифруемые файлы, записать в файл соответствий имя этого каталога и соответствующий алгоритм шифрования / расшифрования для работы с файлами в этом каталоге.
Файлы с алгоритмом шифрования и расшифрования для работы с файлом соответствий будут автоматически созданы, и будут иметь имена, переданные в качестве аргументов функции.
Описание используемых параметров:
name - имя создаваемого файла, для хранения информации о соответствии.
uptFileNameForRead - имя создаваемого файла с алгоритмом расшифрования.
uptFileNameForWrite - имя создаваемого файла с алгоритмом шифрования.
ArrayOfStrings - строка с информацией о соответствиях.
HRESULT EasyCreateConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForCreate,
[in] BSTR ArrayOfStrings);
Функция EasyCreateConformityFile подобна функции CreateConformityFile, но в отличие от нее, не создает новые файлы с алгоритмами шифрования и расшифрования. Она использует уже существующий алгоритм шифрования.
name - имя создаваемого файла, для хранения информации о соответствии.
uptFileNameForCreate - имя файла с алгоритмом шифрования.
ArrayOfStrings - строка с информацией о соответствиях.
HRESULT ReadConformityFile(
[in] BSTR name,
[in] BSTR uptFileNameForRead,
[out, retval] BSTR *ArrayOfStrings);
Функция ReadConformityFile читает содержимое файла соответствий и возвращает его в виде строки. Строка имеет тот же формат, что и передаваемая например в функцию CreateConformityFile.
Описание используемых параметров:
name - имя зашифрованного файла c информацией о соответствиях.
uptFileNameForRead - имя файла с алгоритмом расшифрования.
ArrayOfStrings - возвращаемая строка с информацией о соответствиях.
HRESULT GetAlgName(
[in] BSTR Strings,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
Функция GetAlgName, используя имя файла с данными, возвращает соответствующий алгоритм шифрования или расшифрования. Поиск производится в переданной строке. Формат строки эквивалентен формату, с которым работают и другие функции. Например, EasyCreateConformityFile или ReadConformityFile.
Описание используемых параметров:
Strings - строка с информацией о соответствиях.
SearchName - имя файла с данными, для которого будет произведен поиск соответствующего алгоритма.
ResultStr - возвращаемое имя файла с алгоритмом.
HRESULT GetDataName(
[in] BSTR Strings,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
Функция GetDataName, используя имя файла с алгоритмом, возвращает имя соответствующего файла с данными. Поиск производится в переданной строке. Формат строки эквивалентен формату, с которым работаю и другие функции. Например EasyCreateConformityFile или ReadConformityFile.
Описание используемых параметров:
Strings - строка с информацией о соответствиях.
SearchName - имя файла с алгоритмом, для которого будет произведен поиск соответствующего файла с данными.
ResultStr - возвращаемое имя файла с данными.
HRESULT GetAlgFromFile(
[in] BSTR FileName,
[in] BSTR uptFileNameForRead,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
Функция GetAlgFromFile, подобно функции GetAlgName, возвращает соответствующий алгоритм шифрования или расшифрования по имени файла с данными. В отличие от нее, на входе она получает не строку с информацией о соответствиях, а имя с этой информацией и алгоритм для ее расшифрования. Функция может быть более удобна в плане ее использования, но она менее эффективна. Так, если требуется активно работать с таблицами соответствий, то для ускорения работы рекомендуется отказаться от использования функции GetAlgFromFile. Эффективнее будет однократно прочитать информацию о соответствиях, используя функцию ReadConformityFile, а затем использовать функцию GetAlgName.
Описание используемых параметров:
FileName - имя файла с зашифрованной информацией о соответствиях.
uptFileNameForRead - файл с алгоритмом расшифрования.
SearchName - имя файла с данными, для которого будет произведен поиск соответствующего алгоритма.
ResultStr - возвращаемое имя файла с алгоритмом.
HRESULT GetDataFromFile(
[in] BSTR FileName,
[in] BSTR uptFileNameForRead,
[in] BSTR SearchName,
[out, retval] BSTR *ResultStr);
Функция GetDataFromFile, подобно функции GetDataName, возвращает имя соответствующего файла с данными, по имени файла с алгоритмом. В отличии от нее, на входе она получает не строку с информацией о соответствиях, а имя с этой информацией и алгоритм для ее расшифрования. Функция может быть более удобна в плане ее использования, но она менее эффективна. Так, если требуется активно работать с таблицами соответствий, то для ускорения работы рекомендуется отказаться от использования функции GetDataFromFile. Эффективнее будет однократно прочитать информацию о соответствиях, используя функцию ReadConformityFile, а затем использовать функцию GetDataName.
Описание используемых параметров:
FileName - имя файла с зашифрованной информацией о соответствиях.
uptFileNameForRead - файл с алгоритмом расшифрования.
SearchName - имя файла с алгоритмом, для которого будет произведен поиск соответствующего файла с данными.
ResultStr - возвращаемое имя файла с данными.
4.3 Руководство программиста по использованию программы ProtectEXE.exe
Программа ProtectEXE.EXE предназначена для защиты исполняемых файлов от модификации. Под исполняемыми модулями понимаются EXE файлы в формате PE (Portable Executables). Защита исполняемых модулей основана на их шифровании. Особенностью утилиты ProtectEXE является то, что она шифрует каждый исполняемый файл уникальным полиморфным алгоритмом. Это затрудняет возможность использования программного взломщика, основанного на модификации определенных кодов в программе. Поскольку каждый исполняемый файл зашифрован своим методом, то и модифицировать их единым методом невозможно. Утилита ProtectEXE.EXE не позволяет защититься от динамического модифицирования в памяти. Это слишком сложно и не может быть достигнуто без существенной переделки исходного текста самой защищаемой программы. Но в рамках защиты дистанционных средств обучения такая защита должна быть достаточно эффективна, так как создание взламывающей программы экономически мало целесообразно, а следовательно и скорее всего не будет осуществлено.
Модуль ProtectEXE.EXE имеет два возможных режима запуска. Первый режим предназначен для генерации зашифрованного файла из указанного исполняемого модуля. Второй режим служит непосредственно для запуска защищенного модуля.
Опишем этап создания зашифрованного файла. Для создания зашифрованного файла необходимо запустить ProtectEXE.EXE, указав в качестве параметра имя шифруемого исполняемого файла. Можно указать не только имя, но и путь. В результате буду сгенерированы два файла. Если было указано только имя, то файлы будут располагаться в текущем каталоге. Если был указан путь к файлу, то сгенерированные файлы будут созданы в том же каталоге, где расположен и шифруемый файл. Первый файл будет иметь расширение upb. Он представляет собой непосредственно зашифрованный исполняемый файл. Второй файл будет иметь расширение upu. Он представляет собой ключ, необходимый для расшифровки исполняемого файла. При разработке ProtectEXE было принято решение хранить зашифрованный файл и ключ для его расшифровке не в едином файле, а раздельно. Это было сделано с целью большей гибкости. Если хранить все в одном файле, это будет означать, что его всегда будет возможно запустить. Раздельное хранение ключа позволяет создавать систему, где запуск определенных программ будет запрещен. Например, программа дистанционного обучения может позволять запускать набор определенных программ только тогда, когда будет выполнен ряд условий. Допустим, после сдачи определенного набора работ. Когда определенные работы будет сданы и защищены, АРМ преподавателя выдает студенту необходимые для дальнейшей работы ключевые файлы. Можно было бы, конечно, выдавать сразу расшифрованный бинарный файл, но программа может быть достаточно большой, и это просто нерационально. И, тем более, тогда нет никаких сложностей скопировать ее другому студенту, которому она еще не должна быть выдана.
Теперь опишем второй режим работы. Это непосредственно запуск зашифрованного модуля. Для его запуска необходимо запустить ProtectEXE, указав в качестве параметра путь и имя зашифрованного файла с расширением upb. Если будет найден ключевой файл с тем же именем, но с расширением upu, то программа будет запущена. При этом будет создан временный файл с расширением exe. Он будет располагаться в том же каталоге, где нахолодятся фалы с расширением upb и upu. Этот файл является временным и будет удален после завершения работы программы. Данный файл, хоть и носит расширение exe, не является исполняемым файлом. В чем можно убедиться, попытавшись запустить его. Результатом будет его зависание. Поэтому не следует бояться, что это расшифрованный файл, и студент сможет скопировать его, когда он будет создан.
4.4 Описание использования системы защиты на примерах
4.4.1 Подключение модуля защиты к программе на языке Visual C++
Распишем шаги, которые наобходимо проделать, чтобы подключить COM модуль Uniprot к программе, написанной на Visual C++.
1. Создайте новый или откройте уже существующий проект.
2. Создайте новую папку в каталоге с проекта или выберете уже существующую и скопируйте в нее необходимые для подключения библиотеки файлы. Это файлы: export.h, export.cpp, Uniprot.tlb.
3. Откройте MFC ClassWizard. Для этого выбирете в меню пунктView->ClassWizard.
4. Нажмите на кнопку Add Class и выберете пункт "From a type library…".
5. Укажите путь к файлу Uniprot.tlb и откройте его.
6. В диалоге Confirm Classes вам скорее всего будет достаточно сразу нажать кнопку "Ok". Но если вы не согласны с продложенными установками по умолчанию, то можете внести в них соответсвующие изменения.
7. Закройте диалог MFC ClassWizard.
8. Включите в проект файлы export.h, export.cpp.
9. Добавить include "export.h" в те модуле, где вы планируете использовать библиотеку Uniprot.
10. Проверьте, что у вас инициализируется работа с COM. То есть вызывается функция CoInitialize.
11. Теперь вы можете работать с библиотекой COM, например, так.
IProtect ProtectObj;
IProtectFile ProtectFileObj;
ProtectObj.CreateDispatch(UniprotLibID);
ProtectFileObj.CreateDispatch(UniprotLibID);
LPDISPATCH pDisp = ProtectFileObj.m_lpDispatch;
HRESULT hr = pDisp ->QueryInterface(
IProtectFileIntarfaceID,
(void**)&ProtectFileObj.m_lpDispatch);
VERIFY(hr == S_OK);
4.4.2 Подключение модуля защиты к программе на языке Visual Basic
Распишем шаги, которые наобходимо проделать, чтобы подключить COM модуль Uniprot к программе, написанной на Visual Basic.
12. Создайте новый или откройте уже существующий проект.
13. Создайте новую папку в каталоге с проекта или выберете уже существующую и скопируйте в нее необходимый для подключения библиотеки файл. Это файл: Uniprot.tlb.
14. Откройте диалог References. Для этого выбирете в меню пунктProject->References.
15. Нажмите кнопку Browse.
16. Укажите файл Uniprot.tlb и откройте его.
17. Поставьте в списке галочку напротив появившейся строки Uniprot 1.0 Type Library и нажмите Ok.
18. Теперь вы можете работать с библиотекой COM например так.
Dim handle As Integer
Dim obj As New protect
Dim ver As Integer
Dim strInfo As String
obj.GetInfo ver, strInfo
Dim s As String
s = "Version:" + Str(ver / 256) + "«. +
Str((ver Mod 256) / 16) + Str(ver Mod 16)
s = s + Chr(13) + "Info:" + strInfo
MsgBox s
Dim file As IProtectFile
Set file = obj
handle = file.Create(FileName, Default, cryptUPT)
4.4.3 Пример использования модуля защиты в программе на языке Visual Basic
Рассмотрим несколько демонстрационных программах. Представим, что у нас существует комплекс, состоящий из двух частей. Первая из которых предназначена для преподавателя, а другая - для студента. В дальнейшем будем называть их соответственно "АРМ преподавателя" и "АРМ студента". АРМ преподавателя предназначена для составления вопросов и просмотра результатов тестирования. А АРМ студента предназначена для контроля знаний. Естественно, примеры данных программ будут очень упрощены.
Для начала приведем текст программы АРМ преподавателя без использования защиты. На рисунке 8 показан ее пользовательский интерфейс.
Private Sub Edit_Click()
orm1.ole_doc.DoVerb
End Sub
Private Sub Form_Load()
Form1.ole_doc.Format = "Rich Text Format"
End Sub
Private Sub Load_Click()
Open "c:\temp\temp.rtf" For Input As #1
Dim str, tmp
Do While Not EOF(1)
Input #1, tmp
str = str + tmp
Loop
Close #1
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
End Sub
Private Sub Save_Click()
Dim msg
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
msg = Form1.ole_doc.DataText
Open "c:\temp\temp.rtf" For Output As #1
Print #1, msg
Close #1
End Sub
Private Sub ViewResult_Click()
Open "c:\temp\result.txt" For Input As #1
Dim n As Integer
Input #1, n
Close #1
result = n
End Sub
Итак, данная программа позволяет загрузить текст вопроса из файла, отредактировать его и опять сохранить. На практике, естественно, кроме этого должен существовать механизм генерации пакета программ и данных для студента. Т.е. в этот пакет, по всей видимости, должны входить АРМ студента, база данных и т.д.
Рисунок 8. Интерфейс АРМ преподавателя
В нашем примере мы это опускаем и предполагаем, что сохраненный текст - все, что необходимо. Эта программа позволяет просмотреть файл с результатом тестирования по заданному вопросу. Это файл генерирует АРМ студента. Он представляет собой файл, в котором записано число - оценка за вопрос. Недостатки данной программы мы рассмотрим чуть ниже, когда познакомимся с АРМ студента. На рисунке 9 показан ее внешний вид.
Private Sub SaveResult(a)
Open "c:\temp\result.txt" For Output As #1
Print #1, a
Close #1
End
End Sub
Private Sub Command1_Click(Index As Integer)
SaveResult (2)
End Sub
Private Sub Command2_Click()
SaveResult (2)
End Sub
Private Sub Command3_Click()
SaveResult (5)
End Sub
Private Sub Command4_Click()
SaveResult (2)
End Sub
Private Sub Form_Load()
Form1.ole_doc.Format = "Rich Text Format"
Open "c:\temp\temp.rtf" For Input As #1
Dim str, tmp
Do While Not EOF(1)
Input #1, tmp
str = str + tmp
Loop
Close #1
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
End Sub
Как видно эта программа очень проста. Она просто выводит текст вопроса и ждет ответ. После чего записывает оценку в файл. На рисунке 10 показано, как выглядит файл с результатом.
Рисунок 9. Интерфейс АРМ студента
Рисунок 10. Файл с незашифрованным результатом
Естественно, такая система не выдерживает никакой критики с точки зрения защиты. Во-первых, файл с вопросом представляет из себя простой RTF-файл. Конечно, если эти файлы будут храниться в защищенной базе, то проблем не возникнет. Мы же предполагаем, что пока они хранятся открыто. Предположим, что таких файлов много, и недопустимо, чтобы студент имел к ним доступ. Соответственно, это одно из мест, где потребуется модуль защиты. Второе, пожалуй, еще более важное место - это файл с результатом. На данный момент это просто текстовый файл, с числом, обозначающий оценку. Хранение результата в таком виде как просто, так и недопустимо.
Подобные документы
Вопросы защиты информации, стоящие перед автоматизированными системами дистанционного обучения. Криптосистема Ривеста-Шамира-Эйделмана, основанная на эллиптических кривых. Адаптированный метод асимметричного шифрования. Язык программирования С++.
диссертация [713,4 K], добавлен 15.01.2009Семиуровневая архитектура, основные протоколы и стандарты компьютерных сетей. Виды программных и программно-аппаратных методов защиты: шифрование данных, защита от компьютерных вирусов, несанкционированного доступа, информации при удаленном доступе.
контрольная работа [25,5 K], добавлен 12.07.2014Определение назначения и характеристика видов систем защиты информации. Описание структур систем по защите накапливаемой, обрабатываемой и хранимой информации, предупреждение и обнаружение угроз. Государственное регулирование защиты информационных сетей.
реферат [43,6 K], добавлен 22.05.2013Пути несанкционированного доступа, классификация способов и средств защиты информации. Анализ методов защиты информации в ЛВС. Идентификация и аутентификация, протоколирование и аудит, управление доступом. Понятия безопасности компьютерных систем.
дипломная работа [575,2 K], добавлен 19.04.2011Особенности защиты информации при построении локальных сетей государственных учреждений, анализ схемы незащищенной сети и выявление потенциальных угроз информационной безопасности, особенности программных средств защиты, реализующих технологию VPN.
курсовая работа [762,8 K], добавлен 21.06.2011Пути несанкционированного доступа, классификация способов и средств защиты информации. Каналы утечки информации. Основные направления защиты информации в СУП. Меры непосредственной защиты ПЭВМ. Анализ защищенности узлов локальной сети "Стройпроект".
дипломная работа [1,4 M], добавлен 05.06.2011Краткое описание, сведения производителя, функции, технические характеристики среды выполнения программных средств защиты информации. Сравнительный анализ программ по параметрам: доступность дистрибутивов и установка, документация и возможности.
курсовая работа [1,5 M], добавлен 13.04.2014Рассмотрение основных понятий защиты информации в сетях. Изучение видов существующих угроз, некоторых особенностей безопасности компьютерных сетей при реализации программных злоупотреблений. Анализ средств и методов программной защиты информации.
дипломная работа [1,5 M], добавлен 19.06.2015Анализ системы обеспечения информационной безопасности и защиты информации. Выбор и обоснование способа приобретения информационных систем для автоматизации задачи. Описание программных модулей. Обоснование методики расчета экономической эффективности.
дипломная работа [905,3 K], добавлен 24.12.2023Основные положения теории защиты информации. Сущность основных методов и средств защиты информации в сетях. Общая характеристика деятельности и корпоративной сети предприятия "Вестел", анализ его методик защиты информации в телекоммуникационных сетях.
дипломная работа [1,1 M], добавлен 30.08.2010