Защита информации в системах дистанционного обучения с монопольным доступомРефераты >> Программирование и компьютеры >> Защита информации в системах дистанционного обучения с монопольным доступом
Form1.ole_doc.Update
file.Close (handle)
End Sub
Вот как теперь выглядит новая подпрограмма сохранения вопроса в файл.
Private Sub Save_Click()
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Create("c:\temp\temp.dat", Default, "c:\temp\crypt.upt")
Dim writeSize As Long
Dim v As Variant
Dim str As String
str = Form1.ole_doc.DataText
v = str
writeSize = file.Write(handle, v)
file.Close (handle)
End Sub
И последнее, это новая подпрограмма чтения файлов с результатом тестирования.
Private Sub ViewResult_Click()
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Open("c:\temp\result.dat", "c:\temp\decryptres.upt", "c:\temp\cryptres.upt")
Dim readSize As Long
Dim v As Variant
readSize = file.Read(handle, v)
Dim str As String
result = v
file.Close (handle)
End Sub
Внешний вид АРМ студента не изменился. Приведем только текст программы.
Dim obj As New protect
Private Sub SaveResult(a)
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Create("c:\temp\result.dat", Default, "c:\temp\cryptres.upt")
Dim writeSize As Long
Dim v As Variant
Dim str As String
str = Form1.ole_doc.DataText
v = a
writeSize = file.Write(handle, v)
file.Close (handle)
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"
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Open("c:\temp\temp.dat", "c:\temp\decrypt.upt", "c:\temp\crypt.upt")
Dim readSize As Long
Dim v As Variant
readSize = file.Read(handle, v)
Dim str As String
str = v
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
file.Close (handle)
End Sub
Для примера на рисунке 12 приведен пример зашифрованного файла с результатом тестирования. Теперь понять, что в нем хранится, стало сложным делом.
Рисунок 12. Файл с зашифрованным результатом
4.4.4. Пример использования программы ProtectEXE.exe
В качестве примера приведем код на Visual С++, который производит шифрование исполняемого файла, а затем код, производящий запуск зашифрованного файла. Обе функции принимают на входе имя файла с расширение exe. Для большей ясности рекомендуется ознакомиться с приведенным ранее описанием программы ProtectEXE.
void CreateEncryptedModule(const CString &FileName)
{
CString Line(_T("ProtectExe.exe "));
Line += FileName;
STARTUPINFO StartupInfo;
memset(&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
PROCESS_INFORMATION ProcessInformation;
if (!CreateProcess(Line, NULL, NULL, NULL, FALSE, 0,
FALSE, NULL, &StartupInfo,
&ProcessInformation))
throw _T("Error run ProtectExe.exe");
WaitForInputIdle(ProcessInformation.hProcess,
INFINITE);
WaitForSingleObject(ProcessInformation.hProcess,
INFINITE);
CloseHandle(ProcessInformation.hProcess);
DeleteFile(FileName);
}
void RunEncryptedModule(const CString &FileName)
{
CString EncryptedFileName(FileName);
EncryptedFileName = EncryptedFileName.Mid(0, FileName.GetLength() - 3);
EncryptedFileName +=_T("upb");
CString Line(_T("ProtectExe.exe"));
Line += EncryptedFileName;
STARTUPINFO StartupInfo;
memset(&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
PROCESS_INFORMATION ProcessInformation;
if (!CreateProcess(Line, NULL, NULL, NULL, FALSE, 0,
FALSE, NULL, &StartupInfo, &ProcessInformation))
throw _T("Error run ProtectExe.exe");
WaitForInputIdle(ProcessInformation.hProcess, INFINITE);
WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
CloseHandle(ProcessInformation.hProcess);
}
4.5. Общие рекомендации по интеграции системы защиты
В данном разделе будет дан ряд различных советов и рекомендаций, целью которых является помощь в создании более надежной и эффективной системы защиты. Рекомендации носят разрозненный характер и поэтому не объединены в единый и связанный текст, а будут приведены отдельными пронумерованными пунктами.
1. Перед началом работ по модификации существующего программного обеспечения с целью интеграции системы защиты рекомендуется тщательно ознакомиться с приведенной документацией и с примерами по использованию различных функций. Также необходимым требованием перед началом работ, является базовые навыки работы с технологией COM. Если вы не знакомы с технологией COM, то здесь можно порекомендовать в качестве литературы по данной теме следующие книги: Модель COM и применение ATL 3.0 [31], Сущность технологии COM. [33], Programming Distributed Applications with COM and Microsoft Visual Basic 6.0 [34].
2. Перед тем как приступать непосредственно к созданию программных средств или их модификации, призванных защитить целевую систему, в начале следует продумать административную организацию бедующей системы. Как говорилось ранее, множество различных проблем, связанных с защитой АСДО, могут быть разрешены только административными методами. И пока не будет разработана соответствующая организационная система, программная защита отдельных ее компонентов будет иметь мало смысла. Отсюда и вытекает данная рекомендация уделить этой задаче большое внимание, даже больше, чем следует уделить защите используемых в ней программных компонентов. К сожалению, в этой работе вопросы административной организации такой системы практически не затрагиваются. Это связано с тем, что задача сама по себе огромна и требует отдельного целого ряда работ. Причем направленность этого рода работ носит, скорее, педагогический характер, и, следовательно, относится к соответствующей сфере педагогических наук. В проделанной же работе подготовлены средства, которые необходимы и будут использованы в новых или адаптируемых АСДО.
3. Во многих системах дистанционного обучения используются различные принципы, с помощью которых возможно отказаться от хранения ответов в открытом виде. Это позволяет быть уверенным, что ответы для базы вопросов никогда не будут просмотрены. В основном такие системы построены на использовании функции, которая односторонне преобразует ответ в некий код, затем сравниваемый с эталонными. Разработанная система защиты легко позволяет использовать аналогичный механизм. Для этого достаточно создать ключ шифрования. Ключ расшифрования не нужен, его можно удалить. Затем каждый верный ответ отдельно шифруется этим ключом. В результате получается набор файлов с зашифрованными ответами. После чего их будет удобно объединить в один единый файл, но это уже зависит от того, как будет реализовываться такая система. Затем этот файл, содержащий в себе зашифрованные ответы и ключ шифрования, отдается студенту. Когда студент вводит ответ, он шифруется отданным ему ключом. После чего зашифрованный файл с ответом сравнивается с эталонным. Если они совпадают, ответ верен. В результате, хотя ответы и хранятся у студента, воспользоваться он ими не может. Если кто-то поставит пред собой цель узнать, какие ответы верны, то нужно или перебирать все варианты, шифруя их и сравнивая, что весьма трудоемко, или провести анализ полиморфного алгоритма шифрования и создать соответствующий алгоритм расшифрования, что еще более трудоемко.