Организация криптозащищенного обмена информацией на основе протокола PGP

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ВВЕДЕНИЕ

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

Проблема использования криптографических методов в информационных системах (ИС) стала в настоящий момент особо актуальна, т.к. расширилось использование компьютерных сетей, в частности глобальной сети Internet, по которым передаются большие объемы информации государственного, военного, коммерческого и частного характера, не допускающего возможность доступа к ней посторонних лиц.

В первой главе рассмотрены два алгоритма шифрования — асимметричный (РЮКЗАЧНЫЙ) и симметричный (ANUBIS). Эти алгоритмы были разработаны в конце прошлого века. Первый из них широко используется в настоящий момент. Второй разрабатывался специально для участия в конкурсе NESSIE, и является аналогом нового стандарта шифрования США под названием AES.

Во второй главе подробно описаны и методы, используемые для получения зашифрованных сообщений и их расшифрования.

В третьей главе описывается программное средство, выполняющее шифрование сообщения и ключа и передачу их абоненту.

1. ПОДРОБНЫЙ ОБЗОР РЮЗКАЧНОГО АЛГОРИТМА И АЛГОРИТМА ANUBIS

1.1 Рюкзачный алгоритм

криптографический метод информационная система

Наиболее наглядным способом рассмотрения работы алгоритма является разбор примера его работы:

Этап вычисления ключей

b = (1, 4, 6, 14, 30) — супервозрастающая последовательность;

m = 60 — случайное число, большее, чем сумма bi, i = 1. 6;

w = 11 — случайное число, взаимно простое с m;

р = (2, 1, 5, 3, 4) — массив перестановок, выбирается произвольно (в данном случае элемент b2 — будет идти первым, b1 — вторым и т. д.). Введен для повышения криптостойкости алгоритма;

Открытый ключ вычисляется по формуле:

ai = w * bр(i) mod (m)

Получим:

a1 = 11 * 4 = 44;

a2 = 11 * 1 = 11;

a3 = 11 * 30 = 330 mod (60) = 30;

a4 = 11 * 6 = 66 mod (60) = 6;

a5 = 11 * 14 = 154 mod (60) = 34;

Открытый ключ:

a = (44, 11, 30, 6 34);

Закрытый ключ является совокупностью (р, w, m, b).

Пусть необходимо зашифровать последовательность

M = 1 011

С =? Mi ai = 11 + 6 + 34 = 51 — число, которое передается в канал.

Получатель, приняв сообщение, расшифровывает его:

H = w-1 * C mod (m);

w = 11; w -1 = 11;

H = 11 * 51 mod 60 = 21;

H =? zi bi;

H = _ * 1 + _ * 4 + _ * 6 + _ * 14 + _ * 30 = 21

Коэффициенты (0 или 1) восстанавливаются справа налево в соответствие с тем, входит ли число, для которого необходимо вычислить коэффициент в результат.

Вычислим коэффициенты:

Для 21:

21 < 30=> коэффициент 0:

H = _ * 1 + _ * 4 + _ * 6 + _ * 14 + 0 * 30 = 21

Для 14:

21 < 14 => коэффициент 1

Если число меньше результата (коэффициент равен 1), его необходимо вычесть из результата:

21- 14 = 7

H = _ * 1 + _ * 4 + _ * 6 + 1 * 14 + 0 * 30 = 7

Для 6:

7 > 6 => коэффициент 1;

7 — 6 = 1

H = _ * 1 + _ * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 1

Для 4:

1<4 => коэффициент 0;

H = 1 * 1 + 0 * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 1

Соответственно, для 1 коэффициент равен 1.

H = 1* 1 + 0 * 4 + 1 * 6 + 1 * 14 + 0 * 30 = 0

М = 0 1 0 1 1

Переставив восстановленные коэффициенты в соответствие с массивом перестановок, получим последовательность M = 1 011, которую необходимо было передать.

1.2 Алгоритм ANUBIS

Блочный шифр Anubis разработан специально для участия в конкурсе NESSIE интернациональным дуэтом авторов: бельгийцем Винсентом Рид-жменом и бразильцем Пауло Баррето (Paulo S. L. М. Barreto).

