Опубликован: 31.07.2006 | Доступ: свободный | Студентов: 16488 / 4289 | Оценка: 4.17 / 3.80 | Длительность: 34:21:00
ISBN: 978-5-9570-0046-9
Лекция 12:

Шифрование

Алгоритм RSA

В 1978 г. Рон Ривест, Ади Шамир и Лен Адельман разработали алгоритм шифрования Rivest-Shamir-Adleman (RSA) с открытым ключом. В отличие от алгоритма Диффи-Хеллмана RSA может использоваться для шифрования и дешифрования. Также, в отличие от алгоритма Диффи-Хеллмана, безопасность алгоритма RSA базируется на факторизации больших чисел. Задачу факторизации больших чисел принято считать очень сложной, если числа очень велики (1024 бит или больше).

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

Шифрованный текст = (открытый текст)e mod n
Открытый текст = (шифрованный текст)d mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}

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

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

Шифрованный текст = (открытый текст)d mod n
Открытый текст = (шифрованный текст)e mod n
Секретный ключ = {d, n}
Открытый ключ = {e, n}

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

Генерация ключей RSA

При генерировании ключей RSA необходимо соблюдать тщательность. Чтобы сгенерировать ключевую пару RSA, выполните следующие шаги:

  1. Выберите два простых числа p и q и содержите их в секрете.
  2. Вычислите n = pq.
  3. Вычислите ф(n) = (p - 1)(q - 1).
  4. Выберите такое e, чтобы оно было взаимно простым по отношению к ф(n).
  5. Определите такое d, чтобы (d)(e) = 1 mod ф(n) и d < ф(n).

Примечание

Число n должно содержать порядка 200 знаков или больше. Тогда оба числа p и q должны иметь длину, по крайней мере, 100 знаков. Ключи для использования на практике должны иметь длину 1024 бит. В случае с секретной информацией рекомендуется использовать ключи длиной 2048 бит и более.

Реальный пример работы RSA

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

  1. Сначала я выбрал два простых числа. В данном случае были выбраны числа p = 11 и q = 13.
  2. Теперь вычисляем n = pq. Имеем n = 11 * 13 = 143.
  3. Теперь нужно вычислить ф(n) = (p - 1)(q - 1) = (11 - 1)(13 - 1) = 10 * 12 = 120.
  4. Выбираем число e так, чтобы оно было простым относительно ф(n). Здесь было выбрано значение e = 7.
  5. Необходимо определить такое d, чтобы (d)(e) = 1 mod ф(n). Следовательно, (d)(7) = 1 mod 120 ; d должно также быть меньше 120. Находим, что d = 103. (103 умножаем на 7 и получается 721. 721 делим на 120 и получаем 6 с остатком 1.)
  6. Секретный ключ: {103, 143}.
  7. Открытый ключ: {7, 143}.

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

Шифрованный текст = (открытый текст)e mod n
Открытый текст = (шифрованный текст)d mod n

Предположим, что нужно отправить сообщение "9". С помощью формулы шифрования получаем следующее:

Шифрованный текст = (9)7 mod 143 = 48.

При получении зашифрованной информации она подвергается обработке алгоритмом дешифрования:

Открытый текст = (48)103 mod 143 = 9.

Другие алгоритмы с открытым ключом

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

Алгоритм Эль-Гамаля

Эль-Гамаль (Taher Elgamal) разработал вариант системы Диффи-Хеллмана. Он усовершенствовал алгоритм Диффи-Хеллмана и получил один алгоритм для шифрования и один для обеспечения аутентификации. Алгоритм Эль-Гамаля не был запатентован (в отличие от RSA) и, таким образом, стал более дешевой альтернативой, так как не требовалась уплата лицензионных взносов. Так как этот алгоритм базировался на системе Диффи-Хеллмана, безопасность информации при его использовании обеспечивается сложностью решения задачи дискретного логарифмирования.

Алгоритм цифровой подписи

Алгоритм Digital Signature Algorithm (DSA) был разработан правительством США как стандартный алгоритм для цифровых подписей (для получения дополнительной информации по цифровым подписям обратитесь к следующему параграфу). Данный алгоритм базируется на системе Эль-Гамаля, но позволяет осуществлять только аутентификацию. Конфиденциальность этим алгоритмом не обеспечивается.

Шифрование с использованием эллиптических кривых

Эллиптические кривые были предложены для использования в системах шифрования в 1985 г. Системы шифрования с использованием эллиптических кривых (ECC) базируются на другой сложной математической задаче, нежели факторизация или дискретное логарифмирование. Данная задача заключается в следующем: имея две точки A и B на эллиптической кривой, такие что A = kB, очень трудно определить целое число k. Существует ряд преимуществ использования ECC перед алгоритмом RSA или Диффи-Хеллмана. Самым большим преимуществом является то, что ключи имеют меньшую длину (по причине сложности задачи), в результате чего вычисления производятся быстрее с сохранением уровня безопасности. Например, безопасность, обеспечиваемая 1024-битным ключом RSA может быть обеспечена 160-битным ключом ECC. Может пройти немало времени, прежде чем ECC будут полностью приняты к использованию, так как в этой области еще необходимо провести ряд исследований, и на существующие ECC зарегистрировано несколько патентов.

Вопросы для самопроверки

  1. Открытый текст преобразуется в ____________ в процессе шифрования.
  2. К какому типу систем шифрования относится DES?
Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?