Алгоритмы шифрования какие есть. Алгоритмы шифрования данных

Среди разнообразнейших способов шифровании можно выделить следующие основные методы:

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

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

Алгоритмы гаммирования - символы исходного текста складываются с символами некой случайной последовательности. Самым распространенным примером считается шифрование файлов «имя пользователя.рwl», в которых операционная система Microsoft Windows 95 хранит пароли к сетевым ресурсам данного пользователя (пароли на вход в NT-серверы, пароли для DialUр-доступа в Интернет и т.д.). Когда пользователь вводит свой пароль при входе в Windows 95, из него по алгоритму шифрования RC4 генерируется гамма (всегда одна и та же), применяемая для шифрования сетевых паролей. Простота подбора пароля обусловливается в данном случае тем, что Windows всегда предпочитает одну и ту же гамму.

Алгоритмы, основанные на сложных математических преобразованиях исходного текста по некоторой формуле. Многие из них используют нерешенные математические задачи. Например, широко используемый в Интернете алгоритм шифрования RSA основан на свойствах простых чисел.

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

Алгоритмы шифрования

Рассмотрим подробнее методы криптографической защиты данных

1. Алгоритмы замены(подстановки)

2. Алгоритм перестановки

3. Алгоритм гаммирования

4. Алгоритмы, основанные на сложных математических преобразованиях

5. Комбинированные методы шифрования

Алгоритмы 1-4 в «чистом виде» использовались раньше, а в наши дни они заложены практически в любой, даже самой сложной программе шифрования. Каждый из рассмотренных методов реализует собственный способ криптографической защиты информации и имеет собственные достоинства и недостатки, но их общей важнейшей характеристикой является стойкость. Под этим понимается минимальный объем зашифрованного текста, статистическим анализом которого можно вскрыть исходный текст. Таким образом, по стойкости шифра можно определить предельно допустимый объем информации, зашифрованной при использовании одного ключа. При выборе криптографического алгоритма для использования в конкретной разработке его стойкость является одним из определяющих факторов.

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

Приведу оценки стойкости рассмотренных выше методов шифрования. Моноалфавитная подстановка является наименее стойким шифром, так как при ее использовании сохраняются все статистические закономерности исходного текста. Уже при длине в 20-30 символов указанные закономерности проявляются в такой степени, что, как правило, позволяет вскрыть исходный текст. Поэтому такое шифрование считается пригодным только для закрывания паролей, коротких сигнальных сообщений и отдельных знаков.

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

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

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

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

Алгоритм DES был утвержден еще долее 20 лет назад, однако за это время компьютеры сделали немыслимый скачок в скорости вычислений, и сейчас не так уж трудно сломать этот алгоритм путем полного перебора всех возможных вариантов ключей (а в DES используется всего 8-байтный),что недавно казалось совершенно невозможным.

ГОСТ 28147-89 был разработан еще спецслужбами Советского Союза, и он моложе DES всего на 10 лет; при разработке в него был заложен такой запас прочности, что данный ГОСТ является актуальным до сих пор.

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

Заключение

Итак, в этой работе был сделан обзор наиболее распространенных в настоящее время методов криптографической защиты информации и способов ее реализации. Выбор для конкретных систем должен быть основан на глубоком анализе слабых и сильных сторон тех или иных методов защиты. Обоснованный выбор той или иной системы защиты в общем-то должен опираться на какие-то критерии эффективности. К сожалению, до сих пор не разработаны подходящие методики оценки эффективности криптографических систем.

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

· невозможность раскрытия или осмысленной модификации информации на основе анализа ее структуры,

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

· минимальный объем используемой ключевой информации,

· минимальная сложность реализации (в количестве машинных операций), ее стоимость,

· высокая оперативность.

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


Практическая часть:

Задание 1.

1) Заполняем поле X выполнив

1.1 Задаем вручную первое значение

1.2 Выполняем Правка->Заполнить->

2) Заполняем поле значений функции g =

Рис.1.1 – Формула функции g(x)

2.1) Просчитываем значения функций

3) Построение графиков

3.1) Выделяем ячейки с значениями Функций g

3.2) Выбираем мастер диаграмм

Рис.1.2 – Мастер диаграмм - График

Далее ->ряд

Рис.1.3 – Мастер диаграмм – подпись осей

Выделяем значение оси X

Нажимаем Ввод (enter)

3.3) Даем имена графикам

3.4) Выделяем ячейку с формулой графика

3.6) Выбираем закладку ->Линии сетки, выставляем

X промежуточные линии, Y Основные линии ->Далее

3.7) Помещаем график функции на имеющемся листе -> (Готово)

4) В итоге получаем (Рис.1.4)

Рис.1.4 – График функции g(x)

1.2.

1) Определяем в полях таблицы функции будущих графиков

Рис.1.5 – Подпись функций будущих графиков

2) Заполняем поле X выполнив:

2.1 Задаем вручную первое значение

2.2 Выполняем Правка->Заполнить->Прогрессия (по столбцам, арифметическая, шаг, предельное значение) при х [-2;2]

3) Просчитываем значения функций y=2sin( x) – 3cos( x), z = cos²(2 x) – 2sin( x).


Рис.1.6 – Формулы функций y(x) и z(x)

4) Построение графиков

4.1Выделяем ячейки с значениями Функций y и z

Выбираем мастер диаграмм

Рис.1.7 - Мастер диаграмм - График

Выделяем значение оси X

Нажимаем Ввод (enter)

4.2) Даем имена графикам

4.3) Выделяем ячейку с формулой графика

Нажимаем ввод (enter) , потом тоже самое проделываем со вторым рядом

4.5) Выбираем закладку ->Линии сетки, выставляем

X промежуточные линии, Y Основные линии ->Далее

4.6) Помещаем график функции на имеющемся листе -> (Готово)

5) В итоге получаем (Рис.1.8)

Рис.1.8 – Графики функций y(x) и z(x)

Задание 2.

· Создание списка «Отдела кадров»

Рис.2.1 Список «Отдела кадров»

· Сортировка

Рис.2.2 – Сортировка по полю Имя

В итоге получаем (Рис.2.3)

Рис.2.3 – Отсортированная таблица «Отдел кадров»

·
Поиск информации с помощью автофильтра (получить информацию о мужчинах, имя которых начинается на букву Буква, отчество – «Иванович», с окладом Оклад );

Рис.2.4 - Автофильтр

· Поиск информации с помощью расширенного фильтра (найти информацию из отдела Отдел1 в возрасте Возраст1 и Возраст2 , и о женщинах из отдела Отдел2 в возрасте Возраст3 );

1) Вводим критерии для расширенного фильтра 1

В итоге получаем (Рис.2.5)

Рис.2.5 – Расширенный фильтр 1

2) Вводим критерии для расширенного фильтра 2.

В итоге получаем(Рис.2.6)

Рис.2.6 – Расширенный фильтр 2

· Подведение итогов (определить количество и средний возраст сотрудников в каждом отделе);

Рис.2.7 - Итоги

Функция ДМИН- Возвращает наименьшее число в поле (столбце) записей списка или базы данных, которое удовлетворяет заданным условиям.

Рис.2.8 – Анализ списка с помощью функции ДМИН

Задание 3.

Создаём две связанные таблицы Сессия (рис.3.2) и Студенты (рис.3.4)

Рис.3.1- Конструктор таблицы Сессия

Рис.3.2- Таблица Сессия

Рис.3.3 – Конструктор таблицы Студенты


Рис.3.4 – Таблица Студенты

1) Используя таблицу Студенты, создать три запроса, по которым из базы данных будут поочередно отобраны фамилии и имена студентов групп 1-Э-1, 1-Э-2, 1-Э-3.

Рис.3.5– Конструктор Запроса 1.1


Рис.3.7– Конструктор Запроса1.2

Рис.3.9– Конструктор Запроса 1.3

