Защита информации в системах дистанционного обучения с монопольным доступом
Рефераты >> Программирование и компьютеры >> Защита информации в системах дистанционного обучения с монопольным доступом

Итак, данная программа позволяет загрузить текст вопроса из файла, отредактировать его и опять сохранить. На практике, естественно, кроме этого должен существовать механизм генерации пакета программ и данных для студента. Т.е. в этот пакет, по всей видимости, должны входить АРМ студента, база данных и т.д. В нашем примере мы это опускаем и предполагаем, что сохраненный текст – все, что необходимо. Эта программа позволяет просмотреть файл с результатом тестирования по заданному вопросу. Это файл генерирует АРМ студента. Он представляет собой файл, в котором записано число – оценка за вопрос. Недостатки данной программы мы рассмотрим чуть ниже, когда познакомимся с АРМ студента. На рисунке 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

Рисунок 9. Интерфейс АРМ студента  

Как видно эта программа очень проста. Она просто выводит текст вопроса и ждет ответ. После чего записывает оценку в файл. На рисунке 10 показано, как выглядит файл с результатом.

Рисунок 10. Файл с незашифрованным результатом

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

Теперь, используя модуль зашиты, мы исправим перечисленные недостатки. Для начала покажем новый интерфейс пользователя и объясним изменения. Кнопки "Загрузить текст", "Сохранить текст" остались, но теперь программа будет работать с зашифрованными данными. Кнопка "Импорт старых данных" предназначена для чтения незашифрованного файл с вопросом.

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

Новый интерфейс АРМ преподавателя изображен на рисунке 11.

Рисунок 11. Новый интерфейс АРМ преподавателя

Рассмотрим, какие изменения понадобилось внести в программу. Их совсем не много. Добавилась глобальная перемеренная obj. Она предназначена для взаимодействия с COM-модулем. Глобальной она быть совсем не обязана, просто это было сделано для краткости программы. Типом этой переменный является указатель на интерфейс IProtect. Но использовать этот интерфейс для шифрования/расшифрования не представляется возможным. Поэтому, в дальнейшем obj будем преобразовывать этот указатель к указателю на интерфейс IProtectFile.

Dim obj As New protect

Private Sub Edit_Click()

Form1.ole_doc.DoVerb

End Sub

Private Sub Form_Load()

Form1.ole_doc.Format = "Rich Text Format"

End Sub

Данная подпрограмма предназначена для генерации 4 алгоритмов шифрования/расшифрования. Для простоты она записываются во временную папку. Причем, генерируемые алгоритмы будут ограничены в использовании по времени. Файл "c:\temp\crypt.upt" и "c:\temp\decrypt.upt" предназначены для работы с файлом содержащим вопрос. Файл "c:\temp\cryptres.upt" и "c:\temp\decryptres.upt" предназначены для работы с фалом результата. Следовательно для работы АРМ-преподавателя необходимы файлы "c:\temp\crypt.upt" , "c:\temp\decrypt.upt" и "c:\temp\decryptres.upt". А для АРМ-студента необходимы файлы "c:\temp\decrypt.upt", "c:\temp\cryptres.upt".

Private Sub Generate_Click()

Dim days As Integer

days = DaysLimit

obj.GenerateTimeLimitUPTfiles "c:\temp\crypt.upt", "c:\temp\decrypt.upt", days

obj.GenerateTimeLimitUPTfiles "c:\temp\cryptres.upt", "c:\temp\decryptres.upt", days

End Sub

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

Private Sub Import_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

Вот новая подпрограмма чтения текста вопроса из файла. Дадим комментарии к некоторым строчкам.

Dim file As IProtectFile – объявляет указатель на интерфейс IProtectFile, который позволяет шифровать/расшифровывать файлы.

handle = file.Open("c:\temp\temp.dat", "c:\temp\decrypt.upt", "c:\temp\crypt.upt") – открываем файл с вопросом и сохраняем дескриптор открытого файла.

readSize = file.Read(handle, v) – читаем переменную типа Variant, которая на самом деле будет представлять из себя строку.

file.Close (handle) – закрывает файл.

Private Sub Load_Click()

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


Страница: