Несколько слов о безопасности симметричных криптосистем 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Несколько слов о безопасности симметричных криптосистем



Забегая вперед, обратим внимание, что для криптоанализа симметричных систем разработано множество методов:

· метод полного перебора ключей,

· методы криптоанализа с использованием теории статистических решений,

· разностный криптоанализ и его модификации,

· линейный криптоанализ.

С помощью данных методов осуществлены эффективные криптоатаки на большинство симметричных криптосистем.

Безопасность симметричных криптосистем определяется двумя факторами:

· стойкостью самого алгоритма,

· длиной ключей.

Критерием качественного шифрования служит следующий принцип: стойкость шифра должна определяться только секретностью ключа (правило Кирхгоффса -Dutchman A. Kerckhoffs).

 

Отчет по лабораторной работе должен содержать следующие сведения:

1. Титульный лист.

2. Цель работы.

3. Теоретическое введение.

4. Техническое задание.

5. Анализ ТЗ.

6. Схемы алгоритмов.

7. UML-диаграммы (более 3-х).

8. Модульная структура программы.

9. Спецификация на программные модули.

10. Результаты тестирования (2-3 теста).

11. Экранные формы работающей программы.

12. Листинг разработанной программы с комментариями (в приложении).

13. Результаты работы программы (выводы о проделанной работе).

4.2 Задания для самостоятельной работы

1. Ознакомьтесь с теоретическими основами шифрования данных.

2. Вариант задания по номеру в журнале.

3. Напишите программу согласно варианту задания.

4. Отладьте разработанную программу и покажите результаты работы программы преподавателю.

5. Составьте по лабораторной работе отчет.

Таблица 4. 1 – Индивидуальные задания к лабораторной работе № 4

№Варианта Название алгоритма Режим шифрования
1 2 3
1 TEA ECB
2 IDEA CBC
3 RC6 PCBC
4 ГОСТ 28147-89 CFB
5 Rijndael OFB
6 DES ECB
7 TEA CBC
8 IDEA PCBC
9 RC6 CFB
10 ГОСТ 28147-89 OFB
11 Rijndael ECB
12 DES CBC
13 TEA PCBC
14 IDEA CFB
15 RC6 OFB
16 ГОСТ 28147-89 ECB
17 Rijndael CBC
18 DES PCBC
19 TEA CFB
20 IDEA OFB

Продолжение табл. 4.1

21 RC6 ECB
22 ГОСТ 28147-89 CBC
23 Rijndael PCBC
24 DES CFB

4.3 Контрольные вопросы

1. Перечислите основные обратимые операции, используемые в образующих функциях блочных шифров.

2. Поясните, что такое сеть Фейштеля? В чем ее основные достоинства?

3. Опишите, какие параметры  блочных шифров влияют на его криптостойкость?

4. Какие блочные шифры, построенные по принципу сети Фейштеля, вам известны?

5. Проведите сравнительный анализ алгоритмов ГОСТ 28147-89 и Rijndael.

6. Проведите сравнительный анализ режимов шифрования CBC и ECB.

7. Проведите сравнительный анализ режимов шифрования CBC и CFB.

8. Общая схема алгоритма шифрования DES.

9. Почему длина ключа для алгоритма DES равна 56 бит?

10. В чём заключается процесс расшифрования данных в DES?

11. Как используется заданный ключ при шифровании в алгоритме ГОСТ?

12. Общие черты и отличия алгоритмов ГОСТ и DES.

13. Критерии оценки свойств лавинного эффекта.

 


ЛАБОРАТОРНАЯ РАБОТА № 5. ВЗАИМОДЕЙСТВИЕ С ЖУРНАЛАМИ СОБЫТИЙ ОС WINDOWS

Цель работы: изучение методов работы с системными журналами; отслеживание событий записи в системные журналы.

Теоретическое введение

В ОС Windows предусмотрена запись всех важных событий, происходящих в операционной системе, в журналы событий (Event Logs). Просмотреть информацию в журнале событий можно при помощи встраиваемой консоли Event Viewer в Microsoft Management Console (MMC). Как минимум, в системе ведется три отдельных журнала: Application (журнал приложений), Security (журнал безопасности) и System (системный журнал). Окно Event Viewer представлено на рисунке 2.

 

Рисунок 2 – Окно Event Viewer

 

Журнал приложений хранит важные события, связанные с конкретным приложением.  

Журнал безопасности хранит события, связанные с безопасностью. Например, вход - выход из системы, использование и изменение привилегий пользователей и групп, обращение к ресурсам.

Системный журнал хранит события операционной системы или ее компонентов. Например, неудачи при запуске служб или инициализации драйверов, общесистемные сообщения и прочие сообщения, относящиеся к операционной системе в целом.

Поля в записях журналов событий имеют следующее значение:

· Тип (Type). Поле «Тип» может принимать следующие значения – Уведомление (Information), Предупреждение (Warning) или Ошибка (Error). Уведомление (Information) – успешная операция. Предупреждение (Warning) – проблема, не требующая немедленного решения. Ошибка (Error) – серьезная проблема. В журнале безопасности встречаются еще два типа событий – Аудит успехов (SuccessAudit) и аудит отказов (FailureAudit).

· Дата (Date). Показывает дату и время, когда произошло событие.

· Источник (Source). Имя программного обеспечения, которое протоколирует событие.

· Категория (Category). Может быть определена для фильтрации событий. Категории определяются источником событий.

· Идентификатор события (Event identifier). Специфицирует определенное сообщение о событии. Значение идентификатора зависит от версии ОС Windows.

 

В NET предусмотрены классы, при помощи которых можно взаимодействовать с журналами событий программным образом. Данные классы определены в пространстве имен System.Diagnostics и описаны в таблице 5.1.

 

Таблица 5. 1 – Классы System.Diagnostics, предназначенные для работы с журналами событий

Класс Назначение
EventLog Основной класс для организации взаимодействия с журналами событий Windows. С помощью данного класса можно читать и вносить записи в журнал событий, а также устанавливать приложение в качестве источника событий
EventLog.EventLogEntryCollection Коллекция для хранения экземпляров классов EventLogEntry (записей из выбранного журнала)
EventLogEntry Отдельная запись в журнале событий
EventLogInstaller Инсталлятор для компонента EventLog

        

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

        


Таблица 5. 2 – Основные свойства и методы класса EventLog

Свойство(метод) Назначение
1 2
Entries Свойство Entries используется для чтения журналов событий. Entries возвращает коллекцию EventLogEntryCollection, содержащую объекты EventLogEntry, которые хранят информацию о событиях. Нет необходимости вызывать метод Read (). Коллекция наполняется, как только происходит обращение к свойству Entries.
EnableRaisingEvents Возвращает или задает значение, определяющее доступен ли конкретный экземпляр класса.
Log Свойство Log определяет журнал для чтения или записи событий.
LogDisplayName Свойство LogDisplayName доступно только для чтения. Возвращает отображаемое имя журнала EventLog.
MachineName Свойство MachineName позволяет получить или установить имя компьютера, на котором работает пользователь. Если это имя не указано, по умолчанию считается, что пользователь работает на локальном компьютере «.»
Source Свойство Source позволяет получить или установить имя приложения, которое будет зарегистрировано в журнале, как источник события.
Clear() Метод Clear() удаляет все записи из журнала событий.
Close() Метод Close() закрывает журнал и освобождает все ресурсы, связанные с чтением информации из данного журнала или записью информации в журнал.
CreateEventSource() Метод CreateEventSource() устанавливает приложение как источник события.
Delete() Метод Delete() полностью удаляет весь журнал событий.
DeleteEventSource() Метод DeleteEventSource() вызывается для того, чтобы избавиться от источника событий.
EntryWritten Обработчик событий записи в журнал.
GetEventLogs() Метод GetEventLogs() создает массив журналов событий.
WriteEntry() Метод WriteEntry() производит вставку записи в журнал событий.
SourceExists() Метод SourceExists() проверяет существование источника событий.

 

Примеры работы с журналами событий приведены в подразделе 5.2.

Примеры программирования

 

На рисунке 3 представлена форма приложения для работы с журналами.

 

Рисунок 3 – Окно приложения для работы с журналами событий

 

Приведено описание используемых в приложении элементов управления в таблице 5.3.

 


Таблица 5. 3 – Элементы управления приложения для работы с журналами событий

Элемент управления Класс Описание
button1 Button Командная кнопка для получения списка журналов событий.
button2 Button Командная кнопка для просмотра выбранного журнала.
button3 Button Командная кнопка для очистки выбранного журнала.
button4 Button Командная кнопка для включения режима мониторинга событий безопасности.
button5 Button Командная кнопка для отключения режима мониторинга событий безопасности.
button6 Button Командная кнопка для включения режима мониторинга системных событий.
button7 Button Командная кнопка для отключения режима мониторинга системных событий. 
logTreeView TreeView Дерево для вывода списка доступных журналов
logDataGridView DataGridView Таблица для вывода содержимого выбранного журнала. Состоит из пяти полей: Идентификатор, Тип сообщения, Дата, Компьютер и Сообщение.
richTextBox1 RichTextBox Многострочное окно для вывода результатов мониторинга событий безопасности.
groupBox1 GroupBox Контейнер служит для размещения дерева logTreeView.
groupBox2 GroupBox Контейнер служит для размещения таблицы logDataGridView.

 

