Скачиваний:
29
Добавлен:
01.05.2014
Размер:
328.81 Кб
Скачать

Задача обмена ключами 3. Задача обмена ключами

 

 

3.1 Алгоритм Диффи – Хеллмана

3.2 Протоколы обмена ключами на основе алгоритма Диффи - Хеллмана  

 

3.1 Алгоритм Диффи – Хеллмана  

В 1976 г. Диффи и Хеллман опубликовали статью, которая ознаменовала собой рождении асимметричной криптографии и привела к сильному росту числа открытых исследований в области криптографии. Она содержала ошеломляющий результат: возможно построение практически стойких секретных систем, которые не требуют передачи секретного ключа. Диффи и Хеллман ввели понятие односторонней функции с потайным ходом. Под односторонней функцией f понимается функция f(x), которая легко вычислима для любого значения аргумента x из области определения, однако для данного y из области ее значений вычислительно сложно нахождение значения аргумента x, для которого f(x) = y. Применение таких функций для защиты входа в вычислительную систему путем одностороннего преобразования паролей было известно. Но как применить одностороннюю функцию в криптографических системах, когда даже законный получатель не сможет выполнить дешифрования? Для шифрования была предложена односторонняя функция с потайным ходом (секретом).

Под односторонней функцией с потайным ходом понимается семейство обратимых функций fz с параметром z , таких, что для данного z можно найти алгоритмы Ez и Dz , позволяющие легко вычислить значение fz(x) для всех x из области определения, а также вычислить значение fz-1(y) для всех y из области значений, однако практически для всех значений параметра z и практически для всех значений y из области значений fz нахождение fz-1(y) вычислительно неосуществимо даже при известном Ez .

В качестве односторонней функции Диффи и Хеллман предложили функцию дискретного возведения в степень

                             f(x) = ax (mod p),

где x – целое число, 1£ x £ p – 1,

p    –    k-битовое простое число.

Причем выбирается такое число a < p , степени которого по модулю p представляют собой упорядоченное множество чисел {a1, a2, … , ap-1}, являющееся некоторой перестановкой чисел {1, 2, … , p-1}. (Такое число a называется первообразным корнем по модулю p.)

Даже для очень больших модулей p (например, при k = 1024 бит) для данного x легко вычислить значение этой функции. Процедура вычисления этой функции называется дискретным возведением в степень. Для выполнения этой процедуры достаточно выполнение около 2log2p операций умножения k-битовых чисел (или log2p умножений и log2p делений 2k-битовых чисел на k-битовые). Процедура дискретного возведения в степень основана на предварительном вычислений значений (по модулю p)

                             

Обратной к функции дискретного возведения в степень является функция f  -1(y), которая ставит в соответствие заданному значению y такое значение x, для которого выполняется условие ax = y (mod p). Задача нахождения такого x называется задачей дискретного логарифмирования (нахождения дискретных логарифмов). Дискретные логарифмы сложно вычисляются, когда число p-1 содержит один большой простой множитель, например, когда оно представимо в виде p-1 = 2p¢ , где p¢ - простое число. При этом условии трудоемкость задачи нахождения дискретного логарифма равна примерно Öp умножений по модулю p. Решение такой задачи является вычислительно неосуществимым при больших значениях k (например, при k³ 512), а следовательно при указанных условиях, накладываемых на выбор чисел p и a , функция дискретного возведения в степень является односторонней.

Методом открытого распространения ключей Диффи – Хеллмана называется следующий способ использования дискретного возведения в степень для обмена секретными ключами между пользователями сети с применением только открытых сообщений. Выбирается большое простое число p и соответствующий ему первообразный корень a < p. (Для обеспечения стойкости рассматриваемой системы открытого шифрования на число p накладывается следующее условие: разложение числа p-1 на множители должно содержать по крайней мере один большой простой множитель; размер числа p должен быть не менее 512 бит.)

Механизм распределения секретных ключей по открытому каналу состоит в следующем. Каждый абонент выбирает случайный секретный ключ x и вырабатывает открытый ключ y, соответствующий выбранному секретному ключу, в соответствии с формулой

                                         y = ax (mod p).

Для любого значения x легко вычислить y, однако при размере числа p, равном 512 бит и более, вычислительно неосуществимо выполнение дискретного логарифмирования, а следовательно и определение числа x, для которого значение ax mod p равно заданному значению y.

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

                 

где для абонентов A и B открытые ключи обозначим yA и  yB , а соответствующие секретные ключи - xA и  xB. Общий секретный ключ ZAB нет необходимости передавать по сети связи, поскольку абонент B по известному из справочника открытому ключу абонента A аналогичным способом вычисляет значение

                 

Оппоненту известны значения yB =  и yA = , но для того, чтобы вычислить ZAB , он должен решить трудную задачу дискретного логарифмирования. Общий секретный ключ может использоваться абонентами для шифрования сеансовых секретных ключей, а последние – для шифрования сообщений с использованием симметричных методов шифрования. Решение задачи дискретного логарифмирования существует, но оно вычислительно неосуществимо. Таким образом, стойкость метода Диффи – Хеллмана основана на сложности дискретного логарифмирования.

В симметричных криптосистемах существуют две принципиальные проблемы:

·        распределение секретных ключей по защищенному каналу;

·        аутентификация секретного ключа.

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

 

