Опубликован: 11.04.2007 | Доступ: свободный | Студентов: 5904 / 2148 | Оценка: 4.37 / 4.24 | Длительность: 11:19:00
Лекция 12:

Основы теории защиты информации

< Лекция 11 || Лекция 12: 123 || Лекция 13 >

Криптосистема без передачи ключей

Пусть абоненты A, B, C, \ldots условились организовать между собой секретную переписку. Для этой цели они выбирают достаточно большое простое число p такое, что p-1 хорошо разлагается на не очень большие простые множители. Затем каждый из абонентов независимо один от другого выбирает себе некоторое натуральное число, взаимно простое с p-1. Пусть число абонента A - a, абонента B - b и т.д. Числа a, b, \ldots составляют первые секретные ключи соответствующих абонентов. Вторые секретные ключи ( \alpha для A, \beta для B и т.д.) находятся из уравнений: для A из a\alpha\equiv1\pmod{\varphi(p)}, 0<\alpha<p-1 ; для B - из b\beta\equiv1\pmod{\varphi(p)}, 0<\beta<p-1 и т.д. Пересылаемые сообщения, коды-числа, должны быть меньше p-1. В случае, когда сообщение больше или равно p-1, оно разбивается на части таким образом, чтобы каждая часть была числом, меньшим p-1.

Предположим абонент A решил отправить сообщение m ( m<p-1 ) B. Для этого он сначала зашифровывает свое сообщение ключом a, получая по формуле m_1\equiv m^a\pmod p шифрованное сообщение m_1, которое отправляется B. B, получив m_1, зашифровывает его своим ключом b, получая по формуле m_2\equiv m_1^b\pmod p шифрованное сообщение m_2, которое отправляется обратно к A. A шифрует полученное сообщение ключом \alpha по формуле m_3\equiv m_2^\alpha\pmod p и окончательно отправляет m_3 к B. B, используя ключ \beta, сможет теперь расшифровать исходное сообщение m. Действительно, m_4\equiv m_3^\beta\equiv m^{a\alpha b\beta}\equiv m\pmod p, т.к. a\alpha b\beta\equiv1\pmod{\varphi(p)}, следовательно, a\alpha b\beta=k\varphi(p)+1 для некоторого целого k и m^{k\varphi(p)+1}\equiv(m^{\varphi(p)})^km\equiv m\pmod p, т.к. m^{\varphi(p)}\equiv1\pmod p по теореме Эйлера-Ферма.

Пример. Абоненты A и B вместе выбрали p=23 ( \varphi(23)=22 ), A выбрал a=5, а B - b=7. Затем из уравнения 5\alpha\equiv1\pmod{\varphi(23)} A находит \alpha=9, а B из подобного уравнения находит \beta=19. При передаче сообщения m=17 от A к B сначала A отправляет к B m_1\equiv 17^5\equiv 21\pmod{23}, из m_1=21 B вычисляет m_2\equiv 21^7\equiv 10\pmod{23} и отправляет его обратно A, из m_2=10 A вычисляет для B m_3\equiv 10^9\equiv 20\pmod{23}, наконец, B может прочитать посланное ему сообщение 20^{19}\equiv 17\pmod{23}.

Упражнение 48 Между абонентами A и B установлен секретный канал связи без передачи ключей при заданных p=167 и их первых ключах 15 и 21. Описать процесс передачи сообщений 22 (от A к B ) и 17 (от B к A ).

Криптосистема с открытым ключом

Первую и наиболее известную систему с открытым ключом разработали в 1978 году американцы Р. Ривест (Rivest R.), Э. Шамир (Shamir A.) и Л. Адлеман (Adleman L.). По их именам эта система получила название RSA.

Пусть абоненты A и B решили организовать для себя возможность секретной переписки. Для этого каждый из них независимо выбирает два больших простых числа ( p_{A_1}, p_{A_2} и p_{B_1}, p_{B_2} ), находит их произведение ( r_A и r_B ), функцию Эйлера от этого произведения ( \varphi(r_A) и \varphi(r_B) ) и случайное число ( a и b ), меньшее вычисленного значения функции Эйлера и взаимно простое с ним. Кроме того, A из уравнения a\alpha\equiv1\pmod{\varphi(r_A)} находит \alpha ( 0<\alpha<\varphi(r_A) ), а B из уравнения b\beta\equiv1\pmod{\varphi(r_B)} находит \beta ( 0<\beta<\varphi(r_B) ). Затем A и B печатают доступную всем книгу паролей вида:


Теперь кто-угодно может отправлять конфиденциальные сообщения A или B. Например, если пользователь книги паролей хочет отправить сообщение m для B ( m должно быть меньшим r_B, или делиться на куски, меньшие r_B ), то он использует ключ b из книги паролей для получения шифрованного сообщения m_1 по формуле m_1\equiv
    m^b\pmod{r_B}, которое и отправляется B. B для дешифровки m_1 использует ключ \beta в формуле m_1^\beta\equiv m^{b\beta}\equiv m\pmod{r_B}, т.к. b\beta\equiv1\pmod{\varphi(r_B)}, следовательно, b\beta=k\varphi(r_B)+1 для некоторого целого k и m^{k\varphi(r_B)+1}\equiv(m^{\varphi(r_B)})^km\equiv m\pmod{r_B}, т.к. m^{\varphi(r_B)}\equiv1\pmod{r_B} по теореме Эйлера-Ферма. Доказано112, что задача нахождения секретного ключа \beta по данным из книги паролей имеет ту же сложность, что и задача разложения числа r_B на простые множители.

Пример. Пусть для A p_{A_1}=7 и p_{A_2}=23, тогда r_A=p_{A_1}p_{A_2}=161, \varphi(161)=6*22=132, a=7, \alpha=19 (из уравнения 7\alpha\equiv1\pmod{132} ). Следовательно, запись в книге паролей для A будет иметь вид A\colon\ 161,7. Если кто-то захочет отправить A секретное сообщение m=3, то он должен сначала превратить его в шифровку m_1 по формуле m_1\equiv 3^7\equiv 94\pmod{161}. Когда A получит m_1=94 он дешифрует его по формуле m\equiv 94^{19} \equiv
    3\pmod{161}.

Упражнение 49 Нужно послать секретные сообщения 25 и 2 для JB и 14 для CIA, используя следующие записи открытой книги паролей криптосистемы RSA:

JB: 77,7;
CIA: 667,15.

Упражнение 50 Пользователь системы RSA выбрал p_1=11 и p_2=47. Какие из чисел 12, 33, 125, 513 он может выбрать для открытого ключа? Вычислить для них закрытый ключ.

Упражнение 51 Пользователь системы RSA, выбравший p_1=17, p_2=11 и a=61, получил шифрованное сообщение m_1=3. Дешифровать m_1.

< Лекция 11 || Лекция 12: 123 || Лекция 13 >