
- •Тема 1. Введение в проблемы информационной безопасности 9
- •Тема 2. Криптографические методы защиты информации 30
- •Тема 3. Симметричные криптосистемы 52
- •Тема 4. Асимметричные криптосистемы 81
- •Тема 5. Методы и средства защиты информации от несанкционированного доступа 105
- •Тема 6. Средства защиты от компьютерных вирусов 126
- •Введение
- •Тема 1. Введение в проблемы информационной безопасности
- •1.1. Концептуальная модель информационной безопасности
- •1.1.1. Основные понятия и определения
- •1.1.2. Взаимосвязь понятий в области информационной безопасности
- •1.2. Основные угрозы информационной безопасности и каналы утечки информации
- •1.2.1. Основные виды угроз
- •1.2.2. Каналы утечки информации
- •1.3. Основные виды атак на информацию
- •1.3.1. Атаки доступа
- •1.3.2. Атаки модификации
- •1.3.3. Атаки на отказ в обслуживании
- •1.3.4. Атаки отказа от обязательств
- •1.4. Классификация методов и средств защиты информации
- •1.4.1. Основные методы защиты информации
- •1.4.2. Неформальные средства защиты
- •1.4.3. Формальные средства защиты
- •Вопросы для повторения
- •Резюме по теме
- •Тема 2. Криптографические методы защиты информации
- •2.1. Принципы криптографической защиты информации
- •2.1.1. Шифры
- •2.1.2. Односторонние функции
- •2.1.4. Электронная цифровая подпись
- •2.1.5. Генераторы псевдослучайных последовательностей
- •2.2. Криптоанализ и виды криптоаналитических атак
- •2.3. Основные криптографические преобразования в симметричных криптосистемах
- •2.3.1. Шифры перестановки
- •2.3.2. Шифры замены (подстановки)
- •2.3.3. Шифры гаммирования
- •2.3.4. Композиционные блочные шифры
- •Вопросы для повторения
- •Резюме по теме
- •Тема 3. Симметричные криптосистемы
- •3.1. Сеть Фейстеля
- •3.2. Алгоритм криптографического преобразования данных гост 28147-89
- •3.3. Стандарт шифрования сша нового поколения
- •3.4. Комбинирование блочных шифров
- •3.5. Режимы работы блочных шифров
- •3.5.1. Режим "Электронная кодовая книга"
- •3.5.2. Режим "Сцепление блоков шифртекста"
- •3.5.3. Режим обратной связи по шифртексту
- •3.5.4. Режим обратной связи по выходу
- •3.6. Режимы работы алгоритма криптографического преобразования данных гост 28147-89
- •Вопросы для повторения
- •Резюме по теме
- •Тема 4. Асимметричные криптосистемы
- •4.1. Алгоритмы шифрования с открытым ключом
- •4.1.1. Криптосистема rsa
- •4.1.2. Криптосистемы Диффи-Хеллмана и Эль Гамаля
- •4.1.3. Криптосистема на основе эллиптических кривых
- •4.2. Алгоритмы криптографического хэширования
- •4.2.1. Алгоритм безопасного хэширования
- •4.2.2. Односторонние хэш-функции на основе симметричных блочных алгоритмов
- •4.2.3. Алгоритм хэширования гост р 34.11–94
- •4.3. Алгоритмы электронной цифровой подписи
- •4.3.1. Алгоритм цифровой подписи rsa
- •4.3.2. Алгоритм цифровой подписи Эль Гамаля (egsa)
- •4.3.3. Алгоритм цифровой подписи dsa
- •4.3.4. Алгоритмы электронной цифровой подписи гост р 34.10–94 и гост р 34.10–2001
- •Вопросы для повторения
- •Резюме по теме
- •Тема 5. Методы и средства защиты информации от несанкционированного доступа
- •5.1. Основные понятия концепции защиты от несанкционированного доступа
- •5.2. Идентификация и аутентификация
- •5.2.1 Аутентификация пользователя на основе паролей и процедуры "рукопожатия"
- •5.2.2. Проверка подлинности пользователя по наличию материального аутентификатора
- •5.2.3. Аутентификация пользователя по биометрическим характеристикам
- •5.3. Управление доступом и регистрация доступа к ресурсам асои
- •5.4. Защита информации от несанкционированного доступа в сетях
- •Вопросы для повторения
- •Резюме по теме
- •Тема 6. Средства защиты от компьютерных вирусов
- •6.1. Классификация компьютерных вирусов
- •6.1.1. Файловые вирусы
- •6.1.2. Загрузочные вирусы
- •6.1.3. Макровирусы
- •6.1.4. Сетевые вирусы
- •6.1.5. Прочие вредоносные программы
- •6.2. Методы обнаружения и удаления компьютерных вирусов
- •6.2.1. Профилактика заражения компьютера
- •6.2.2. Использование антивирусных программ
- •6.2.3. Методы обнаружения и удаления неизвестных вирусов
- •Вопросы для повторения
- •Резюме по теме
- •Практикум (лабораторный)
- •Лабораторная работа №1. Программная реализация простых шифров перестановки и замены
- •Требования к содержанию, оформлению и порядку выполнения
- •Теоретическая часть
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Способ оценки результатов
- •Лабораторная работа №2. Генерация и исследование псевдослучайных последовательностей. Реализация потокового шифрования данных
- •Требования к содержанию, оформлению и порядку выполнения
- •Теоретическая часть
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Теоретическая часть
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Способ оценки результатов
- •Лабораторная работа №5. Изучение электронной цифровой подписи и принципов шифрования с открытым ключом с использованием системы pgp
- •Требования к содержанию, оформлению и порядку выполнения
- •Теоретическая часть
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Рекомендуемая дополнительная литература
- •Глоссарий
Общая постановка задачи
В лабораторной работе требуется:
1. Изучить разделы 2.3.1, 2.3.2 и теоретическую часть к данной лабораторной работе.
2. Разработать программу для шифрования и расшифровывания текста при помощи шифра перестановки или шифра замены. Программа должны обеспечивать:
задание в командной строке режима работы (шифрование/расшифрование), имени входного файла, имени результирующего файла;
ввод ключа шифрования/расшифрования с клавиатуры;
шифрование информации, находящейся в текстовом файле, с записью результата в другой файл.
3. Зашифровать и расшифровать файл, с использованием разработанной программы.
Список индивидуальных данных
Данные для выполнения лабораторной работы сведены в табл.Л1.2.
Таблица Л1.2 (начало)
Варианты заданий к лабораторной работе №1
№ варианта |
Задание |
1 |
Осуществить программную реализацию шифра скитала |
2 |
Осуществить программную реализацию простой шифрующей таблицы перестановки |
3 |
Осуществить программную реализацию одиночной перестановки по ключу |
4 |
Осуществить программную реализацию двойной перестановки по ключу |
Таблица Л1.2 (окончание)
Варианты заданий к лабораторной работе №1
№ варианта |
Задание |
5 |
Осуществить программную реализацию шифра Цезаря |
6 |
Осуществить программную реализацию аффинного шифра Цезаря |
7 |
Осуществить программную реализацию шифра Цезаря с ключевым словом |
8 |
Осуществить программную реализацию шифра Трисемуса |
9 |
Осуществить программную реализацию шифра Вижинера |
Пример выполнения работы
Пусть требуется осуществить программную реализацию шифра Цезаря. Напишем следующую программу.
//----------------------------------------------------------------------------
#include <iostream.h> // Потоковый ввод/вывод
#include <conio.h> // getch
#include <windows.h> // CharToOem
#define SIZE_BUF 1024 // Размер буфера ввода/вывода
//-----------------------------------------------------------------------------
// Функция перекодировки для вывода сообщений на русском языке
char strdos[256];
char* dos(char* strw){
CharToOem(strw,strdos);
return strdos;
}
//------------------------------------------------------------------------------
// Функция поиска элемента x в массиве buf длиной n
// Возвращает индекс элемента, если он найден,
// и –1 в противном случае
int Search(char* buf,int n,char x){
int i;
for(i=0;buf[i]!=x && i<n;i++);
return (i!=n ? i : -1);
}
//------------------------------------------------------------------------------
// Программа шифрования данных
// argc=4
// argv[1] – режим работы (e – шифрование, d – расшифрование)
// argv[2] – имя входного файла
// argv[3] – имя выходного файла
int main(int argc, char* argv[])
{
char abc[]="абвгдежзийклмнопрстуфхцчшщьыъэюя";// Алвавит
char Buf[SIZE_BUF]; // Буфер чтения/записи
int key; // Ключ
cout<<dos("Шифр Цезаря для русского алфавита\n");
if(argc==4 && (*argv[1]=='e' || *argv[1]=='d')){
FILE* In=fopen(argv[2],"rb");
if(In==NULL){
cout<<dos("Ошибка открытия файла...\n");
getch(); return 1;
}
FILE* Out=fopen(argv[3],"wb");
if(Out==NULL){
fclose(In);
cout<<dos("Ошибка открытия файла...\n");
getch(); return 1;
}
clearerr(In); clearerr(Out);
cout<<dos("Введите ключ (целое число от 0 до 31: ");
cin>>key;
if(key < 0 || key > 31){
cout<<dos("Не верный ключ...\n");
fclose(In); fclose(Out);
getch(); return 1;
}
while(!feof(In)){ // Пока не конец входного файла
int LenBuf=fread(Buf,1,SIZE_BUF,In); // Читаем в буфер
if(ferror(In)){
fclose(In); fclose(Out);
cout<<dos("Ошибка чтения...\n");
getch(); return 1;
}
for(int i=0;i<LenBuf;i++){ // Для всех символов в буфере
int code=Search(abc,32,Buf[i]);
if(code!=-1){ // Если символ подлежит преобразованию
if(*argv[1]=='e')
code=(code+key)%32; // Код шифрования
else code=(code-key+32)%32; // Код расшифрования
Buf[i]=abc[code]; // Шифрование/Расшифрование
}
}
fwrite(Buf,1,LenBuf,Out); // Пишем в выходной файл
if(ferror(Out)){
fclose(In); fclose(Out);
cout<<dos("Ошибка записи...\n");
getch(); return 1;
}
}
fclose(In); fclose(Out);
cout<<dos("Файл ")<<argv[2];
cout<<dos(*argv[1]=='e' ? " зашифрован":" расшифрован")<<endl;
cout<<dos("Результат в ")<<argv[3]<<endl;
}
else{
cout<<dos("Формат командной строки: ");
cout<<"Cesar e/d infile outfile\n";
cout<<dos("e - шифрование, d - расшифрование,\n");
cout<<dos("infile - имя входного файла,\n");
cout<<dos("outfile - имя выходного файла.\n");
}
getch();
return 0;
}
//-----------------------------------------------------------------------------------
Эта программа осуществляет шифрование/расшифрование Цезаря для русскоязычных текстов, содержащих строчные буквы. Алфавитом является:
char abc[]="абвгдежзийклмнопрстуфхцчшщьыъэюя";
Если символ текста не принадлежит данному алфавиту, то он не преобразуется. Шифрование одного символа осуществляется по правилу: найти порядковый номер символа в алфавите и заменить его на символ с порядковым номером равным сумме номера исходного символа и ключа по модулю длины алфавита (в данном случае по модулю 32). Расшифрование выполняется аналогично: найти порядковый номер символа в алфавите и заменить его на символ с порядковым номером равным разности номера исходного символа и ключа по модулю длины алфавита. При вычитании может быть получен отрицательный результат, по этому перед взятием модуля к разности следует прибавить величину модуля.
Подготовим файл для шифрования (пусть это будет file1.txt). Запустим нашу программу на выполнение: cesar e file1.txt file2.txt. На рис. Л1.6 приведена экранная форма программы.
|
Рис. Л1.6. Экранная форма программы шифрования. |
Содержание исходного и зашифрованного файлов представлено на рис. Л1.7.
|
Рис. Л1.7. Результат шифрования. |
Запустим теперь нашу программу на выполнение в режиме расшифрования: cesar d file2.txt file3.txt. На рис. Л1.8 приведена экранная форма программы.
|
Рис. Л1.8. Экранная форма программы расшифрования. |
Содержание зашифрованного и расшифрованного файлов представлено на рис. Л1.9.
|
Рис. Л1.9. Результат расшифрования. |
Вывод. В лабораторной работе была осуществлена программная реализация шифра Цезаря. Эксперименты, проведенные с программой, показали правильность ее работы во всех режимах.