- Преподавателю
- Информатика
- Лабораторные по основам информационной безопасности
Лабораторные по основам информационной безопасности
Раздел | Информатика |
Класс | - |
Тип | Другие методич. материалы |
Автор | ФатХулова О.В. |
Дата | 02.01.2016 |
Формат | doc |
Изображения | Есть |
Государственное бюджетное образовательное учреждение
среднего профессионального образования
Уфимский колледж статистики, информатики и вычислительной техники
Методические указания
по выполнению лабораторных работ
по дисциплине «Основы информационной безопасности»
по специальности 09.02.03 «Программирование в компьютерных системах»
Уфа 2015
Цели и задачи лабораторных работ
Лабораторные работы по курсу «Методы и средства защиты информации» имеют следующие цели и задачи:
-
систематизация и закрепление теоретических и практических знаний в области защиты информации;
-
систематизация и закрепление теоретических и практических знаний в области криптографии и программирования.
Содержание
Лабораторная работа №1 4
Исследование информационной модели системы 4
Лабораторная работа №2 4
Выделение типов информации и формирование требований защиты информации 4
Лабораторная работа №3 4
Разработка политик безопасности 4
Лабораторная работа №4 4
Изучение средств защиты информации в Windows XP 4
Лабораторная работа №5 5
Изучение криптографических методов подстановки 5
Лабораторная работа №6 8
Изучение криптографических методов перестановки 8
Лабораторная работа №7 11
Разработка программного макета упрощенной модели системы шифрования данных типа RSA 11
Лабораторная работа №8 16
Изучение алгоритма шифрования Диффи-Хеллмана 16
Лабораторная работа №9 19
Изучение односторонних функций 19
Лабораторная работа №10 23
Создание и использование сертификатов безопасности 23
Лабораторная работа №1
Исследование информационной модели системы
Цель работы: Научиться основам исследования информационных систем, информационных потоков.
Задание для самостоятельного выполнения:
Получить у преподавателя описание информационной системы. Построить IDEF модель системы с информационными потоками.
Вопросы для контрольного опроса:
-
Что такое модель IDEF?
-
Каковы особенности взаимосвязи элементов системы?
-
Особенности композиции и декомпозиции системы.
Лабораторная работа №2
Выделение типов информации и формирование требований защиты информации
Цель работы: Научиться основам исследования информационных систем, информационных потоков.
Задание для самостоятельного выполнения:
По результатам лабораторной работы №1 оценить требования к информационным потокам системы. Определить требования к защите информации.
Вопросы для контрольного опроса:
-
Какие существуют угрозы для информации?
-
Как можно исключить эти угрозы?
-
Какие мероприятия применяются для устранения возможности возникновения угроз?
-
Какие мероприятия применяются для устранения последствий угроз?
Лабораторная работа №3
Разработка политик безопасности
Цель работы: Научиться основам работы с политиками безопасности.
Задание для самостоятельного выполнения:
Создать ограничивающие политики на уровне локальных политик, политик домена, политик компьютеров, политик пользователей, политик учетных записей.
Вопросы для контрольного опроса:
-
Что такое политики безопасности?
-
Что такое локальные политики безопасности?
-
Что такое политики безопасности домена?
-
Что такое политики безопасности контроллера домена?
Лабораторная работа №4
Изучение средств защиты информации в Windows XP
Цель работы: Научиться использованию средств защиты информации.
Задание для самостоятельного выполнения:
Для выбранных объектов установить права доступа и организовать аудит использования этих объектов
Вопросы для контрольного опроса:
-
Какие права имеются на использование файлов в Windows XP?
-
Какие права имеются на использование директорий в Windows XP?
-
Какие права имеются на использование исполняемых объектов в Windows XP?
-
Что такое аудит?
-
Какие действия с объектами можно контролировать?
-
Как организовать аудит?
Лабораторная работа №5
Изучение криптографических методов подстановки
Цель работы: Изучить особенности построения шифров простой замены.
Программное обеспечение: Среда программирования Delphi 7, Visual C или Borland CBuilder
Теоретический материал:
Системы подстановок
Определение Подстановкой на алфавите Zm называется автоморфизм Zm, при котором буквы исходного текста t замещены буквами шифрованного текста (t):
Zm Zm; : t (t).
Набор всех подстановок называется симметрической группой Zm è будет в дальнейшем обозначаться как SYM(Zm).
Утверждение SYM(Zm) c операцией произведения является группой, т.е. операцией, обладающей следующими свойствами:
Замкнутость: произведение подстановок 12 является подстановкой:
: t1(2(t)).
Ассоциативность: результат произведения 123 не зависит от порядка расстановки скобок:
(12)3=1(23)
Существование нейтрального элемента: постановка i, определяемая как i(t)=t, 0t<m, является нейтральным элементом SYM(Zm) по операции умножения: i=i для SYM(Zm).
Существование обратного: для любой подстановки существует единственная обратная подстановка -1, удовлетворяющая условию
1= 1=i.
Число возможных подстановок в симметрической группе Zm называется порядком SYM(Zm) и равно m! .
Определение. Ключом подстановки k для Zm называется последовательность элементов симметрической группы Zm:
k=(p0,p1,...,pn-1,...), pnSYM(Zm), 0n<
Подстановка, определяемая ключом k, является криптографическим преобразованием Tk, при помощи которого осуществляется преобразование n-граммы исходного текста (x0 ,x1 ,..,xn-1) в n-грамму шифрованного текста (y0 ,y1 ,...,yn-1):
yi=p(xi), 0i
где n - произвольное (n=1,2,..). Tk называется моноалфавитной подстановкой, если p неизменно при любом i, i=0,1,..., в противном случае Tk называется многоалфавитной подстановкой.
Примечание. К наиболее существенным особенностям подстановки Tk относятся следующие:
1. Исходный текст шифруется посимвольно. Шифрования n-граммы (x0 ,x1 ,..,xn-1) и ее префикса (x0 ,x1 ,..,xs-1) связаны соотношениями
Tk(x0 ,x1 ,..,xn-1)=(y0 ,y1 ,...,yn-1)
Tk(x0 ,x1 ,..,xs-1)=(y0 ,y1 ,...,ys-1)
2. Буква шифрованного текста yi является функцией только i-й компоненты ключа pi и i-й буквы исходного текста xi.
Подстановка Цезаря
Подстановка Цезаря является самым простым вариантом подстановки. Она относится к группе моноалфавитных подстановок.
Определение. Подмножество Cm={Ck: 0km), содержащее m подстановок
Ck: j(j+k) (mod m), 0k < m,
называется подстановкой Цезаря.
Умножение коммутативно, CkCj=CjCk=Cj+k, C0 - идентичная подстановка, а обратной к Cк является Ck-1=Cm-k, где 0<k3.
Подстановка определяется по таблице замещения, содержащей пары соответствующих букв "исходный текст - шифрованный текст". Для C3 подстановки приведены в Табл. 1. Стрелка () означает, что буква исходного текста (слева) шифруется при помощи C3 в букву шифрованного текста (справа).
Определение. Системой Цезаря называется моноалфавитная подстановка, преобразующая n-грамму исходного текста (x0, x1 ,..,xn-1) в n грамму шифрованного текста (y0 ,y1 ,...,yn-1) в соответствии с правилом
yi=Ck(xi), 0i
Например, ВЫШЛИТЕ_НОВЫЕ_УКАЗАНИЯ посредством подстановки C3 преобразуется в еюыолхиврсеюивцнгкгрлб.
Таблица 1.
Аг
Йм
Тх
Ыю
Бд
Кн
Уц
Ья
Ве
Ло
Фч
Э_
Гж
Мп
Хш
Юа
Дз
Нр
Цщ
Яб
Еи
Ос
Чъ
_в
Жй
Пт
Шы
Зк
Ру
Щь
Ил
Сф
Ъэ
При своей несложности система легко уязвима. Если злоумышленник имеет
1) шифрованный и соответствующий исходный текст или
2) шифрованный текст выбранного злоумышленником исходного текста,
то определение ключа и дешифрование исходного текста тривиальны.
Более эффективны обобщения подстановки Цезаря - шифр Хилла и шифр Плэйфера. Они основаны на подстановке не отдельных символов, а 2-грамм (шифр Плэйфера) или n-грамм1 (шифр Хилла). При более высокой криптостойкости они значительно сложнее для реализации и требуют достаточно большого количества ключевой информации.
Многоалфавитные системы. Системы одноразового использования.
Слабая криптостойкость моноалфавитных подстановок преодолевается с применением подстановок многоалфавитных.
Многоалфавитная подстановка определяется ключом =(1,
2, ...), содержащим не менее двух различных подстановок. В начале рассмотрим многоалфавитные системы подстановок с нулевым начальным смещением.
Пусть {Ki: 0im
Pкл{(K0, K1, ..., Kn-1)=(k0, k1, ..., kn-1)}=(1/m)n
Система одноразового использования преобразует исходный текст X=(X0, x1, ..., xn-1) в шифрованный текст Y=(Y0, y1, ..., yn-1) при помощи подстановки Цезаря
Yi=CKi(xi)=(Ki+Xi) (mod m) i=0...n-1 (1)
Для такой системы подстановки используют также термин "одноразовая лента" и "одноразовый блокнот". Пространство ключей К системы одноразовой подстановки является вектором рангов (K0, K1, ..., Kn-1) и содержит mn точек.
Рассмотрим небольшой пример шифрования с бесконечным ключом. В качестве ключа примем текст
"БЕСКОНЕЧНЫЙ_КЛЮЧ....".
Зашифруем с его помощью текст "ШИФР_НЕРАСКРЫВАЕМ". Шифрование оформим в таблицу:
ШИФРУЕМЫЙ_ТЕКСТ
24
8
20
16
19
5
12
27
9
32
18
5
10
17
18
БЕСКОНЕЧНЫЙ_КЛЮЧ
1
5
17
10
14
13
5
23
13
27
9
32
10
11
30
ЩРДЪАТТССЦЪЫДФЬП
25
13
4
26
0
18
17
17
22
26
27
4
20
28
15
Исходный текст невозможно восстановить без ключа.
Наложение белого шума в виде бесконечного ключа на исходный текст меняет статистические характеристики языка источника. Системы одноразового использования теоретически не расшифруемы2, так как не содержат достаточной информации для восстановления текста.
Почему же эти системы неприменимы для обеспечения секретности при обработке информации? Ответ простой - они непрактичны, так как требуют независимого выбора значения ключа для каждой буквы исходного текста. Хотя такое требование может быть и не слишком трудным при передаче по прямому кабелю Москва - Нью-Йорк, но для информационных оно непосильно, поскольку там придется шифровать многие миллионы знаков.
Посмотрим, что получится, если ослабить требование шифровать каждую букву исходного текста отдельным значением ключа.
Системы шифрования Вижинера
Начнем с конечной последовательности ключа
k = (k0 ,k1 ,...,kn),
которая называется ключом пользователя, и продлим ее до бесконечной последовательности, повторяя цепочку. Таким образом, получим рабочий ключ
k = (k0 ,k1 ,...,kn), kj = k(j mod r, 0 j < .
Например, при r = и ключе пользователя 15 8 2 10 11 4 18 рабочий ключ будет периодической последовательностью:
15 8 2 10 11 4 18 15 8 2 10 11 4 18 15 8 2 10 11 4 18 ...
Определение. Подстановка Вижинера VIGk определяется как
VIGk : (x0, x1, ..., xn-1) (y0, y1, ..., yn-1) = (x0+k, x1+k,. .., xn-1+k).
Таким образом:
1) исходный текст x делится на r фрагментов xi = (xi , xi+r , ..., xi+r(n-1)), 0 i < r;
2) i-й фрагмент исходного текста xi шифруется при помощи подстановки Цезаря Ck :
(xi , xi+r , ..., xi+r(n-1)) (yi , yi+r , ..., yi+r(n-1)),
Вариант системы подстановок Вижинера при m=2 называется системой Вернама (1917 г).
В то время ключ k=(k0 ,k1 ,...,kк-1) записывался на бумажной ленте. Каждая буква исходного текста в алфавите, расширенном некоторыми дополнительными знаками, сначала переводилась с использованием кода Бодо в пятибитовый символ. К исходному тексту Бодо добавлялся ключ (по модулю 2). Старинный телетайп фирмы AT&T со считывающим устройством Вернама и оборудованием для шифрования, использовался корпусом связи армии США.
Очень распространена плохая с точки зрения секретности практика использовать слово или фразу в качестве ключа для того, чтобы k=(k0 ,k1 ,...,kк-1) было легко запомнить. В ИС для обеспечения безопасности информации это недопустимо. Для получения ключей должны использоваться программные или аппаратные средства случайной генерации ключей.
Пример. Преобразование текста с помощью подстановки Вижинера (r=4)
Исходный текст (ИТ1):
НЕ_СЛЕДУЕТ_ВЫБИРАТЬ_НЕСЛУЧАЙНЫЙ_КЛЮЧ
Ключ: КЛЮЧ
Разобьем исходный текст на блоки по 4 символа:
НЕ_С ЛЕДУ ЕТ_В ЫБИР АТЬ_ НЕСЛ УЧАЙ НЫЙ_ КЛЮЧ
и наложим на них ключ (используя таблицу Вижинера):
H+К=Ч, Е+Л=Р и т.д.
Получаем зашифрованный (ЗТ1) текст:
ЧРЭЗ ХРБЙ ПЭЭЩ ДМЕЖ КЭЩЦ ЧРОБ ЭБЮ_ ЧЕЖЦ ФЦЫН
Можно выдвинуть и обобщенную систему Вижинера. ЕЕ можно сформулировать не только при помощи подстановки Цезаря.
Пусть x - подмножество симметрической группы SYM(Zm).
Определение. r-многоалфавитный ключ шифрования есть r-набор = (0, 1, ..., r-1) с элементами в x.
Обобщенная система Вижинера преобразует исходный текст (x0, x1 ,..., xn-1) в шифрованный текст (y0 ,y1 ,...,yn-1) при помощи ключа = (0, 1, ..., r-1) по правилу
VIGk : (x0 ,x1 ,...,xn-1) (y0 ,y1 ,...,yn-1) = (0(х0), 1(х1), ..., n-1(xn-1)),
где используется условие i = i mod r .
Следует признать, что и многоалфавитные подстановки в принципе доступны криптоаналитическому исследованию. Криптостойкость многоалфавитных систем резко убывает с уменьшением длины ключа.
Тем не менее такая система как шифр Вижинера допускает несложную аппаратную или программную реализацию и при достаточно большой длине ключа может быть использован в современных ИС.
Задание для самостоятельного выполнения:
Для шифра простой замены, используя генератор случайных чисел, построить таблицу замен. Написать программы шифрования и расшифровки, использующие таблицу замен.
Вопросы для контрольного опроса:
-
Что такое Система шифрования Цезаря?
-
Что такое Система шифрования Вижинера?
-
Что такое Шифр «двойной квадрат» Уитстона?
-
Чем отличаются моноалфавитные и многоалфавитные системы?
-
Что такое одноразовая система шифрования?
-
Как осуществляется шифрование методом Вернама?
-
Что такое Роторные машины.
Лабораторная работа №6
Изучение криптографических методов перестановки
Цель работы: Изучить особенности построения шифров перестановки/
Программное обеспечение: Среда программирования Delphi 7, Visual C или Borland CBuilder .
Теоретический материал:
Перестановкой набора целых чисел (0,1,...,N-1) называется его переупорядочение. Для того чтобы показать, что целое i перемещено из позиции i в позицию (i), где 0 (i) < n, будем использовать запись
=((0), (1),..., (N-1)).
Число перестановок из (0,1,...,N-1) равно n!=1*2*...*(N-1)*N. Введем обозначение для взаимно-однозначного отображения (гомоморфизма) набора S={s0,s1, ...,sN-1}, состоящего из n элементов, на себя.
: S S
: si s(i), 0 i < n
Будем говорить, что в этом смысле является перестановкой элементов S. И, наоборот, автоморфизм S соответствует перестановке целых чисел (0,1,2,.., n-1).
Криптографическим преобразованием T для алфавита Zm называется последовательность автоморфизмов: T={T(n):1n<}
T(n): Zm,nZm,n, 1n<
Каждое T(n) является, таким образом, перестановкой n-грамм из Zm,n.
Поскольку T(i) и T(j) могут быть определены независимо при ij, число криптографических преобразований исходного текста размерности n равно (mn)!3. Оно возрастает непропорционально при увеличении m и n: так, при m=33 и n=2 число различных криптографических преобразований равно 1089!. Отсюда следует, что потенциально существует большое число отображений исходного текста в шифрованный.
Практическая реализация криптографических систем требует, чтобы преобразования {Tk: kK} были определены алгоритмами, зависящими от относительно небольшого числа параметров (ключей).
Гаммирование
Гаммирование является также широко применяемым криптографическим преобразованием. На самом деле граница между гаммированием и использованием бесконечных ключей и шифров Вижинера, о которых речь шла выше, весьма условная.
Принцип шифрования гаммированием заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел и наложении полученной гаммы на открытые данные обратимым образом (например, используя сложение по модулю 2).
Процесс дешифрования данных сводится к повторной генерации гаммы шифра при известном ключе и наложении такой гаммы на зашифрованные данные.
Полученный зашифрованный текст является достаточно трудным для раскрытия в том случае, если гамма шифра не содержит повторяющихся битовых последовательностей. По сути дела гамма шифра должна изменяться случайным образом для каждого шифруемого слова. Фактически же, если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором (пробой на ключ). Криптостойкость в этом случае определяется размером ключа.
Метод гаммирования становится бессильным, если злоумышленнику становится известен фрагмент исходного текста и соответствующая ему шифрограмма. Простым вычитанием по модулю получается отрезок ПСП и по нему восстанавливается вся последовательность. Злоумышленники может сделать это на основе догадок о содержании исходного текста. Так, если большинство посылаемых сообщений начинается со слов "СОВ.СЕКРЕТНО", то криптоанализ всего текста значительно облегчается. Это следует учитывать при создании реальных систем информационной безопасности.
Ниже рассматриваются наиболее распространенные методы генерации гамм, которые могут быть использованы на практике.
Датчики ПСЧ
Чтобы получить линейные последовательности элементов гаммы, длина которых превышает размер шифруемых данных, используются датчики ПСЧ. На основе теории групп было разработано несколько типов таких датчиков.
Конгруэнтные датчики
В настоящее время наиболее доступными и эффективными являются конгруэнтные генераторы ПСП. Для этого класса генераторов можно сделать математически строгое заключение о том, какими свойствами обладают выходные сигналы этих генераторов с точки зрения периодичности и случайности.
Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением
T(i+1) = (A*T(i)+C) mod m,
где А и С - константы, Т(0) - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.
Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений А и С. Значение m обычно устанавливается равным 2n , где n - длина машинного слова в битах. Датчик имеет максимальный период М до того, как генерируемая последовательность начнет повторяться. По причине, отмеченной ранее, необходимо выбирать числа А и С такие, чтобы период М был максимальным. Как показано Д. Кнутом, линейный конгруэнтный датчик ПСЧ имеет максимальную длину М тогда и только тогда, когда С - нечетное, и А mod 4 = 1.
Для шифрования данных с помощью датчика ПСЧ может быть выбран ключ любого размера. Например, пусть ключ состоит из набора чисел x(j) размерностью b, где j=1, 2, ..., n. Тогда создаваемую гамму шифра G можно представить как объединение непересекающихся множеств H(j).
Датчики М-последовательностей
М-последовательности также популярны, благодаря относительной легкости их реализации.
М-последовательности представляют собой линейные рекуррентные последовательности максимального периода, формируемые k-разрядными генераторами на основе регистров сдвига. На каждом такте поступивший бит сдвигает k предыдущих и к нему добавляется их сумма по модулю 2. Вытесняемый бит добавляется к гамме. Строго это можно представить в виде следующих отношений:
r1:=r0 r2:=r1 ... rk-1:=rk-2
r0:=a0 r1 a1 r2 ... ak-2 rk-1
Гi:= rk-
Здесь r0 r1 ... rk-1 - k однобитных регистров, a0 a1 ... ak-1 - коэффициенты неприводимого двоичного полинома степени k-1. Гi - i-е значение выходной гаммы.
Период М-последовательности, исходя из ее свойств, равен 2k-1. Другим важным свойством М-последовательности является объем ансамбля, т.е. количество различных М-последовательностей для заданного k. Эта характеристика приведена в таблице:
-
k
Объем ансамбля
5
6
6
8
7
18
8
16
9
48
10
60
16
2048
Очевидно, что такие объемы ансамблей последовательности неприемлемы. Поэтому на практике часто используют последовательности Голда, образующиеся суммированием нескольких М-последовательностей. Объем ансамблей этих последовательностей на несколько порядков превосходят объемы ансамблей порождающих М-последовательностей. Так при k=10 ансамбль увеличивается от 1023 (М-последовательности) до 388000.
Также перспективными представляются нелинейные датчики ПСП (например сдвиговые регистры с элементом И в цепи обратной связи), однако их свойства еще недостаточно изучены.
Возможны и другие, более сложные варианты выбора порождающих чисел для гаммы шифра. Шифрование с помощью датчика ПСЧ является довольно распространенным криптографическим методом. Во многом качество шифра, построенного на основе датчика ПСЧ, определяется не только и не столько характеристиками датчика, сколько алгоритмом получения гаммы. Один из фундаментальных принципов криптологической практики гласит, даже сложные шифры могут быть очень чувствительны к простым воздействиям.
Задание для самостоятельного выполнения:
Написать программы шифрования и расшифровки, использующие перестановку байт по ключу.
Вопросы для контрольного опроса:
-
Шифры перестановки.
-
Шифрующие таблицы.
-
Применение магических квадратов.
-
Шифры простой замены.
-
Полибианский квадрат.
-
Шифрование методом гаммирования.
-
Методы генерации псевдослучайных последовательностей чисел
Лабораторная работа №7
Разработка программного макета упрощенной модели системы шифрования данных типа RSA
Цель работы: Изучить особенности методов шифрования с открытым ключом
Программное обеспечение: Среда программирования Delphi 7, Visual C или Borland CBuilder
Теоретический материал:
Системы с открытым ключом
Как бы ни были сложны и надежны криптографические системы - их слабое мест при практической реализации - проблема распределения ключей. Для того, чтобы был возможен обмен конфиденциальной информацией между двумя субъектами ИС, ключ должен быть сгенерирован одним из них, а затем каким-то образом опять же в конфиденциальном порядке передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы.
Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены системы с открытым ключом.
Суть их состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым, а другой закрытым. Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне.
Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату.
Криптографические системы с открытым ключом используют так называемые необратимые или односторонние функции, которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y=f(x), то нет простого пути для вычисления значения x.
Множество классов необратимых функций и порождает все разнообразие систем с открытым ключом. Однако не всякая необратимая функция годится для использования в реальных ИС.
В самом определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени.
Поэтому чтобы гарантировать надежную защиту информации, к системам с открытым ключом (СОК) предъявляются два важных и очевидных требования:
1. Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
2. Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.
Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах. Так, алгоритм RSA стал мировым стандартом де-факто для открытых систем и рекомендован МККТТ.
Вообще же все предлагаемые сегодня криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований:
-
Разложение больших чисел ан простые множители.
-
Вычисление логарифма в конечном поле.
-
Вычисление корней алгебраических уравнений.
Здесь же следует отметить, что алгоритмы криптосистемы с открытым ключом (СОК) можно использовать в трех назначениях.
1. Как самостоятельные средства защиты передаваемых и хранимых данных.
2. Как средства для распределения ключей. Алгоритмы СОК более трудоемки, чем традиционные криптосистемы. Поэтому часто на практике рационально с помощью СОК распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками.
-
Средства аутентификации пользователей. Об этом будет рассказано в главе «Электронная подпись».
Ниже рассматриваются наиболее распространенные системы с открытым ключом.
Алгоритм RSA
Несмотря на довольно большое число различных СОК, наиболее популярна - криптосистема RSA, разработанная в 1977 году и получившая название в честь ее создателей: Рона Ривеста, Ади Шамира и Леонарда Эйдельмана.
Они воспользовались тем фактом, что нахождение больших простых чисел в вычислительном отношении осуществляется легко, но разложение на множители произведения двух таких чисел практически невыполнимо. Доказано (теорема Рабина), что раскрытие шифра RSA эквивалентно такому разложению. Поэтому для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время.
Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек).
В настоящее время алгоритм RSA используется во многих стандартах, среди которых SSL, S-HHTP, S-MIME, S/WAN, STT и PCT.
Рассмотрим математические результаты, положенные в основу этого алгоритма.
Теорема 1. (Малая теорема Ферма.)
Если р - простое число, то
xp-1 = 1 (mod p) (1)
для любого х, простого относительно р, и
xp= х (mod p) (2)
для любого х.
Доказательство. Достаточно доказать справедливость уравнений (1) и (2) для хZp. Проведем доказательство методом индукции.
Очевидно, что уравнение (8.2.2) выполняется при х=0 и 1. Далее
xp=(x-1+1)p= C(p,j)(x-1)j=(x-1)p+1 (mod p),
0jp
так как C(p,j)=0(mod p) при 0p. С учетом этого неравенства и предложений метода доказательства по индукции теорема доказана.
Определение. Функцией Эйлера (n) называется число положительных целых, меньших n и простых относительно n.
n
2
3
4
5
6
7
8
9
10
11
12
(n)
1
2
2
3
2
6
4
6
4
10
4
Теорема 2. Если n=pq, (p и q - отличные друг от друга простые числа), то (n)=(p-1)(q-1).
Теорема 3. Если n=pq, (p и q - отличные друг от друга простые числа) и х - простое относительно р и q, то x(n) = 1 (mod n).
Следствие . Если n=pq, (p и q - отличные друг от друга простые числа) и е простое относительно (n), то отображение Еe,n: xxe (mod n) является взаимно однозначным на Zn.
Очевиден и тот факт, что если е - простое относительно (n), то существует целое d, такое, что ed = 1 (mod (n))
На этих математических фактах и основан популярный алгоритм RSA.
Пусть n=pq, где p и q - различные простые числа. Если e и d удовлетворяют уравнению (8.2.3), то отображения Еe,n и Еd,n являются инверсиями на Zn. Как Еe,n, так и Еd,n легко рассчитываются, когда известны e, d, p, q. Если известны e и n, но p и q неизвестны, то Еe,n представляет собой одностороннюю функцию; нахождение Еd,n по заданному n равносильно разложению n. Если p и q - достаточно большие простые, то разложение n практически не осуществимо. Это и заложено в основу системы шифрования RSA.
Пользователь i выбирает пару различных простых pi и qi и рассчитывает пару целых (ei, di), которые являются простыми относительно (ni), где ni=pi qi . Справочная таблица содержит публичные ключи {(ei ,ni)}.
Предположим, что исходный текст x =(x0, x1, ..., xn-1), xZn , 0 i < n, сначала представлен по основанию ni : N = c0+ci ni+....
Пользователь i зашифровывает текст при передаче его пользователю j, применяя к n отображение Edi,ni : N Edi,ni n = n'. Пользователь j производит дешифрование n', применяя Eei,ni : N' Eei,ni n'= Eei,niEdi,ni n = n .
Очевидно, для того чтобы найти инверсию Edi,ni по отношению к Eei,ni, требуется знание множителей n=pi qi. Время выполнения наилучших из известных алгоритмов разложения при n=10100 на сегодняшний день выходит за пределы современных технологических возможностей.
Рассмотрим небольшой пример, иллюстрирующий применение алгоритма RSA.
Пример Зашифруем сообщение "САВ". Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).
-
Выберем p=3 и q=11.
-
Определим n=3*11=33.
-
Найдем (p-1)(q-1)=20. Следовательно, в качестве d, взаимно простое с 20, например, d=3.
-
Выберем число е. В качестве такого числа может быть взято любое число, для которого удовлетворяется соотношение (е*3) (mod 20) = 1, например 7.
-
Представим шифруемое сообщение как последовательность целых чисел с помощью отображения: А1, В2, С3. Тогда сообщение принимает вид (3,1,2). Зашифруем сообщение с помощью ключа {7,33}.
ШТ1 = (37) (mod 33) = 2187 (mod 33) = 9,
ШТ2 = (17) (mod 33) = 1 (mod 33) = 1,
ШТ3 = (27) (mod 33) = 128 (mod 33) = 29.
-
Расшифруем полученное зашифрованное сообщение (9,1,29) на основе закрытого ключа {3,33}:
ИТ1 = (93) (mod 33) = 729 (mod 33) = 3,
ИТ2= (13) (mod 33) = 1 (mod 33) = 1,
ИТ3 = (293) (mod 33) = 24389 (mod 33) = 2.
Итак, в реальных системах алгоритм RSA реализуется следующим образом: каждый пользователь выбирает два больших простых числа, и в соответствии с описанным выше алгоритмом выбирает два простых числа e и d. Как результат умножения первых двух чисел (p и q) устанавливается n.
{e,n} образует открытый ключ, а {d,n} - закрытый (хотя можно взять и наоборот).
Открытый ключ публикуется и доступен каждому, кто желает послать владельцу ключа сообщение, которое зашифровывается указанным алгоритмом. После шифрования, сообщение невозможно раскрыть с помощью открытого ключа. Владелец же закрытого ключа без труда может расшифровать принятое сообщение.
Практическая реализация RSA
В настоящее время алгоритм RSA активно реализуется как в виде самостоятельных криптографических продуктов4, так и в качестве встроенных средств в популярных приложениях5.
Важная проблема практической реализации - генерация больших простых чисел. Решение задачи «в лоб» - генерация случайного большого числа n (нечетного) и проверка его делимости на множители от 3 вплоть до n0.5. В случае неуспеха следует взять n+2 и так далее.
В принципе в качестве p и q можно использовать «почти» простые числа, то есть числа для которых вероятность того, что они простые, стремится к 1. Но в случае, если использовано составное число, а не простое, криптостойкость RSA падает. Имеются неплохие алгоритмы, которые позволяют генерировать «почти» простые числа с уровнем доверия 2-100.
Другая проблема - ключи какой длины следует использовать?
Для практической реализации алгоритмов RSA полезно знать оценки трудоемкости разложения простых чисел различной длины, сделанные Шроппелем.
Log10 n
Число операций
Примечания
50
1.4*1010
Раскрываем на суперкомпьютерах
100
2.3*1015
На пределе современных технологий
200
1.2*1023
За пределами современных технологий
400
2.7*1034
Требует существенных изменений в технологии
800
1.3*1051
Не раскрываем
В конце 1995 года удалось практически реализовать раскрытие шифра RSA для 500-значного ключа. Для этого с помощью сети Интернет было задействовано 1600 компьютеров.
Сами авторы RSA рекомендуют использовать следующие размеры модуля n:
-
768 бит - для частных лиц;
-
1024 бит - для коммерческой информации;
-
2048 бит - для особо секретной информации.
Третий немаловажный аспект реализации RSA - вычислительный. Ведь приходится использовать аппарат длинной арифметики. Если используется ключ длиной k бит, то для операций по открытому ключу требуется О(k2) операций, по закрытому ключу - О(k3) операций, а для генерации новых ключей требуется О(k4) операций.
Криптографический пакет BSAFE 3.0 (RSA D.S.) на компьютере Pentium-90 осуществляет шифрование со скоростью 21.6 Кбит/c для 512-битного ключа и со скоростью 7.4 Кбит/c для 1024 битного. Самая «быстрая» аппаратная реализация обеспечивает скорости в 60 раз больше.
По сравнению с тем же алгоритмом DES, RSA требует в тысячи и десятки тысяч раз большее время.
Криптосистема Эль-Гамаля
Данная система является альтернативой RSA и при равном значении ключа обеспечивает ту же криптостойкость.
В отличие от RSA метод Эль-Гамаля основан на проблеме дискретного логарифма. Этим он похож на алгоритм Диффи-Хелмана. Если возводить число в степень в конечном поле достаточно легко, то восстановить аргумент по значению (то есть найти логарифм) довольно трудно.
Основу системы составляют параметры p и g - числа, первое из которых - простое, а второе - целое.
Александр генерирует секретный ключ а и вычисляет открытый ключ y = gа mod p. Если Борис хочет послать Александру сообщение m, то он выбирает случайное число k, меньшее p и вычисляет
y1 = gk mod p и
y2= m yk,
где означает побитовое сложение по модулю 2. Затем Борис посылает (y1,y2) Александру.
Александр, получив зашифрованное сообщение, восстанавливает его:
m = (y1amod p) y2.
Алгоритм цифровой подписи DSA, разработанный NIST (National Institute of Standard and Technology) и являющийся частью стандарта DSS частично опирается на рассмотренный метод.
Криптосистемы на основе эллиптических уравнений
Эллиптические кривые - математический объект, который может определен над любым полем (конечным, действительным, рациональным или комплексным). В криптографии обычно используются конечные поля. Эллиптическая кривая есть множество точек (x,y), удовлетворяющее следующему уравнению: y2 = x3 + ax + b, а также бесконечно удаленная точка. Для точек на кривой довольно легко вводится операция сложения, которая играет ту же роль, что и операция умножения в криптосистемах RSA и Эль-Гамаля.
В реальных криптосистемах на базе эллиптических уравнений используется уравнение
y2 = x3 + ax + b mod p, где р - простое.
Проблема дискретного логарифма на эллиптической кривой состоит в следующем: дана точка G на эллиптической кривой порядка r (количество точек на кривой) и другая точка Y на этой же кривой. Нужно найти единственную точку x такую, что Y = xG, то есть Y есть х-я степень G.
Задание для самостоятельного выполнения:
Написать программы шифрования и расшифровки, использующие алгоритм RSA.
Вопросы для контрольного опроса:
-
Однонаправленные функции.
-
Концепция криптосистемы с открытым ключом.
-
Криптосистема шифрования данных RSA (процедуры шифрования и расшифрования в этой системе).
-
Безопасность и быстродействие криптосистемы RSA.
-
Криптосистема Эль-Гамаля.
-
Схема шифрования Эль Гамаля.
-
Комбинированный метод шифрования.
Лабораторная работа №8
Изучение алгоритма шифрования Диффи-Хеллмана
Цель работы: Изучить особенности алгоритмов шифрования Диффи-Хеллмана и технологии генерации, накопления распределения ключей
Программное обеспечение: Среда программирования Delphi 7, Visual C или Borland CBuilder
Теоретический материал:
Управление ключами
Кроме выбора подходящей для конкретной ИС криптографической системы, важная проблема - управление ключами. Как бы ни была сложна и надежна сама криптосистема, она основана на использовании ключей. Если для обеспечения конфиденциального обмена информацией между двумя пользователями процесс обмена ключами тривиален, то в ИС, где количество пользователей составляет десятки и сотни управление ключами - серьезная проблема.
Под ключевой информацией понимается совокупность всех действующих в ИС ключей. Если не обеспечено достаточно надежное управление ключевой информацией, то завладев ею, злоумышленник получает неограниченный доступ ко всей информации.
Управление ключами - информационный процесс, включающий в себя три элемента:
-
генерацию ключей;
-
накопление ключей;
-
распределение ключей.
Рассмотрим, как они должны быть реализованы для того, чтобы обеспечить безопасность ключевой информации в ИС.
Генерация ключей
В самом начале разговора о криптографических методах было сказано, что не стоит использовать неслучайные ключи с целью легкости их запоминания. В серьезных ИС используются специальные аппаратные и программные методы генерации случайных ключей. Как правило используют датчики ПСЧ. Однако степень случайности их генерации должна быть достаточно высоким. Идеальным генераторами являются устройства на основе "натуральных" случайных процессов. Например, появились серийные образцы генерации ключей на основе белого радиошума. Другим случайным математическим объектом являются десятичные знаки иррациональных чисел, например или е, которые вычисляются с помощью стандартных математических методов.
В ИС со средними требованиями защищенности вполне приемлемы программные генераторы ключей, которые вычисляют ПСЧ как сложную функцию от текущего времени и (или) числа, введенного пользователем.
Накопление ключей
Под накоплением ключей понимается организация их хранения, учета и удаления.
Поскольку ключ является самым привлекательным для злоумышленника объектом, открывающим ему путь к конфиденциальной информации, то вопросам накопления ключей следует уделять особое внимание.
Секретные ключи никогда не должны записываться в явном виде на носителе, который может быть считан или скопирован.
В достаточно сложной ИС один пользователь может работать с большим объемом ключевой информации, и иногда даже возникает необходимость организации мини-баз данных по ключевой информации. Такие базы данных отвечают за принятие, хранение, учет и удаление используемых ключей.
Итак, каждая информация об используемых ключах должна храниться в зашифрованном виде. Ключи, зашифровывающие ключевую информацию называются мастер-ключами. Желательно, чтобы мастер-ключи каждый пользователь знал наизусть, и не хранил их вообще на каких-либо материальных носителях.
Очень важным условием безопасности информации является периодическое обновление ключевой информации в ИС. При этом переназначаться должны как обычные ключи, так и мастер-ключи. В особо ответственных ИС обновление ключевой информации желательно делать ежедневно.
Вопрос обновления ключевой информации связан и с третьим элементом управления ключами - распределением ключей.
Распределение ключей
Распределение ключей - самый ответственный процесс в управлении ключами. К нему предъявляются два требования:
-
оперативность и точность распределения;
-
скрытность распределяемых ключей.
В последнее время заметен сдвиг в сторону использования криптосистем с открытым ключом, в которых проблема распределения ключей отпадает. Тем не менее распределение ключевой информации в ИС требует новых эффективных решений.
Распределение ключей между пользователями реализуются двумя разными подходами:
1. Путем создания одного ли нескольких центров распределения ключей. Недостаток такого подхода состоит в том, что в центре распределения известно, кому и какие ключи назначены и это позволяет читать все сообщения, циркулирующие в ИС. Возможные злоупотребления существенно влияют на защиту.
2. Прямой обмен ключами между пользователями информационной системы. В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность субъектов.
В обоих случаях должна быть гарантирована подлинность сеанса связи. Это можно обеспечить двумя способами:
1. Механизм запроса-ответа, который состоит в следующем. Если пользователь А желает быть уверенным, что сообщения который он получает от В, не являются ложными, он включает в посылаемое для В сообщение непредсказуемый элемент (запрос). При ответе пользователь В должен выполнить некоторую операцию над этим элементом (например, добавить 1). Это невозможно осуществить заранее, так как не известно, какое случайное число придет в запросе. После получения ответа с результатами действий пользователь А может быть уверен, что сеанс является подлинным. Недостатком этого метода является возможность установления хотя и сложной закономерности между запросом и ответом.
2. Механизм отметки времени ("временной штемпель"). Он подразумевает фиксацию времени для каждого сообщения. В этом случае каждый пользователь ИС может знать, насколько "старым" является пришедшее сообщение.
В обоих случаях следует использовать шифрование, чтобы быть уверенным, что ответ послан не злоумышленником и штемпель отметки времени не изменен.
При использовании отметок времени встает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с "временным штемпелем" в принципе не может быть передано мгновенно. Кроме этого компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы. Какое запаздывание "штемпеля" считать подозрительным.
Поэтому в реальных ИС, например в системах оплаты кредитных карточек используется именно второй механизм установления подлинности и защиты от подделок. Используемый интервал составляет от одной до нескольких минут. Большое число известных способов кражи электронных денег, основано на "вклинивании" в этот промежуток с подложными запросами на снятии денег.
Для обмена ключами можно использовать криптосистемы с открытым ключом, используя тот же алгоритм RSA.
Но весьма эффективным оказался алгоритм Диффи-Хелмана, позволяющий двум пользователям без посредников обменяться ключом, который может быть использован затем для симметричного шифрования.
Алгоритм Диффи-Хеллмана
Диффи и Хелман предложили для создания криптографических систем с открытым ключом функцию дискретного возведения в степень.
Необратимость преобразования в этом случае обеспечивается тем, что достаточно легко вычислить показательную функцию в конечном поле Галуа состоящим из p элементов. (p - либо простое число, либо простое в любой степени). Вычисление же логарифмов в таких полях - значительно более трудоемкая операция.
Если y=x,, 1<x<p-1, где - фиксированный элемент поля GF(p), то x=log y над GF(p). Имея x, легко вычислить y. Для этого потребуется 2 ln(x+y) операций умножения.
Обратная задача вычисления x из y будет достаточно сложной. Если p выбрано достаточно правильно, то извлечение логарифма потребует вычислений, пропорциональных L(p) = exp { (ln p ln ln p)0.5 }
Для обмена информацией первый пользователь выбирает случайное число x1, равновероятное из целых 1...p-1. Это число он держит в секрете, а другому пользователю посылает число y1 = x mod p
Аналогично поступает и второй пользователь, генерируя x2 и вычислив y2, отправляя его первому пользователю. В результате этого они могут вычислять k12 = x1x2 mod p.
Для того, чтобы вычислить k12, первый пользователь возводит y2 в степень x1. То же делает и второй пользователь. Таким образом, у обоих пользователей оказывается общий ключ k12, который можно использовать для шифрования информации обычными алгоритмами. В отличие от алгоритма RSA, данный алгоритм не позволяет шифровать собственно информацию.
Не зная x1 и x2, злоумышленник может попытаться вычислить k12, зная только перехваченные y1 и y2. Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено. Так, если для прямого преобразования 1000-битных простых чисел требуется 2000 операций, то для обратного преобразования (вычисления логарифма в поле Галуа) - потребуется около 1030 операций.
Как видно, при всей простоте алгоритма Диффи-Хелмана, вторым его недостатком по сравнению с системой RSA является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.
Кроме того, хотя описанный алгоритм позволяет обойти проблему скрытой передачи ключа, необходимость аутентификации остается. Без дополнительных средств, один из пользователей не может быть уверен, что он обменялся ключами именно с тем пользователем, который ему нужен. Опасность имитации в этом случае остается.
В качестве обобщения сказанного о распределении ключей следует сказать следующее. Задача управления ключами сводится к поиску такого протокола распределения ключей, который обеспечивал бы:
-
возможность отказа от центра распределения ключей;
-
взаимное подтверждение подлинности участников сеанса;
-
подтверждение достоверности сеанса механизмом запроса-ответа, использование для этого программных или аппаратных средств;
-
использование при обмене ключами минимального числа сообщений.
Задание для самостоятельного выполнения:
Написать программу, реализующую алгоритм Диффи-Хелмана.
Вопросы для контрольного опроса:
-
Генерация ключей.
-
Накопление ключей.
-
Распределение ключей.
-
Центры генерации ключей.
-
Условия дискредитации ключей.
-
Условия дискредитации центра генерации ключей.
-
Ответственность за сохранность ключей
-
Алгоритм Диффи-Хеллмана
Лабораторная работа №9
Изучение односторонних функций
Цель работы: Изучить особенности алгоритмов электронной цифровой подписи в системах защиты информации
Программное обеспечение: Среда программирования Delphi 7, Visual C или Borland CBuilder.
Теоретический материал:
Электронная подпись
В чем состоит проблема аутентификации данных?
В конце обычного письма или документа исполнитель или ответственное лицо обычно ставит свою подпись. Подобное действие обычно преследует две цели. Во-первых, получатель имеет возможность убедиться в истинности письма, сличив подпись с имеющимся у него образцом. Во-вторых, личная подпись является юридическим гарантом авторства документа. Последний аспект особенно важен при заключении разного рода торговых сделок, составлении доверенностей, обязательств и т.д.
Если подделать подпись человека на бумаге весьма непросто, а установить авторство подписи современными криминалистическими методами - техническая деталь, то с подписью электронной дело обстоит иначе. Подделать цепочку битов, просто ее скопировав, или незаметно внести нелегальные исправления в документ сможет любой пользователь.
С широким распространением в современном мире электронных форм документов (в том числе и конфиденциальных) и средств их обработки особо актуальной стала проблема установления подлинности и авторства безбумажной документации.
В разделе криптографических систем с открытым ключом было показано, что при всех преимуществах современных систем шифрования они не позволяют обеспечить аутентификацию данных. Поэтому средства аутентификации должны использоваться в комплексе и криптографическими алгоритмами.
Итак, пусть имеются два пользователя Александр и Борис. От каких нарушений и действий злоумышленника должна защищать система аутентификации.
Отказ (ренегатство).
Александр заявляет, что он не посылал сообщение Борису, хотя на самом деле он все-таки посылал.
Для исключения этого нарушения используется электронная (или цифровая) подпись.
Модификация (переделка).
Борис изменяет сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Подделка.
Борис формирует сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Активный перехват.
Владимир перехватывает сообщения между Александром и Борисом с целью их скрытой модификации.
Для защиты от модификации, подделки и маскировки используются цифровые сигнатуры.
Маскировка (имитация).
Владимир посылает Борису сообщение от имени Александра .
В этом случае для защиты также используется электронная подпись.
Повтор.
Владимир повторяет ранее переданное сообщение, которое Александра посылал ранее Борису . Несмотря на то, что принимаются всевозможные меры защиты от повторов, именно на этот метод приходится большинство случаев незаконного снятия и траты денег в системах электронных платежей.
Наиболее действенным методом защиты от повтора являются
-
использование имитовставок,
-
учет входящих сообщений.
Возможные нарушения защиты сообщений,. посылаемых пользователем А пользователю В.
Электронная подпись на основе алгоритма RSA
Наиболее простым и распространенным инструментом электронной подписи является уже знакомый алгоритм RSA. Ниже оно будет рассмотрена в качестве примера. Кроме этого существуют еще десятки других схем цифровой подписи.
Предположим, что
d,p,q - секретные, а е, n=pq - открытые.
Замечания.
1. Разложение по n дает: (n)=(p-1)(q-1); зная (n) и e, можно найти d.
2. Из e и d можно найти кратность (n); кратность (n) позволяет определить делители n.
Пусть DATA - передаваемое Александром Борису сообщение.
Александр подписывает DATA для Бориса при передаче :
EeB,nB { EdA,nA {DATA}}.
При этом он использует:
-
закрытый ключ EdA,nA Александра,
-
открытый ключ EeB,nB Бориса.
Борис может читать это подписанное сообщение сначала при помощи закрытого ключа EdВ,nВ Бориса с целью получения
EdA,nA {DATA} = EdB,nB {EeB,nB {EdA,nA {DATA}}}
и затем - открытого ключа EeA,nA Александра для получения
DATA = EeA,nA { EdA,nA {DATA}}.
Таким образом, у Бориса появляется сообщение DATA, посланное ему Александром.
Очевидно, что данная схема позволяет защититься от нескольких видов нарушений.
Александр не может отказаться от своего сообщения, если он признает, что секретный ключ известен только ему.
Нарушитель без знания секретного ключа не может ни сформировать, ни сделать осмысленное изменение сообщения, передаваемого по линии связи.
Данная схема позволяет при решении многих конфликтных ситуаций обходиться без посредников.
Иногда нет необходимости зашифровывать передаваемое сообщение, но нужно его скрепить электронной подписью. В этом случае текст шифруется закрытым ключом отправителя и полученная цепочка символов прикрепляется к документу. Получатель с помощью открытого ключа отправителя расшифровывает подпись и сверяет ее с текстом.
В 1991 г. Национальный институт стандартов и технологии (NIST) предложил для появившегося тогда алгоритма цифровой подписи DSA (Digital Signature Algorithm) стандарт DSS (Digital Signature Standard), в основу которого положены алгоритмы Эль-Гамаля и RSA.6
Цифровая сигнатура
Часто возникают ситуации, когда получатель должен уметь доказать подлинность сообщения внешнему лицу. Чтобы иметь такую возможность, к передаваемым сообщениям должны быть приписаны так называемые цифровые сигнатуры.
Цифровая сигнатура - это строка символов, зависящая как от идентификатора отправителя, так и содержания сообщения.
сообщение
сигнатура
Никто при этом кроме пользователя А не может вычислить цифровую сигнатуру А для конкретного сообщения. Никто, даже сам пользователь не может изменить посланного сообщения так, чтобы сигнатура осталась неизменной. Хотя получатель должен иметь возможность проверить является ли цифровая сигнатура сообщения подлинной. Чтобы проверить цифровую сигнатуру, пользователь В должен представить посреднику С информацию, которую он сам использовал для верификации сигнатуры. Если помеченное сигнатурой сообщение передается непосредственно от отправителя к получателю, минуя промежуточное звено, то в этом случае идет речь об истинной цифровой сигнатуре.
Рассмотрим типичную схему цифровой сигнатуры.
Пусть Е - функция симметричного шифрования и f - функция отображения некоторого множества сообщений на подмножество мощности р из последовательности {1, ..., n}.
Например р=3 и n=9. Если m - сообщение , то в качестве f можно взять функцию f(m) = {2, 5, 7}.
Для каждого сообщения пользователь А выбирает некоторое множество ключей K=[K1, ..., Kn} и параметров V={v1, ...,vn} для использования в качестве пометок сообщения, которое будет послано В. Множества V и V'={E(v1,K1) ..., E(vn,Kn)} посылаются пользователю В и заранее выбранному посреднику С.
Пусть m - сообщение и idm - объединение идентификационных номеров отправителя, получателя и номера сообщения. Если f({idm, m}), то цифровая сигнатура m есть множество K'=[Ki, ..., Kj}. Сообщение m, идентификационный номер idm и цифровая сигнатура К' посылаются В.
Получатель В проверяет сигнатуру следующим образом. Он вычисляет функцию f({idm, m}) и проверяет ее равенство К'. Затем он проверяет, что подмножество {vi, ...,vj} правильно зашифровано в виде подмножества {E(vi,Ki) ..., E(vj,Kj)} множества V'.
В конфликтной ситуации В посылает С сообщение m, идентификационный номер idm и множество ключей K', которое В объявляет сигнатурой m. Тогда посредник С так же, как и В, будет способен проверить сигнатуру. Вероятность раскрытия двух сообщений с одним и тем же значением функции f должна быть очень мала. Чтобы гарантировать это, число n должно быть достаточно большим, а число р должно быть больше 1, но меньше n.
Ряд недостатков этой модели очевиден:
-
должно быть третье лицо - посредник, которому доверяют как получатель, так и отправитель;
-
получатель, отправитель и посредник должны обменяться существенным объемом информации, прежде чем будет передано реальное сообщение;
-
передача этой информации должна осуществляться в закрытом виде;
-
эта информация используется крайне неэффективно, поскольку множества K, V, V' используются только один раз.
Тем не менее даже такая схема цифровой сигнатуры может использоваться в информационных системах, в которых необходимо обеспечить аутентификацию и защиту передаваемых сообщений.
Хэш-функции
Использование цифровой сигнатуры предполагает использование некоторых функций шифрования: S = H(k, T),
где S - сигнатура, k - ключ, T - исходный текст.
Функция H(k, T) - является хэш-функцией, если она удовлетворяет следующим условиям:
-
исходный текст может быть произвольной длины;
-
само значение H(k, T) имеет фиксированную длину;
-
значение функции H(k, T) легко вычисляется для любого аргумента;
-
восстановить аргумент по значению с вычислительной точки зрения - практически невозможно;
-
функция H(k, T) - однозначна.
Из определения следует, что для любой хэш-функции есть тексты-близнецы - имеющие одинаковое значение хэш-функции, так как мощность множества аргументов неограниченно больше мощности множества значений. Такой факт получил название «эффект дня рождения». Наиболее известные из хэш-функций - MD2, MD4, MD5 и SHA. Три алгоритма серии MD разработаны Ривестом в 1989-м, 90-м и 91-м году соответственно. Все они преобразуют текст произвольной длины в 128-битную сигнатуру.
Алгоритм MD2 предполагает:
-
дополнение текста до длины, кратной 128 битам;
-
вычисление 16-битной контрольной суммы (старшие разряды отбрасываются);
-
добавление контрольной суммы к тексту;
-
повторное вычисление контрольной суммы.
Алгоритм MD4 предусматривает:
-
дополнение текста до длины, равной 448 бит по модулю 512;
-
добавляется длина текста в 64-битном представлении;
-
512-битные блоки подвергаются процедуре Damgard-Merkle, причем каждый блок участвует в трех разных циклах.
В алгоритме MD4 довольно быстро были найдены «дыры», поэтому он был заменен алгоритмом MD5, в котором каждый блок участвует не в трех, а в четырех различных циклах.
Алгоритм SHA (Secure Hash Algorithm) разработан NIST (National Institute of Standard and Technology) и повторяет идеи серии MD. В SHA используются тексты более 264 бит, которые закрываются сигнатурой длиной 160 бит. Данный алгоритм предполагается использовать в программе Capstone.
Задание для самостоятельного выполнения:
Написать программу получения сигнатуры.
Вопросы для контрольного опроса:
-
Идентификация и механизмы подтверждения подлинности пользователя.
-
Упрощенная схема идентификации с нулевой передачей знаний.
-
Проблема аутентификации данных и электронная цифровая подпись.
-
Однонаправленные хэш-функции.
-
Алгоритм безопасного хэширования SHA.
-
Однонаправленные хэш-функции на основе симметричных блочных алгоритмов.
-
Отечественный стандарт цифровой подписи.
Лабораторная работа №10
Создание и использование сертификатов безопасности
Цель работы: Научиться основам работы с сертификатами безопасности
Задание для самостоятельного выполнения:
Получить сертификат, установить его и с его помощью проверить подлинность информации.
Теоретический материал:
Сертификат открытого ключа, обычно называемый просто сертификатом - это документ с цифровой подписью, связывающий значение открытого ключа с удостоверением пользователя, устройства или службы, которым принадлежит соответствующий закрытый ключ. Одно из основных преимуществ использования сертификатов состоит в устранении необходимости использования на узлах паролей для отдельных субъектов, для предоставления доступа которым необходимо выполнять проверку их подлинности. Вместо этого узел просто устанавливает доверительные отношения с поставщиком сертификата.
Большинство широко используемых сертификатов основано на стандарте сертификата X.509v3.
Как правило, сертификаты содержат следующие сведения:
-
значение открытого ключа субъекта;
-
сведения об идентификации субъекта, такие как имя и адрес электронной почты;
-
срок действия (время, в течение которого сертификат считается действительным);
-
сведения для идентификации поставщика;
-
цифровую подпись поставщика, заверяющую действительность связи между общим ключом субъекта и сведениями для его идентификации.
Сертификат действителен только в течение указанного в нем периода; каждый сертификат содержит даты Действителен с и Действителен по, которые задают границы срока действия. По окончании срока действия сертификата субъект устаревающего сертификата должен запросить новый сертификат.
Сертификаты могут использоваться для выполнения следующих задач:
-
Проверка подлинности, которая служит для идентификации кого-либо или чего-либо.
-
Секретность, которая гарантирует доступность сведений только для указанной аудитории.
-
Шифрование, которое изменяет сведения таким образом, чтобы их было невозможно расшифровать при попытке несанкционированного прочтения.
-
Цифровые подписи, которые предоставляют целостность и невозможность отрицания авторства сообщений.
Эти службы безопасности могут быть важны для защиты подключений. Кроме того, сертификаты используются многими Windows-приложениями, включая службу IIS (Microsoft Internet Information Services), Microsoft Outlook, Microsoft Outlook Express и Internet Explorer.
Проверка подлинности
Проверка подлинности крайне важна для повышения безопасности подключения. Пользователи должны иметь возможность доказать свою подлинность тем, с кем они соединяются, и должны иметь возможность проверить подлинность других пользователей. Проверка подлинности по сети довольно сложна, поскольку пользователи, устанавливающие соединение, физически не встречаются. Это может позволить перехватывать сообщения и выдавать себя за другое лицо.
Конфиденциальность
Всякий раз, когда конфиденциальная информация передается между двумя вычислительными устройствами по сети любого типа, пользователи обычно должны использовать какой-либо вид шифрования для сохранения секретности своих данных.
Шифрование
Шифрование можно себе представлять как запирание ценностей в сейф под ключ. И наоборот, расшифровывание аналогично открыванию сейфа и извлечению ценностей. На компьютерах конфиденциальные данные в форме сообщений электронной почты, файлов на диске и файлов, передаваемых по сети, могут быть зашифрованы с помощью ключа. Зашифрованные данные и ключ, используемый для шифрования данных, нельзя расшифровать.
Дополнительные сведения о шифровании и сертификатах см. в разделе Ресурсы для сертификатов.
Цифровые подписи
Цифровая подпись - это способ гарантировать целостность и происхождение данных. Цифровая подпись обеспечивает убедительные доказательства, что данные не были изменены после подписания, и подтверждает подлинность пользователя или элемента, подписавшего данные. Это создает такие возможности системы безопасности, как целостность и неотрекаемость, которые важны для безопасных электронных торговых операций.
Цифровые подписи обычно используются при распространении данных в виде обычного текста в незашифрованной форме. Хотя в этих случаях уязвимость сообщения не является основанием для шифрования, могут оставаться важные причины для гарантии того, что данные находятся в исходном виде и не были отправлены самозванцем. Это связано с тем, что в распределенных вычислительных средах незашифрованный текст может быть прочитан и изменен любым лицом с соответствующим доступом (санкционированным или нет).
При шифровании с открытым ключом для шифрования и дешифрования информации используются разные ключи. Первый ключ - это закрытый ключ (ключ, который известен только его владельцу), тогда как второй ключ, называемый открытым ключом, может предоставляться другим субъектам в сети.
Эти два ключа различаются друг от друга, но функционируют во взаимодействии. Например, открытый ключ пользователя может публиковаться в сертификате, расположенном в каталоге, чтобы ключ был доступен для других пользователей в организации. Отправитель сообщения может извлечь сертификат пользователя из службы Active Directory, получить открытый ключ из сертификата, а затем зашифровать сообщение с помощью открытого ключа получателя. Информация, зашифрованная с помощью открытого ключа, может расшифровываться только с использованием закрытого ключа из соответствующего набора ключей, который хранится у его владельца, получателя сообщения.
Выбор формата файлов сертификатов основан на соображениях совместимости и безопасности. В данной версии Windows допускается импорт и экспорт сертификатов в следующих форматах:
Файл обмена личной информацией (PKCS #12)
Формат файла обмена личной информацией (PFX, также называемый PKCS #12) позволяет выполнять перенос сертификатов и их закрытых ключей с одного компьютера на другой или с компьютера на съемный носитель. Поскольку экспорт закрытого ключа может привести к его раскрытию, PKCS #12 является единственным форматом, поддерживаемым в данной версии Windows для экспорта сертификата и связанного закрытого ключа.
Стандарт Cryptographic Message Syntax (PKCS #7)
Формат PKCS #7 позволяет передавать сертификат и все сертификаты на пути сертификации с одного компьютера на другой или с компьютера на съемный носитель.
DER-шифрованный файл X.509
DER (Distinguished Encoding Rules) для ASN.1, как определено в рекомендации ITU-T Recommendation X.509, может использоваться центрами сертификации, размещенными на серверах не под управлением Windows Server 2003, поэтому он поддерживается для совместимости. Файлы сертификатов DER используют расширение .cer.
Base64-шифрованный формат X.509
Этот метод кодирования создан для работы с протоколом S/MIME, который популярен при передаче двоичных файлов через Интернет. Так как все MIME-совместимые клиенты могут декодировать файлы Base64, этот формат может использоваться центрами сертификации, которые расположены на серверах не под управлением Windows Server 2003, поэтому он поддерживается для совместимости. Файлы сертификатов Base64 используют расширение .cer.
Вопросы для контрольного опроса:
-
Что такое цифровые сертификаты?
-
Как осуществляется проверка подлинности?
-
Какие форматы сертификатов существуют?
1 n-граммой называется последовательность из n символов алфавита.
2 К вопросу о том, существует или не существует абсолютно надежная криптосистема.
3 Здесь и далее m - объем используемого алфавита.
4 Например, в нашумевшей программе PGP
5 В браузерах Интернет от Microsoft и Netscape
6 В РФ принятые стандарты цифровой подписи Р38 и Р39, также как и ГОСТ 28147-89 имеют гриф ДСП