3.2 Протоколы обмена ключами на основе алгоритма Диффи - Хеллмана  

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

Стандартным подходом к обеспечению безопасности для групп является получение некоторой секретной величины, известной только участникам группы.  Криптографические протоколы, в которых происходят выработка и распространение этой величины внутри группы известны как распределение ключа группы (group key establishment).  В случае, когда это значение не вырабатывается в протоколе, а приобретается заранее кем-либо из участников, протокол носит название протокола распространения ключей в группе(group key distribution). В случае, когда каждый участник группы участвует в генерации этого секретного значения, мы получаем протокол обмена ключами (group key agreement). В обоих случаях только действующие участники группы имеют доступ к этому групповому секрету (действующие потому, что предполагается высокая динамичность группы). При любом присоединении нового участника или выходе участника из группы секретное значение меняется для предотвращения НСД со стороны лиц, не входящих в группу.

 

3.2.1 Основные определения

 

Опр. 1. Протокол обмена для выработки общего ключа (key agreement protocol) – протокол распределения ключей, в котором общий ключ вырабатывается двумя или более участниками как функция от информации, вносимой каждым из них, причем таким образом, что никакая другая сторона не может предопределить получаемый в результате общий секрет.

 

Протоколы обмена должны обладать следующими свойствами:

·        совершенная опережающая секретность (Perfect forward secrecy – PFS);

·        устойчивость к атакам по известному ключу (Known-key attacks);

·        аутентификации ключа (Key authentication);

·        подтверждение и целостность ключа (Key confirmation & key integrity).

Дадим некоторые определения, используемые в дальнейшем.

 

Опр. 2. Протокол обеспечивает PFS, если компрометация долговременных ключей не компрометирует сеансовых ключей.

 

Опр. 3. Протокол обладает свойством контрибутивности (contributory), если сформированный ключ зависит от секретных данных, внесенных каждым из участников.

 

Опр. 4. Пусть R – протокол обмена для n участников, M – множество участников, а Sn – ключ, получаемый в результате протокола R. Тогда R обеспечивает неявную аутентификацию ключа (implicit key authentication), если каждый MiÎM уверен, что никакая другая сторона MqÏM не могла получить  доступ к Sn (за исключением злоумышленника Mj внутри группы).

 

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

 

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

 

Опр. 7. Контрибутивный протокол обмена обеспечивает целостность ключа, если участник уверен, что полученный им секретный ключ представляет собой функцию ТОЛЬКО от индивидуальных вкладов всех других участников. Таким образом, любое вмешательство в сформированный ключ (или формируемый) нарушает данное свойство, если ключ получается отличным от предполагаемого.

 

Список определений не полон, многие определения будут даваться по ходу рассуждений.

 

3.2.2 Используемые в протоколах термины и обозначения

 

Определим некоторые обозначения:

     n          - число участников протокола;

     i, j       - индексы для участников групп;

     Mi        - i-ый участник группы;

     G         - подгруппа Zp* порядка q, где p и q – простые;

     q          - порядок алгебраической группы;

     a, g     - образующие элементы в группе G ;

     xi            - долговременный секретный ключ Mi;

     ri         - случайное (секретное) число Î Zq , вырабатываемое Mi;

Sn        - групповой ключ n участников;

Sn(Mi) - вклад Mi -го участника в групповой ключ;

Kij       - долговременная секретная величина, выработанная Mi и Mj , i¹j.

 

Все вычисления проводятся в циклической группе G простого порядка q, которая является подгруппой Zp* порядка p, где p=kq+1 для некоторого kÎN (a может быть вычислено посредством выбора случайного элемента bÎZp и вычисления a = b(p-1)/q mod p до тех пор, пока a¹1).

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

Заметим, что p и q – общие для всех пользователей. Поскольку они вырабатываются один раз, необходимо качественно проработать процесс генерации, чтобы исключить (возможно умышленное) получение слабых или каких-то специфических простых чисел. В частности, рекомендуется использовать метод из стандарта США, описанный в FIPS 186 или же на основе метода, изложенного в стандарте ГОСТ Р34.10-94.

В таком контексте, возможности активного противника довольно сильно ограничены. Действительно, любое сообщение может быть представлено как aсmod p, где a - образующий элемент циклической подгруппы Zp* порядка q и c – некоторая экспонента. Получение c упирается в проблему дискретного логарифмирования.

 

3.2.3 Протоколы аутентичного обмена ключами

 

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

В рамках предварительного знакомства приведем аутентичный обмен для выработки ключа для двух сторон. Затем приведем расширение этого протокола для n сторон. Приводимые протоколы базируются на схеме Диффи-Хеллмана.

 

Протоколы A-DH, GDH.2  и A-GDH.2

 

Прежде чем привести описание протокола аутентичного обмена для двух сторон A-DH, важно подчеркнуть, что существует множество разнообразных протоколов аутентичного обмена для выработки ключа, но одни из них не поддерживают двусторонний вклад в общий ключ (как в El Gamal), другие требуют большого числа сообщений или предполагают априорный доступ к сертифицированным долговременным ключам. Многие не обладают свойством PFS. Поэтому, наиболее подходящим протоколом для групп считают A-DH. Необходимо также отметить, что протокол предполагает наличие у участников аутентичных открытых ключей друг друга.

 

Протокол A-DH. Пусть p,q

Соседние файлы в папке book