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

Крипто / Билет №11

.docx
Скачиваний:
11
Добавлен:
08.06.2015
Размер:
59.76 Кб
Скачать

Билет №11

DSA (Digital Signature Algorithm) — алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только одинсубъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.

Алгоритм был предложен Национальным институтом стандартов и технологий (США) в августе 1991 и является запатентованным U.S. Patent 5 231 668, но НИСТ сделал этот патент доступным для использования без лицензионных отчислений. Алгоритм вместе с криптографической хеш-функцией SHA-1 является частью DSS (Digital Signature Standard), впервые опубликованного в 1994 (документ FIPS-186 (Federal Information Processing Standards)[1]). Позднее были опубликованы 2 обновленные версии стандарта: FIPS 186-2[2] (27 января 2000 года) и FIPS 186-3[3] (июнь 2009).

Использование алгоритма[править | править исходный текст]

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

Схема Эль-Гамаля (Elgamal) — криптосистема с открытым ключом, основанная на трудности вычисления дискретных логарифмов в конечном поле. Криптосистема включает в себя алгоритм шифрования и алгоритм цифровой подписи. Схема Эль-Гамаля лежит в основе бывших стандартов электронной цифровой подписи в США (DSA) и России (ГОСТ Р 34.10-94).

Схема была предложена Тахером Эль-Гамалем в 1984 году.[1] Эль-Гамаль разработал один из вариантов алгоритма Диффи-Хеллмана. Он усовершенствовал систему Диффи-Хеллмана и получил два алгоритма, которые использовались для шифрования и для обеспечения аутентификации. В отличие от RSA алгоритм Эль-Гамаля не был запатентован и, поэтому, стал более дешевой альтернативой, так как не требовалась оплата взносов за лицензию. Считается, что алгоритм попадает под действие патента Диффи-Хеллмана.

Генерация ключей[править | править исходный текст]

  1. Генерируется случайное простое число  длины  битов.

  2. Выбирается случайный примитивный элемент  поля .

  3. Выбирается случайное целое число  такое, что .

  4. Вычисляется .

  5. Открытым ключом является тройка , закрытым ключом — число .

Работа в режиме шифрования[править | править исходный текст]

Шифросистема Эль-Гамаля является фактически одним из способов выработки открытых ключей Диффи — Хеллмана. Шифрование по схеме Эль-Гамаля не следует путать с алгоритмом цифровой подписи по схеме Эль-Гамаля.

Шифрование[править | править исходный текст]

Сообщение  шифруется следующим образом:

  1. Выбирается сессионный ключ — случайное целое число  такое, что 

  2. Вычисляются числа  и .

  3. Пара чисел  является шифротекстом.

Нетрудно видеть, что длина шифротекста в схеме Эль-Гамаля длиннее исходного сообщения  вдвое.

Расшифрование[править | править исходный текст]

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

При этом нетрудно проверить, что

и поэтому

.

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

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

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

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

Описание алгоритма [4][править | править исходный текст]

Предположим, существует два абонента: Алиса и Боб. Обоим абонентам известны некоторые два числа g и p, которые не являются секретными и могут быть известны также другим заинтересованным лицам. Для того, чтобы создать неизвестный более никому секретный ключ, оба абонента генерируют большие случайные числа: Алиса — число a, Боб— число b. Затем Алиса вычисляет значение[5] (1):

 (1)

и пересылает его Бобу, а Боб вычисляет (2):

 (2)

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

На втором этапе Алиса на основе имеющегося у нее a и полученного по сети B вычисляет значение (3):

 (3)

Боб на основе имеющегося у него b и полученного по сети A вычисляет значение (4):

 (4)

Как нетрудно видеть, у Алисы и Боба получилось одно и то же число (5):

 (5)

Его они и могут использовать в качестве секретного ключа, поскольку здесь злоумышленник встретится с практически неразрешимой (за разумное время) проблемой вычисления (3) или (4) по перехваченным  и , если числа pab выбраны достаточно большими. Наглядная работа алгоритма показана на рисунке[6].

Алгоритм Диффи — Хеллмана, где K — итоговый общий секретный ключ

При работе алгоритма каждая сторона:

  1. генерирует случайное натуральное число a — закрытый ключ

  2. совместно с удалённой стороной устанавливает открытые параметры p и g (обычно значения p и g генерируются на одной стороне и передаются другой), где

p является случайным простым числом

(p-1)/2 также должно быть случайным простым числом (для повышения безопасности)[7]

g является первообразным корнем по модулю p

  1. вычисляет открытый ключ A, используя преобразование над закрытым ключом

A = ga mod p

  1. обменивается открытыми ключами с удалённой стороной

  2. вычисляет общий секретный ключ K, используя открытый ключ удаленной стороны B и свой закрытый ключ a

K = Ba mod p

К получается равным с обеих сторон, потому что:

Ba mod p = (gb mod p)a mod p = gab mod p = (ga mod p)b mod p = Ab mod p

В практических реализациях для a и b используются числа порядка 10100 и p порядка 10300. Число g не обязано быть большим и обычно имеет значение в пределах первого десятка.

Соседние файлы в папке Крипто