Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Защита Информации - лекции.docx
Скачиваний:
13
Добавлен:
21.09.2019
Размер:
1.97 Mб
Скачать

Система rsa

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

Под простым числом понимают число, делящееся только на 1 и на само себя.

Взаимопростые числа – не имеют общего делителя, кроме 1.

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

  1. Выберем 2 простых очень больших числа p и g.

  2. Определим n как результат n = p*g

  3. Выберем большое случайное число D, которое должно быть взаимопростым с результатом умножения (p-1)*(q-1)

  4. Определяем число e, такое, чтоб для него было истинным соотношение

(e*d) mod (p-1)(q-1) = 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), представляющее исходный текст.

Пример: САВ

  1. p=3, q=11

  2. n=3*11 = 33

  3. (p-1)(q-1) = 20 d = 3

  4. (e*3) mod 20 = 1 e = 7

  5. 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)

Электронная цифровая подпись (эцп)

Проблема аутентификации данных и ЭЦП

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

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

В электронных документах такой связи нет.

Целью аутентификации электронных документов является их защиты от возможных действий злоумышленников:

- активный перехват (злоумышленник подключается к сети, перехватывает документы и изменяет их)

- маскарад (абонент С посылает абоненту А от имени абонента В)

- ренегатство – абонент А заявляет, что он не посылал сообщение абоненту В, хотя посылал

- подмена (В удаляет или форматирует новый документ и заявляет, что его получал от абонента А)

- повтор (абонент С повторяет ранее переданный документ, который А посылал В)

ЭЦП используется для аутентификации текстов передаваемых по телекоммуникационным каналам.

Функционально она аналогична рукописной подписи и обладает достоинствами:

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

  2. Гарантирует целостность подписанного текста

Цифровая подпись (ЦП) – небольшое количество цифровой информации, передаваемой вместе с подписанным текстом

Структура ЭЦП:

  1. Процедура постановки подписи (используется как секретный ключ отправителя)

  2. Процедура проверки подписи(используется как открытый ключ отправителя)

При формировании ЭЦП отправитель прежде всего вычисляет ХЕШ-функцию от подписанного текста М. Вычисленное значение функции 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н

+

Hi = EA(B) C

+

ABC → Mi, Hi-1, (Mi Hi-1), const *

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

Реальные h(.) проектируются значительно более сложно. Длина блока обычно определятеся длиной ключа, а длина h-значения совпадает с длиной блока. Схема h-значения, у которой длина h-значения = длине блока.

ABC могут принимать значения *

Переменные A, B, C могут принимать любое из 4-х значений. Общее число значений 64. Из них 52 варианта тривиальны (слабые). Из остальных 12 правильно 4:

Недостатком h(.), спроектированных на основе алгоритмов является заниженная скорость работы.