Алгоритм назван в честь древнеегипетского бога Анубиса-- бога бальзамирования (embalming) и погребения (entombment); к его ведению авторы алгоритма решили отнести и криптографию.

Anubis шифрует данные блоками по 128 битов с использованием ключа размером от 128 до 320 битов; размер ключа должен быть кратен 16 битам.

Данный алгоритм продолжает серию алгоритмов, соавтором которых является Винсент Риджмен: Square, SHARK и Rijndael. Все эти алгоритмы объединяет их относительно редко встречающаяся (напротив, частая среди алгоритмов-- участников конкурса NESSIE) структура типа «квадрат» и весьма схожий набор выполняемых преобразований.

Структура алгоритма

Алгоритм представляет блок шифруемых данных в виде 16-байтового массива, который для удобства описания представлен в виде квадрата размером 4Ч4 байта. В каждом раунде алгоритма выполняются следующие действия.

Рисунок 1. Операция г алгоритма Anubis

Табличная замена г (рисунок 1), выполняемая согласно таблице S (таблица 1, указаны шестнадцатеричные значения).

Таблица 1

Таблица шестнадцатеричных значений

А7

D3

Е6

71

DO

АС

4 D

79

ЗА

С9

91

FC

IE

47

54

BD

ЗС

А5

FB

63

ВЗ

DD

D4

Е5

ВЗ

05

BE

А9

33

ОС

А2

39

DF

29

DA

A3

СВ

40

22

АА

24

41

70

А 6

F9

Е 2

ВО

36

7D

Е4

33

FF

60

20

03

ЗВ

АВ

7 F

73

57

-D2

DC

6D

7 Е

0D

53

94

03

23

27

06

5 F

AD

67

50

55

43

ОЕ

52

ЕА

42

5 D

30

53

51

59

ЗС

33

ЗА

72

14

Е7

06

DE

50

ЗЕ

92

D1

77

93

45

9 А

СЕ

2D

03

62

В6

В9

BF

96

3F

07

12

АЕ

40

34

46

ЗЕ

DB

OF

ЕС

ОС

С1

А1

СО

D6

1D

F4

61

ЗВ

10

D3

63

АО

В1

OA

69

60

49

FA

76

04

9 В

99

02

В7

93

ВС

3F

35

IF

В4

F3

1 1

2 Е

00

25

1 С

3D

05

4F

7 В

В2

32

90

AF

19

A3

F7

73

9D

15

74

EE

OA

9F

OF

1 В

75

36

34

9C

4 A

97

1A

65

F6

ED

09

BB

26

33

EB

6 F

31

04

6 A

43

01

17

El

37

F5

3D

E3

23

30

44

16

66

21

FE

D5

31

D9

35

13

02

64

F2

F 1

56

CD

32

C3

BA

FO

FE

D5

31

D9

35

13

02

64

F2

F 1

56

CD

32

C3

BA

FO

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

S (S (x)) = x

1. Операция ф -- байтовая перестановка, простейшим образом

преобразующая строку обрабатываемого блока ключевой информации в столбец (рисунок 2):

bi,j=aj,i ,

где aj, i и bi, j -- байты массива данных до и после выполнения текущей операции соответственно.

Рисунок 2. Операция ф алгоритма Anubis

2. Операция и (рисунок 3), представляющая собой умножение массива на фиксированную матрицу Н (таблица 2). Умножение выполняется в конечном поле GF (28).

Таблица 2

Фиксированная матрица Н

1

2

4

6

2

1

6

4

4

6

1

2

6

4

2

1

3. Наложение ключа r-го раунда k[r] (процедура расширения ключа будет подробно описана далее); выполняется побитовой логической операцией «исключающее или» (XOR), применяемой к каждому биту массива данных и соответствующему биту k[r] (рисунок 3):

bi,j=aj,i + k[r] j,i

Эта операция обозначается как у.

Рисунок 3. Операция и алгоритма Anubis

Рисунок 4. Операция A алгоритма Anubis

Перечисленные операции выполняются в каждом раунде в указанной последовательности (г, р, и, у), за исключением последнего раунда алгоритма, в котором не выполняется операция и. Кроме того, перед первым раундом выполняется входное отбеливание данных путем наложения на шифруемый блок операцией XOR нулевого подключа.