Последовательность программирования приложения:

1. Для работы с журналами событий необходимо подключить пространство имен System.Diagnostics:

    using System.Diagnostic.

2. Объявление глобальных переменных:

    public EventLog[] elogs;

public EventLog securitylog, eventLog;

где elogs – массив, содержащий информацию о всех журналах событий в системе;

securitylog – журнал безопасности. Используется для перехвата событий записи в журнал безопасности Security;

eventLog – системный журнал. Используется для перехвата событий записи в системный журнал System.

 

3.   Для события Click кнопки button1 (Получить список журналов) пишем следующий программный код:

//---------------------------------------------

// Получение списка доступных журналов

//---------------------------------------------

private void button1_Click(object sender, EventArgs e)

{

    // Очистка дерева logTreeView;

    logTreeView.Nodes.Clear();  

 

    // Создание дерева журналов

TreeNode InfoNode = new TreeNode();

InfoNode.Text = "Список доступных журналов событий";

    // Создание корневого элемента дерева

    logTreeView.Nodes.Add(InfoNode);

    // Создание массива записей о всех журналах

    elogs = EventLog.GetEventLogs();

    // Вывод в цикле информации о каждом журнале

foreach (EventLog elog in elogs)

  {

  logTreeView.Nodes[0].Nodes.Add(elog.Log.ToString()   + " (" + elog.LogDisplayName.ToString() + ")");

   

    elog.Close();

}

// Очистка массивазаписей о всех журналах

elogs = null;

 }

4.  Для события Click кнопки button2 (Просмотр выбранного журнала) пишем следующий программный код:

//---------------------------------------------

// Просмотр выбранного журнала

//---------------------------------------------

private void button2_Click(object sender, EventArgs e)

