Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Открытое распределение ключей




 

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

Первое практическое применение криптосистем с открытым ключом – организация обмена ключами между удаленными пользователями через открытые каналы связи.

Рассмотрим практическую реализацию (протокол обмена ключами).

Необходима определенная подготовительная работа:

· получить p – большое простое число;

· получить полное разложение числа (p –1) на множители;

· вычислить первообразный корень r по модулю p (r mod p)

 
 

Всякое составное число можно разложить на простые множители (множители – простые числа или их положительные целые степени, возможно нулевые).

где pi – простые числа; bi – степени простых чисел.

Первообразный корень – любое число из интервала , для которого выполняется условие: . Если выполняется это условие, то любое целое число с можно представить в виде , где х – некоторое положительное целое число из интервала . Пару чисел (p,r) используют в качестве общих данных (открытого ключа).

Протокол обмена ключами Диффи–Хеллмана

1. А генерирует элемент , вычисляет и отправляет результат В.

2. В генерирует элемент , вычисляет и отправляет результат А.

3. А вычисляет значение .

4. В вычисляет значение .

Замечание: после получения значения и должны быть уничтожены.

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

Пример Пусть p = 43 (простое число), r = 3 – первообразный корень по ; пара чисел (43,3) – открытый ключ для выработки секретного ключа .

 

Пусть в результате выполнения протокола А генерирует элемент , и вычисляет .

Аналогичные действия В дают следующий результат: элемент , и вычисление . После выполнения пунктов 3, 4 протокола результат следующий: .

 

Рекомендации для практической реализации

1 Простое число p необходимо выбирать так, чтобы число p -1 имело достаточно большой сомножитель pmax > 2160.

2 r – не обязательно должен быть первообразным корнем; достаточно следующего:

r ≠ 1; и .

 

 

Криптосистема RSA

RSA – система ассиметричного шифрования, в которой для кодирования сообщения используется один ключ, а для расшифровки другой. Названа в честь математиков-криптологов Рона Ривеста (Rivest), Ади Шамира (Shamir) и Лена Адельмана (Adelman) из Масачуссетского Технологического Института, разработавших алгоритм в 1977 году.

Система RSA используется для защиты программного обеспечения и в схемах цифровой подписи. Также она используется в открытой системе шифрования PGP. Из-за низкой скорости шифрования (около 30 кбит/с при 512 битном ключе на процессоре 2ГГц), сообщения обычно шифруют с помощью более производительных симметричных алгоритмов со случайным ключом, а с помощью RSA шифруют только этот ключ, который в зашифрованном виде помещают в начало шифротекста.

В связи со схемой RSA возникает ряд алгоритмических задач.

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

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

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

1. Выбрать два случайных простых числа p и q, причем | p |≈ | q | (т.е. числа примерно одинаковой длины).

2. Вычислить N = p q.

3. Вычислить функцию Эйлера φ (N) = (p-1) (q-1) (см. примечание).

4. Выбрать случайное целое число e < φ (N) взаимно простое с φ (N)

т.е. НОД(e, Ф (N)) = 1 и найти число d обратное e по модулю φ (N) (e -1 = d)

e d ≡ 1 mod (φ (N)) = 1 + φ (N) ∙n (n – любое целое число).

5. В качестве параметров открытого ключа сообщить пару (e, N) всем, кто будет передавать ему зашифрованную информацию; секретный ключ d не разглашать и надежно хранить; числа p, q, φ (N) – уничтожить.

Примечание Функция Эйлера φ (N) равна количеству целых чисел, взаимно простых с N. Вычислить эту функцию в общем виде для любого N можно через его разложение на простые сомножители. Пусть N = p1 b1 p2 b2 p3 b3 …pn bn , тогда функция Эйлера вычисляется по формуле φ (N) = N ( 1- 1/ p1) ( 1- 1/ p2 ) ( 1- 1/ p3 ) …( 1- 1/ pn ).

Шифрование

В хочет зашифровать сообщение m и переслать его А по открытому каналу причем (m < N); для получения шифротекста В выполняет следующее преобразование:

m e ( mod N) → c,

где c – шифротекст, который передается А по открытому каналу.

Замечание: Если В утратил исходное сообщение m, то по c он не сможет восстановить m.

Расшифрование

Для восстановления исходного сообщения m А с полученным шифротекстом c выполняет следующее преобразование:

C d (mod N) → m.

Математически убедимся в этом:

c d ( mod N) = m e d ( mod N) = m( 1 + φ (N)n) ( mod N) = m m φ (N)n( mod N) =

= m (m φ (N) ( mod N)) n = m.

Последнее преобразование выполнено в соответствии с теоремой Эйлера.

Теорема Если НОД (m,N) = 1, то m φ (N) ≡ 1 ( mod N). ( это в нашем случае всегда так за исключением двух совпадений m = p и m = q). Предполагается, что вероятность таких совпадений ничтожно мала при больших p и q в реальных криптосистемах.

Пример (учебный)

Пусть А выбрал N = p ∙q = 7х13 = 91 и e = 5; тогда φ (N)∙ = 6х12 = 72. Открытый ключ (91,5). Для вычисления секретного ключа d необходимо решить уравнение

5 d ≡ 1 ( mod 72 ); или. 72 n +5 d = 1

Подставляя в это уравнение числа = 0, ± 1, ± 2 и т.д. получим единственное целочисленное решение при n = –2 d = 29 (секретный ключ).

Пусть В решил отправить А сообщение m =3. Используя открытый ключ (91,5) он получил шифротекст 3 5 ( mod 91 ) → 61. Шифротекст 61 В передает по открытому каналу А. Для восстановления исходного сообщения А выполняет следующее вычисление:

61 29 ( mod 91 ) → 3.

 

 





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 351 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2338 - | 2092 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.