Автор работы: Пользователь скрыл имя, 06 Июня 2013 в 13:04, дипломная работа
С массовым внедрением компьютеров во все сферы деятельности человека объем информации, хранимой в электронном виде вырос в тысячи раз. И теперь скопировать за полминуты и унести дискету с файлом, содержащим план выпуска продукции, намного проще, чем копировать или переписывать кипу бумаг. А с появлением компьютерных сетей даже отсутствие физического доступа к компьютеру перестало быть гарантией сохранности информации.
Каковы возможные последствия атак на информацию? В первую очередь, конечно, многих будут интересовать экономические потери:
Раскрытие коммерческой информации может привести к серьезным прямым убыткам на рынке;
Известие о краже большого объема информации обычно серьезно влияет на репутацию фирмы, приводя косвенно к потерям в объемах торговых операций;
ВВЕДЕНИЕ 4
1. ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ И МОДЕЛИ ЗАЩИТЫ ИНФОРМАЦИИ 7
1.1. Категории информационной безопасности 7
1.2. Абстрактные модели защиты информации 8
1.3. Обзор наиболее распространенных методов "взлома" 9
2. КРИПТОГРАФИЧЕСКИЕ МЕТОДЫ ЗАЩИТЫ ИНФОРМАЦИИ 19
2.1.Классификация криптоалгоритмов 19
2.2 Симметричные криптоалгоритмы 20
2.3. Блочный шифр DES 36
2.4. Разработка программы для алгоритма DES 48
3. КРИПТОСИСТЕМА 52
3.1. Функции криптосистем 52
3.2. Алгоритмы создания цепочек 53
3.3. Обзор методик рандомизации сообщений 56
3.4. Общие сведения об асимметричных криптоалгоритмах 59
3.5. Алгоритм RSA 61
ЗАКЛЮЧЕНИЕ 68
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 74
Чтобы завершить описание алгоритма шифрования данных, осталось привести алгоритм получение ключей K(i), i=1,2,...,16, размерностью в 48 бит. Ключи K(i) определяются по 64-битовому ключу шифра как это показано.
В начале над ключом шифра выполняется операция B, которая сводится к выбору определенных бит и их перестановке, как это показано выше. Причем, первые четыре строки определяют, как выбираются биты последовательности C(0) (первым битом C(0) будет бит 57 бит ключа шифра, затем бит 49 и т.д., а последними битами биты 44 и 36 ключа шифра), а следующие четыре строки - как выбираются биты последовательности D(0) (т.е. последовательность D(0) будем стоять из битов 63,55,...,12, 4 ключа шифра).
Рис.2.12
"Функция перестановки и выбора последовательности B"(ключа)
57 |
49 |
41 |
33 |
25 |
17 |
9 |
1 |
58 |
50 |
42 |
34 |
26 |
18 |
10 |
2 |
59 |
51 |
43 |
35 |
27 |
19 |
11 |
3 |
60 |
52 |
44 |
36 |
63 |
55 |
47 |
39 |
31 |
23 |
15 |
7 |
62 |
54 |
46 |
38 |
30 |
22 |
14 |
6 |
61 |
53 |
45 |
37 |
29 |
21 |
13 |
5 |
28 |
20 |
12 |
4 |
Как видно из таблицы,
для генерации
"Функция сдвига Si"
Этап |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Число |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
Ключ K(i), определяемый на каждом шаге итерации, есть результат выбора определенных бит из 56-битовой последовательности C(i)D(i) и их перестановки. Другими словами, K(i) = K(C(i)D(i)), где функция K определяется данными, приведенными в таблице.
"Функция перестановки и выбора K"(перестановка со сжатием)
После сдвига выбирается 48 из 56. Так как при этом не только выбирается подмножество битов, но и изменяется их порядок, эта операция называется перестановка со сжатием. Её результатом является набор из 48 битов.
14 |
17 |
11 |
24 |
1 |
5 |
3 |
28 |
15 |
6 |
21 |
10 |
23 |
19 |
12 |
4 |
26 |
8 |
16 |
7 |
27 |
20 |
13 |
2 |
41 |
52 |
31 |
37 |
47 |
55 |
30 |
40 |
51 |
45 |
33 |
48 |
44 |
49 |
39 |
56 |
34 |
53 |
46 |
42 |
50 |
36 |
29 |
32 |
Как следует из таблицы первый бит K(i) - это бит 14 последовательности C(i)D(i), второй - бит 17, последний - бит 32.
Для разработки приложения “Шифратор” используется среда визуального программирования Delphi. Проект программы содержит два окна:
1. Form1 – Главное окно программы.
2. AboutBox – окно справки программы.
Для написания программы я использовал дополнительные компоненты “DynamicSkinForm”, которые были разработаны для создания более красочных приложений.
Интерфейс программы состоит из одного, главного окна. В верхней части находится поле в которое необходимо ввести пароль. Пароль обязательно должен состоять из 8 символов (особенность алгоритма DES).
В нижеследующем поле необходимо ввести текст сообщения которое необходимо зашифровать. Количество символов должно быть кратно 8, причем переход на новую строку считается как 2 символа. Для облегчения над полем ввода будет отображаться количество введенных символов. При вводе сообщения символы будут автоматически переводится в бинарный код. Это сделано для наглядности работы алгоритма.
Компонент Form1
Свойства:
Сaption – “Шифратор”;
Border – bsSingle;
BiSystemMenu – false;
1– компонент spSkinSpeedButton
Свойства:
Hint – Открыть;
События: открывает текстовый документ.
2- компонент spSkinSpeedButton
Свойства:
Hint – Сохранить;
События: сохраняет результат в виде текстового файла.
3- компонент spSkinSpeedButton
Свойства:
Hint – Очистить;
События: очищает текстовое поле.
4- компонент spSkinSpeedButton
Свойства:
Hint – Подтвердить;
События: шифрует и дешифрует сообщение.
5- компонент spSkinSpeedButton
Свойства:
Hint – О программе;
События: выводит сообщение о программе.
6 - spSkinComboBoxEx1
Font – Arial, 12, черный;
7-10 - компонент spSkinShadowLabel1
Font – Arial, 12, черный;
11 – компонент spSkinMemo1
Font – Arial, 12, черный;
12 – компонент spSkinMemo2
Font – Arial, 12, черный;
13 – компонент spSkinMemo3
Font – Arial, 12, синий;
14 – компонент spSkinMemo4
Font – Arial, 12, синий;
15 - компонент spSkinSaveDialog1
Title - Save file;
16 - компонент spSkinOpenPreviewDialog1
Title - Open file;
17 - компонент spSkinEdit1
Font – Arial, 12, черный;
18 - компонент spPNGImageList1
PNGHeight – 32;
19 - компонент spSkinImagesMenu1
SkinData - spSkinData1;
CompressedStoreSkin - spCompressedStoredSkin1;
20 – компонент spSkinData1
21 – компонент spCompressedStoredSkin1
CompressedFileName - office2007_Remix.skn;
22 – компонент spPngImageList2
PNGHeight – 64;
23 – компонент spPNGImageList3
PNGHeight – 128;
24 – компонент spDynamicSkinForm1
SkinData - spSkinData1;
SkinHint - spSkinHint1;
25 – компонент spSkinHint1
SkinData - spSkinData1;
Все исследования, которые проводились в предыдущей главе, касались только криптоалгоритмов, то есть методов преобразования небольшого блока данных (от 4 до 32 байт) в закодированный вид в зависимости от заданного двоичного ключа. Криптоалгоритмы несомненно являются "сердцем" криптографических систем, но их непосредственное применение без каких-либо модификаций для кодирования больших объемов данных на самом деле не очень приемлемо. Все недостатки непосредственного применения криптоалгоритмов устраняются в криптосистемах[24,25].
Криптосистема работает по определенной методологии (процедуре). Она состоит из :
Криптосистема – это завершенная комплексная модель, способная производить двусторонние криптопреобразования над данными произвольного объема и подтверждать время отправки сообщения, обладающая механизмом преобразования паролей и ключей и системой транспортного кодирования. Таким образом, криптосистема выполняет три основные функции:
Конкретная программная реализация криптосистемы называется криптопакетом.
Первая задача при шифровании данных криптоалгоритмом – это данные с длиной, неравной длине 1 блока криптоалгоритма. Эта ситуация будет иметь место практически всегда. Для решения этих проблем и были введены в криптосистемы алгоритмы создания цепочек (англ. chaining modes). Самый простой метод - это метод ECB (Electronic Code Book). Шифруемый файл временно разделяется на блоки, равные блокам алгоритма, каждый из них шифруется независимо, а затем из зашифрованных пакетов данных компонуется в той же последовательности файл, который отныне надежно защищен криптоалгоритмом. Название алгоритм получил из-за того, что в силу своей простоты он широко применялся в простых портативных устройствах для шифрования – электронных шифрокнижках. Схема данного метода приведена на рис.3.1.
.
В том случае, когда длина пересылаемого пакета информации не кратна длине блока криптоалгоритма возможно расширение последнего (неполного) блока байт до требуемой длины либо с помощью генератора псевдослучайных чисел, что не всегда безопасно в отношении криптостойкости, либо с помощью хеш-суммы передаваемого текста. Второй вариант более предпочтителен, так как хеш-сумма обладает лучшими статистическими показателями, а ее априорная известность стороннему лицу равносильна знанию им всего передаваемого текста.
Указанным выше недостатком этой схемы является то, что при повторе в исходном тексте одинаковых символов в течение более, чем 2*N байт (где N – размер блока криптоалгоритма), в выходном файле будут присутствовать одинаковые зашифрованные блоки. Поэтому, для более "мощной" защиты больших пакетов информации с помощью блочных шифров применяются несколько обратимых схем "создания цепочек". Все они почти равнозначны по криптостойкости, каждая имеет некоторые преимущества и недостатки, зависящие от вида исходного текста.
Все схемы создания цепочек основаны на идее зависимости результирующего зашифровываемого блока от предыдущих, либо от позиции его в исходном файле. Это достигается с помощью блока "памяти" – пакета информации длины, равной длине блока алгоритма. Блок памяти (к нему применяют термин IV – англ. Initial Vector) вычисляется по определенному принципу из всех прошедших шифрование блоков, а затем накладывается с помощью какой-либо обратимой функции (обычно XOR) на обрабатываемый текст на одной из стадий шифрования. В процессе раскодирования на приемной стороне операция создания IV повторяется на основе принятого и расшифрованного текста, вследствие чего алгоритмы создания цепочек полностью обратимы.
Два наиболее распространенных алгоритма создания цепочек – CBC и CFB. Их структура приведена на рис.3.2 и рис.3.3. Метод CBC получил название от английской аббревиатуры Cipher Block Chaining – объединение в цепочку блоков шифра, а метод CFB – от Cipher FeedBack – обратная связь по шифроблоку.
Еще один метод OFB (англ. Output FeedBack – обратная связь по выходу) имеет несколько иную структуру (она изображена на рис.3.4.) : в нем значение накладываемое на шифруемый блок не зависит от предыдущих блоков, а только от позиции шифруемого блока (в этом смысле он полностью соответствует скремблерам), и из-за этого он не распространяет помехи на последующие блоки. Очевидно, что все алгоритмы создания цепочек однозначно восстановимы.
Сравнительные характеристики методов создания цепочек приведены в виде таблицы в приложении 3.
Следующим усовершенствованием, направленным на повышение стойкости всей системы в целом является создание ключей сеанса. Эта операция необходима в тех случаях, когда производится частое шифрование сходных блоков данных одним и тем же ключом. Например, это имеет место при передаче информации или команд в автоматизированных системах управления, в банковских операциях и многих других случаях передачи информации, имеющей определенный заранее известный формат.
В этом случае необходимо введение какой-либо случайной величины в процесс шифрования. Это можно сделать несколькими способами:
записью в начало файла
данных псевдослучайной последовательн
Самая большая проблема всех методов рандомизации сообщений – это порождение действительно случайной последовательности бит. Дело в том, что в принципе существует конечное, а не бесконечное множество состояний ЭВМ, и, как бы сложно не формировалось в алгоритме число, оно все равно имеет относительно немного бит информационной насыщенности.