{

    logDataGridView.Rows.Clear();

  string tmp = "";

string logType = "";

int k = 0;

// Проверка, выбран ли журнал

if (logTreeView.SelectedNode!= null)

{

          tmp = logTreeView.SelectedNode.Text;

              // Полчить имя выбранного журнала

    k = tmp.IndexOf(" (");

     if (k!= 0) logType = tmp.Substring(0, k);

              // Прочитать содержимое выбранного журнала

    EventLog ev = new EventLog(logType,                      System.Environment.MachineName);

    int LastLogToShow = ev.Entries.Count;

    if (LastLogToShow <= 0)

    {

         string message = "В журнале: " + logType + " отсутствуют записи";

         string caption = "Просмотр журналов событий";

         MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

    else

    {

    // чтение выбранного журнала

    groupBox2.Text = "Просмотр журнала " + logType;

    int i = 0;

    for (i = 0; i < LastLogToShow; i++)

    {

       EventLogEntry CurrentEntry = ev.Entries[i];

logDataGridView.Rows.Add(CurrentEntry.InstanceId,     CurrentEntry.EntryType.ToString(),   CurrentEntry.TimeGenerated.ToString(),     CurrentEntry.MachineName.ToString(), CurrentEntry.Message);

     }

}

ev.Close();

}

else MessageBox.Show("Ни один журнал не выбран", "Просмотр журналов событий", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

5. Для события Click кнопки button3 (Очистить выбранный журнал) пишем следующий программный код:

//---------------------------------------------

// Очистка выбранного журнала

//---------------------------------------------

private void button3_Click(object sender, EventArgs e)

{

    logDataGridView.Rows.Clear();

string tmp = "";

string logType = "";

int k = 0;

if (logTreeView.SelectedNode!= null)

{

          tmp = logTreeView.SelectedNode.Text;

    k = tmp.IndexOf(" (");

    if (k!= 0) logType = tmp.Substring(0, k);

    EventLog ev = new EventLog(logType,                      System.Environment.MachineName);

    int LastLogToShow = ev.Entries.Count;

    if (LastLogToShow <= 0)

    {

    string message = "В журнале: " + logType + " записи уже отсутствуют";

        string caption = "Очистка журналов событий";

        MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

    else

    {

    ev.Clear();

        ev.Close();

     }

}

else MessageBox.Show("Ни один журнал не выбран", "Очистка журналов событий", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

6. Для перехвата событий записи в журнал безопасности необходимо создать свой обработчик событий и добавить его к списку обработчиков событий, которые прикреплены к данному объекту (в данном случае журналу безопасности). Новый обработчик событий имеет вид:

//---------------------------------------------

// Перехват записей в журнал безопасности

//---------------------------------------------

protected void OnEntrySecurityWritten(object sender, EntryWrittenEventArgs e)

{

    richTextBox1.AppendText("Запись в журнал " +     ((EventLog)sender).LogDisplayName + " Время " + e.Entry.TimeWritten + "Позиция " + e.Entry.Index +     "\r\n");

}

    В данном случае информация о перехваченных событиях будет выводиться вполе richTextBox1.

7. Для события Click кнопки button4 (Мониторинг событий безопасности) пишем следующий программный код:

//---------------------------------------------

// Мониторинг событий безопасности

//---------------------------------------------

private void button4_Click(object sender, EventArgs e)

{

    // Создается объект "журнал безопасности"

securitylog = new EventLog("Security",    Environment.MachineName);

// К обработчику событий данного журнала       

// добавляется новый обработчик //OnEntrySecurityWritten

securitylog.EntryWritten += new     EntryWrittenEventHandler(OnEntrySecurityWritten);

// Объявить доступным конкретный экземпляр класса

securitylog.EnableRaisingEvents = true;

}

8. Для события Click кнопки button5 (Отменить мониторинг событий безопасности) пишем следующий программный код:

//---------------------------------------------

// Отмена мониторинга событий безопасности

//---------------------------------------------

private void button5_Click(object sender, EventArgs e)

{

    securitylog.EntryWritten -= OnEntrySecurityWritten;

 }

9.  Для перехвата событий записи в системный журнал, как и в предыдущем случае, необходимо создать свой обработчик событий и добавить его к списку обработчиков событий, которые прикреплены к данному объекту (в данном случае к системному журналу). Для разнообразия обработчик событий выводит на экран окно с предупреждением в случае, если событие является ошибкой (Error), или предупреждением (Warning), или информационным (Information), как показано на рисунке 4.

 

 

Рисунок 4 – Сообщение о перехвате событий записи в системный журнал

Новый обработчик событий имеет вид:

//---------------------------------------------

// Перехват записей в системный журнал

//---------------------------------------------

private void OnEntryWritten1(object sender, EntryWrittenEventArgs e)

{

    if (e.Entry.EntryType == EventLogEntryType.Error ||    e.Entry.EntryType == EventLogEntryType.Information || e.Entry.EntryType == EventLogEntryType.Warning)

{

          DialogResult result;

   result = MessageBox.Show("Внимание!" + "\r\n" + "В системе произошло событие " + e.Entry.InstanceId + "\r\n" + "Время " +

e.Entry.TimeGenerated.ToString() + "\r\n" +      "Сообщение: " + e.Entry.Message + "\r\n" + "\r\n" + " Просмотрите журнал событий для выяснения причин.", "Система активного аудита",                             MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

10.   Для события Click кнопки button6 (Мониторинг системны событий) пишем следующий программный код:

//---------------------------------------------

// Мониторинг системных событий

//---------------------------------------------

private void button6_Click(object sender, EventArgs e)

{

     eventLog = new EventLog("System", Environment.MachineName);

eventLog.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten1);

eventLog.EnableRaisingEvents = true;

}

11. Для события Click кнопки button6 (Отменить мониторинг системных событий) пишем следующий программный код:

//---------------------------------------------

// Отмена мониторинга системных событий

//---------------------------------------------

private void button7_Click(object sender, EventArgs e)

{

eventLog.EntryWritten -= OnEntryWritten1;

}


5.3 Задания для самостоятельной работы

Написать оконное приложение для вывода списка всех имеющихся журналов аудита. Предусмотреть возможность вывода на экран любого журнала, удаления и добавления любых записей, очистку любого журнала.

Индивидуальные задания приведены в таблице 5.4.

 

Таблица 5. 4 – Индивидуальные задания к лабораторной работе № 5

№ варианта Индивидуальное задание
1 2
1 Выполнить фильтрацию событий по дате или типу события. Отслеживать появление следующих событий: неудачная аутентификация и изменения учетной записи. Информацию о перехваченном событии выводить на экран.
2 Выполнить фильтрацию событий по диапазону дат или категории. Отслеживать появление следующих событий: добавление пользователя в группу и создание новой учетной записи. Информацию о перехваченном событии выводить специально в созданный журнал аудита.
3 Выполнить фильтрацию событий по дате и временному интервалу события. Отслеживать появление следующих событий: очистка журнала безопасности и отказ входа в систему (неверное имя пользователя или пароль). Информацию о перехваченном событии выводить в текстовый файл.
4 Выполнить фильтрацию событий по идентификатору события или пользователю. Отслеживать появление следующих событий: отказ входа в систему (срок действия пароля истек) и удаление учетной записи пользователя. Информацию о перехваченном событии выводить на экран.
5 Выполнить фильтрацию событий по диапазону дат или идентификатору события. Отслеживать появление следующих событий: завершение приложения из-за ошибок и неожиданная перезагрузка компьютера. Информацию о перехваченном событии выводить в специально созданный журнал аудита.
6 Выполнить фильтрацию событий по временному интервалу или компьютеру. Отслеживать появление следующих событий: создание новых журналов аудита и очистка существующих журналов. Информацию о перехваченном событии выводить текстовый файл.

 


Продолжение таблицы 5.4

7 Выполнить фильтрацию событий по дате или категории события. Отслеживать появление следующих событий: запись информации в журнал Microsoft Office Sessions и активация деактивированной до этого учетной записи. Информацию о перехваченном событии выводить на экран.
8 Выполнить фильтрацию событий по дате или типу события. Отслеживать появление следующих событий: неудачная аутентификация и изменения учетной записи. Информацию о перехваченном событии выводить на экран.
9 Выполнить фильтрацию событий по диапазону дат или категории. Отслеживать появление следующих событий: добавление пользователя в группу и создание новой учетной записи. Информацию о перехваченном событии выводить специально в созданный журнал аудита.
10 Выполнить фильтрацию событий по дате и временному интервалу события. Отслеживать появление следующих событий: очистка журнала безопасности и отказ входа в систему (неверное имя пользователя или пароль). Информацию о перехваченном событии выводить в текстовый файл.
11 Выполнить фильтрацию событий по идентификатору события или пользователю. Отслеживать появление следующих событий: отказ входа в систему (срок действия пароля истек) и удаление учетной записи пользователя. Информацию о перехваченном событии выводить на экран.
12 Выполнить фильтрацию событий по диапазону дат или идентификатору события. Отслеживать появление следующих событий: завершение приложения из-за ошибок и неожиданная перезагрузка компьютера. Информацию о перехваченном событии выводить в специально созданный журнал аудита.
13 Выполнить фильтрацию событий по временному интервалу или компьютеру. Отслеживать появление следующих событий: создание новых журналов аудита и очистка существующих журналов. Информацию о перехваченном событии выводить текстовый файл.
14 Выполнить фильтрацию событий по дате или категории события. Отслеживать появление следующих событий: запись информации в журнал Internet Explorer и удаление учетной записи. Информацию о перехваченном событии выводить на экран.
15 Выполнить фильтрацию событий по дате или типу события. Отслеживать появление следующих событий: неудачная аутентификация и изменения учетной записи. Информацию о перехваченном событии выводить на экран.

Продолжение таблицы 5.4

16 Выполнить фильтрацию событий по диапазону дат или категории. Отслеживать появление следующих событий: добавление пользователя в группу и создание новой учетной записи. Информацию о перехваченном событии выводить специально в созданный журнал аудита.
17 Выполнить фильтрацию событий по дате и временному интервалу события. Отслеживать появление следующих событий: очистка журнала безопасности и отказ входа в систему (неверное имя пользователя или пароль). Информацию о перехваченном событии выводить в текстовый файл.
18 Выполнить фильтрацию событий по идентификатору события или пользователю. Отслеживать появление следующих событий: отказ входа в систему (срок действия пароля истек) и удаление учетной записи пользователя. Информацию о перехваченном событии выводить на экран.
19 Выполнить фильтрацию событий по диапазону дат или идентификатору события. Отслеживать появление следующих событий: завершение приложения из-за ошибок и неожиданная перезагрузка компьютера. Информацию о перехваченном событии выводить в специально созданный журнал аудита.
20 Выполнить фильтрацию событий по временному интервалу или компьютеру. Отслеживать появление следующих событий: создание новых журналов аудита и очистка существующих журналов. Информацию о перехваченном событии выводить текстовый файл.
21 Выполнить фильтрацию событий по дате или категории события. Отслеживать появление следующих событий: запись информации в системный журнал и изменения учетной записи. Информацию о перехваченном событии выводить на экран.

 

5.4 Контрольные вопросы

1. Перечислите журналы событий. Укажите названия журналов, укажите местоположение журналов (на каком диске, в каком каталоге).

2. Из каких полей состоят записи в системных журналах?

3. Какое пространство имен используется для работы с журналами событий в.NET Framework?

4. Какая информация записывается в журнал приложений?

5. Какая информация записывается в системный журнал?

6. Какая информация записывается в журнал безопасности?

7. Какие события в системных журналах могут свидетельствовать об атаках на компьютерную систему?



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 100; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.187.233 (0.118 с.)