Стоит отметить, что все перечисленные операции являются обратными самим себе, соответственно, расшифровывание выполняется с помощью тех же операций в том же порядке, что и при зашифровывании. Меняется только порядок использования подключай на обратный.

Число раундов алгоритма R зависит от размера ключа шифрования и определяется следующим образом:

R = 8 + N,

где N-- размер ключа в 16-битных фрагментах.

Некоторые криптоаналитики считают, что количество раундов в алгоритме Anubis несколько завышено, видимо, с целью обеспечить более высокий запас криптостойкости.

Процедура расширения ключа

Процедура расширения ключа достаточно проста и основана, практически, на той же последовательности операций, которые применяются в раундах алгоритма. Расширение ключа выполняется следующим образом: сначала исходный ключ шифрования К представляется в виде байтового массива 4Ч4 (что обозначается как А70), после чего в цикле выполняются следующие операции:

1. Итеративно вычисляются остальные промежуточные ключи KI1…KIR:

KIj = f (KIj-1),

где f () -- совокупность операций г, р, и и у; в операции у в качестве ключа раунда используется соответствующая из констант с[r], которые, в свою очередь, определяются следующим образом:

c[r]0,j=S (4 * (r — 1) + y)

для j = 0…3. Остальные байты c[r]i,j являются нулевыми.

Операция р -- циклический сдвиг столбцов таблицы вниз по следующему простому правилу: j -й столбец сдвигается на j позиций (рисунок 5).

Рисунок 5. Операция р алгоритма Anubis

2. На основе предварительных ключей вычисляются подключи k0…kR:

kn. g (KLn),

где функция g () представляет собой последовательное выполнение следующих операций: г, щ, ф.

Операции г и ф были описаны выше, а щ представляет собой умножение блока на фиксированную матрицу V (аналогично операции и -- рисунок 3), приведенную в таблице 3.

Таблица 3

Фиксированная матрица V

1

1

1

1

1

2

4

8

1

6

36

216

1

8

64

0

Стоит отметить, что при зашифровывании данных процедура расширения ключа позволяет вычислять ключи «на лету», т. е. по мере необходимости. Однако при расшифровывании необходимо полностью выполнить расширение ключа до начала преобразований.

Достоинства и недостатки алгоритма

Прежде всего, стоит сказать, что на конкурсе NESSIE была рассмотрена несколько модифицированная версия алгоритма Anubis, отличие которой от описанной здесь состояло лишь в операции у. Модифицированная операция у вместо одной табличной замены 8Ч8 битов выполняла 3 уровня табличных замен 4Ч4. Данная модификация произведена для упрощения аппаратной реализации алгоритма.

Anubis был признан одним из наиболее быстродействующих алгоритмов шифрования (из участников конкурса). Еще одно явное достоинство алгоритма-- отсутствие проблем с криптостойкостью. Однако злую шутку с алгоритмом Anubis сыграло его сходство с алгоритмом Rijndael (который, как известно, является новым стандартом шифрования США под названием AES), который также рассматривался в рамках конкурса NESSIE. Эксперты конкурса посчитали, что при таком явном сходстве Anubis не может иметь настолько серьезных преимуществ перед алгоритмом Rijndael, которые позволили бы ему выиграть у Rijndael в финале конкурса NESSIE. Поэтому Anubis не был выбран во второй этап конкурса [2].

2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЮКЗАЧНОГО АЛГОРИТМА И АЛГОРИТМА ANUBIS

Выбор языка программирования.

Для создания программного средства использовался язык C# в среде Visual Studio 2005. Эта среда выбрана мной, потому что я ее использую на протяжении нескольких лет, и в этой среде есть все необходимое для реализации поставленной задачи. Данная среда широко и бесплатно распространена и удобна для работы с формами. Также есть методы, облегчающие архивирование и разархивирование данных.

Используемые модули.

В данном программном средстве был использован класс GZip для архивирования и разархивирования файлов. Также был написан модуль асимметричного и симметричного шифрования Form1. cs, осуществляющий шифрование и дешифрование данных. Основные процедуры и функции модуля Form1. cs:

