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