Лекция 4 алгоритмы.ppt
- Количество слайдов: 55
Блочные шифры Блочные криптосистемы разбивают текст сообщения на отдельные блоки и затем осуществляют преобразование этих блоков с использованием ключа. Преобразование должно использовать следующие принципы: Рассеивание (diffusion) - т. е изменение любого знака открытого текста или ключа влияет на большое число знаков шифротекста, что скрывает статистические свойства открытого текста; Перемешивание (confusion) - использование преобразований, затрудняющих получение статистических зависимостей между шифротектстом и открытым текстом. 1
Симметричные шифры Простой пример: шифр Юлия Цезаря Алгоритм: сдвиг номера буквы алфавита на величину ключа, например, для значения ключа равного 3, вместо A записывается D, вместо B – E и т. д. (сложение по модулю 26) Таким образом, фраза “VENI, VEDI, VICI” записывается как “YHQL, YHGL, YLFL”
Симметричные шифры Пусть даны функции E(T, k) и D(C, k), причем D(E(T, k)=T Назовем k ключом, T – открытым текстом, C – шифротекстом, E – функцией шифрования, D – функцией дешифрования Пусть Алиса и Боб договорились о конкретном значении k, тогда они могут установить конфиденциальный канал связи
Симметричные шифры Невскрываемый шифр: одноразовый блокнот Изобретен в 1917 году Major Joseph Mauborgne и Gilbert Vernam Широко использовался (используется? ) в разведке Основной недостаток: длина ключа равна длине сообщения
Симметричные шифры Шифр DES Разработан IBM под именем Lucifer, в 1977 году после некоторых модификаций принят как стандарт Представляет собой блочный шифр с размером блока 64 бита; длина ключа равняется 56 битам, ключ обычно сохраняется как 64 бита, каждый восьмой бит не используется
Параметры блочного шифра Числовые параметры алгоритма: - размер шифруемого блока данных - размер ключа - размер “шагового” ключа - число раундов шифрования Функция шифрования Набор функций для выработки шаговых ключей Фиксированные перестановки 6
Алгоритм DES Data Encryption Standard Американский стандарт шифрования на протяжении 1974 -2000 г. г. Длина блока 64 бит Длина ключа 56 бит Размер ключа 48 бит Число раундов 16 7
Алгоритм DES: более подробно 8
DES Детализация Работает по-блочно: 64 бита Начальная перестановка 64 бит Далее шифрование за 16 этапов Исходный текст Начальная перестановка Этап 1 Этап 2. . . Этап 16 Обратная перестановка Шифротекст
DES: Один этап 64 бита делятся на левую и правую половины Правая часть преобразуется функцией F в соответствии с ключом Правая часть складывается с левой Части меняются Уравнения i-го этапа: местами (исключение последний раунд) Li-1 Ri-1 Li Ri
Криптосистемы с открытым ключом Асимметричное шифрование, Асимметричный шифр – синоним Криптографической системы с открытым ключом. • Определение: система шифрования информации, при которой ключ, которым зашифровывается сообщение и само зашифрованное сообщение передаѐтся по открытому (то есть незащищѐнному, доступному для наблюдения) каналу. Для генерации открытого ключа и для прочтения зашифрованного сообщения получатель использует секретный ключ.
Криптосистемы с открытым ключом Идея предложена в 1976 году Whitfield Diffie и Martin Hellman и, независимо, Ralph Merkle • Основная идея: 2 ключа Закрытый ключ нужен только для расшифровки Открытый ключ нужен только для зашифровки Кто угодно может зашифровать открытый текст открытым ключом Легальный пользователь закрытым ключом может расшифровать шифротекст
Криптосистемы с открытым ключом В основе алгоритмов криптосистем с открытым ключом лежат однонаправленные хэш-функции с потайным входом Определение 1: Однонаправленной хэш-функцией называют хэш-функцию, которая работает только в одном направлении: вычислить значение хэш-функции легко, сгенерировать прообраз, который свернется к заданной величине –очень трудно ▫ Определение 2: Хэш-функция – это математическая или иная функция, которая принимает на входе строку переменной длины (прообраз) и преобразует ее в строку фиксированной длины (значение хэш-функции) ▫ Определение 3: Однонаправленные функции - функции, которые достаточно легко вычислить, но значительно труднее обратить. При наличии х нетрудно определить f(x), однако, при условии знания только f(x), на нахождение соответствующего значения х уйдут миллионы лет вычислений на всех компьютерах, которые только есть в мире.
Ассиметричные шифры Пусть даны функции E(T, k) и D(T, k) Пусть даны k и k‘, взаимосвязанные, таким образом, что D(E(T, k), k‘)=T Зная k, мы не можем вычислить k‘ и наоборот Назовем k открытым ключом, а k‘ - закрытым
Алгоритм El. Gamal Основан на трудности дискретного логарифмирования в конечном поле Выбираем простое p, случайные g<p и x<p Вычисляем y=g^x mod p Открытый ключ: y, g, p Закрытый ключ: x
Алгоритм El. Gamal Подпись: Подписываем сообщение M l Выбираем случайное k, взаимно простое с p-1 l Вычисляем a=g^k mod p l Вычисляем b такое, что M=(xa+kb) mod (p-1) l Подпись: a, b l
Алгоритм El. Gamal Проверка подписи: Даны a, b – подпись, M – сообщение, y, g, p – открытый ключ l Если y^a*a^b mod p = g^M mod p , то подпись верна l
Алгоритм El. Gamal Пример: p=11, g=2, x=8 l y=g^x mod p = 2^8 mod 11 = 3 l M=5, k=9 l a=g^k mod p = 2^9 mod 11 = 6 l M=(ax+kb) mod (p-1), 5=(8*6+9 b) mod 10, b=3 l y^a*a^b mod p = g^M mod p, 3^6*6^3 mod 11 = 2^5 mod 11 l
Алгоритм El. Gamal Шифрование Шифруем сообщение M, выбираем случайное k, взаимно простое с p-1 l Вычисляем a=g^k mod p l Вычисляем b=(y^k * M) mod p l Шифротекст: a, b l
Алгоритм El. Gamal Расшифрование: l M=(b/a^x) mod p Пояснение: M=(b/a^x) mod p = (y^k*M/g^xk) mod p = (g^kx*M/g^kx) mod p = M
Алгоритм RSA Основан на трудоемкости факторизации больших чисел Назван в честь разработчиков Rivest, Shamir и Adleman Является стандартом de-facto в коммерческих системах Не используется в Gnu. PG
Алгоритм RSA Ключи: Открытый: n=p*q, p, q - большие простые числа, e – взаимно простое с (p-1)(q-1) l Закрытый: d=e^-1 mod((p-1)(q-1)) l Зашифрование: c=m^e mod n Расшифрование: m=c^d mod n
Алгоритм RSA Пример: p=23, q=41; n=p*q=943 l (p-1)(q-1)=880; e=7 l M=35 l d: d*e=1 mod ((p-1)(q-1)); d=503 l c=M^e mod n = 35 ^ 7 mod 943 = 545 l m=c^d mod n=545^503 mod 943 = 35 l
Эллиптические кривые Основные проблемы предыдущих алгоритмов: -Работать с большими числами сложно; -Поэтому необходимо сохранить прежний функционал с меньшими затратами. КРИПТОАЛГОРИТМЫ НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
Эллиптические кривые Из-за трудности взлома алгоритм ECDLP можно применять для высоко защищенных систем; обеспечивая сопоставимый уровень безопасности, алгоритм имеет значительно меньшие размеры ключа, чем, например, алгоритмы RSA или DSA. В приведенной ниже таблице сравниваются приблизительные размеры параметров эллиптических систем и RSA, обеспечивающих одинаковую стойкость шифра, которая рассчитывается на основе современных методов решения ECDLP и факторинга (поиска делителей) для больших целых чисел. Система на основе эллиптической кривой (базовая точка P) 106 бит 132 бит 160 бит 224 бит RSA (длина модуля n) 512 бит 768 бит 1024 бит 2048 бит
Эллиптические кривые В общем случае эллиптическая кривая описывается математическим уравнением вида: y 2+axy+by=x 3+cx 2+dx+e , где a, b, c, d и e являются действительными числами, удовлетворяющими некоторым простым условиям.
Эллиптические кривые В случае криптографии с использованием эллиптических кривых приходится иметь дело с редуцированной формой эллиптической кривой, которая определяется над конечным полем. Особый интерес для криптографии представляет объект, называемый эллиптической группой по модулю p, где p является простым числом. Эллиптическая кривая над конечным полем задаётся уравнением y 2=x 3+ax+b (mod p).
Эллиптические кривые Пространственный график эллиптической кривой y 2=x 3 -5 x+1
Эллиптические кривые Криптоалгоритм основан на “Проблеме Дискретного Логарифма Эллиптической Кривой” (Elliptic Curve Discrete Logarithm Problem – ECDLP): “Даны “базовая точка” P и расположенная на кривой точка k. P; найти значение k”. Для эллиптических кривых и базовых точек решение таких уравнений представляет весьма и весьма большую трудность! С точки же зрения криптографии имеется возможность определить новую криптографическую систему на основе эллиптических кривых. Любая стандартная система, основанная на проблеме дискретного логарифма, аналогична системе основанной на ECDLP. Например, Эллиптическая Кривая DSA (ECDSA) уже стандартизирована (ANSI X 9. 62 – Ref. 4) и на ее основе может быть реализован протокол открытого обмена ключами Diffie-Hellman.
Эллиптические кривые В случае криптографии с использованием эллиптических кривых приходится иметь дело с редуцированной формой эллиптической кривой, которая определяется над конечным полем. Особый интерес для криптографии представляет объект, называемый эллиптической группой по модулю p, где p является простым числом. Эллиптическая кривая над конечным полем задаётся уравнением y 2=x 3+ax+b (mod p).
Эллиптические кривые Если кривая не имеет особых точек, то ее график имеет две части, если дискриминант положителен и одну – если отрицателен. Для первого рисунка D=64, для второго – D=-368.
Эллиптические кривые Для получения суммы двух разных точек проводится секущая через точки P и Q, находится третья точка пересечения секущей с кривой, эта точка отражается относительно оси абсцисс, полученная точка и есть сумма точек P и Q. Сказанное иллюстрирует классический рисунок, приведенный на этой странице. При удвоении точки (вычислении точки 2 P) вместо секущей используется касательная, проходящая через точку P. Обратная точка – это точка, симметричная относительно оси абсцисс. Сумма точек обозначается n. P , эта операция называется скалярным произведением. Она аналогична операции возведения в степень в простом конечном поле
Эллиптические кривые А) Правило сложения точек: Для всех (X 1, Y 1) E(GF(p)) и (X 2, Y 2) E(GF(p)), удовлетворяющих условию X 1≠ X 2, (X 1, Y 1) + (X 2, Y 2) = (X 3, Y 3) , где значения X 3 и Y 3 вычисляются по формулам:
Эллиптические кривые Б) Правило удвоения точки: Для всех (X 1, Y 1) E(GF(p)), удовлетворяющих условию Y 1≠ 0: 2(X 1, Y 1) = (X 3, Y 3) , где
Эллиптические кривые Нахождение точек на эллиптической кривой производится по следующему алгоритму: 1) для каждого значения х, удовлетворяющего 0 ≤ x < p, вычисляется (x^3+ax+b) mod (p); 2) для каждого из полученных на предыдущем шаге значений x выясняется, имеет ли это значение корень квадратный по модулю р. Если нет, то во множестве Ер(a, b) нет точек с этим значением х. Если корень существует, то имеются два значения у, соответствующих операции извлечения квадратного корня (исключение составляет случай у = 0). Эти значения (х, у) и будут точками Ер(a, b).
Эллиптические кривые Обмен ключами с использованием эллиптических кривых: 1. Сначала выбирается большое простое число p и параметры а и b для эллиптической кривой. Это задает эллиптическую группу точек Ер(a, b). 2. Затем в Ер(a, b) выбирается генерирующая точка G(x, y). При выборе G важно, чтобы наименьшее значение n, при котором n. G=0 оказалось очень большим простым числом. Параметры Ер(a, b) и G криптосистемы являются параметрами, известными всем участникам.
Эллиптические кривые Аналог обмена ключами по схеме Диффи-Хеллмана Обмен ключами между пользователями А и В можно провести по следующей схеме: 1) сторона А выбирает целое число NA<n. Это число будет личным ключом участника А. Затем участник А генерирует открытый ключ РА=NA*G. Открытый ключ представляет собой некоторую точку из Ер(a, b). 2) сторона В выбирает аналогично личный ключ NB и вычисляет открытый ключ РB=NB*G ; 3) участник А генерирует секретный ключ K=NA*PB , а участник В генерирует секретный ключ K=NB*PA.
Эллиптические кривые Пример. Выберем р = 211, Е 211(0, – 4) и ) G(2 , 2). Нетрудно сосчитать, что 241 G = 0. Личным ключом участника А является NA=121, поэтому открытым ключом участника А будет РA=121(2, 2)=(115, 48). Личным ключом участника В будет NB=203, поэтому открытым ключом участника В будет РB=203(2, 2)=(130, 203). Общим секретным ключом является 121(130, 203) = 203 (115, 48) = (161, 169)
Эллиптические кривые Схема алгоритма шифрования с использованием эллиптических кривых Пусть необходимо зашифровать сообщение М. представленное целым десятичным числом 1. Задаемся модулем эллиптической кривой р и в соответствии с условием выбираем коэффициенты а и b данной ЭК. 2. Согласно формуле: производим оценку порядка точек m эллиптической кривой
Эллиптические кривые 3. Согласно соотношениям: выбираем q– порядок циклической подгруппы точек ЭК 4. Образующую поля, точку P(хp, yp), выбираем исходя из соотношения: 5. Выбираем случайное число k, являющееся секретным ключом данной криптосистемы 6. Производим вычисление точки k. P = Pk(xk, yk) 7. Вычисляем точку М*P = PМ (XМ, YМ)
Эллиптические кривые 8. Вычисляем Pk(xk, yk) + PМ (XМ, YМ) = Q(XQ, YQ). Полученная точка Q(X, Q, YQ) является зашифрованным представлением исходного числа М, а величина k – секретным ключом данной криптосистемы. 9. Для расшифрования необходимо зная секретный ключ k, получить точку Pk(xk, yk), после чего вычислить Q(X, Q, YQ) - Pk(xk, yk) = P (X , Y )
Эллиптические кривые Пример. Пусть входной вектор М равен 2. 1. Задаемся модулем эллиптической кривой р, а также коэффициентами а и b : p = 29, a = -1, b = 1. 2. Проверяем корректность выбора коэффициентов: 4 a 3 + 27 b 2 mod 29 = 23 0; 3. Производим оценку порядка точек в поле: 29 + 1 - 2 29 m 29 + 1 + 2 29 19, 23 m 40, 7 20 m 40 4. Выбираем q, пользуясь соотношением: m = nq, при n = 1, q = m/n = 37.
Эллиптические кривые 5. Выбираем секретный ключ k = 3, и образующую поля P 1(0, 3) Вычисляем: k. P 0 = P 0 + P 0 = 2 P 0 + P 0 = P 3(1, 34) 6. Вычисляем М*Р 0 =2 P 0 = P 2(36, 3) 7. Вычисляем: P 3(1, 34) + P 2(36, 3) = P 5(9, 27) 8. Точка P 5(9, 27) является зашифрованным представлением входного вектора М 9. Для расшифрования необходимо вычислить P 5(9, 27) - P 3(1, 34) = P 2(36, 3)
Хэш-функции. Назначение хэш-функций (ХФ) состоит в том, чтобы отслеживать случайные или преднамеренные изменения содержания сообщений, пересылаемых по открытым сетям (аутентификация сообщений). Формально, хэш-функция H(M), определяется как отображение множества битовых последовательностей M ( «сообщений» ) большой длины (|M|<L, длина M может и не ограничиваться) в множество битовых последовательностей h=H(M) ( «хэш-кодов» ) фиксированной меньшей длины (|h|<l<L). Заметьте, что ХФ не является взаимно-однозначной.
Хэш-функции. Для целей аутентификации ХФ должна удовлетворять следующим требованиям: 1. ХФ может применяться к блоку данных достаточно большой длины. 2. Значение Н(М) относительно легко (за полиномиальное время от длины |M|) вычисляется для любого допустимого значения М (такого, что |M|<L). 3. Для любого данного значения хэш-кода h вычислительно трудно найти какое-нибудь M такое, что Н(M)=h. любого данного X вычислительно трудно найти Y X, такое что H(Y)=H(X). 4. Для 5. Трудно найти произвольную пару (X, Y) такую, что H(y)=H(x).
Хэш-функции. На первый взгляд, 3 -е требование кажется естественным следствием условия l<L, т. к. в этом случае ХФ не обратима. На самом деле, здесь накладывается существенное ограничение на алгоритм вычисления H(M), не допускающий «обратный счет» . Именно это требование - причина того, что используемые алгоритмы ХФ «похожи» на алгоритмы симметричного шифрования ( «перемешивания» битов) , где данное свойство является основным. 4 -е и 5 -е требования, как сейчас будет пояснено, фактически накладывают нижнее ограничение на длину значения ХФ, величину l.
Хэш-функции. ХФ, удовлетворяющие 1 -4 называют еще простыми или слабыми. Качество таких ХФ принято определять по трудоемкости определения сообщения Y (см. треб. 4) случайным перебором из множества всех возможных сообщений M. Оценим для этого количество (k) сообщений Y, которое нужно перебрать, чтобы с вероятностью 0. 5 получить равенство ho=H(Y), для фиксированного ho=H(X). Обозначим количество возможных значений ХФ через =2 l. Вероятность совпадения для k=1 равна -1, а для произвольного k>1 есть k • -1. Таким образом, «в среднем» необходимо перебрать 2 l-1 сообщений Y. С этой точки зрения ХФ, с длиной хэша в 64 бита кажется уже весьма надежной. ХФ, удовлетворяющие еще и требованию 5 принято называть сильными.
Хэш-функции. В таблице сведены основные параметры трех популярных алгоритмов ХФ (все – сильные). Указанные алгоритмы подробно описаны в сети (Wikipedia)
Цифровая подпись Фактически, технологии ЦП решают проблему аутентификации сообщений, пересылаемых по открытым сетям, в результате координированного использования одного из несимметричных алгоритмов (НА) и какого-либо алгоритма вычисления ХФ. Вообще говоря, НА можно использовать для подписывания сообщений и без ХФ, однако ее использование значительно повышает производительность процедур создания и верификации ЦП. Рассмотрим ситуацию когда сторона A желает отправить стороне B сообщения M, заверенные своей (A) подписью.
Цифровая подпись Общая схема ЦП: Шаг 0. (предваряет отправку сообщений) А создает пару ключей [KOA, KRA] и обеспечивает надежную (защищенную от подмены) доставку открытого ключа KOA стороне B, кроме того, А сообщает B какая хэш-функция H будет использоваться. Следующие шаги соответствуют отправке сообщений. Шаг 1. A вычисляет s. KRA(M)=EKRA(H(M)). Зашифрованное закрытым ключом отправителя значение H(M) и есть ЦП сообщения M. Шаг 2. A отправляет B сообщение и подпись {M, s(M)}. Шаг 3. (верификация) сторона B, получив структуру {M’, s’} проверяет подлинность сообщения. Для этого, B вычисляет h’=H(M’), и сравнивает значения h’ и DKOA(s’). Равенство, с точностью до надежности используемых НА и ХФ, считается доказательством подлинности M’, т. е. равенства M=M’.
Цифровая подпись Заметим, что в отличие от схемы использования асимметричного алгоритма для шифрования отправляемых сообщений, где А был нужен открытый ключ принимающей стороны B, схема ЦП требует закрытого ключа A для шифрования значения ХФ. Это накладывает дополнительные требования на используемый алгоритм НА. Необходимо, чтобы процедуры EK(. ) и DK(. ) можно было бы применять с обоими ключами из пары {KO, KR}. Алгоритм RSA обладает этим свойством, поэтому именно он соответствует, т. н. детерминированной ЦП, когда для одного и того сообщения будет создана одна и та же подпись.
Цифровые сертификаты. Проблема компрометации Надежность схем шифрования сообщений и ЦП основаны на предположении, что имеется надежная инфраструктура распространения открытых ключей. Основным здесь является требование, что сторона X, получившая открытый ключ другой стороны Y, действительно должна быть уверена, что этот публичный ключ не подменен, т. е. действительно принадлежит X. Иначе, либо зашифрованные данные могут стать известными третьей стороне (когда НА используется для шифрования), либо ЦП может быть скомпрометирована (т. е. , сторона отправившая сообщение со своей подписью, может затем отказаться от содержания послания, сославшись на то, что ее подпись была подделана.
Цифровые сертификаты. Проблема компрометации На рисунке изображен пример, когда сторона Z, «перехватила» и подменила открытый ключ KOY, чтобы затем читать/изменять сообщения, направляемые от Y к X.
Цифровые сертификаты. Проблема компрометации Технология цифровых сертификатов (ЦС) призвана решить проблему надежного (с точки зрения защиты от компрометации) распространения публичных ключей. Концепция ЦС заключается в том, что публичный ключ доставляется заинтересованной стороне, будучи заверенным ЦП, созданной при участии выделенной третьей стороны, чей публичный ключ защищен от компрометации.
Цифровые сертификаты. Проблема компрометации Этого выделенного участника технологии ЦС принято называть Центром Авторизации (ЦА или СА, Certif. Authority). Ниже изображена схема отправки KOX стороне Y в составе сертификата, заверенного подписью CA. CA {KOCA, KRC} сторона X сторона Y 1. запрос на выдачу ЦС: 2. отправка сертификата X, [KOX, {name. X, mail. X, . . . }] подписанного CA CA<X>=[KO X, {name. X, mail. X, . . . }, s. KRCA({KOX, прочее содержимое })] X, {KOX, KRX} Y , KOCA (Y хранит ключ СА) 3. отправка KOX в составе сертификата CA<X> Y может проверить подлинность сертификата CA<X>, располагая открытым ключом CA.
Лекция 4 алгоритмы.ppt