— Асимметричное шифрование:

— public void GenPosl (ref int[] bb, int x, ref int ww, ref int mm, ref int rrr). Генерация супервозрастающей последовательности bb по начальному значению x. Результат выполнения — массив, содержащий супервозрастающую последовательность;

— public bool fileRanecCode (string fname, string newfname). Шифрование файла fname. Результат выполнения — зашифрованный файл;

— public bool fileRanecDecode (string fname, string newfname) Расшифровка файла. Результат выполнения — расшифрованный файл;

— Симметричное шифрование:

— private bool WriteToFileS (string fname, byte[][] m). Запись массива S симметричного алгоритма в файл;

— private bool ReadFromFileS (string fname, ref byte[][] m). Чтение массива S симметричного алгоритма из файла;

— private void OperationR (ref byte[][] x). Выполнение операции R (транспонирование матрицы) алгоритма;

— private void OperationQ (ref byte[][] x). Выполнение операции Q (умножение исходной матрицы на фиксированную матрицу H) алгоритма;

— private void OperationU (byte[][] keyY, ref byte[][] x). Выполнение операции U (XOR) алгоритма;

— private void GetSubkey (string key, int n, ref byte[][] keyY). Выделение подключа раунда.

— private void CodeFile (string fname, string newfname, string key). Кодирование файла с использованием ключа key. Результат выполнения — зашифрованный файл;

— private void DeCodeFile (string fname, string newfname, string key). Декодирование файла с использованием ключа key. Результат выполнения — расшифрованный файл.

Рисунок 6. Общая схема работы программного средства

Пример работы программы.

Пусть необходимо зашифровать файл cat. jpg.

Рисунок 7 — Просмотр исходного файла cat. jpg

Для этого пользователь в поле «Исходный файл» вводит cat. jpg, а в строке «Ключ» вводит произвольное число символов ключа.

Рисунок 8. Пример заполнения полей

После произведенных операций необходимо нажать кнопку «Отправить». Результатом данных операций служит создание в папке программы файлов:

— key. txt — файл, содержащий «чистый» ключ алгоритма Anubis;

— key. txt. code. txt — файл, содержащий ключ алгоритма Anubis, закодированный рюкзачным методом;

— cat. jpg. gz — заархивированный файл;

— cat. jpg. gz. transfer — заархивированный файл, прошедший кодирование алгоритмом Anubis.

При получении сообщения, необходимо нажать кнопку «Получить», после этого в папке с программой появятся файлы:

— cat. jpg. res. gz — файл после декодирования алгоритмом Anubis;

— key. txt. res. txt — файл, содержащий ключ алгоритма Anubis, декодированный рюкзачным методом;

— cat. jpg. res. jpg — исходный файл, декодированный алгоритмом Anubis.

В целях контроля качества работы программы, откроем файл, прошедший декодирование:

Рисунок 9. Просмотр декодированного файла

Как видно из примера, полученное изображение не отличается от исходного, следовательно, можно сделать вывод о том, что программа успешно справляется с возложенными на нее задачами.

ЗАКЛЮЧЕНИЕ

В данной работе были изучены рюкзачный алгоритм (асимметричный) и симметричный алгоритм шифрования Anubis. Рассмотрены математические принципы, лежащие в основе каждого. Алгоритм Anubis основан на перестановках с использованием таблиц, а рюкзачный алгоритм — на выборе взаимно простых чисел и генерации супервозрастающей последовательности. Итогом данной работы является разработанное программное средство, использующее оба алгоритма для безопасной передачи информации.

Разработанное программное средство предназначено для использования скрытия передаваемого сообщения, передаваемого по сети. Так же возможна процедура кодирования с последующей передачей информации иным способом.

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

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ:

1. Современная криптография [Электронный ресурс] URL: http: //www. roman. by/r-93 563. html.

2. Блог о шифровании [Электронный ресурс] URL: http: //crypto. pp. ua/2010/04/algoritm-anubis/

3. Панасенко С. П. «Алгоритмы шифрования», Санкт-Петербург: Изд-во БХВ- Петербург, 2009 УДК 681.3. 06

ПоказатьСвернуть
Заполнить форму текущей работой