2) Используя таблицу Студенты, создать два запроса, по которым из базы данных будут поочередно отобраны фамилии и имена женщин, а затем фамилии и имена мужчин.

Рис.3.11– Конструктор Запроса 2.1

Рис.3.13 – Конструктор Запроса 2.2

3)Использую таблицу Студенты, создать два запроса, по которым из базы данных будут поочередно отобраны фамилии и имена женщин группы 1-Э-2, а затем-мужчин группы 1-Э-1.

Рис.3.15– Конструктор Запроса 3.1

Рис.3.17– Конструктор – 3.2

4) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток и оценки по математике студентов группы 1-Э-2.

Рис.3.19– Конструктор Запроса 5

5) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток и оценки по философии студентов (мужчин) группы 1-Э-2.

Рис.3.21– Конструктор Запроса 8

6) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток студентов, получивших оценку «удовлетворительно» (3) по философии.

Рис.3.23– Конструктор Запроса 10

7) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток студентов, получивших оценку «хорошо» (4) одновременно по двум предмета: философии и математике.

Рис.3.25– Конструктор Запроса 14

8) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток студентов, получивших оценку «неудовлетворительно» (2) по одному из двух предметов: по математике или информатике.

Рис.3.27– Конструктор Запроса 18

9) Используя связанные таблицы Студенты и Сессия, создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток студентов, получивших оценку «хорошо» (4) по всем предметам.

Рис.3.29– Конструктор Запроса 22

10) Используя таблицу Сессия, создать запрос с именем Средний балл для расчёта среднего балла каждого студента по результатам сдачи четырёх экзаменов. Запрос обязательно должен содержать поле Зачётка , которое впоследствии будет использовано для связывания нескольких таблиц.

Рис.3.31 – Конструктор таблицы Сессия

11) Используя связанные таблицы Студенты , Сессия и запрос Средний балл , создать запрос, по которому из базы данных будут отобраны фамилии, имена, номера зачёток, номера групп студентов, имеющих средний балл 3,25.

Рис.3.33 – Конструктор Запроса 25

12) Используя связанные таблицы Студенты , Сессия и запрос Средний балл , создать запрос, по которому из базы данных будут отобраны оценка по математике, средний балл и номер группы студента Иванова.

Рис.3.35– Конструктор Запроса 29

13) Используя связанные таблицы Студенты , Сессия и запрос Средний балл , создать запрос, по которому из базы данных будут отобраны фамилии, имена студентов имеющих средний балл менее 3,75.

Рис.3.37– Конструктор Запроса 33

14) Используя таблицу Студенты , определить фамилию, имя и номер зачетки студентки, если известно, что её отчество Викторовна.

Рис.3.39– Конструктор Запроса 35

Задание 4.

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

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

б) Для перевода дробной части числа ее умножают на основание системы счисления, фиксируя при этом целые части полученных произведений. Целые части в дальнейшем умножении не участвуют. Умножение производиться до получения 0 в дробной части произведения или до заданной точности вычисления.

в) Ответ записывают в виде сложения переведенной целой и переведенной дробной части числа.

49812,22₁₀ = 1100001010010100,001₂ 49812,22₁₀ = 141224,160₈

0,
0,

49812,22₁₀ = С294, 385₁₆

0,

Задание 5.

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

А) 10101001,11001₂ = 1*2^7+1*2^5+1*2^3+1*2^0+1*2^(-1)+1*2^(-2)+1*2(-5)= 169,78125₁₀

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

Таблица 5.1 – Перевод чисел

Десятичная система счисления Двоичная система счисления Восьмеричная система счисления Шестнадцатеричная система счисления
Триады (0-7) Тетрады (0-15)
A
B
C
D
E
F

Б) 674,7₈ = 110111100,111₂=1*2^2+1*2^3+1*2^4+1*2^5+1*2^7+1*2^8+1*2^(-1) +1*2^(-2) +1*2^(-3)= 443,875₁₀

110 111 100. 111₂

В) EDF,51₁₆ = 111011011111,01010001₂=1*2^0+1*2^1+1*2^2+1*2^3+1*2^4+1*2^6+ +1*2^7+1*2^9+ +1*2^10+1*2^11+1*2^(-2) 1*2^(-4) 1*2^(-8)= 3807,31640625₁₀

1110 1101 1111 . 0101 0001₂

Задание 6.

В основе сложения чисел в двоичной системе лежит таблица сложения одноразрядных двоичных чисел.

0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
Сложение многоразрядных двоичных чисел осуществляется в соответствии с этой таблицей с учетом возможных переносов из младшего разряда в старшие. В восьмеричной системе счисления, как и в любой другой позиционной, действуют собственные правила сложения чисел, представляющиеся правилами сложения цифр с равными порядками, относящихся к двум складываемым числам. Эти правила видны из табл.6.1. Появляющийся при сложении некоторых цифр данного разряда перенос, показан символом "↶".
Таблица 6.1 - Сложение в 8–ой системе счисления
+
↶0
↶0 ↶1
↶0 ↶1 ↶2
↶0 ↶1 ↶2 ↶3
↶0 ↶1 ↶2 ↶3 ↶4
↶0 ↶1 ↶2 ↶3 ↶4 ↶5
↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6

Правила сложения цифр двух шестнадцатеричных чисел, находящихся в одинаковых разрядах этих чисел, можно видеть из табл.6.2. Имеющий место при сложении некоторых цифр данного разряда перенос показан символом "↶".

6 8 5 , 3 2 2 A ₁₆ + 1 0 1 0 1 0 0 1 0 , 1 0 ₂ + 4 7 7 , 6₈

D A 4 8 5 , 4 4 6 0 ₁₆ 1 1 0 0 0 0 1 1 0 , 1 1 0 1 0₂6 5 1 , 5 6₈

D A B 0 A , 7 6 8 A₁₆ 1 0 1 1 0 1 1 0 0 1 , 0 1 0 1 0₂ 1 3 5 1 ,3 6₈

Таблица 6.2 - Сложение в 16-ой системе счисления

+ A B C D E F
A B C D E F
A B C D E F ↶0
A B C D E F ↶0 ↶1
A B C D E F ↶0 ↶1 ↶2
A B C D E F ↶0 ↶1 ↶2 ↶3
A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4
A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5
A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6
A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7
A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8
A A B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9
B B C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9 ↶A
C C D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9 ↶A ↶B
D D E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9 ↶A ↶B ↶C
E E F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9 ↶A ↶B ↶C ↶D
F F ↶0 ↶1 ↶2 ↶3 ↶4 ↶5 ↶6 ↶7 ↶8 ↶9 ↶A ↶B ↶C ↶D ↶E

Задание 7.

Используя таблицу сложения восьмеричных чисел, можно выполнять их вычитание. Пусть требуется вычислить разность двух восьмеричных чисел. Найдём в первом столбце табл. 6.1 цифру, соответствующую последней в вычитаемом, и в её строке отыщем последнюю цифру уменьшаемого - она расположена на пересечении строки вычитаемого и столбца разности. Так мы найдём последнюю цифру разности. Аналогично ищется каждая цифра разности.

а) _ 2 5 1 5 1 4 , 4 0₈

5 4 2 5 , 5 5

2 4 3 0 6 6 , 6 3₈

б) _1 0 1 1 0 1 1 0 0 0 , 1 0 0 0 0₂

1 0 1 0 0 1 0 0 1 , 1 0 0 1 1

1 0 1 1 0 0 1 0 0 1 1 , 0 0 0 0 1₂

в) _E 3 1 6 , 2 5 0₁₆

5 8 8 1 , F D C₁₆

8 А 9 4 , 2 7 4

Задание 8.

В основе умножения чисел в двоичной системе лежит таблица умножения одноразрядных двоичных чисел.

0 · 0 = 0
0 · 1 = 0
1 · 0 = 0
1 · 1 = 1

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

