- •Околов Андрей Ромуальдович Защита информации
- •Тема 1: Информационная безопасность
- •Аппаратно-программный (электронные устройства и специальные программы защиты)
- •Профиль защиты
- •Задание по безопасности
- •Простые криптосистемы
- •Организационные проблемы криптозащиты
- •Стандарт des (Data Encryption Standart)
- •Режимы работы алгоритма des
- •Алгоритм шифрования idea
- •Основные режимы шифрования
- •Концепция криптосистемы с открытым ключом rsa. Система распределения ключей Диффи-Хелмана. Электронная подпись в системах с открытым ключом
- •Система rsa
- •Электронная цифровая подпись (эцп)
- •Алгоритм безопасного хеширования sha
- •Российский стандарт хеш-функций
- •Алгоритмы ецп
- •Алгоритм цп rsa
- •Российский стандарт цп гост р.34.10-94
- •Защита от несанкционированного доступа
- •Протокол ssl и set
- •Протокол set
Система rsa
В настоящее время наиболее развитым методом криптозащиты с криптоключом является метод RSA.
Под простым числом понимают число, делящееся только на 1 и на само себя.
Взаимопростые числа – не имеют общего делителя, кроме 1.
Для того, чтобы использовать алгоритм RSA необходимо сгенерировать открытый и закрытый ключи, выполнив следующие шаги:
Выберем 2 простых очень больших числа p и g.
Определим n как результат n = p*g
Выберем большое случайное число D, которое должно быть взаимопростым с результатом умножения (p-1)*(q-1)
Определяем число e, такое, чтоб для него было истинным соотношение
(e*d) mod (p-1)(q-1) = 1
Числа e и n назовем открытым ключом, d и n - секретным.
Чтобы зашифровать данные по известному ключу e,n необходимо сделать следующее:
- Разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа M(i).
- Зашифровать текст, рассматриваемый как последовательность чисел M(i) по формуле: C(i) = (M(i)^e) mod n
Чтобы расшифровать эти данные используется секретный ключ d, n и выполняются вычисления M(i) – (C(i)^d) mod n
В результате получено число M(i), представляющее исходный текст.
Пример: САВ
p=3, q=11
n=3*11 = 33
(p-1)(q-1) = 20 d = 3
(e*3) mod 20 = 1 e = 7
A-1, B-2, C-3 312
C(1) = (3^7) mod 33 = 2187 mod 33 = 9
C(2) = (1^7) mod 33 = 1 mod 33 = 1
C(3) = (2^7) mod 33 = 128 mod 33 = 29
9129 – шифровалось по ключу (7, 33)
Для расшифрования ключ (3, 33)
M1 = (9^3) mod 33 = 729 mod 33 = 3
M2 = (1^3) mod 33 = 1
M3 = (29^3) mod 33 = 24389 mod 33 = 2
312 – CAB
Криптостойкость алгоритма RSA основана на предположении, что сложно определить ключ по известному, так как надо решить задачу о существовании делителей числа.
Известные алгоритмы для решения задачи имеют экспоненциальную оценку вычислительной сложности.
Вследствие чего является невозможным получение точных решений для задач средней и большой размерности.
В связи с этим для чисел, состоящих из 200 цифр (рекомендуется).
Традиционные методы требуют выполнения огромного числа операций
Электронная подпись в системах с открытым ключом
Пусть пользователь N1 должен передать сообщение m пользователю N2, таким образом, чтобы N2 смог доказать, что сообщение прислано N1.
Для этого N1 разрабатывает систему шифрования E1(D1(X)) = X, справедливую для любых X и которую он будет использовать для аутентификации. Он рассылает ключ E1 как общий ключ его электронной подписи.
В свою очередь, получив от N2 общий ключ шифрования E2 для открытой системы, такой, что E2(D2(X)) = X
N1 вычисляет сигнатуру сообщения S=D1(m). Затем шифрует ее открытым ключом E2:
С = E2(S) и передает ее N2, который расшифровывает сообщение процедурой S= D2(c)
m* = E1(S)
При возникновении спорной ситуации N1 должен предоставить арбитру A свой личный ключ D1, удовлетворяющий условию E1(D1(X)) = X и А лишь необходимо проверить, что D1(m* ) = S ↔ S = D1(m)
Электронная цифровая подпись (эцп)
Проблема аутентификации данных и ЭЦП
При обмене электронной документацией по сети существенно повышается скорость, снижаются затраты на обработку и хранение документов и ускоряется поиск.
Однако возникает проблема аутентификации автора и самого документа. То есть установление подписи автора и отсутствие изменений в документе. В обычной бумажной информации эта проблема решается за счет того, что информация и подпись жестко привязаны к носителю.
В электронных документах такой связи нет.
Целью аутентификации электронных документов является их защиты от возможных действий злоумышленников:
- активный перехват (злоумышленник подключается к сети, перехватывает документы и изменяет их)
- маскарад (абонент С посылает абоненту А от имени абонента В)
- ренегатство – абонент А заявляет, что он не посылал сообщение абоненту В, хотя посылал
- подмена (В удаляет или форматирует новый документ и заявляет, что его получал от абонента А)
- повтор (абонент С повторяет ранее переданный документ, который А посылал В)
ЭЦП используется для аутентификации текстов передаваемых по телекоммуникационным каналам.
Функционально она аналогична рукописной подписи и обладает достоинствами:
Удостоверяет, что подписанный текст исходит от лица, поставившего подпись, не дает лицу отказаться от обязательство связанных с подписанным текстом
Гарантирует целостность подписанного текста
Цифровая подпись (ЦП) – небольшое количество цифровой информации, передаваемой вместе с подписанным текстом
Структура ЭЦП:
Процедура постановки подписи (используется как секретный ключ отправителя)
Процедура проверки подписи(используется как открытый ключ отправителя)
При формировании ЭЦП отправитель прежде всего вычисляет ХЕШ-функцию от подписанного текста М. Вычисленное значение функции h(M) представляет собой один короткий блок информации m, характеризующий весь текст m в целом. Затем число m шифруется секретным ключом отправителя.
Полученная при этом пара чисел представляет собой ЭЦП для текста М.
При проверке ЭЦП получатель снова вычисляет значение ХЕШ-функции принятого текста m. После, с помощью ключа отправителя проверяют, соответствует ли полученная подпись вычисленному значению ХЕШ-функции.
Принципиальным моментом в ЭЦП является невозможность ее подделки без знания секретного ключа подписывания.
Лекция 10
В качестве подписываемого документа может быть использован файл. Подписанный файл создается из неподписанного путем добавления в него 1 или более электронных подписей. Каждая подпись содержит инфомрацию:
- дата подписи
- информация о подписавшем лице
- идентификатор подписавшегося
- цифровая подпись
- срок действия ключа
Однонаправленная ХЕШ-функция
Хеш-функция предназначена для сжатия подписываемого документа до 10-100 бит
h-функция ( h(.) ) принимает в качестве аргумента документ М произвольной длины и возвращает Хеш-значение фиксированной длины.
Обычно хешированная информация является сжатым 2-ным представлением произвольной длины.
Значение h(M) сложным образом зависит от документа М и не позволяет определить этот самый документ по значению функции.
h-функция должна соответствовать условиям:
Чувствительна к любым изменениям в М
Обладать свойством необратимости, то есть задачи подбора некоего документа М’, который обладал бы требуемым значением h-функции была бы вычислительно неразрешима.
Вероятность того, что значение h-функции 2 различных документов совпадут должна быть ничтожно мала.
Большинство h-функций строится на основе однонаправленной функции f, которая образует выходное значение длиной M при заданных 2х входных значениях длиной N. Этими входными значениями является n-блок исходного текста M(i) и хеш-значение h-1 предыдущего блока.
H(i) = f (Mi, Hi-1 )
Хешированное значение вычисляется при вводе последовнего блока текста, оно становится h-значением всего сообщения M.
В результате однонаправленная h-функция всегда формирует выход фиксированной длины N, независимо от длины входного текста.
Основы построения h-функции - h(.):
Общепринятым построением h(.) является интерактивная последовательная схема.
Ядром алгоритма является преобразование k бит в n бит, где n – разрядность результата хеширования, а k >> n производное значение.
Базовое преобразование должно обладать всеми свойствами h(.), то есть необратимостью и невозможностью инвариантного изменения входных данных. Хеширование производится с помощью промежуточной вспомогательной переменной разрядностью n, в качестве которой выбирают произвольное, всем известное значение, например a.
Входные данные разбиваются на блоки по k-n бит.
На каждой итерации хеширования со значением промежуточной величины, полученной из предыдущей итерации объединяется очередная k-n битная порция входных данных и над получившимся k блоком производятся преобразования.
В результате весь входной текст переменой со значением начальной вспомогательной величины из-за характера преобразования базовую функцию называют сжимающей. Значение этой вспомогательной величины после финальной итерации поступает на выход h(.). Иногда над получившимся значением производят дополнительные преобразования. Но в том случае, если сжимающая функция спроектирована с достаточной степенью стойкости -> преобразования излишни.
Кроме более полупроходных алгоритмов хеширования существуют многопроходные.
Однонаправленные h(.) на основе суммирующих блочных элементов.
Однонаправленные h(.) можно построить используя симметричный блочный алгоритм.
Наиболее явный подход: шифровать сообщение М посредством блочного алгоритма CBC, CFB с помощью фиксированного ключа и некоторого вектора инициализации IV.
Начальное значение – H0
Случайное значение – Iн
H0=Iн
+
+
Последний блок шифротекста можно использовать в качестве хеш-значения сообщения М. Наиболее безопасен вариант h(.) можно получить используя блок сообщения в качестве ключа. Предыдущее хеш-значение в качестве входа, а текущее - в качестве выхода.
Реальные h(.) проектируются значительно более сложно. Длина блока обычно определятеся длиной ключа, а длина h-значения совпадает с длиной блока. Схема h-значения, у которой длина h-значения = длине блока.
ABC могут принимать значения *
Переменные A, B, C могут принимать любое из 4-х значений. Общее число значений 64. Из них 52 варианта тривиальны (слабые). Из остальных 12 правильно 4:
Недостатком h(.), спроектированных на основе алгоритмов является заниженная скорость работы.