Защита информации в системах дистанционного обучения с монопольным доступом
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: гражданское право реферат, реферат на тему человек
| Добавил(а) на сайт: Popyrin.
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата
Функция Create служит для создания новых зашифрованных файлов.
Поскольку во вновь созданный файл можно только писать, то функции необходим
для работы только файл с алгоритмом шифрования. Имя файла с этим алгоритмом
передается третьим параметром и является обязательным. Параметр mode имеет
тип CreateMode, для чего он служит, было сказано ранее. При успешном
создании файл, в handle возвращается его дескриптор. По окончании работы с
файлом, его обязательно нужно закрыть, используя функцию Close.
Описание используемых параметров:
name – имя создаваемого файла.
mode – тип создаваемого файла (см. ранее описание типа CreateMode)
uptFileNameForWrite – имя файла с алгоритмом шифрования.
handle – возвращаемый дескриптор созданного файла.
HRESULT Open(
[in] BSTR name,
[in] BSTR uptFileNameForRead,
[in] BSTR uptFileNameForWrite,
[out, retval] short *handle);
Функция Open открывает уже ранее созданный зашифрованный файл. Файл
может быть открыт как для чтения так и для записи. После чего производить с
ним можно только одну из двух операций - чтение или запись данных. Это
обусловлено тем, что записи в файле представляют собой блоки различного
размера. Данная особенность является следствием необходимости хранения
такого типа данных, как VARIANT. Таким образом, запись к данным в файле
может быть только последовательная. И если после открытия файла произвести
в него запись, то прочитать старые данные из него будет уже невозможно.
Можно сказать, что открытие файла для записи эквивалентно его созданию, за
парой исключений. Первое исключение состоит в том, что при открытии файла
не указывается его тип. То есть нет необходимости указывать, следует
паковать данные перед шифрованием или нет. Информация о типе берется из уже
существующего файла. Второе состоит в том, что для открытия файла, в
отличии от создания, обязательно необходим файл с алгоритмом расшифрования.
Режим открытия файла зависит от того, указан ли файл с алгоритмом
шифрования. Имя файла с алгоритмом расшифрования является обязательным
параметром. Файл с алгоритмом расшифрования – нет. Если он не будет указан, то из такого файла возможно будет только чтение. Если указан, то будет
возможно как чтение, так и запись. При успешном открытии файла в handle
возвращается дескриптор этого файла. По окончании работы с файлом его
обязательно нужно закрыть, используя функцию Close.
Описание используемых параметров:
name – имя открываемого файла.
uptFileNameForRead – имя файла с алгоритмом расшифрования.
uptFileNameForWrite – имя файла с алгоритмом шифрования.
handle – возвращаемый дескриптор открытого файла.
HRESULT Close(
[in] short handle);
Функция Close закрывает ранее созданный или отрытый файл. Если
программа при своей работе создаст новый зашифрованный файл или откроет уже
существующий файл для записи, но не вызовет функцию Close до своего
завершения, но файл будет поврежден. После закрытия файла дескриптор
становится поврежденным и его более нельзя использовать в качестве
параметра для других функций.
Описание используемых параметров:
handle – дескриптор закрываемого файла.
HRESULT Write(
[in] short handle,
[in] VARIANT buffer,
[out, retval] long *written);
Функция Write производит запись в файл данных, переданных в переменной типа VARIANT. Запись производится в файл связанный с дескриптором, передаваемый в параметре handle. В возвращаемом значении written после завершения работы функции, будет указано количество байт записанных в файл.
Поскольку при разработке модуля защиты изначально был заложен принцип возможности использования его в программах, написанных на различных языках, то немаловажным вопросом является программный интерфейс. Именно по этой причине и был выбран типа VARIANT.
Тип VARIANT предназначен для представления значений, которые могут
динамически изменять свой тип. Если любой другой тип переменной
зафиксирован, то в переменные VARIANT можно вносить переменные разных
форматов. Шире всего VARIANT применяется в случаях, когда фактический тип
данных изменяется или неизвестен в момент компиляции. Переменным типа
VARIANT можно присваивать любые значения любых целых, действительных, строковых и булевых типов. Для совместимости с другими языками
программирования предусмотрена также возможность присвоения этим переменным
значений даты/времени. Кроме того, вариантные переменные могут содержать
массивы переменной длины и размерности с элементами указанных типов. Все
целые, действительные, строковые, символьные и булевы типы совместимы с
типом VARIANT в отношении операции присваивания. Вариантные переменные
можно сочетать в выражениях с целыми, действительными, строковыми, символьными и булевыми. При этом, например, все необходимые преобразования
Delphi выполняет автоматически.
Правда, сразу оговоримся, что передавать модулю защиты в переменных
VARIANT можно не совсем все что угодно. Например, нельзя передать адрес на
COM интерфейс, что логичною, так как неясно, как подобные данные
интерпретировать.
Описание используемых параметров:
handle – дескриптор файла для записи.
buffer – записываемое значение.
written – возвращает размер записанных данных в байтах.
HRESULT Read(
[in] short handle,
[out] VARIANT *buffer,
[out, retval] long *read);
Функция Read читает из файла данные и возвращает их в виде переменной
типа VARIANT. Чтение производится из файла связанного с дескриптором, передаваемого в параметре handle. В возвращаемом значении read после
завершения работы функции будет указано количество прочитанных из файла
байт.
Описание используемых параметров:
handle – дескриптор файла для чтения.
buffer – возвращаемые данные.
read – возвращает размер прочитанных данных в байтах.
HRESULT WriteString(
[in] short handle,
[in] BSTR buffer,
[out, retval] long *written);
Функция WriteString служит для записи в зашифрованный файл строки.
Отметим, что строку можно записать, используя функцию Write, так как тип
VARIANT позволяет хранить строки. Эта функция заведена для большего
удобства, так как строковый тип широко распространен. По крайней мере, как
показала практика, он очень часто встречается в системах обучения и
тестирования.
Описание используемых параметров:
handle – дескриптор файла для записи.
buffer – записываемая строка.
written – возвращает размер записанных данных в байтах.
HRESULT ReadString(
[in] short handle,
[out] BSTR *buffer,
[out, retval] long *read);
Функция ReadString служит для чтения строки из зашифрованного файла.
Описание используемых параметров:
handle – дескриптор файла для чтения.
buffer – возвращаемая строка.
read – возвращает размер прочитанных данных в байтах.
HRESULT FromFile(
[in] short handle,
[in] BSTR FileName,
[out, retval] long *read);
Функция FromFile позволяет записать в зашифрованный файл данные, прочитанные из другого файла. Иначе говоря, данная функция сохраняет
целиком произвольный файл в зашифрованном файле. Это может быть удобно, если, например, следует сохранить и зашифровать набор картинок в формате
jpg. Если бы данная функция отсутствовала, то пришлось бы вначале
программно считывать эти файлы в память, а уже затем записывать в
зашифрованный файл. Чтобы облегчить задачу программисту и была создана эта
функция. Обратным действием – извлечением файла из зашифрованного хранилища
– занимается функция ToFile. В результате получается искомый файл в
незашифрованном виде. Это может показаться слабым местом в организации
защиты. Но в этом есть смысл с точки зрения удобства адаптации уже
существующих программный комплексов обучения и тестирования. Сразу хочется
заметить, что если есть желание обойтись без временных файлов в
незашифрованном виде, то никаких сложностей нет. Рассмотрим на примере jpg
файла. Достаточно записать такой файл в зашифрованном виде, используя
функцию Write. Это достаточно просто, так как тип VARIANT может хранить
массивы байт. В дальнейшем этот массив байт будет возможно непосредственно
считать в память и отобразить на экране, не прибегая к временным фалам не
диске. Но дело в том, что часто это требует существенной доработки уже
существующего программного обеспечения. И проще, по крайней, мере на
начальном этапе внедрения системы защиты, за счет некоторого понижения
степени надежности, быстро модифицировать уже имеющуюся программу. Эта
может быть весьма важным моментом. Как только файл будет отображен на
экране, этот временный файл можно тут же стереть.
Описание используемых параметров:
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);
Рекомендуем скачать другие рефераты по теме: ответы 5 класс, реферат теория.
Категории:
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата