Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[Alekseev_A.P.]_Informatika_2015(z-lib.org)

.pdf
Скачиваний:
221
Добавлен:
26.01.2020
Размер:
8.07 Mб
Скачать

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

351

__________________________________________________________________________________

10.4. Криптографическая система с открытым ключом

Сейф Бигглмана представляет собой гипотетический сценарий, когда создатель сейфа прячет

внутри его ключ, способный его открыть.

Дэн Браун

Алгоритмы шифрования с открытым ключом (асимметричные шиф-

ры) используют так называемые необратимые или односторонние функ-

ции. Эти функции обладают следующим свойством: при заданном значении аргумента x относительно просто вычислить значение функции f(x). Однако если известно значение функции y = f(x), то нет простого пути для вычисления значения аргумента x.

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

1.Разложение больших чисел на простые множители (алгоритм RSA, авторы — Райвест, Шамир и Адлеман — Rivest, Shamir, Adleman).

2.Вычисление логарифма или возведение в степень (алгоритм DH, авторы — Диффи и Хелман).

3.Вычисление корней алгебраических уравнений.

4.Эллиптические кривые.

Рассмотрим простейший пример «необратимых» функций. Легко в уме найти произведение двух простых чисел 11 и 13. Но попробуйте быстро в уме найти два простых числа, произведение которых равно 437. Подобные трудности возникают и при использовании вычислительной техники для отыскания двух простых сомножителей для очень большого числа: найти сомножители можно, но потребуется много времени.

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

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

Заметим, что операцию разложения числа на множители называют

факторизацией.

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

В40-х годах ХХ в. американский инженер и математик Клод Шеннон предложил разрабатывать шифр таким образом, чтобы его раскрытие было

352

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

__________________________________________________________________________________

эквивалентно решению сложной математической задачи. Причём, сложность задачи должна быть такой, чтобы объем необходимых вычислений превосходил бы возможности современных ЭВМ.

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

Алгоритм шифрования RSA разработали Rivest, Shamir, Adleman. Опишем пример использования такой системы (см. таблицу).

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

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

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

Действия

Абонент А

Абонент В

(банкир)

(вкладчик)

 

 

1. Выбор двух простых

p = 7; q = 13

p = 11; q = 23

чисел p и q

 

 

 

 

2. Вычисление произ-

r = 7 13 = 91

r = 11 23 = 253

ведения r = p q

 

 

3. Расчет функции Эй-

(r) = 72

(r) = 220

лера (r) = r–p–q+1

 

 

4. Выбор

случайного

 

 

числа s, взаимно про-

s = 5

s = 31

стого с (r) из интерва-

 

 

ла 0 < s < (r)

 

 

5. Расчет

секретного

 

 

ключа t с

помощью

5 t = 1(mod(72))

31 t = 1(mod(220))

соотношения s t =

t = 29

t = 71

1(mod (r))

 

 

s = 31,

6. Публикация откры-

s = 5,

тых ключей s, r

r = 91

r = 253

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

353

__________________________________________________________________________________

Порядок создания ключей иллюстрируется с помощью таблицы. Для наглядности числа выбраны малой величины. Фактически эти числа имеют около 100 десятичных разрядов.

Использованная в таблице запись = (mod( )) означает, что при целочисленном делении числа на число остаток равен .

Например, 7 = 1(mod(3)).

Функция Эйлера — арифметическая функция (r), значение которой равно количеству положительных чисел, не превосходящих r и взаимно простых с r.

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

Абонент А шифрует число 2 открытым (опубликованным) ключом абонента В. Для шифрования передаваемое число 2 возводится в степень s = 31, т. е.

m = 231 = 2147483648.

Затем находит остаток от деления числа m на величину r = 253, в результате которого получается число 167, то есть:

231 = 167 (mod(253)).

Напомним, что числа s и r являются открытым ключом абонента В. В линию передается число 167, которое является шифром исходного

числа 2.

Получив шифрограмму (167), абонент В использует свой секретный ключ t = 71. Для дешифрации он возводит полученное число 167 в степень 71 и находит остаток от деления на число 253. Математически это записывается так:

16771 2(mod(253)).

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

Предположим, что абонент В решил ответить абоненту А и направить ему букву, зашифрованную числом 3.

Абонент В использует открытый (опубликованный) ключ абонента А (s = 5, r = 91) и выполняет шифрующее преобразование числа 3. Математически это записывается так:

35 61(mod(91)).

В линию отправляется число 61. Получив это число, абонент А восстанавливает (дешифрирует) исходный текст с помощью своего секретного ключа t = 29:

354

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

__________________________________________________________________________________

6129 3(mod(91)).

В результате дешифрации на приемной стороне получено число 3, которое отправил абонент В.

Процесс обмена буквами между абонентами иллюстрирует следующая таблица.

 

 

Передача

Число

Прием

 

 

Бу-

Чис-

Шифрование

в

Дешифрование

Чис-

Бу-

ква

ло

 

линии

 

ло

ква

M

2

231 = 167(mod(253))

167

16771 = 2(mod(253))

2

M

L

3

35 = 61(mod(91))

61

6129 = 3(mod(91))

3

L

Первая строка приведенной таблицы поясняет процесс передачи буквы M от абонента А к абоненту В. Вторая строка показывает, как передается буква L от абонента В к абоненту А. В данном случае считается, что буква M кодируется числом 2, а буква L – числом 3.

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

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

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

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

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

Рассмотрим пример.

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

415 6(mod(91)).

В результате шифрования получено число 6.

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

355

__________________________________________________________________________________

Дальше вкладчик повторно шифрует это сообщение своим секрет-

ным ключом 71:

671 94(mod(253)).

Шифрограмма 94 отправляется банкиру.

Банкир, получив секретное сообщение, использует вначале открытый ключ вкладчика:

9431 6(mod(253)).

Затем банкир использует свой секретный ключ: 629 41(mod(91)).

В результате абонент А (банкир) получает сообщение, состоящее из числа 41.

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

Цифровая подпись используется не только для заверения текстовых или финансовых документов. Эта же информационная технология применяется для указания авторства разработанной программы. Активные элементы ActiveX, оживляющие Web-страницы, заверяются цифровой подписью. Этим повышается безопасность использования новых программных продуктов (уменьшается вероятность несанкционированной установки троянских программ).

356 Криптографическая программа PGP

__________________________________________________________________________________

10.5.Криптографическая программа PGP

Яне люблю открытого цинизма,

Ввосторженность не верю, и еще – Когда чужой мои читает письма, Заглядывая мне через плечо.

В. Высоцкий

Программа PGP предназначена для шифрования и дешифрования текстовых сообщений и файлов, создания и проверки цифровой подписи методом открытого ключа (так называемое несимметричное шифрование), сертификации существующей цифровой подписи. Название программы является аббревиатурой английских слов Pretty Good Privacy – надежная приватность (секретность)

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

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

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

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

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

Рассмотрим основные понятия, которые используются при работе с

PGP.

Криптографическая программа PGP

357

__________________________________________________________________________________

Электронная цифровая подпись (ЭЦП) – последовательность сим-

волов, которая позволяет однозначно установить (идентифицировать) автора полученного документа (владельца ЭЦП) и проверить целостность (подлинность, адекватность) содержания полученного документа.

Вотличие от обычной (рукописной) подписи, электронная цифровая подпись в каждом случае всегда разная, и ее вид (значение) зависит от содержания подписываемого документа. Заметим, что длина ЭЦП (размер, число бит) всегда одинаковая, независимо от длины исходного заверяемого сообщения.

Для создания ЭЦП используется хэш-функция, которая является односторонней функцией. Напомним, что термин «односторонняя функция» означает: легко вычислить значение хэш-функции по известному аргументу,

иочень трудоемко найти значении аргумента при известном значении хэшфункции.

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

Верификация – проверка Получателем подлинности цифровой подписи Отправителя с помощью открытого ключа Отправителя.

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

Уникальный идентификатор (ID) – набор символов, который позволяет различать ключи, использующие одинаковое имя Пользователя и адрес электронной почты.

Отпечаток (дайджест, на английском языке - Fingerprint) – специальный набор символов, который позволяет проверить достоверность (подлинность) принятого от Отправителя открытого ключа. Если отпечатки открытого ключа Отправителя одинаковы и у Получателя, и у Отправителя, значит, открытый ключ действительно принадлежит Отправителю. Свое название термин получил за некоторое сходство с отпечатками пальцев, которые порой используют для идентификации личности конкретного человека.

Вследующей таблице приведен пример отпечатка некоторого открытого ключа.

eyeglass

congregate

snapshot

bookseller

beaming

informant

bookshelf

Pegasus

absurd

forever

kickoff

torpedo

Aztec

businessman

unearth

document

bluebird

bottomless

fallout

vagabond

358 Криптографическая программа PGP

__________________________________________________________________________________

Запуск опций (команд) программы PGP можно производить несколькими альтернативными способами: с помощью Главного меню операционной системы, значка на панели задач, ярлыков, заранее размещенных на Рабочем столе. Кроме того, некоторые команды (например, зашифровать, дешифровать, подписать, удалить) можно выполнить, вызвав контекстное меню. Активизация нужных опций с помощью контекстного меню реализуется, например, щелчком правой кнопки мыши по выбранному файлу в окне Проводника.

После инсталляции программы PGP значок размещается на панели за-

дач.

Щелчок мышью по указанному значку приводит к появлению главного меню программы. Главное меню содержит следующие пункты: Hide (Скрыть), About PGP (Сведения о программе), Help (Помощь), Options (Оп-

ции), PGPnet (Сеть), PGPkeys (Ключи), PGPtools (Инструменты), Current Window (Текущее окно), Clipboard (Буфер).

Пункт Hide (Скрыть) позволяет убрать значок PGP с панели задач. Чтобы вернуть значок на место, следует воспользоваться Главным меню операционной системы Windows, с помощью которого нужно пройти сле-

дующие пункты: Пуск Программы PGP PGPtray.

Пункт About PGP (Сведения о программе) дает информацию о версии программы, ее авторе и его помощниках.

Описание программы PGP (на английском языке) можно вывести на экран монитора с помощью пункта Help (Помощь).

Пункт Options (Опции) позволяет сделать детальную настройку программы PGP.

Пункт PGPnet (Сеть) инициализирует работу с закрытыми сетями.

Пункт PGPkeys (Ключи) дает доступ к ключам корреспондентов, с которыми поддерживаются контакты данным пользователем. На следующем рисунке показан

список ключей трех корреспондентов:

Значок профиля человека обозначает пару ключей: открытый и закрытый. Эту пару иногда называют ключевой связкой. Полученные открытые ключи корреспондентов показаны без значка профиля человека [34].

Криптографическая программа PGP

359

__________________________________________________________________________________

Диалоговое окно с наиболее часто применяемыми командами можно разместить на экране монитора в удобном для пользователя месте. Для этого используется пункт PGPtools (Инструменты). Следующий рисунок поясняет назначение каждого пункта PGPtools (Инструментов).

Активизация пункта Current Window (Текущее окно) приводит к появлению дополнительного меню, которое содержит такие опции: Decrypt & Verify (Дешифровать и проверить), Encrypt & Sign (Зашифровать и подписать), Sign (Подписать), Encrypt (Зашифровать).

Перечисленные опции удобно вы-

360 Криптографическая программа PGP

__________________________________________________________________________________

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

Последним в главном меню программы PGP располагается пункт Clipboard (Буфер). Активизация этого пункта приводит к появлению дополнительного меню, которое во многом совпадает с предыдущим. Отличительными опциями в этом меню являются: Empty (Очистить) и Edit (Редактировать).

Команда Empty (Очистить) позволяет очистить содержимое буфера. С помощью команды Edit (Редактировать) есть возможность корректировать текст, помещенный в буфер.

Пункт Options (Опции) позволяет изменить настройки программы PGP. Окно опций имеет несколько закладок, предназначенных для выбора различных параметров.

Закладка General (Общие) содержит следующие опции.

-Always encrypt to default key (Всегда шифровать ключом, выбранным по умолчанию). Когда выбрана эта опция, все почтовые сообщения и файлы шифруются открытым ключом Получателя, а также заданным по умолчанию открытым ключом Отправителя. Эта установка полезна при дешифрации Отправителем собственной электронной почты или файлов.

Такая возможность используется в следующей ситуации.

Допустим, что Корреспондент 1 (Отправитель) посылает сообщение Корреспонденту 2 (Получателю). Для этого Корреспондент 1 шифрует подготовленное им сообщение открытым ключом Корреспондента 2. После шифрования Корреспондент 1 уже не может прочитать только что зашифрованное им самим сообщение. Чтобы Корреспондент 1 (Отправитель) имел возможность прочитать собственное зашифрованное сообщение, его надо зашифровать двумя открытыми ключами (Корреспондента 1 и Корреспондента 2).

-Faster key generation (Быстрая генерация ключей). При выборе этой опции генерация новой пары ключей занимает меньше времени. Однако опция доступна только для ключей длиной от 1024 до 4096 бит. Быстрая гене-