Рефераты. Защита информационной системы криптографическими алгоритмами

Алгоритм программы R CRYPTO состоит из следующих основных процедур: шифрование, расшифровка, проверка электронной цифровой подписи.

Алгоритм решения задачи может быть представлен в виде словесного описания или графически - в виде блок-схемы. Для разработки структуры программы удобно пользоваться записью алгоритма в виде блок-схемы (в англоязычной литературе используется термин flowchart). Для изображения основных алгоритмических структур и блоков на блок-схемах используют специальные графические символы. Они приведены на рисунке 2.2.

Рисунок 2.2 Обозначения, используемые в блок-схемах алгоритмов

Представление алгоритма в виде блок-схемы позволяет программисту уяснить последовательность действий, которые должны быть выполнены для решения задачи, убедиться в правильности понимания поставленной задачи. При программировании в среде C++ BUILDER 6 алгоритм решения задачи представляет собой совокупность алгоритмов процедур обработки событий. Блок-схема алгоритма программы приведена в приложении В.

2.6 Математическая модель программы R CRYPTO

Математическая модель программы R CRYPTO представляет собой набор математических и алгоритмических преобразований, производимых над данными, для достижения поставленной цели. Основной функцией является функция шифрования. Схему работы алгоритма шифрования можно описать функциями Z = EnCrypt (X, Key) и X = DeCrypt (Z, Key). Для преобразований алгоритм шифрования использует определенный набор биективных (обратимых) математических функций. В качестве биективной функции используется функция сложения. Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Key получается на основе пароля, введенного пользователем. Криптоалгоритм является идеально стойким, если прочесть зашифрованный блок данных можно только перебрав все возможные ключи, до тех пор, пока сообщение не окажется осмысленным. Так как по теории вероятности искомый ключ будет найден с вероятностью 1 / 2 после перебора половины всех ключей, то на взлом идеально стойкого криптоалгоритма с ключом длины N потребуется в среднем 2N-1 проверок. Таким образом, в общем случае стойкость блочного шифра зависит только от длины ключа и возрастает экспоненциально с ее ростом. Кроме этого условия к идеально стойким криптоалгоритмам применяется еще одно очень важное требование, которому они должны обязательно соответствовать. При известных исходном и зашифрованном значениях блока ключ, которым произведено это преобразование, можно узнать также только полным перебором. Ситуации, в которых постороннему наблюдателю известна часть исходного текста, встречаются повсеместно. Это могут быть стандартные надписи в электронных бланках, фиксированные заголовки форматов файлов, довольно часто встречающиеся в тексте длинные слова или последовательности байт. В свете этой проблемы описанное выше требование не является ничем чрезмерным и также строго выполняется стойкими криптоалгоритмами, как и первое.

Таким образом, на функцию стойкого блочного шифра Z = EnCrypt (X, Key) накладываются следующие условия:

1. Функция EnCrypt должна быть обратимой.

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

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

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

1. Во-первых, осуществляется хеширование пароля. Хеширование выполняет несколько функций. Для того чтобы не заставлять пользователя запоминать ключ - длинную последовательность цифр, был разработан метод преобразования строки символов любой длины (так называемого пароля) в блок байт заранее заданного размера (ключ). Для этой операции используется так называемая хеш-функция. Хеш-функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами:

- Хеш-функция имеет бесконечную область определения,

- Хеш-функция имеет конечную область значений,

- Она необратима,

- Изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш-функции.

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

В программе R CRYPTO хеширование пароля осуществляется следующим образом:

Сначала пароль, введенный пользователем, преобразуется в массив байт P [1 .. X].

Где P [1 .. X] - коды символов введенного пользователем пароля (кодировка ANSI - Windows-1251). Фрагмент таблицы символов ANSI представлен в таблице 2.1.

X - длина пароля (в символах).

Таблица 2.1 Фрагмент таблицы символов ANSI (Windows-1251)

Код символа

Символ

Код символа

Символ

Код символа

Символ

32

58

:

123

[

33

!

59

;

124

|

34

"

60

<

125

]

35

#

61

=

126

~

36

$

62

>

127

37

%

63

?

192

А

38

&

64

@

39

`

65

A

223

Я

40

(

224

а

41

)

90

Z

42

*

91

[

255

я

43

+

92

\

44

,

93

]

45

-

94

^

46

.

95

_

47

/

96

`

48

0

97

a

57

9

122

z

Затем на основании пароля получается ключ:

K [1 .. 255] - ключ.

K [i] = (P [1] + P [2] + … + P [n]) + P [i], где i = 1 .. X (2.1)

Если X < 255, тогда производятся следующие преобразования:

K [X + 1 .. 255] = 114 (2.2)

114 - код символа «r»

Z = K [1] (2.3)

Если K [i] = Z,

то K [i] = K [i - 1] + Z, (2.4)

иначе Z = K [i], где i = 2 .. 255 (2.5)

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

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.