Собственная таблица умножения, как у нас уже была возможность убедиться, имеется в каждой позиционной системе счисления. В двоичной она самая маленькая, в восьмеричной (табл.8.1) и десятичной уже более обширная. Среди часто используемых систем счисления из рассмотренных нами самой крупной таблицей умножения располагает шестнадцатеричная (табл. 8.2).

Табл. 8.1. – Умножение в 8-ой системе

×

а) 1 0 1 0 0 1₂

* 1 1 1 0 1 1

1 0 1 0 0 1 .

1 0 0 1 0 1 1 1 0 0 1 1₂

б) 1 0 1 1 1 0 0₂

* 1 1 0 1 1

1 0 1 1 1 0 0 .

1 0 0 1 1 0 1 1 0 1 0 0₂

в) B C D , 5₁₆

* D5A ₁₆

9 D 9 3 3 E 2₁₆


Табл.8.2 – Умножение в 16-ой системе

× A B C D E F
A B C D E F
A C E 1A 1C 1E
C F 1B 1E 2A 2D
C 1C 2C 3C
A F 1E 2D 3C 4B
C 1E 2A 3C 4E 5A
E 1C 2A 3F 4D 5B
1B 2D 3F 5A 6C 7E
A A 1E 3C 5A 6E 8C
B B 2C 4D 6E 8F 9A A5
C C 3C 6C 9C A8 B4
D D 1A 4E 5B 8F 9C A9 B6 C3
E E 1C 2A 7E 8C 9A A8 B6 C4 D2
F F 1E 2D 3C 4B 5A A5 B4 C3 D2 E1

Задание 9.

Прямой код - способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике. При записи числа в прямом коде старший разряд является знаковым разрядом . Если его значение равно 0 - то число положительное, если 1 - то отрицательное.

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

Дополнительный код (англ. two’s complement , иногда twos-complement ) - наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. При записи числа для положительного числа совпадает с прямым кодом, а для отрицательного числа дополнительный код обуславливается получением обратного кода и добавлением 1.

Сложение чисел в дополнительном коде возникающая 1 переноса в знаковом разряде отбрасывается, а в обратном коде прибавляется к младшему разряду суммы кодов.

Если результат арифметических действий является кодом отрицательного числа необходимо преобразовать в прямой код. Обратный код преобразовать в прямой заменой цифр во всех разрядах кроме знакового на противоположных. Дополнительный код преобразовывается в прямой прибавлением 1.

Прямой код:

X=0,10111 1,11110

Y=1,11110 0,10111

Обратный код:

X=0,10111 0,10111

Y=1,00001 1,00001

1,11000 1,00111

Дополнительный код:

X=0,10111 0,10111

Y=1,00010 1,00010

1,11001 1,00110

Прямой код:

Обратный код:

X=0,110110 0,0110110

Y=0,101110 0,0101110

Дополнительный код:

X=0,110110 0,0110110

Y=0,101110 0,0101110

Задание 10.

Логические элементы

1. Логический элемент НЕ выполняет логическое отрицание. Он имеет один вход и один выход. Отсутствие сигнала (напряжения) обозначим через «0», а наличие сигнала через «1». Сигнал на выходе всегда противоположен входному сигналу. Это видно из таблицы истинности, которая показывает зависимость выходного сигнала от входного.

2. Логический элемент ИЛИ выполняет логическое сложение. Он имеет несколько входов и один выход. Сигнал на выходе будет, если есть сигнал хотя бы на одном входе.

Условное обозначение Таблица истинности

3. Логический элемент И выполняет логическое умножение. Сигнал на выходе этого логического элемента будет только в том случае, если есть сигнал на всех входах.

Условное обозначение Таблица истинности

F=(A v B) ʌ (C v D)

Таблица 10.1 – Таблица истинности

A B C D A B C D (A v B) (C vD) F=(A v B) ʌ (C v D)

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

1. Закон двойного отрицания: (А) = А

Двойное отрицание исключает отрицание.

2. Переместительный (коммутативный) закон:

Для логического сложения: A V B = B V A

Для логического умножения: A&B = B&A

Результат операции над высказываниями не зависит от того, в каком порядке берутся эти высказывания.

3. Сочетательный (ассоциативный) закон:

Для логического сложения: (A v B) v C = A v (Bv C);

Для логического умножения: (A&B)&C = A&(B&C).

При одинаковых знаках скобки можно ставить произвольно или вообще опускать.

4. Распределительный (дистрибутивный) закон:

Для логического сложения: (A v B)&C = (A&C)v(B&C);

Для логического умножения: (A&B) v C = (A v C)&(B v C).

Определяет правило выноса общего высказывания за скобку.

5. Закон общей инверсии (законы де Моргана):

Для логического сложения: (Av B) = A & B;

Для логического умножения: (A& B) = A v B;

6. Закон идемпотентности

Для логического сложения: A v A = A;

Для логического умножения: A&A = A.

Закон означает отсутствие показателей степени.

7. Законы исключения констант:

Для логического сложения: A v 1 = 1, A v 0 = A;

Для логического умножения: A&1 = A, A&0 = 0.

8. Закон противоречия: A& A = 0.

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

9. Закон исключения третьего: A v A = 1.

10. Закон поглощения:

Для логического сложения: A v (A&B) = A;

Для логического умножения: A&(A v B) = A.

11. Закон исключения (склеивания):

Для логического сложения: (A&B) v (A &B) = B;

Для логического умножения: (A v B)&(A v B) = B.

12. Закон контрапозиции (правило перевертывания):

(A v B) = (Bv A).

(А→В) = А&В

А&(АvВ)= А&В

Формула имеет нормальную форму, если в ней отсутствуют знаки эквивалентности, импликации, двойного от­рицания, при этом знаки отрицания находятся только при переменных.


Похожая информация.


Сергей Панасенко ,
начальник отдела разработки программного обеспечения фирмы «Анкад»,
[email protected]

Основные понятия

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

С = Ek1(M)

M" = Dk2(C),

где M (message) - открытая информация (в литературе по защите информации часто носит название "исходный текст");
C (cipher text) - полученный в результате зашифрования шифртекст (или криптограмма);
E (encryption) - функция зашифрования, выполняющая криптографические преобразования над исходным текстом;
k1 (key) - параметр функции E, называемый ключом зашифрования;
M" - информация, полученная в результате расшифрования;
D (decryption) - функция расшифрования, выполняющая обратные зашифрованию криптографические преобразования над шифртекстом;
k2 - ключ, с помощью которого выполняется расшифрование информации.

Понятие "ключ" в стандарте ГОСТ 28147-89 (алгоритм симметричного шифрования) определено следующим образом: "конкретное секретное состояние некоторых параметров алгоритма криптографического преобразования, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований". Иными словами, ключ представляет собой уникальный элемент, с помощью которого можно изменять результаты работы алгоритма шифрования: один и тот же исходный текст при использовании различных ключей будет зашифрован по-разному.

Для того, чтобы результат расшифрования совпал с исходным сообщением (т. е. чтобы M" = M), необходимо одновременное выполнение двух условий. Во-первых, функция расшифрования D должна соответствовать функции зашифрования E. Во-вторых, ключ расшифрования k2 должен соответствовать ключу зашифрования k1.

Если для зашифрования использовался криптостойкий алгоритм шифрования, то при отсутствии правильного ключа k2 получить M" = M невозможно. Криптостойкость - основная характеристика алгоритмов шифрования и указывает прежде всего на степень сложности получения исходного текста из зашифрованного без ключа k2.

Алгоритмы шифрования можно разделить на две категории: симметричного и асимметричного шифрования. Для первых соотношение ключей зашифрования и расшифрования определяется как k1 = k2 = k (т. е. функции E и D используют один и тот же ключ шифрования). При асимметричном шифровании ключ зашифрования k1 вычисляется по ключу k2 таким образом, что обратное преобразование невозможно, например, по формуле k1 = ak2 mod p (a и p - параметры используемого алгоритма).

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

Свою историю алгоритмы симметричного шифрования ведут с древности: именно этим способом сокрытия информации пользовался римский император Гай Юлий Цезарь в I веке до н. э., а изобретенный им алгоритм известен как "криптосистема Цезаря".

В настоящее время наиболее известен алгоритм симметричного шифрования DES (Data Encryption Standard), разработанный в 1977 г. До недавнего времени он был "стандартом США", поскольку правительство этой страны рекомендовало применять его для реализации различных систем шифрования данных. Несмотря на то, что изначально DES планировалось использовать не более 10-15 лет, попытки его замены начались только в 1997 г.

Мы не будем рассматривать DES подробно (почти во всех книгах из списка дополнительных материалов есть его подробнейшее описание), а обратимся к более современным алгоритмам шифрования. Стоит только отметить, что основная причина изменения стандарта шифрования - его относительно слабая криптостойкость, причина которой в том, что длина ключа DES составляет всего 56 значащих бит. Известно, что любой криптостойкий алгоритм можно взломать, перебрав все возможные варианты ключей шифрования (так называемый метод грубой силы - brute force attack). Легко подсчитать, что кластер из 1 млн процессоров, каждый из которых вычисляет 1 млн ключей в секунду, проверит 256 вариантов ключей DES почти за 20 ч. А поскольку по нынешним меркам такие вычислительные мощности вполне реальны, ясно, что 56-бит ключ слишком короток и алгоритм DES необходимо заменить на более "сильный".

Сегодня все шире используются два современных криптостойких алгоритма шифрования: отечественный стандарт ГОСТ 28147-89 и новый криптостандарт США - AES (Advanced Encryption Standard).

Стандарт ГОСТ 28147-89

Алгоритм, определяемый ГОСТ 28147-89 (рис. 1), имеет длину ключа шифрования 256 бит. Он шифрует информацию блоками по 64 бит (такие алгоритмы называются блочными), которые затем разбиваются на два субблока по 32 бит (N1 и N2). Субблок N1 обрабатывается определенным образом, после чего его значение складывается со значением субблока N2 (сложение выполняется по модулю 2, т. е. применяется логическая операция XOR - "исключающее или"), а затем субблоки меняются местами. Данное преобразование выполняется определенное число раз ("раундов"): 16 или 32 в зависимости от режима работы алгоритма. В каждом раунде выполняются две операции.

Первая - наложение ключа. Содержимое субблока N1 складывается по модулю 2 с 32-бит частью ключа Kx. Полный ключ шифрования представляется в виде конкатенации 32-бит подключей: K0, K1, K2, K3, K4, K5, K6, K7. В процессе шифрования используется один из этих подключей - в зависимости от номера раунда и режима работы алгоритма.

Вторая операция - табличная замена. После наложения ключа субблок N1 разбивается на 8 частей по 4 бит, значение каждой из которых заменяется в соответствии с таблицей замены для данной части субблока. Затем выполняется побитовый циклический сдвиг субблока влево на 11 бит.

Табличные замены (Substitution box - S-box) часто используются в современных алгоритмах шифрования, поэтому стоит пояснить, как организуется подобная операция. В таблицу записываются выходные значения блоков. Блок данных определенной размерности (в нашем случае - 4-бит) имеет свое числовое представление, которое определяет номер выходного значения. Например, если S-box имеет вид 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 и на вход пришел 4-бит блок "0100" (значение 4), то, согласно таблице, выходное значение будет равно 15, т. е. "1111" (0 а 4, 1 а 11, 2 а 2 ...).

Алгоритм, определяемый ГОСТ 28147-89, предусматривает четыре режима работы: простой замены, гаммирования, гаммирования с обратной связью и генерации имитоприставок. В них используется одно и то же описанное выше шифрующее преобразование, но, поскольку назначение режимов различно, осуществляется это преобразование в каждом из них по-разному.

В режиме простой замены для зашифрования каждого 64-бит блока информации выполняются 32 описанных выше раунда. При этом 32-бит подключи используются в следующей последовательности:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 и т. д. - в раундах с 1-го по 24-й;

K7, K6, K5, K4, K3, K2, K1, K0 - в раундах с 25-го по 32-й.

Расшифрование в данном режиме проводится точно так же, но с несколько другой последовательностью применения подключей:

K0, K1, K2, K3, K4, K5, K6, K7 - в раундах с 1-го по 8-й;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 и т. д. - в раундах с 9-го по 32-й.

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

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

1. В регистры N1 и N2 записывается их начальное заполнение - 64-бит величина, называемая синхропосылкой.

2. Выполняется зашифрование содержимого регистров N1 и N2 (в данном случае - синхропосылки) в режиме простой замены.

3. Содержимое регистра N1 складывается по модулю (232 - 1) с константой C1 = 224 + 216 + 28 + 24, а результат сложения записывается в регистр N1.

4. Содержимое регистра N2 складывается по модулю 232 с константой C2 = 224 + 216 + 28 + 1, а результат сложения записывается в регистр N2.

5. Содержимое регистров N1 и N2 подается на выход в качестве 64-бит блока гаммы шифра (в данном случае N1 и N2 образуют первый блок гаммы).

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

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

Зашифрование и расшифрование в режиме гаммирования

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

В большинстве реализаций алгоритма ГОСТ 28147-89 синхропосылка не секретна, однако есть системы, где синхропосылка - такой же секретный элемент, как и ключ шифрования. Для таких систем эффективная длина ключа алгоритма (256 бит) увеличивается еще на 64 бит секретной синхропосылки, которую также можно рассматривать как ключевой элемент.

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

Рис. 2. Выработка гаммы шифра в режиме гаммирования с обратной связью.

Рассматривая режим генерации имитоприставок , следует определить понятие предмета генерации. Имитоприставка - это криптографическая контрольная сумма, вычисляемая с использованием ключа шифрования и предназначенная для проверки целостности сообщений. При генерации имитоприставки выполняются следующие операции: первый 64-бит блок массива информации, для которого вычисляется имитоприставка, записывается в регистры N1 и N2 и зашифровывается в сокращенном режиме простой замены (выполняются первые 16 раундов из 32). Полученный результат суммируется по модулю 2 со следующим блоком информации с сохранением результата в N1 и N2.

Цикл повторяется до последнего блока информации. Получившееся в результате этих преобразований 64-бит содержимое регистров N1 и N2 или его часть и называется имитоприставкой. Размер имитоприставки выбирается, исходя из требуемой достоверности сообщений: при длине имитоприставки r бит вероятность, что изменение сообщения останется незамеченным, равна 2-r.Чаще всего используется 32-бит имитоприставка, т. е. половина содержимого регистров. Этого достаточно, поскольку, как любая контрольная сумма, имитоприставка предназначена прежде всего для защиты от случайных искажений информации. Для защиты же от преднамеренной модификации данных применяются другие криптографические методы - в первую очередь электронная цифровая подпись.

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

Алгоритм ГОСТ 28147-89 считается очень сильным алгоритмом - в настоящее время для его раскрытия не предложено более эффективных методов, чем упомянутый выше метод "грубой силы". Его высокая стойкость достигается в первую очередь за счет большой длины ключа - 256 бит. При использовании секретной синхропосылки эффективная длина ключа увеличивается до 320 бит, а засекречивание таблицы замен прибавляет дополнительные биты. Кроме того, криптостойкость зависит от количества раундов преобразований, которых по ГОСТ 28147-89 должно быть 32 (полный эффект рассеивания входных данных достигается уже после 8 раундов).

Стандарт AES

В отличие от алгоритма ГОСТ 28147-89, который долгое время оставался секретным, американский стандарт шифрования AES, призванный заменить DES, выбирался на открытом конкурсе, где все заинтересованные организации и частные лица могли изучать и комментировать алгоритмы-претенденты.

Конкурс на замену DES был объявлен в 1997 г. Национальным институтом стандартов и технологий США (NIST - National Institute of Standards and Technology). На конкурс было представлено 15 алгоритмов-претендентов, разработанных как известными в области криптографии организациями (RSA Security, Counterpane и т. д.), так и частными лицами. Итоги конкурса были подведены в октябре 2000 г.: победителем был объявлен алгоритм Rijndael, разработанный двумя криптографами из Бельгии, Винсентом Риджменом (Vincent Rijmen) и Джоан Даймен (Joan Daemen).

Алгоритм Rijndael не похож на большинство известных алгоритмов симметричного шифрования, структура которых носит название "сеть Фейстеля" и аналогична российскому ГОСТ 28147-89. Особенность сети Фейстеля состоит в том, что входное значение разбивается на два и более субблоков, часть из которых в каждом раунде обрабатывается по определенному закону, после чего накладывается на необрабатываемые субблоки (см. рис. 1).

В отличие от отечественного стандарта шифрования, алгоритм Rijndael представляет блок данных в виде двухмерного байтового массива размером 4X4, 4X6 или 4X8 (допускается использование нескольких фиксированных размеров шифруемого блока информации). Все операции выполняются с отдельными байтами массива, а также с независимыми столбцами и строками.

Алгоритм Rijndael выполняет четыре преобразования: BS (ByteSub) - табличная замена каждого байта массива (рис. 3); SR (ShiftRow) - сдвиг строк массива (рис. 4). При этой операции первая строка остается без изменений, а остальные циклически побайтно сдвигаются влево на фиксированное число байт, зависящее от размера массива. Например, для массива размером 4X4 строки 2, 3 и 4 сдвигаются соответственно на 1, 2 и 3 байта. Далее идет MC (MixColumn) - операция над независимыми столбцами массива (рис. 5), когда каждый столбец по определенному правилу умножается на фиксированную матрицу c(x). И, наконец, AK (AddRoundKey) - добавление ключа. Каждый бит массива складывается по модулю 2 с соответствующим битом ключа раунда, который, в свою очередь, определенным образом вычисляется из ключа шифрования (рис. 6).


Рис. 3. Операция BS.

Рис. 4. Операция SR.

Рис. 5. Операция MC.

Количество раундов шифрования (R) в алгоритме Rijndael переменное (10, 12 или 14 раундов) и зависит от размеров блока и ключа шифрования (для ключа также предусмотрено несколько фиксированных размеров).

Расшифрование выполняется с помощью следующих обратных операций. Выполняется обращение таблицы и табличная замена на инверсной таблице (относительно применяемой при зашифровании). Обратная операция к SR - это циклический сдвиг строк вправо, а не влево. Обратная операция для MC - умножение по тем же правилам на другую матрицу d(x), удовлетворяющую условию: c(x) * d(x) = 1. Добавление ключа AK является обратным самому себе, поскольку в нем используется только операция XOR. Эти обратные операции применяются при расшифровании в последовательности, обратной той, что использовалась при зашифровании.

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

Недостатком же алгоритма можно считать лишь свойственную ему нетрадиционную схему. Дело в том, что свойства алгоритмов, основанных на сети Фейстеля, хорошо исследованы, а Rijndael, в отличие от них, может содержать скрытые уязвимости, которые могут обнаружиться только по прошествии какого-то времени с момента начала его широкого распространения.

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

Алгоритмы асимметричного шифрования, как уже отмечалось, используют два ключа: k1 - ключ зашифрования, или открытый, и k2 - ключ расшифрования, или секретный. Открытый ключ вычисляется из секретного: k1 = f(k2).

Асимметричные алгоритмы шифрования основаны на применении однонаправленных функций. Согласно определению, функция y = f(x) является однонаправленной, если: ее легко вычислить для всех возможных вариантов x и для большинства возможных значений y достаточно сложно вычислить такое значение x, при котором y = f(x).

Примером однонаправленной функции может служить умножение двух больших чисел: N = P*Q. Само по себе такое умножение - простая операция. Однако обратная функция (разложение N на два больших множителя), называемая факторизацией, по современным временным оценкам представляет собой достаточно сложную математическую задачу. Например, разложение на множители N размерностью 664 бит при P ? Q потребует выполнения примерно 1023 операций, а для обратного вычисления х для модульной экспоненты y = ax mod p при известных a, p и y (при такой же размерности a и p) нужно выполнить примерно 1026 операций. Последний из приведенных примеров носит название - "Проблема дискретного логарифма" (DLP - Discrete Logarithm Problem), и такого рода функции часто используются в алгоритмах асимметричного шифрования, а также в алгоритмах, используемых для создания электронной цифровой подписи.

Еще один важный класс функций, используемых в асимметричном шифровании, - однонаправленные функции с потайным ходом. Их определение гласит, что функция является однонаправленной с потайным ходом, если она является однонаправленной и существует возможность эффективного вычисления обратной функции x = f-1(y), т. е. если известен "потайной ход" (некое секретное число, в применении к алгоритмам асимметричного шифрования - значение секретного ключа).

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

Алгоритм RSA

Разработанный в 1978 г. тремя авторами (Rivest, Shamir, Adleman), он получил свое название по первым буквам фамилий разработчиков. Надежность алгоритма основывается на сложности факторизации больших чисел и вычисления дискретных логарифмов. Основной параметр алгоритма RSA - модуль системы N, по которому проводятся все вычисления в системе, а N = P*Q (P и Q - секретные случайные простые большие числа, обычно одинаковой размерности).

Секретный ключ k2 выбирается случайным образом и должен соответствовать следующим условиям:

1

где НОД - наибольший общий делитель, т. е. k1 должен быть взаимно простым со значением функции Эйлера F(N), причем последнее равно количеству положительных целых чисел в диапазоне от 1 до N, взаимно простых с N, и вычисляется как F(N) = (P - 1)*(Q - 1) .

Открытый ключ k1 вычисляется из соотношения (k2*k1) = 1 mod F(N) , и для этого используется обобщенный алгоритм Евклида (алгоритм вычисления наибольшего общего делителя). Зашифрование блока данных M по алгоритму RSA выполняется следующим образом: C = M[в степени k1] mod N . Заметим, что, поскольку в реальной криптосистеме с использованием RSA число k1 весьма велико (в настоящее время его размерность может доходить до 2048 бит), прямое вычисление M[в степени k1] нереально. Для его получения применяется комбинация многократного возведения M в квадрат с перемножением результатов.

Обращение данной функции при больших размерностях неосуществимо; иными словами, невозможно найти M по известным C, N и k1. Однако, имея секретный ключ k2, при помощи несложных преобразований можно вычислить M = Ck2 mod N. Очевидно, что, помимо собственно секретного ключа, необходимо обеспечивать секретность параметров P и Q. Если злоумышленник добудет их значения, то сможет вычислить и секретный ключ k2.

Какое шифрование лучше?

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

Первый из них - низкая скорость выполнения операций зашифрования и расшифрования, обусловленная наличием ресурсоемких операций. Другой недостаток "теоретический" - математически криптостойкость алгоритмов асимметричного шифрования не доказана. Это связано прежде всего с задачей дискретного логарифма - пока не удалось доказать, что ее решение за приемлемое время невозможно. Излишние трудности создает и необходимость защиты открытых ключей от подмены - подменив открытый ключ легального пользователя, злоумышленник сможет обеспечить зашифрование важного сообщения на своем открытом ключе и впоследствии легко расшифровать его своим секретным ключом.

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

Дополнительные источники информации

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

  1. Брассар Ж. "Современная криптология".
  2. Петров А. А. "Компьютерная безопасность: криптографические методы защиты".
  3. Романец Ю. В., Тимофеев П. А., Шаньгин В. Ф. "Защита информации в современных компьютерных системах".
  4. Соколов А. В., Шаньгин В. Ф. "Защита информации в распределенных корпоративных сетях и системах".

Полное описание алгоритмов шифрования можно найти в следующих документах:

  1. ГОСТ 28147-89. Система обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. - М.: Госстандарт СССР, 1989.
  2. Алгоритм AES: http://www.nist.gov/ae .
  3. Алгоритм RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1 .

Доброго времени суток уважаемый пользователь. В этой статье мы поговорим на такие темы, как: Алгоритмы шифрования , Симметричный алгоритм шифрования основные понятия .

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

В соответствии со стандартом шифрования ГОСТ 28147-89 под шифром понимают совокупность обратимых преобразований множества открытых данных на множество зашифрованных данных, задаваемых ключом и алгоритмом криптографического преобразования.

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

Симметричный алгоритм шифрования.

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

Для блочных шифров единицей шифрования является блок из нескольких байтов. Результат шифрования зависит от всех исходных байтов этого блока. Блочное шифрование применяется при пакетной передаче информации и кодировании файлов. Блочные шифры шифруют целые блоки информации (от 4 до 32 байт) как единое целое – это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

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

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

Функция

С = ЕК (М),
М = DK (C),
где М – исходный (открытый) блок данных;
С – зашифрованный блок данных.

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

Методика создания цепочек из зашифрованных блочными алгоритмами байтов позволяет шифровать ими пакеты информации неограниченной длины. Отсутствие статистической корреляции между битами выходного потока блочного шифра используется для вычисления контрольных сумм пакетов данных и в хэшировании паролей. На сегодняшний день разработано достаточно много стойких блочных шифров.

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

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

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

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

Примечание

Рассеивание представляет собой распространение влияния одного знака открытого текста на много знаков шифротекста, что позволяет скрыть статистические свойства открытого текста…

Примечание

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

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

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

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

Все действия, производимые блочным криптоалгоритмом над данными, основаны на том факте, что преобразуемый блок может быть представлен в виде целого неотрицательного числа из диапазона, соответствующего его разрядности. Например, 32-битовый блок данных можно интерпретировать как число из диапазона 0 – 4294967295. Кроме того, блок, разрядность которого представляет собой «степень двойки», можно трактовать как сцепление нескольких независимых неотрицательных чисел из меньшего диапазона (указанный выше 32-битовый блок можно также представить в виде сцепления двух независимых 16-битовых чисел из диапазона 0 – 65535 или в виде сцепления четырех независимых 8-битовых чисел из диапазона 0 – 255).

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

1. Математические функции:
– сложение X’ = X + V;
– «исключающее ИЛИ» X’ = X xor V;
– умножение по модулю 2N + 1 X’ = (X*V) mod (2N + 1);
– умножение по модулю 2N X’ = (X*V) mod 2N.
2. Битовые сдвиги:
– арифметический сдвиг влево X’ = X shl V;
– арифметический сдвиг вправо X’ = X shr V;
– циклический сдвиг влево X’ = X rol V;
– циклический сдвиг вправо X’ = X ror V.
3. Табличные подстановки:
– S-box (англ. substitute) X’ = Table .

В качестве параметра V для любого из этих преобразований может использоваться:

  • фиксированное число (например, X’ = X + 125).
  • число, получаемое из ключа (например, X’ = X + F(K)).
  • число, получаемое из независимой части блока (например, X2’ = X2 + F(X1)).

Примечание

Последний вариант используется в схеме, называемой сетью Фейстеля (по имени ее создателя)…

Сеть Фейстеля.

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

Характерным признаком блочных алгоритмов является многократное и косвенное использование материала ключа. Это определяется в первую очередь требованием невозможности обратного декодирования в отношении ключа при известных исходном и зашифрованном текстах. Для решения этой задачи в приведенных выше преобразованиях чаще всего используется не само значение ключа или его части, а некоторая, иногда необратимая функция от материала ключа. Более того, в подобных преобразованиях один и тот же блок или элемент ключа используется многократно. Это позволяет при выполнении условия обратимости функции относительно величины X сделать функцию необратимой относительно ключа K.

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

На основе сети Фейстеля построены американский стандарт шифрования данных DES и наш ГОСТ 28147-89.

Средства криптографической защиты гостайны до сих пор приравниваются к оружию. Очень немногие страны мира имеют свои криптографические компании, которые делают действительно хорошие средства защиты информации. Даже во многих развитых странах нет такой возможности: там отсутствует школа, которая позволяла бы эти технологии поддерживать и развивать. Россия одна из немногих стран мира, – может быть таких стран пять, или около того, – где все это развито. Причем и в коммерческом, и в государственном секторе есть компании и организации, которые сохранили преемственность школы криптографии с тех времен, когда она только зарождалась.

Алгоритмы шифрования

На сегодняшний день существует масса алгоритмов шифрования, имеющих значительную стойкость перед криптоанализом (криптографическую стойкость). Принято деление алгоритмов шифрования на три группы:

  • Симметричные алгоритмы
  • Ассиметричные алгоритмы
  • Алгоритмы хэш-функций

Симметричные алгоритмы

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

В блочных системах происходит разбиение исходных данных на блоки с последующим преобразованием с помощью ключа.

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

Где где М - открытый текст, К - секретный ключ, передаваемый по закрытому каналу, Еn(М) - операция зашифрования, а Dk(M) - операция расшифрования

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

Операция подстановки выполняет первое требование, предъявляемое к симметричному шифру, избавляясь от любых статистических данных путем перемешивания битов сообщения по определенному заданному закону. Перестановка необходима для выполнения второго требования – придания алгоритму нелинейности. Достигается это за счет замены определенной части сообщения заданного объема на стандартное значение путем обращения к исходному массиву.

Симметричные системы имеют как свои преимущества, так и недостатки перед асимметричными.

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

Примеры симметричных шифров

  • ГОСТ 28147-89 - отечественный стандарт шифрования
  • 3DES (Triple-DES, тройной DES)
  • RC6 (Шифр Ривеста)
  • Twofish
  • SEED - корейский стандарт шифрования
  • Camellia – японский стандарт шифрования
  • CAST (по инициалам разработчиков Carlisle Adams и Stafford Tavares)
  • XTEA - наиболее простой в реализации алгоритм
  • AES – американский стандарт шифрования
  • DES – стандарт шифрования данных в США до AES

Асимметричные алгоритмы

Ассиметричные системы также называют криптосистемами с открытым ключом. Это такой способ шифрования данных, при котором открытый ключ передается по открытому каналу (не скрывается) и используется для проверки электронной подписи и для шифрования данных. Для дешифровки же и создания электронной подписи используется второй ключ, секретный.

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

Принцип работы асимметричных систем

Допустим, имеются два абонента: А и В, и абонент В хочет отправить шифрованное сообщение абоненту А. Он зашифровывает сообщение с помощью открытого ключа и передает его уже зашифрованным по открытому каналу связи. Получив сообщение, абонент А подвергает его расшифрованию с помощью секретного ключа и читает.

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

Примеры асимметричных шрифтов

  • RSA (Rivest-Shamir-Adleman, Ривест - Шамир - Адлеман)
  • DSA (Digital Signature Algorithm)
  • Elgamal (Шифросистема Эль-Гамаля)
  • Diffie-Hellman (Обмен ключами Диффи - Хелмана)
  • ECC (Elliptic Curve Cryptography, криптография эллиптической кривой)

Хеш-функции

Хешированием (от англ. hash) называется преобразование исходного информационного массива произвольной длины в битовую строку фиксированной длины.

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

Нас интересуют криптографически стойкие хеш-функции. К таким обычно предъявляют два требования:

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

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

Примеры хеш-алгоритмов

  • Adler-32
  • SHA-1
  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • HAVAL
  • N-Hash
    • RIPEMD-160
  • RIPEMD-256
  • RIPEMD-320
  • Skein
  • Snefru
  • Tiger (TTH)
  • Whirlpool
  • ГОСТ Р34.11-94 (ГОСТ 34.311-95)
  • IP Internet Checksum (RFC 1071)

Криптографические примитивы

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

Квантовая криптография

Криптография в цифровых технологиях

История

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

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

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

Несколько позже ученые-историки определяют дату появления другой родственной науки – стеганография. Эта наука занимается маскировкой самого факта передачи сообщения. Зародилась она в античности, а примером здесь может служить получение спартанским царем Леонидом перед битвой с персами провощенной дощечки с текстом, покрытой сухим легкосмываемым раствором. При очистке оставленные на воске стилусом знаки становились отчетливо видимыми. Сегодня для сокрытия сообщения служат симпатические чернила, микроточки, микропленки и т.д.

С развитием математики стали появляться математические алгоритмы шифрования, но все эти виды криптографической защиты информации сохраняли в разной объемной степени статистические данные и оставались уязвимыми. Уязвимость стала особенно ощутима с изобретением частотного анализа, который был разработан в IX веке нашей эры предположительно арабским энциклопедистом ал-Кинди. И только в XV веке, после изобретения полиалфавитных шрифтов Леоном Баттистой Альберти (предположительно), защита перешла на качественно новый уровень. Однако в середине XVII века Чарлз Бэббидж представил убедительные доказательства частичной уязвимости полиалфавитных шрифтов перед частотным анализом.

Развитие механики позволило создавать приборы и механизмы, облегчающие шифрование – появились такие устройства, как квадратная доска Тритемиуса, дисковый шифр Томаса Джефферсона. Но все эти приборы ри в какое сравнение не идут с теми, были созданы в XX веке. Именно в это время стали появляться различные шифровальные машины и механизмы высокой сложности, например, роторные машины, самой известной из которых является «Энигма »

До бурного развития науки в XX веке криптографам приходилось иметь дело только с лингвистическими объектами, а в ХХ веке открылись возможности применения различных математических методов и теорий, статистики, комбинаторики, теории чисел и абстракной алгебры.

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

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

Литература

  • Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. - М.: *Варфоломеев А. А., Жуков А. Е., Пудовкина М. А. Поточные криптосистемы. Основные свойства и методы анализа стойкости. М.: ПАИМС, 2000.
  • Ященко В. В. Введение в криптографию. СПб.: Питер, 2001. .
  • ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. М.: ГК СССР по стандартам, 1989.
  • ГОСТ Р 34.10-94.Информационная технология. Криптографическая защита информации. *ГОСТ Р 34.11-94. Информационная технология. Криптографическая защита информации. Функция хэширования. М., 1995.
  • ГОСТ Р 34.10-2001 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи. М., 2001.
  • Нечаев В. И. Элементы криптографии (Основы теории защиты информации). М.: Высшая школа, 1999.
  • Жельников В. Криптография от папируса до компьютера. М.: АВР,1996.

Основные современные методы шифрования

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

  • - Алгоритмы замены или подстановки - символы исходного текста заменяются на символы другого (или того же) алфавита в соответствии с заранее определенной схемой, которая и будет ключом данного шифра. Отдельно этот метод в современных криптосистемах практически не используется из-за чрезвычайно низкой криптостойкости.
  • - Алгоритмы перестановки - символы оригинального текста меняются местами по определенному принципу, являющемуся секретным ключом. Алгоритм перестановки сам по себе обладает низкой криптостойкостью, но входит в качестве элемента в очень многие современные криптосистемы.
  • - Алгоритмы гаммирования - символы исходного текста складываются с символами некой случайной последовательности.
  • - Алгоритмы, основанные на сложных математических преобразованиях исходного текста по некоторой формуле. Многие из них используют нерешенные математические задачи. Например, широко используемый в Интернете алгоритм шифрования RSA основан на свойствах простых чисел.
  • - Комбинированные методы. Последовательное шифрование исходного текста с помощью двух и более методов.

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

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

Алгоритм RSA

Алгоритм RSA (по первым буквам фамилий его создателей Rivest - Shamir - Adleman) основан на свойствах простых чисел (причем очень больших). Простыми называются такие числа, которые не имеют делителей, кроме самих себя и единицы. А взаимно простыми называются числа, не имеющие общих делителей, кроме 1.

Для начала необходимо выбрать два очень больших простых числа (большие исходные числа нужны для построения больших криптостойких ключей. Например, Unix-программа ssh-keygen по умолчанию генерирует ключи длиной 1024 бита). Как результат перемножения р и q определяется параметр n. Затем выбирается случайное число е, причем оно должно быть взаимно простым с числом (n) = (р - 1)*(q - 1). Отыскивается такое число d, для которого верно соотношение

(e*d) mod (n) = 1.

Mod - остаток от деления, т. е. если e, умноженное на d, поделить (n), то в остатке должно получиться 1. Другими словами, числа (e*d - 1) и (n) должны делиться нацело.

Открытым ключом является пара чисел e и n, а закрытым - d и n. При шифровании исходный текст рассматривается как числовой ряд, и над каждым его числом, которое должно быть меньше n, совершается операция

C(i) = (M(i) e) mod n. (1)

В результате получается последовательность C(i), которая и составит криптотекст. Декодирование информации происходит по формуле

M(i) = (C(i) d) mod n. (2)

Как видно, расшифровка предполагает знание секретного ключа.

Рассмотрим пример на маленьких числах. Пусть р = 3, q = 7. Тогда n = = р*q = 21. Выберем е = 5. Из формулы (d*5) mod 12 = 1 вычисляем d = 17. Следовательно, открытый ключ 17, 21, секретный - 5, 21.

Зашифруем последовательность «2345»:

C 1 = 2 17 mod 21 = 11;

C 2 = 3 17 mod 21 = 12;

C 3 = 4 17 mod 21 = 16;

C 4 = 5 17 mod 21 = 17.

Криптотекст - 11 12 16 17. Проверим расшифровкой:

M 1 = 11 5 mod 21 = 2;

M 2 = 12 5 mod 21 = 3;

M 3 = 16 5 mod 21 = 4;

M 4 = 17 5 mod 21 = 5;

Как видно, результат совпал с изначальным открытым текстом.

Криптосистема RSA широко применяется в Интернете. Когда пользователи подсоединяются к защищенному серверу по протоколу SSL SSL (Secure Socket Layer), протокол защищенных сокетов - протокол, гарантирующий безопасную передачу данных по сети; комбинирует криптографическую систему с открытым ключом и блочное шифрование данных., устанавливает на свой ПК сертификат WebMoney либо подключается к удаленному серверу с помощью Oрen SSH или SecureShell, большинство даже не подозревает, что все эти программы применяют шифрование открытым ключом с использованием идей алгоритма RSA.

Действительно ли эта система так надежна?

С момента своего создания RSA постоянно подвергалась атакам типа brute-force attack (атака методом грубой силы Brute force («грубая сила») - атака, осуществляемая простым перебором всех возможных либо наиболее часто встречающихся ключей (паролей). Во втором случае brute force достаточно часто называют "атакой по словарю".). В 1978 г. авторы алгоритма опубликовали статью, где привели строку, зашифрованную только что изобретенным ими методом. Первому, кто расшифрует сообщение, было назначено вознаграждение в размере 100 долларов, но для этого требовалось разложить на два сомножителя 129-значное число. Это был первый конкурс на взлом RSA. Задачу решили только через 17 лет после публикации статьи.

Криптостойкость RSA основывается на том предположении, что исключительно трудно, если вообще реально, определить закрытый ключ из открытого. Для этого требовалось решить задачу о существовании делителей огромного целого числа. До сих пор ее аналитическими методами никто не решил, и алгоритм RSA можно взломать лишь путем полного перебора. Строго говоря, утверждение, что задача разложения на множители сложна и что взлом системы RSA труден, также не доказано.

Компания RSA (httр://www.rsa.ru) регулярно проводит конкурсы на взлом собственных (и не только собственных) шифров. Предыдущие конкурсы выиграла организация Distributed.net (httр://www.distributed.net), являющаяся Интернет-сообществом добровольцев.

Участники Distributed.net загружают к себе на ПК небольшую программу-клиент, которая подсоединяется к центральному серверу и получает кусочек данных для вычислений. Затем все данные загружаются на центральный сервер, и клиент получает следующий блок исходной информации. И так происходит до тех пор, пока все комбинации не будут перебраны. Пользователи, участники системы, объединяются в команды, а на сайте ведется рейтинг как команд, так и стран. Например, участвующей в конкурсе по взлому RC5-64 (блочный шифр компании RSA, использующий ключ длиной 64 бита) организации Distributed.net удалось осуществить взлом через пять лет (1757 дней) работы. За это время в проекте участвовали 327 856 пользователей и было перебрано более 15,268*10 18 вариантов ключа. Выяснилось, что была (не без юмора) зашифрована фраза «some things are better left unread» («некоторые вещи лучше оставлять непрочтенными»). Общие рекомендации по шифру RC5-64 таковы: алгоритм достаточно стоек для повседневных нужд, но шифровать им данные, остающиеся секретными на протяжении более пяти лет, не рекомендуется».

Вероятностное шифрование

Одной из разновидностей криптосистем с открытым ключом является вероятностное шифрование, разработанное Шафи Гольвассером и Сильвио Минелли. Его суть состоит в том, чтобы алгоритм шифрования Е подчинить вероятностным моделям. В чем же преимущества такого подхода? Для примера, в системе RSA не «маскируются» 0 и 1. Эту проблему успешно решают вероятностные алгоритмы, поскольку они ставят в соответствие открытому тексту М не просто криптотекст С, а некоторый элемент из множества криптотекстов СМ. При этом каждый элемент этого множества выбирается с некоторой вероятностью. Другими словами, для любого открытого текста М результат работы алгоритма Е будет случайной величиной. Может показаться, что в этом случае дешифровать информацию будет невозможно, но это совсем не так. Для того чтобы сделать возможной дешифровку, нужно, чтобы для разных открытых текстов М 1 и М 2 множества СМ 1 и СМ 2 не пересекались. Также хочется сказать, что вероятностные алгоритмы шифрования являются более надежными, нежели детерминированные. В этой области наиболее распространены вероятностное шифрование на основе RSA-функций и криптосистема Эль-Гамала.

Комбинированные методы шифрования

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

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

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

Строго говоря, комбинировать можно любые методы шифрования и в любом количестве, однако на практике наибольшее распространение получили следующие комбинации:

подстановка + гаммирование;

перестановка + гаммирование;

гаммирование + гаммирование;

подстановка + перестановка;

Типичным примером комбинированного шифра является национальный стандарт США криптографического закрытия данных (DES).

Криптографический стандарт DES

В 1973 г. Национальное бюро стандартов США начало разработку программы по созданию стандарта шифрования данных на ЭВМ. Был объявлен конкурс среди фирм-разработчиков, который выиграла фирма IBM, представившая в 1974 году алгоритм шифрования, известный под названием DES (Data Encryption Standart).

В этом алгоритме входные 64-битовые векторы, называемые блоками открытого текста, преобразуются в выходные 64-битовые векторы, называемые блоками шифротекста, с помощью двоичного 56-битового ключа К. Число различных ключей DES-алгоритма равно 2 56 .

Алгоритм реализуется в течение 16 аналогичных циклов шифрования, где на i-ом цикле используется цикловой ключ K i , представляющий собой алгоритмически вырабатываемую выборку 48 из 56 битов ключа K i , i = 1,2,…,16.

Алгоритм обеспечивает высокую стойкость, однако недавние результаты показали, что современная технология позволяет создать вычислительное устройство стоимостью около 1 млн. долларов США, способное вскрыть секретный ключ с помощью полного перебора в среднем за 3,5 часа.

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

DES-алгоритм явился первым примером широкого производства и внедрения технических средств в области защиты информации. Национальное бюро стандартов США проводит проверку аппаратных реализаций DES-алгоритма, предложенных фирмами-разработчиками, на специальном тестирующем стенде. Только после положительных результатов проверки производитель получает от Национального бюро стандартов сертификат на право реализации своего продукта. К настоящему времени аттестовано несколько десятков изделий, выполненных на различной элементной базе.

Достигнута высокая скорость шифрования. Она составляет в лучших изделиях 45 Мбит/с. Цена некоторых аппаратных изделий не превышает 100 долларов США.

Основные области применения DES-алгоритма:

хранение данных на компьютерах (шифрование файлов, паролей);

аутентификация сообщений (имея сообщение и контрольную группу, несложно убедиться в подлинности сообщения;

электронная система платежей (при операциях с широкой клиентурой и между банками);

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

Позднее появилась модификация DES - Triple DЕS («тройной DES» - так как трижды шифрует информацию «обычным» алгоритмом DES), свободная от основного недостатка прежнего варианта - короткого ключа; он здесь в два раза длиннее. Но, как оказалось, Triple DES унаследовал другие слабые стороны своего предшественника: отсутствие возможности для параллельных вычислений при шифровании и низкую скорость.

ГОСТ 28147-89

В 1989 году в СССР был разработан блочный шифр для использования в качестве государственного стандарта шифрования данных . Разработка была принята и зарегистрирована как ГОСТ 28147-89. Алгоритм был введен в действие в 1990 году. И хотя масштабы применения этого алгоритма шифрования до сих пор уточняются, начало его внедрения, в частности в банковской системе, уже положено. Алгоритм несколько медлителен, но обладает весьма высокой криптостойкостью.

В общих чертах ГОСТ 28147-89 аналогичен DES. Блок-схема алгоритма ГОСТ отличается от блок-схемыDES-алгоритма лишь отсутствием начальной перестановки и числом циклов шифрования (32 в ГОСТ против 16 в DES-алгоритме).

Ключ алгоритма ГОСТ - это массив, состоящий из 32-мерных векторов X 1 , X 2 ,…X 8 . Цикловой ключ i-го цикла K i равен Xs,где ряду значенийi от 1 до 32 соответствует следующий ряд значений s:

1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,8,7,6,5,4,3,2,1.

В шифре ГОСТ используется 256-битовый ключ и объем ключевого пространства составляет 2 256 . Ни на одной из существующих в настоящее время или предполагаемых к реализации в недалеком будущемкомпьютерных систем общего применения нельзя подобрать ключ за время, меньшее многих сотен лет. Российский стандарт проектировался с большим запасом, по стойкости он на много порядков превосходит американский стандарт DES с его реальным размером ключа в 56 бит и объемом ключевого пространства всего 2 56 , чего явно недостаточно. Ключ криптоалгоритма ГОСТ длиной 32 байта (256 бит) вчетверо больше ключа DES. Необходимое же на перебор всех ключей время при этом возрастает не в четыре раза, а в 256 32-8 = 256 24 , что выливается уже в астрономические цифры). В этой связи DES может представлять скорее исследовательский или научный, чем практический интерес.

Выводы об использовании современных алгоритмов шифрования

В настоящее время наиболее часто применяются три основных стандарта шифрования:

  • - DES;
  • - ГОСТ 28147-89 - отечественный метод, отличающийся высокой криптостойкостью;
  • - RSA - система, в которой шифрование и расшифровка осуществляется с помощью разных ключей.

Недостатком RSA является довольно низкая скорость шифрования, зато она обеспечивает персональную электронную подпись, основанную на уникальном для каждого пользователя секретном ключе. Характеристики наиболее популярных методов шифрования приведены в таблице 1.

Таблица 1 Характеристики наиболее распространенных методов шифрования