Математика криптографии и теория шифрования

Криптосистемы

Разбить на страницы
Показывать лекцию целиком

15.1. Криптосистема Рабина

Криптосистема Рабина (М. Rabin) является вариантом криптосистемы RSА. RSА базируется на возведении в степень сравнений. Криптосистема Рабина базируется на квадратичных сравнениях, и ее можно представить как криптографическую систему RSA, в которой значениям e и d присвоены значения e = 2 и d = 1/2. Другими словами, шифрование — $$C \equiv {p^2}{\text{ }}(\bmod {\text{ }}n)$$ и дешифрование - P = C1/2 (mod n).

Открытый ключ доступа в криптосистеме Рабина — n, секретный ключ является кортежем (p, q). Каждый может зашифровать сообщение, используя n, но только Боб может расшифровать сообщение, используя p и q. Дешифрование сообщения неосуществимо для Евы, потому что она не знает значения p и q. Рисунок 15.1 показывает шифрование и дешифрование.

(рис 15.1) Шифрование, дешифрование и генерация ключей в криптосистеме Рабина

Мы должны подчеркнуть, что если Боб использует RSA, он может сохранить d и n и отказаться после генерации ключей от p, q и $$\varphi (n)$$. Если Боб использует криптосистему Рабина, он должен сохранить p и q.

Процедура

Генерация ключей, шифрование и дешифрование показаны ниже.

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

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

$$\tt\parindent0pt

Rabin\_Key\_Generation

\{ 

Выберите два больших простых числа $p$ и $q$  в форме $4k +3$ и $p \ne  q$.

\ $n \gets  p \times q$

Открытый\_ключ $\gets  n$\ \ \ \ \                       // Может быть объявлен публично

Секретный\_ключ $\gets  (q,n)$\ \ \ \ \                   // Должен сохраняться в секрете

return Открытый\_ключ и Секретный\_ключ 

\}	$$

Хотя два простых числа, p и q, могут быть в форме 4k + 1 или 4k + 3, процесс дешифрования становится более трудным, если используется первая форма. Рекомендуют применять вторую форму, 4k + 3, для того чтобы сделать дешифрование для Алисы намного проще.

Шифрование

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

Rabin_Encryption (n, P)        // n — открытый ключ доступа; 
P — зашифрованный текст  Z*n

{
C <- P2 mod n       // C — зашифрованный текст
return C
}

Хотя исходный текст P может быть выбран из множества Zn, но чтобы сделать дешифрование более простым, мы определили множество, которое находится в Zn*.

Шифрование в криптосистеме Рабина очень простое. Операция нуждается только в одном умножении, что может быть сделано быстро. Это выгодно, когда ресурсы ограничены: например, при использовании карт с интегральной схемой, содержащей микропроцессор с ограниченной памятью, и при необходимости задействовать центральный процессор на короткое время.

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

Боб может использовать алгоритм 15.3, чтобы расшифровать полученный зашифрованный текст.

Rabin_Decryption (p, q, C)      // C — зашифрованный текст; p и q — секретные ключи
a1 <- + (C(p+1)/4) mod p
a2 <- - (C(p+1)/4) mod p
b1 <- + (C(q+1)/4) mod q
b2 <- - (C(q+1)/4) mod q
// Алгоритм китайской теоремы об остатках вызывается четыре раза.
P1 <-  Китайский_остаток (a1, b1, p, q)
P2 <-  Китайский_остаток (a1, b2, p, q)
P3 <-  Китайский_остаток (a2, b1, p, q)
P4 <-  Китайский_остаток (a2, b2, p, q)
return P1, P2, P3 и P4

Мы должны подчеркнуть здесь несколько моментов. Дешифрация базируется на решении квадратичного сравнения, которое рассмотрено в лекциях 12-13. Поскольку полученный зашифрованный текст — квадрат исходного текста, это гарантирует, что C имеет корни (квадратичные вычеты) в Zn*. Алгоритм китайской теоремы об остатке используется, чтобы найти четыре квадратных корня.

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

Криптосистема Рабина не детерминирована — дешифрование создает четыре одинаково вероятных исходных текста.

Пример 15.1

Вот очень тривиальный пример, чтобы проиллюстрировать идею.

1. Боб выбирает p = 23 и q = 7. Обратите внимание, что оба являются сравнениями 3 mod 4.

2. Боб вычисляет $$n = p \times q = 161$$.

3. Боб объявляет n открытым и сохраняет p и q в секрете.

4. Алиса хочет передать исходный текст P = 24. Обратите внимание, что 161 и 24 являются взаимно простыми; 24 находится в Z161*. Она вычисляет C = от 242 = 93 mod 161 и передает зашифрованный текст 93 Бобу.

5. Боб получает 93 и вычисляет четыре значения:

а. a1 = + (93 (23+1)/4) mod 23 = 1 mod 23

b. a2 = – (93 (23+1)/4) mod 23 = 22 mod 23

с. b 1 = + (93 (7+1)/4) mod 7 = 4 mod 7

d. b2 = – (93 (7+l)/4) mod 7 = 3 mod 7

  • Боб имеет четыре возможных ответа — (a1, b 1), (a1, b2),
  • (a2, b 1), (a2, b2) и использует китайскую теорему об остатках, чтобы найти четыре возможных исходных текста: 116, 24, 137 и 45 (все из них взаимно простые к 161 ). Обратите внимание, что только второй ответ — исходный текст Алисы. Боб должен принять решение исходя из ситуации. Обратите внимание также, что все четыре ответа при возведении во вторую степень по модулю n дают зашифрованный текст 93, переданный Алисой.
  • 1162 = 93 mod 161    242 = 93 mod 161    1372 = 93 mod 161   452 = 93 mod 161

    Безопасность криптографической системы Рабина

    Криптографическая система Рабина безопасна, пока p и q — большие числа. Сложность криптографической системы Рабина — такая же, как и у процедуры разложения на множители больших чисел n на два простых сомножителя p и q. Другими словами, криптографическая система Рабина так же безопасна, как и RSA.

    15.2. Криптографическая система Эль-Гамаля

    Помимо RSA и криптографической системы Рабина есть другая криптосистема с открытым ключом Эль-Гамаля (ElGamal), которая названа по имени ее изобретателя, Тахира Эль-Гамаля (Taher ElGamal). Криптосистема Эль-Гамаля базируется на свойствах дискретного логарифма, который обсуждался в лекциях 12-13.

    Криптографическая система Эль-Гамаля

    На основании сведений лекций 12-13, если p — очень большое простое число, e1первообразный корень в группе $$G = < {Z_{p*}}, \times > $$ и r — целое число, тогда e2 = e1r mod p просто вычисляется с использованием быстрого показательного алгоритма (метод "возведения в квадрат и умножения"). Но по данным e2, e1 и p, невозможно вычислить r = loge1e2 mod p (проблема дискретного логарифма).

    Процедура

    Рисунок 15.2 показывает генерацию ключей, шифрование и дешифрование в криптосистеме Эль-Гамаля.

    (рис 15.2) Генерация ключей, шифрование, и дешифрование в криптосистеме Эль-Гамаля

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

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

    ElGamal_Key_Generation
    {
    Выберите большое простое число p
    Выберите d, члена  группы G = < Zp*, x > , такое, что  1 < d < p – 2
    Выберите e1 — первообразный корень в группе G = < Zp*, x >
    e2 <- e1d mod p
    Общедоступный_ключ <- (e1,  e2,  p)      // Может быть объявлен публично
    Частный_ключ  <- -d                  // Должен сохраняться  в  секрете
    return Общедоступный_ключ  и Частный_ключ
    }

    Шифрование

    Любой может передать сообщение Бобу, используя его открытый ключ доступа. Процесс шифрования показан в алгоритме 15.5. Если применяется быстрый показательный алгоритм (см. лекции 12-13), шифрование в криптосистеме Эль-Гамаля может также быть выполнено по времени с полиномиальной сложностью.

    ElGamal_Encryption (e1, e2, p)                   // P — исходный текст
    {
    Выберите случайное целое число r в группе G = < Zp*, x >
     C1 <- e1r mod p
     C2 <- (P x e2r) mod p         // C1 и C2 – зашифрованные тексты 
    return C1 и C2    }

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

    Боб может использовать алгоритм 15.6, чтобы расшифровать полученное сообщение зашифрованного текста.

    ElGamal_Decryption {d, p, C1, C2)               // C1 и C2 — зашифрованный текст
    {
    P <- [C2(C1d)-1] mod p              // P — исходный текст
    return P
    }
    Сложность разрядной операции шифрования или дешифрования в криптографической системе Эль-Гамаля — полиномиальная.

    Доказательство

    Криптосистема Эль-Гамаля проводит дешифрацию согласно выражению $${C_2} \times {({C_1}^d)^{ - 1}}.$$ Это выражение может быть проверено с помощью подстановки P:

    $$[{C_2} \times {\left( {{C_1}^d} \right]^{ - 1}}\bmod p = [({e_2}^r \times P) \times {\left( {{e_1}^{rd}} \right]^{-1}}\bmod p = \left( {{e_1}^{rd}} \right) \times P \times {\left( {{e_1}^{rd}} \right)^{ - 1}} = P$$

    Пример 15.2

    Рассмотрим тривиальный пример. Боб выбирает 11 в качестве p. Затем он выбирает e1 = 2. Обратите внимание, что 2первообразный корень в Z11* (см. приложение J). Затем Боб выбирает d = 3 и вычисляет e2 = e1d = 8. Получены открытые ключи доступа — (2, 8, 11) и секретный ключ — 3. Алиса выбирает r = 4 и вычисляет C1 и C2 для исходного текста 7.

    Исходный текст: 7
    C1 = e1r  mod  11 = 16 mod 11= 5 mod 11
    C2 = (P x e2r) mod 11  = (7 x 4096) mod 11 = 6 mod 111
    Зашифрованный текст: (5, 6)

    Боб получает зашифрованные тексты ( 5 и 6 ) и вычисляет исходный текст.

    Зашифрованный текст: [C1 x (C2d)-1] mod  11 = 6 x (53)-1 mod 11 = 6 x 3 mod 11 = 7 mod 11 
    Исходный текст: 7

    Пример 15.3

    Вместо того чтобы использовать $$P = [{C_2}{({C_1}^d)^{-1}}]\bmod p$$ для дешифрования, мы можем избежать вычисления мультипликативной инверсии и применить $$P = [{C_2}{({C_1}^{p - 1 - d})^{-1}}]\bmod p$$ (см. малую теорему Ферма в лекциях 12-13). В Примере 15.2 мы можем вычислить $$P = [6 \times {5^{11 - 1 - 3}}]\bmod {\text{ }}11 = 7{\text{ }}\bmod {\text{ }}11$$.

    Анализ

    Очень интересная черта криптосистемы Эль-Гамаля — то, что Алиса создает r и сохраняет его в секрете; Боб создает d и сохраняет его в секрете. Это затруднение криптографической системы может быть решено следующим образом:

    a. Алиса передает $${C_2} = [{e_2}^r \times P]{\text{ }}\bmod {\text{ }}p = [({e_1}^{rd}) \times P]{\text{ }}\bmod {\text{ }}p$$. Выражение ( e1rd ) действует как маска, которая скрывает значение P. Чтобы найти значение P, Боб должен удалить эту маску.

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

    c. Алиса передает Бобу C1 = e1r, что является частью маски. Боб должен вычислить C1d, чтобы cделать точную копию маски, поскольку C1d = (e1r') d= (e1 rd). Другими словами, после получения точной копии маски Боб инвертирует ее и умножает результат на C2, чтобы удалить маску.

    d. Это можно представить так, что Боб помогает Алисе сделать маску (e1rd), не показывая значение d ( d уже включено в e2 = e1rd ); Алиса помогает Бобу делать маску ( e1 rd ), не раскрывая значение r ( r уже включено в C1 = e1r ).

    Безопасность криптосистемы Эль-Гамаля

    Ранее были упомянуты две атаки на криптосистему Эль-Гамаля — атаки, основанные на малом значении модуля, и атаки знания исходного текста.

    Атаки малого модуля

    Если значение модуля p не является достаточно большим, Ева может использовать некоторые эффективные алгоритмы, чтобы решить проблему дискретного логарифма и найти d или r. Если p мало, Ева может просто найти d = loge1e2 mod p и сохранить его, чтобы расшифровать любое сообщение, передаваемое Бобу. Это может быть сделано единожды и работать, пока Боб использует те же самые ключи. Ева может также использовать значение случайного числа r, применяемого Алисой в каждой передаче r = loge1C1 mod p. Оба этих случая подчеркивают, что безопасность криптосистемы Эль-Гамаля зависит от решения проблемы дискретного логарифма с очень большим модулем. Поэтому рекомендовано, что p должны быть по крайней мере 1024 бита ( 300 десятичных цифр).

    Атака знания исходного текста

    Когда Алиса использует одно и то же значение случайного показателя степени r для того, чтобы зашифровать два исходных текста P и P', Ева обнаруживает P', если она знает P. Предположим, что $${C_2} = P \times ({e_2}^r)\bmod {\text{ }}p$$ и $${C'_2} = P' \times ({e_2}^r)\bmod {\text{ }}p$$. Ева находит P', используя следующие шаги:

  • $$({e_2}^k) = {C_2} \times {P^{ - 1}}\bmod p$$.
  • $$P' = C{'_2} \times {({e_2}^k)^{ - 1}}\bmod p$$.
  • Поэтому рекомендовано, чтобы Алиса брала при каждой передаче новое значение r, чтобы сорвать атаки.

    Чтобы криптосистема Эль-Гамаля была безопасной, модуль p должен содержать по крайней мере 300 десятичных цифр, новых для каждой шифровки.

    Пример 15.4

    Вот более реальный пример. Боб использует случайное целое число длиной 512 битов (идеально — 1024 ) и целое число p длиной 155 цифр (идеал — 300 цифр). Боб выбирает e1 и d, затем вычисляет e2, как показано ниже; Боб объявляет (e1, e2, p) как свой открытый ключ и d как секретный ключ доступа.

    p = 1153489927256167624492531371701433174049009453260983495981434692
    19056898698622645932129754737871895144368891765264730936159299937
    28061165964347353440008577
    ___________________________________________________________________
    e1= 2
    ___________________________________________________________________
    d = 1007
    ___________________________________________________________________
    e2 = 9788641304300918950876685693809773904388006288733768761002206223
    32554507074156189212318317704610141673360150884132940857248537703
    1582066010072558707455

    Алиса имеет исходный текст P = 3200, чтобы передать Бобу. Она выбирает r = 545131, вычисляет C1 и C2 и передает их Бобу.

    P = 3200
    r = 545131
    _____________________________________________________________________
    C1 = 8872970693835284710225704714922756631202600672565621250181883514
    29417223599712681114105363661705173051581533189165400973736355080
    295736788569060619152881
    _____________________________________________________________________
    C2 = 7084543330489299445770160123807949995674360218361924469617745069
    2124469615516580077945559308034588961440240859952591957920972162
    88796813505827795664302950

    Боб вычисляет исходный текст $$P{\text{ }} = {C_2} \times {({C_1}^d)^{ - 1}}\bmod p{\text{ }} = 3200\bmod p$$

    P = 3200

    Приложение

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

    15.3. Криптосистемы на основе метода эллиптических кривых

    Хотя RSA и Эль-Гамаль — безопасные асимметрично-ключевые криптографические системы, их безопасность обеспечивается ценой их больших ключей. Исследователи искали альтернативный метод, который дает тот же самый уровень безопасности с меньшими размерами ключей. Один из этих перспективных вариантов — криптосистема на основе метода эллиптических кривых (Elliptic Curve CryptosystemECC). Система базируется на теории эллиптических кривых. Хотя глубокое рассмотрение этой теории находится вне задач и целей нашей книги, этот раздел сначала дает очень простое введение в три типа эллиптических кривых, а затем предлагает разновидности криптографических систем, которые используют некоторые из этих кривых.

    Эллиптические кривые в вещественных числах

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

    y2 + b1xy + b2y = x3 + a1x2 + a2x +a3

    Эллиптические кривые в поле вещественных чисел используют специальный класс формы эллиптических кривых:

    y2 = x3 + ax + b

    В этом случае, если $$4{a^3} + 27{b^2} \ne 0$$, уравнение представляет несингулярную эллиптическую кривую ; в противоположном случае оно описывает сингулярную эллиптическую кривую. Для несингулярной эллиптической кривой уравнение x3 + ax + b = 0 имеет три отличных корня (вещественных или комплексных); для сингулярной уравнение x3 + ax + b = 0 не имеет трех отличных корней.

    В уравнении, как мы можем видеть, левая сторона ( y2 ) имеет степень 2, в то время как правая сторона имеет степень 3 ( x3 ). Это означает, что горизонтальная линия может пересекать кривую в трех точках, если все корни вещественные. Однако вертикальная линия может пересечь кривую самое большее в двух точках.

    Пример 15.5

    Рисунок 15.3 показывает две эллиптические кривые с уравнениями y2 = x3 – 4x и y2 = x 3 – 1. Оба уравнения несингулярны. Однако первое имеет три вещественных корня ( x = -2, x = 0, и x = 2 ), но второе — только один вещественный корень ( x = 1 ) и два мнимых.

    (рис 15.3) Две эллиптические кривые в поле вещественных чисел

    Абелева группа

    Определим абелеву (коммутативную) группу (см. лекции 5-6), использующую точки на эллиптической кривой. Кортеж P = (x1, y1) представляет точку на кривой, если x1 и y1 — координаты точки на кривой, которые удовлетворяют уравнению этой кривой. Например, точки P = (2,0; 0,0), Q = (0,0; 0,0), R = (–2,0; 0,0), S = (10,0;30,98), и T = (10,0; –30,98) – точки на кривой y2 = x3 – 4x. Обратите внимание, что каждая точка представлена двумя вещественными числами. По материалам лекций 5-6, для создания абелевой группы мы нуждаемся во множестве операций над множествами и пяти свойствах, которым удовлетворяют операции. В этом случае группа G = <E, +> — абелева.

    Множество. Мы определим множество как точки на кривой, где каждая точка — пара вещественных чисел. Например, множество E для эллиптической кривой y2 = –x3 – 4x показано как

    E = {(2,0; 0,0), (0,0; 0,0), (-2,0; 0,0), (10,0; 30,98), (10,0,-30,98)...}

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

    R = P + Q, где P = (x1, y1), Q = (x2, y2), и R = (x3, y3)

    Для того чтобы найти R на кривой, рассмотрим три случая, как это показано на рис. 15.4.

    (рис 15.4) Три случая сложения на эллиптической кривой

    1. В первом случае две точки P = (x1, y1) и Q = (x2, y2) имеют различные x -координаты и y -координаты ( $${x_1} \ne {y_1}$$ и $${x_2} \ne {y_2}$$ ), как это показано на рис. 15.4a. Линия, соединяющая P и Q, пересекает кривую в точке, обозначенной R. R есть отражение (-R) относительно y -оси. Координаты точки R, x3 и y3 могут быть найдены по наклону линии, $$\lambda,$$ и затем можно вычислить значений x3 и y3, как показано ниже:

    $$\lambda = (y_{2} – y_{1})/ (x_{2} – x_{1}) \\ x_{3} = \lambda ^{2} – x_{2} – x_{1} \\ y_{3}= \lambda (x_{1} – x_{3}) – y_{1}$$

    2. Во втором случае две точки совпадают (R = P + P), как показано на рис. 15.4b. Наклон линии и координаты точки R могут быть найдены, как показано ниже.

    $$\lambda = (3x_{1}^{2} – a)/2y_{1} \\ x_{3} = \lambda ^{2} – x_{1} – x_{2} \\ y_{3}= \lambda (x_{1} – x_{3}) – y_{1}$$

    3. В третьем случае две точки — аддитивные инверсии друг друга, как это показано на рис. 15.4c. Если первая точка равна P = (x1, y1), а вторая точка равна Q = (x1, – y1), линия, соединяющая эти две точки, не пересекает кривую в третьей точке. Математики говорят в этом случае, что точка пересечения находится в бесконечности. Они определяют точку О (см. рис. 15.4с) как точку в бесконечности или нулевую точку, которая является аддитивным нейтральным элементом группы.

    Свойства операции. Краткие определения свойств операции, как они обсуждались в лекциях 5-6:

  • Замкнутость. Может быть доказано, что сложение двух точек, с использованием операции сложения, определенное в предыдущем разделе, создает другую точку на кривой.
  • Ассоциативность. Может быть доказано, что (P + Q) + R = P + (Q + R).
  • Коммутативность. группа, состоящая из точек несингулярной эллиптической кривой, — абелева группа. Может быть доказано, что P + Q = Q + P.
  • Существование нейтрального элемента. Аддитивный нейтральный элемент в этом случае — нулевая точка. Другими словами, P + 0 = 0 + P.
  • Существование инверсии. Каждая точка на кривой имеет инверсию. Инверсия точки — это ее отражение относительно оси x. Другими словами, точки P = (X1,Y1) И Q = (X1, – Y1)инверсии друг друга; это означает, что P + Q = 0. Заметим, что нейтральный элемент — это инверсия самого себя.
  • Группа и поле

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

    Эллиптические кривые в GF(p)

    Наша предыдущая группа эллиптической кривой использовала вещественное поле для вычислений сложения точек. Криптография требует модульной арифметики. Мы определили группу эллиптической кривой с операцией сложения, но операция на координатах с точками в данном случае есть операция в GF(p) с p> 3. В модульной арифметике точки на кривой не представляют графы, как это можно было видеть на предыдущих рисунках, но сохраняются те же самые основные концепции. Мы используем ту же самую операцию сложения, но с вычислением по модулю p. В результате мы получаем эллиптическую кривую Ep (a, b), где p определяет модуль, и b — коэффициент уравнения y2 = x3 + ax + b. Обратите внимание, что хотя значение x в этом случае от 0 до p, обычно не все точки находятся на кривой.

    Нахождение инверсии

    Инверсия точки (x, y) равна (x, – y), где (–y) — аддитивная инверсия y. Например, если p = 13, инверсия (4, 2) равна (4, 11).

    Нахождение точек на кривой

    Алгоритм 15.7 показывает программу в псевдокоде для нахождения точек на кривой Ep (a, b).

    $$\tt\parindent0pt
    
    Elliptic\_points (p, a, b)              // $p$-модуль
    
    \{ 
    
    $x \gets  0$
    
    while ($x < p$)
    
    \{ 
    
    $w \gets  (x^{3} + ax + b) \mod p$\ \ \            //$w$ – это $y^{2}$
    
    if ($w$ – целое значение квадратного корня в $Z_{p}$)  выход $((x, \sqrt w )(x, - \sqrt w ))$
    
    $x \gets  x + 1$
    
    \} 
    
    \}	$$

    Пример 15.6

    Определите эллиптическую кривую E13 (1, 1) по уравнению y2 = x3 + x + 1 и вычислите по модулю 13. Точки на кривой могут быть найдены, как показано на рис. 15.5.

    (рис 15.5) Точки на эллиптической кривой в поле GF (p)

    Обратите внимание на следующее:

    а. Некоторые значения y2 не имеют квадратного корня по модулю 13. Они не являются точками на этой эллиптической кривой. Например, точки x = 2, x = 3, x = 6 и x = 9 не находятся на кривой.

    б. Каждая точка, определенная на кривой, имеет инверсию. Инверсии перечислены как пары. Заметим, что (7, 0)инверсия самой себя.

    в. Обратите внимание, что для пары обратных точек значения y — аддитивные инверсии друг друга в Zp. Например, 4 и 9 — аддитивные инверсии в Z13. Так что мы можем сказать, что если 4 — это значение y, то 9— это значение (–y).

    г. Инверсии находятся на тех же самых вертикальных линиях.

    Сложение двух точек

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

    Пример 15.7

    Сложим две точки в примере 15.6, R = P + Q, где P = (4, 2) и Q = (10,6).

    а. X = (6 – 2) x (10 – 4) -1 mod 13 = 4 x 6-1 mod 13 != 5 mod 13.

    б. x = (52 – 4 – 10) mod 13 = 11 mod 13.

    в. y = [5 (4 – 11) – 2] mod 13 = 2 mod 13.

    г . R = (11, 2) является точкой на кривой в примере 15.6.

    Умножение точки на константу

    В арифметике умножение числа на константу k означает прибавление числа само к себе k раз. Здесь ситуация та же самая. Умножение точки P на эллиптической кривой на константу k означает прибавление точки P к себе k раз. Например, в E13 (1, 1), если точка (1, 4) умножается на 4, результат есть точка (5, 1). Если точка (8,1) умножается на 3, результат — точка (10, 7).

    Эллиптические кривые в GF(2 в степени n)

    Вычисление в группе эллиптической кривой может быть определено в поле GF(2n). В соответствии с лекциями 5-6, где мы говорили, что элементы множества в этом поле — n -битовые слова, которые можно интерпретировать как полиномы с коэффициентом в GF(2), сложение и умножение этих элементов такое же, как сложение и умножение полиномов. Для того чтобы определить эллиптическую кривую в GF(2n), необходимо только изменить кубическое уравнение. Общее уравнение

    y2 + xy = x3 + ax2 + b

    где $$b \ne 0$$. Обратите внимание, что значение x, y, a и b — полиномы, представляющие n -битовые слова.

    Нахождение инверсии

    Если P = (x, y), то (–P) = (x, x + y).

    Нахождение точек на кривой

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

    Пример 15.8

    Мы выбираем GF (2 3) с элементами (0,1, g, g2, g3, g 4, g5, g6), использующими неприводимый полином f (x) = x3 + x +1. Этому соответствует полином g3 + g +1 = 0 или g3 = g + 1. Другие степени g могут быть вычислены, как это показано ниже.

    0 0 g3 = g + 1 0
    1 0 g4 = g2 + g 1
    g 0 g5 = g2 + g + 1 1
    g2 1 g6 = g2 + 1 1

    Используя эллиптическую кривую y2 + xy = x3 + g3x2 + 1, a = g3 и b = 1, мы можем найти точки на этой кривой, как это показано на рисунке 15.6.

    (рис 15.6) Точки на эллиптической кривой в GF (2 в степени n)

    Сложение двух точек

    Правила для сложения точек в GF(2n) немного отличаются от правил GF(p).

    1. Если P = (x1, y1), Q = (x2, y2), $$Q \ne -P$$, $$Q \ne P$$, то R = (x3, y3) = P + Q может быть найден как

    $$\lambda = (y_{2} + y_{1})/(x_{2} + x_{1}) \\ x_{1}=\lambda ^{2}+\lambda +a \\ y_{3}=x_{1}^{2}+(\lambda +1)x_{3}$$

    2.Если Q = P, то R = P + P (или R = 2P ) и может быть найден как

    $$\lambda = (y_{2} + y_{1})/x_{1} \\ x_{1}=\lambda ^{2}+\lambda +a \\ y_{3}=x_{1}^{2}+(\lambda +1)x_{3}$$

    Пример 15.9

    Пусть нам надо найти R = P + Q, где P = (0,1) и Q = (g2,1). Мы имеем $$\lambda = 0$$ и R = (g5, g4).

    Пример 15.10

    Пусть нам надо найти R = 2P, где P = (g2,1). Мы имеем $$\lambda =g^{2} +1 /g^{2} = g^{2}+ g^{5}= g +1$$ и R = (g6, g5).

    Умножение точек на константу

    Для того чтобы умножить точку на константу, точки должны складываться непрерывно согласно правилу R = 2P.

    Криптография эллиптической кривой, моделирующая криптосистему Эль-Гамаля

    Для шифрования и дешифрования текстов, с помощью эллиптических кривых использовались несколько методов. Один из них состоит в том, чтобы моделировать криптосистему Эль-Гамаля, используя эллиптическую кривую в GF(p) или GF(2n), как это показано на рис. 15.7.

    (рис 15.7) Криптосистема Эль-Гамаля, использующая эллиптическую функцию

    Генерация общедоступных и частных ключей

  • Боб выбирает E (a,b) с эллиптической кривой в GF(p) или GF(2n).
  • Боб выбирает точку на кривой, e1 (x 1, y1 ).
  • Боб выбирает целое число d.
  • Боб вычисляет $${e_2}({x_2},{y_{\text{2}}}) = d \times {e_1}({x_1},{y_1})$$. Обратите внимание: умножение здесь означает, что многократное сложение и определяется как раньше.
  • Боб объявляет E (a,b), e1 (x1, y1 ) и e2 (x2, y2) как свой открытый ключ доступа; он сохраняет d как секретный ключ.
  • Шифрование

    Алиса выбирает P, точку на кривой, как ее исходный текст, P. Затем она вычисляет пару точек, направляет как зашифрованный текст:

    Читатель может задаться вопросом, как произвольным исходным

    C1 = r x e1             C2 = P + r x e2

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

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

    Боб, после получения C1 и C2, вычисляет P, исходный текст, используя следующую формулу:

    P = C2 – (d x C1)   Знак "минус" здесь означает сложение с инверсией.

    Мы можем доказать, что P, вычисленный Бобом, — тот же, что передан Алисой, как это показано ниже:

    $$P + r \times {e_2}-(d \times r \times {e_1}) = = P + (r \times d \times {e_1})-(r \times d \times {e_1}) = = P + 0 = = P$$

    P, C 1, C2 и e2 — это точки на кривой. Обратите внимание, что результат сложения двух обратных точек на кривой — нулевая точка.

    Пример 15.11

    Вот очень тривиальный пример шифровки с использованием эллиптической кривой в GF (p).

  • Боб выбирает E67 (2, 3) как эллиптическую кривую в GF (p).
  • Боб выбирает e1 = (2, 22) и d = 4.
  • Боб вычисляет e2 = (13, 45), где $${e_2} = d \times {e_1}$$.
  • Боб публично объявляет кортеж (E, e1, e2).
  • Алиса хочет передать исходный текст P = (24, 26) Бобу. Она выбирает r = 2.
  • Алиса находит точку C1= (35, 1), где $${C_1} = r \times {e_1}$$.
  • Алиса находит точку C2 = (21, 44), где $${C_2} = P \times {e_1}$$.
  • Боб получает C, и C2. Он использует $$2 \times {C_1}$$, (35, 1) и получает (23, 25).
  • Боб инвертирует точку (23, 25) и получает точку (23, 42).
  • Боб складывает (23, 42) с C2 = (21, 44) и получает первоначальный исходный текст P = (24, 26).
  • Сравнение

    Ниже приводится краткое сравнение алгоритма Эль-Гамаля с его вариантом, использующим эллиптическую кривую.

    a. Алгоритм Эль-Гамаля использует мультипликативную группу; вариант — эллиптическую группу.

    b. Эти два члена в алгоритме Эль-Гамаля — числа в мультипликативной группе; при применении варианта — точки на эллиптической кривой.

    c. Секретный ключ в каждом алгоритме — целое число.

    d. Секретные числа, выбираемые Алисой в каждом алгоритме, — целые числа.

    e. Возведение в степень в алгоритме Эль-Гамаля заменено умножением точки на константу.

    f. Умножение в алгоритме Эль-Гамаля заменено сложением точек.

    g. Инверсия в алгоритме Эль-Гамаля — мультипликативная инверсия в мультипликативной группе; инверсия —заменяется аддитивной инверсией точки на кривой.

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

    Безопасность метода с использованием эллептической кривой

    Чтобы расшифровать сообщение, Ева должна найти значение r или d.

    a. Если Ева знает значение r, она может использовать $$P = {C_2}-(r \times {e_2})$$, чтобы найти точку P, относящуюся к исходному тексту. Но для того чтобы найти r, Ева должна решить уравнение $${C_1} = r \times {e_1}$$. Это значит — найти две точки на кривой, C1 и e1. Ева должна найти множитель, который создает C1 начиная с e1. Эта проблема известна как проблема логарифма эллиптической кривой, единственный известный метод решения этой проблемы — $$РО(\rho )$$ - алгоритм Поларда, который неосуществим, если задано большое r и p в GF (p) или большое n в GF(2n).

    b. Если Ева знает значение d, она может использовать $$P = {C_2} - (d \times {C_1})$$, чтобы найти точку P, относящуюся к исходному тексту. Поскольку $${e_2} = d \times {e_1}$$, это тот же самый тип проблемы, что и в предыдущем пункте. Ева знает значение e1 и e2 — она должна найти d.

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

    Размер модуля

    Для того же самого уровня безопасности (затраты на вычисление) модуль n, может быть меньшим в эллиптической системе (ECC), чем в RSA. Например, ECC в GF(2n) с n, состоящим из 160 битов, может обеспечить тот же уровень безопасности, как RSA с n 1024 битов.

    15.4. Рекомендованная литература

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

    Книги

    Криптографическая система RSА рассматривается в [Sti06], [Sta06], [PHS03], [Vau06], [TW06] и [Mao04]. Криптосистемы Рабина и Эль-Гамаля — в [Sti06] и [Mao04]. Криптография эллиптической кривой — в [Sti06], [Eng99] и [Bla03].

    Сайты

    Следующие сайты дают больше информации о темах, рассмотренных в этой лекции.

  • http: // wwwl.ics.uci.edu / ~ mingl/knapsack.html
  • www.dtc.umn.edu/~odlyzko/doc/arch/knapsack.survey.pdf
  • http://en.wikipedia.org/wiki/RSA
  • citeseer.ist.psu.edu/boneh99twenty.html
  • www.mat.uniroma3.it/users/pappa/SLIDES/RSA-HRL_05.pdf
  • http://en.wikipedia.org/wiki/Rabin_cryptosystem
  • http://en.wikipedia.org/wiki/ElGamaL_encryption
  • ww..cs.purdue.edu/homes/wspeirs/elgamal.pdf
  • http://en.wikipedia.org/wiki/Elliptic__curve_cryptography
  • www.cs.utsa.edu/~rakbani/publications/Akbani-ECC-IEEESMC03.pdf
  • 15.5. Итоги

  • Есть два способа достигнуть информационной безопасности: криптография с симметричными ключами и криптография с асимметричными ключами. Эти два способа существуют параллельно и дополняют друг друга; преимущества одного могут дать компенсацию недостаткам другого.
  • Концептуальные различия между этими двумя способами базируются на том, как они сохраняют секретность. В криптографии с симметричными ключами секретность должна быть разделена между двумя объектами; в криптографии с асимметричными ключами секретность персональная (неразделенная).
  • Криптография с симметричными ключами базируется на подстановке и перестановке символов; криптография с асимметричными ключами базируется на применении математических функций к числам.
  • Криптография с асимметричными ключами использует два отдельных ключа: один секретный и один открытый. Шифрование и дешифрование можно представлять себе как запирание и отпирание замков ключами. Замок, который заперт открытым ключом, можно отпереть только соответствующим секретным ключом.
  • В криптографии с асимметричным ключом ответственность обеспечения безопасности находится, главным образом, на плечах приемника (Боб), который должен создать два ключа: один секретный и один открытый. Боб несет ответственность за секретный ключ. Открытый ключ может быть распространен сообществу через канал распределения открытого ключа.
  • В отличие от криптографии с симметричными ключами, в криптографии с асимметричным ключом исходный текст и зашифрованный текст обрабатываются как целые числа. Сообщение должно кодироваться как целое число (или множество целых чисел) перед шифрованием; целое число (или множество целых чисел) должно быть расшифровано в сообщение после дешифрования. Криптография с асимметричным ключом обычно используется, чтобы зашифровать или расшифровывать маленькие сообщения, такие как ключ шифра для криптографии с симметричными ключами.
  • Главная идея криптографии с асимметричным ключом — понятие "лазейка" в односторонней функции (TOWF), которая является такой функцией, что f вычисляется просто, а f -1 вычислить невозможно (в смысле сложности вычислений), если не используется лазейка.
  • Блестящая идея относительно криптографии общедоступного ключа принадлежит Меркелю и и Хеллману – это ранцевая криптосистема . Когда нам говорят, какие элементы из заранее заданного множества чисел находятся в рюкзаке, мы можем легко вычислить сумму чисел; когда нам сообщают сумму, трудно сказать, какие элементы находятся в рюкзаке, если он не заполнен элементами сверхвозрастающего множества.
  • Самый общий алгоритм общедоступного ключа — криптографическая система RSА. RSA использует два числа e и d, где e — общедоступный ключ, а d является частным (секретным). Алиса использует C = Pe mod n для того, чтобы создать зашифрованный текст C из исходного текста P ; Боб использует P = Сd mod n, чтобы извлечь исходный текст, переданный Алисой.
  • RSA применяет две алгебраических структуры: кольцо и группа. Шифрование и дешифрование выполняются с использованием коммутативного кольца $$R = < {Z_n}^*, + , \times > $$ с двумя арифметическими операциями — сложением и умножением. RSA применяет мультипликативную группу $$G = < {Z_n}^*, \times > $$ для генерации ключей.
  • Никаких разрушительных атак на RSA не было обнаружено. Теоретически предсказано несколько атак, основанных на разложении на множители, выборке шифрованного текста, образце дешифрования, образце шифрования, исходном тексте, модуле и реализации.
  • Криптосистема Рабина — вариант криптографической системы RSА. RSA базируется на экспоненциальном сравнении; криптосистема Рабина базируется на квадратичном сравнении. Мы можем представлять себе, что криптосистема Рабина — это RSA, в которой значение e = 2 и d = 1/2. Криптографическая система Рабина безопасна, пока p и q — большие числа. Сложность криптосистемы Рабина — на том же самом уровне, как и процесс разложения большого числа n на два простых сомножителя p и q.
  • Криптосистема Эль-Гамаля базируется на проблеме дискретного логарифма. Криптосистема Эль-Гамаля использует идею первообразных корней в Zn*. Шифрование и дешифрование в криптосистеме Эль-Гамаля использует группу $$G = < {Z_p}^*, \times > $$ Общедоступный ключ — это два числа, e1 и e2, а секретный ключ — это целое число d. Безопасность криптосистемы Эль-Гамаля основана на том, что решение проблемы дискретного логарифма не существует. Однако в литературе была упомянута атака, основанная на малом значении модуля, и атака знания исходного текста.
  • Другая криптографическая система, рассмотренная в этой лекции, базируется на эллиптических кривых. Эллиптические кривые являются кубическими уравнениями в двух переменных. Эллиптические кривые на поле вещественных чисел используют специальный класс эллиптических кривых y2 = x3 + ax + b, где $$4{a^3} + 27{b^2} \ne 0$$. Абелева группа была определена с помощью эллиптической кривой с операцией сложения, которая показывает, как две точки на кривой можно сложить, чтобы получить другую точку на этой кривой.
  • Криптография эллиптической кривой применяет две алгебраических структуры, абелеву группу и поле. Поле может быть полем вещественных чисел, GF (p) и GF (2n). Мы показали, как криптосистема Эль-Гамаля может моделироваться, используя эллиптические кривые в конечном поле. Безопасность криптографии эллиптической кривой зависит от проблемы логарифма эллиптической кривой, решение которой неосуществимо при большом значении модуля.
  • 15.6. Набор для практики

    Обзорные вопросы

  • Найдите различия между криптосистемами с симметричными ключами и асимметричными ключами.
  • Найдите различия между открытыми и секретными ключами в криптосистеме с асимметричными ключами. Найдите совпадения и различие ключей в криптосистемах с симметричными ключами и с асимметричными ключами.
  • Определите "лазейку" в односторонней функции и объясните её использование в криптографии с асимметричным ключом.
  • Кратко объясните идею ранцевой криптосистемы
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптографической системы RSA.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптосистемы Рабина.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптосистемы Эль-Гамаля.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптографии эллиптической кривой (ECC).
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Определите эллиптические кривые и объясните их приложения в криптографии.
  • Определите операцию, используемую в абелевой группе, которая обрабатывает точки на эллиптической кривой.
  • Упражнения

  • Учитывая сверхвозрастающий кортеж b = [7, 11,23,43,87, 173, 357], r =41 и модуль n = 1001, зашифруйте и расшифруйте букву a, используя ранцевую криптосистему. Используйте [7 6 5 1 2 3 4] как таблицу перестановки.
  • В RSA:
  • Дано n = 221 и e = 5, найдите d.
  • Дано n =3937 и e =17, найдите d.
  • Дано p = 19, q = 23 и e = 3, найдите n, $$\varphi ,$$ (n) (^) и d.
  • Для того чтобы понять безопасность алгоритма RSА, найдите d, если вы знаете, что e =17, а n =187.
  • В RSA дано n и $$\varphi (n)$$, вычислите p и q.
  • В RSA дано e = 13 и n = 100. Зашифруйте сообщение "HOW ARE YOU", применяя 00 к 25 для букв от A до Z и 26 — для пробела. Используйте различные блоки, чтобы сделать P <n.
  • В RSA дано n = 12091 и e = 13. Зашифруйте сообщение "THIS IS THOGH", используя схему кодирования 00 к 26. Расшифровать зашифрованный текст, чтобы найти первоначальное сообщение.
  • В RSA:
  • Почему Боб не может выбрать 1 как открытый ключ e?
  • Какова проблема в выборе 2 открытым ключом?
  • Алиса использует открытый ключ RSА Боба (e = 17, n = 19519), чтобы передать сообщение из четырех символов Бобу, применяющему схему $$A \leftrightarrow 0$$, $$B \leftrightarrow 1...Z \leftrightarrow 25$$ кодирования и декодирования по каждому символу отдельно. Ева перехватывает зашифрованный текст (6625 0 2968 17863) и расшифровывает сообщение, не разлагая на множители модуль. Найдите исходный текст; объясните, почему Ева смогла легко взломать зашифрованный текст.
  • Алиса использует открытый ключ RSА Боба (e = 7, n = 143), чтобы передать исходный текст P = 8, зашифрованный в виде текста C = 57. Покажите, как Ева может использовать атаку выборки текста, если она имеет доступ к компьютеру Боба, чтобы найти исходный текст.
  • Алиса использует общедоступный ключ RSA Боба (e = 3, n = 35) и передает зашифрованный текст 22 Бобу. Покажите, как Ева может найти исходный текст, используя атаку циклического повторения.
  • Предложите, как Алиса может предотвратить атаку связанного сообщения на RSA.
  • Используя криптосистему Рабина с p = 47 и q =11:
  • Зашифруйте P = 17 и найдите зашифрованный текст.
  • Используя Китайскую теорему об остатках, найдите четыре возможных исходных текста.
  • В криптосистеме Эль-Гамаля дано простое число p = 31:
  • Выберите соответствующие e1 и d, затем вычислите e2.
  • Зашифруйте сообщение "HELLO" ; используйте 00 к 25 для кодирования. Используйте различные блоки для того, чтобы сделать P<p.
  • Расшифруйте зашифрованный текст, чтобы получить исходный текст.
  • Что случится в криптосистеме Эль-Гамаля —, если C1 и C2 будут изменены в течение передачи?
  • Предположим, что Алиса применяет в криптосистеме Эль-Гамаля общедоступный ключ Боба ( e1 = 2 и e 2 = 8 ), чтобы передать два сообщения — P = 17 и P' = 37. Они оба используют то же самое случайное целое число r = 9. Ева перехватывает зашифрованный текст и так или иначе находит значение P = 17. Покажите, как Ева может использовать атаку знания исходного текста, чтобы найти значение P'.
  • В эллиптической кривой E (1, 2) в поле GF (11):
  • Найдите уравнение кривой.
  • Найдите все точки на кривой и сделайте рисунок, такой же, как рис. 15.5.
  • Сгенерируйте общедоступный и секретный ключи для Боба.
  • Выберите точку на кривой как исходный текст Алисы.
  • Создайте зашифрованный текст, соответствующий исходному тексту Алисы в пункте d.
  • Расшифруйте зашифрованный текст для Боба, чтобы найти исходный текст, передаваемый Алисой.
  • В эллиптической кривой E (g4, 1) в поле GF(24):
  • Найдите уравнение кривой.
  • Найдите все точки на кривой и сделайте рисунок, такой же, как рис. 15.5.
  • Сгенерируйте общедоступный и секретный ключи для Боба.
  • Выберите точку на кривой как исходный текст Алисы.
  • Создайте зашифрованный текст, соответствующий исходному тексту Алисы в пункте г.
  • Расшифруйте зашифрованный текст для Боба, чтобы найти исходный текст, передаемый Алисе.
  • Используйте ранцевую криптосистему:
  • Напишите алгоритм для шифрования.
  • Напишите алгоритм для дешифрования.
  • В RSA:
  • Напишите алгоритм для шифрования, используя оптимальное асимметричное дополнение шифрования (OAEC).
  • Напишите алгоритм для дешифрования, используя оптимальное асимметричное дополнение шифрования (OAEC).
  • Напишите алгоритм для атаки циклического повторения на RSA.
  • Напишите алгоритм для сложения двух точек на эллиптической кривой в GF(p).
  • Напишите алгоритм для сложения двух точек на эллиптической кривой в GF(2n).
  • Страницы:

    15.1. Криптосистема Рабина

    Криптосистема Рабина (М. Rabin) является вариантом криптосистемы RSА. RSА базируется на возведении в степень сравнений. Криптосистема Рабина базируется на квадратичных сравнениях, и ее можно представить как криптографическую систему RSA, в которой значениям e и d присвоены значения e = 2 и d = 1/2. Другими словами, шифрование — $$C \equiv {p^2}{\text{ }}(\bmod {\text{ }}n)$$ и дешифрование - P = C1/2 (mod n).

    Открытый ключ доступа в криптосистеме Рабина — n, секретный ключ является кортежем (p, q). Каждый может зашифровать сообщение, используя n, но только Боб может расшифровать сообщение, используя p и q. Дешифрование сообщения неосуществимо для Евы, потому что она не знает значения p и q. Рисунок 15.1 показывает шифрование и дешифрование.

    (рис 15.1) Шифрование, дешифрование и генерация ключей в криптосистеме Рабина

    Мы должны подчеркнуть, что если Боб использует RSA, он может сохранить d и n и отказаться после генерации ключей от p, q и $$\varphi (n)$$. Если Боб использует криптосистему Рабина, он должен сохранить p и q.

    Процедура

    Генерация ключей, шифрование и дешифрование показаны ниже.

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

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

    $$\tt\parindent0pt
    
    Rabin\_Key\_Generation
    
    \{ 
    
    Выберите два больших простых числа $p$ и $q$  в форме $4k +3$ и $p \ne  q$.
    
    \ $n \gets  p \times q$
    
    Открытый\_ключ $\gets  n$\ \ \ \ \                       // Может быть объявлен публично
    
    Секретный\_ключ $\gets  (q,n)$\ \ \ \ \                   // Должен сохраняться в секрете
    
    return Открытый\_ключ и Секретный\_ключ 
    
    \}	$$

    Хотя два простых числа, p и q, могут быть в форме 4k + 1 или 4k + 3, процесс дешифрования становится более трудным, если используется первая форма. Рекомендуют применять вторую форму, 4k + 3, для того чтобы сделать дешифрование для Алисы намного проще.

    Шифрование

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

    Rabin_Encryption (n, P)        // n — открытый ключ доступа; 
    P — зашифрованный текст  Z*n
    
    {
    C <- P2 mod n       // C — зашифрованный текст
    return C
    }

    Хотя исходный текст P может быть выбран из множества Zn, но чтобы сделать дешифрование более простым, мы определили множество, которое находится в Zn*.

    Шифрование в криптосистеме Рабина очень простое. Операция нуждается только в одном умножении, что может быть сделано быстро. Это выгодно, когда ресурсы ограничены: например, при использовании карт с интегральной схемой, содержащей микропроцессор с ограниченной памятью, и при необходимости задействовать центральный процессор на короткое время.

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

    Боб может использовать алгоритм 15.3, чтобы расшифровать полученный зашифрованный текст.

    Rabin_Decryption (p, q, C)      // C — зашифрованный текст; p и q — секретные ключи
    a1 <- + (C(p+1)/4) mod p
    a2 <- - (C(p+1)/4) mod p
    b1 <- + (C(q+1)/4) mod q
    b2 <- - (C(q+1)/4) mod q
    // Алгоритм китайской теоремы об остатках вызывается четыре раза.
    P1 <-  Китайский_остаток (a1, b1, p, q)
    P2 <-  Китайский_остаток (a1, b2, p, q)
    P3 <-  Китайский_остаток (a2, b1, p, q)
    P4 <-  Китайский_остаток (a2, b2, p, q)
    return P1, P2, P3 и P4

    Мы должны подчеркнуть здесь несколько моментов. Дешифрация базируется на решении квадратичного сравнения, которое рассмотрено в лекциях 12-13. Поскольку полученный зашифрованный текст — квадрат исходного текста, это гарантирует, что C имеет корни (квадратичные вычеты) в Zn*. Алгоритм китайской теоремы об остатке используется, чтобы найти четыре квадратных корня.

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

    Криптосистема Рабина не детерминирована — дешифрование создает четыре одинаково вероятных исходных текста.

    Пример 15.1

    Вот очень тривиальный пример, чтобы проиллюстрировать идею.

    1. Боб выбирает p = 23 и q = 7. Обратите внимание, что оба являются сравнениями 3 mod 4.

    2. Боб вычисляет $$n = p \times q = 161$$.

    3. Боб объявляет n открытым и сохраняет p и q в секрете.

    4. Алиса хочет передать исходный текст P = 24. Обратите внимание, что 161 и 24 являются взаимно простыми; 24 находится в Z161*. Она вычисляет C = от 242 = 93 mod 161 и передает зашифрованный текст 93 Бобу.

    5. Боб получает 93 и вычисляет четыре значения:

    а. a1 = + (93 (23+1)/4) mod 23 = 1 mod 23

    b. a2 = – (93 (23+1)/4) mod 23 = 22 mod 23

    с. b 1 = + (93 (7+1)/4) mod 7 = 4 mod 7

    d. b2 = – (93 (7+l)/4) mod 7 = 3 mod 7

  • Боб имеет четыре возможных ответа — (a1, b 1), (a1, b2),
  • (a2, b 1), (a2, b2) и использует китайскую теорему об остатках, чтобы найти четыре возможных исходных текста: 116, 24, 137 и 45 (все из них взаимно простые к 161 ). Обратите внимание, что только второй ответ — исходный текст Алисы. Боб должен принять решение исходя из ситуации. Обратите внимание также, что все четыре ответа при возведении во вторую степень по модулю n дают зашифрованный текст 93, переданный Алисой.
  • 1162 = 93 mod 161    242 = 93 mod 161    1372 = 93 mod 161   452 = 93 mod 161

    Безопасность криптографической системы Рабина

    Криптографическая система Рабина безопасна, пока p и q — большие числа. Сложность криптографической системы Рабина — такая же, как и у процедуры разложения на множители больших чисел n на два простых сомножителя p и q. Другими словами, криптографическая система Рабина так же безопасна, как и RSA.

    15.2. Криптографическая система Эль-Гамаля

    Помимо RSA и криптографической системы Рабина есть другая криптосистема с открытым ключом Эль-Гамаля (ElGamal), которая названа по имени ее изобретателя, Тахира Эль-Гамаля (Taher ElGamal). Криптосистема Эль-Гамаля базируется на свойствах дискретного логарифма, который обсуждался в лекциях 12-13.

    Криптографическая система Эль-Гамаля

    На основании сведений лекций 12-13, если p — очень большое простое число, e1первообразный корень в группе $$G = < {Z_{p*}}, \times > $$ и r — целое число, тогда e2 = e1r mod p просто вычисляется с использованием быстрого показательного алгоритма (метод "возведения в квадрат и умножения"). Но по данным e2, e1 и p, невозможно вычислить r = loge1e2 mod p (проблема дискретного логарифма).

    Процедура

    Рисунок 15.2 показывает генерацию ключей, шифрование и дешифрование в криптосистеме Эль-Гамаля.

    (рис 15.2) Генерация ключей, шифрование, и дешифрование в криптосистеме Эль-Гамаля

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

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

    ElGamal_Key_Generation
    {
    Выберите большое простое число p
    Выберите d, члена  группы G = < Zp*, x > , такое, что  1 < d < p – 2
    Выберите e1 — первообразный корень в группе G = < Zp*, x >
    e2 <- e1d mod p
    Общедоступный_ключ <- (e1,  e2,  p)      // Может быть объявлен публично
    Частный_ключ  <- -d                  // Должен сохраняться  в  секрете
    return Общедоступный_ключ  и Частный_ключ
    }

    Шифрование

    Любой может передать сообщение Бобу, используя его открытый ключ доступа. Процесс шифрования показан в алгоритме 15.5. Если применяется быстрый показательный алгоритм (см. лекции 12-13), шифрование в криптосистеме Эль-Гамаля может также быть выполнено по времени с полиномиальной сложностью.

    ElGamal_Encryption (e1, e2, p)                   // P — исходный текст
    {
    Выберите случайное целое число r в группе G = < Zp*, x >
     C1 <- e1r mod p
     C2 <- (P x e2r) mod p         // C1 и C2 – зашифрованные тексты 
    return C1 и C2    }

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

    Боб может использовать алгоритм 15.6, чтобы расшифровать полученное сообщение зашифрованного текста.

    ElGamal_Decryption {d, p, C1, C2)               // C1 и C2 — зашифрованный текст
    {
    P <- [C2(C1d)-1] mod p              // P — исходный текст
    return P
    }
    Сложность разрядной операции шифрования или дешифрования в криптографической системе Эль-Гамаля — полиномиальная.

    Доказательство

    Криптосистема Эль-Гамаля проводит дешифрацию согласно выражению $${C_2} \times {({C_1}^d)^{ - 1}}.$$ Это выражение может быть проверено с помощью подстановки P:

    $$[{C_2} \times {\left( {{C_1}^d} \right]^{ - 1}}\bmod p = [({e_2}^r \times P) \times {\left( {{e_1}^{rd}} \right]^{-1}}\bmod p = \left( {{e_1}^{rd}} \right) \times P \times {\left( {{e_1}^{rd}} \right)^{ - 1}} = P$$

    Пример 15.2

    Рассмотрим тривиальный пример. Боб выбирает 11 в качестве p. Затем он выбирает e1 = 2. Обратите внимание, что 2первообразный корень в Z11* (см. приложение J). Затем Боб выбирает d = 3 и вычисляет e2 = e1d = 8. Получены открытые ключи доступа — (2, 8, 11) и секретный ключ — 3. Алиса выбирает r = 4 и вычисляет C1 и C2 для исходного текста 7.

    Исходный текст: 7
    C1 = e1r  mod  11 = 16 mod 11= 5 mod 11
    C2 = (P x e2r) mod 11  = (7 x 4096) mod 11 = 6 mod 111
    Зашифрованный текст: (5, 6)

    Боб получает зашифрованные тексты ( 5 и 6 ) и вычисляет исходный текст.

    Зашифрованный текст: [C1 x (C2d)-1] mod  11 = 6 x (53)-1 mod 11 = 6 x 3 mod 11 = 7 mod 11 
    Исходный текст: 7

    Пример 15.3

    Вместо того чтобы использовать $$P = [{C_2}{({C_1}^d)^{-1}}]\bmod p$$ для дешифрования, мы можем избежать вычисления мультипликативной инверсии и применить $$P = [{C_2}{({C_1}^{p - 1 - d})^{-1}}]\bmod p$$ (см. малую теорему Ферма в лекциях 12-13). В Примере 15.2 мы можем вычислить $$P = [6 \times {5^{11 - 1 - 3}}]\bmod {\text{ }}11 = 7{\text{ }}\bmod {\text{ }}11$$.

    Анализ

    Очень интересная черта криптосистемы Эль-Гамаля — то, что Алиса создает r и сохраняет его в секрете; Боб создает d и сохраняет его в секрете. Это затруднение криптографической системы может быть решено следующим образом:

    a. Алиса передает $${C_2} = [{e_2}^r \times P]{\text{ }}\bmod {\text{ }}p = [({e_1}^{rd}) \times P]{\text{ }}\bmod {\text{ }}p$$. Выражение ( e1rd ) действует как маска, которая скрывает значение P. Чтобы найти значение P, Боб должен удалить эту маску.

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

    c. Алиса передает Бобу C1 = e1r, что является частью маски. Боб должен вычислить C1d, чтобы cделать точную копию маски, поскольку C1d = (e1r') d= (e1 rd). Другими словами, после получения точной копии маски Боб инвертирует ее и умножает результат на C2, чтобы удалить маску.

    d. Это можно представить так, что Боб помогает Алисе сделать маску (e1rd), не показывая значение d ( d уже включено в e2 = e1rd ); Алиса помогает Бобу делать маску ( e1 rd ), не раскрывая значение r ( r уже включено в C1 = e1r ).

    Безопасность криптосистемы Эль-Гамаля

    Ранее были упомянуты две атаки на криптосистему Эль-Гамаля — атаки, основанные на малом значении модуля, и атаки знания исходного текста.

    Атаки малого модуля

    Если значение модуля p не является достаточно большим, Ева может использовать некоторые эффективные алгоритмы, чтобы решить проблему дискретного логарифма и найти d или r. Если p мало, Ева может просто найти d = loge1e2 mod p и сохранить его, чтобы расшифровать любое сообщение, передаваемое Бобу. Это может быть сделано единожды и работать, пока Боб использует те же самые ключи. Ева может также использовать значение случайного числа r, применяемого Алисой в каждой передаче r = loge1C1 mod p. Оба этих случая подчеркивают, что безопасность криптосистемы Эль-Гамаля зависит от решения проблемы дискретного логарифма с очень большим модулем. Поэтому рекомендовано, что p должны быть по крайней мере 1024 бита ( 300 десятичных цифр).

    Атака знания исходного текста

    Когда Алиса использует одно и то же значение случайного показателя степени r для того, чтобы зашифровать два исходных текста P и P', Ева обнаруживает P', если она знает P. Предположим, что $${C_2} = P \times ({e_2}^r)\bmod {\text{ }}p$$ и $${C'_2} = P' \times ({e_2}^r)\bmod {\text{ }}p$$. Ева находит P', используя следующие шаги:

  • $$({e_2}^k) = {C_2} \times {P^{ - 1}}\bmod p$$.
  • $$P' = C{'_2} \times {({e_2}^k)^{ - 1}}\bmod p$$.
  • Поэтому рекомендовано, чтобы Алиса брала при каждой передаче новое значение r, чтобы сорвать атаки.

    Чтобы криптосистема Эль-Гамаля была безопасной, модуль p должен содержать по крайней мере 300 десятичных цифр, новых для каждой шифровки.

    Пример 15.4

    Вот более реальный пример. Боб использует случайное целое число длиной 512 битов (идеально — 1024 ) и целое число p длиной 155 цифр (идеал — 300 цифр). Боб выбирает e1 и d, затем вычисляет e2, как показано ниже; Боб объявляет (e1, e2, p) как свой открытый ключ и d как секретный ключ доступа.

    p = 1153489927256167624492531371701433174049009453260983495981434692
    19056898698622645932129754737871895144368891765264730936159299937
    28061165964347353440008577
    ___________________________________________________________________
    e1= 2
    ___________________________________________________________________
    d = 1007
    ___________________________________________________________________
    e2 = 9788641304300918950876685693809773904388006288733768761002206223
    32554507074156189212318317704610141673360150884132940857248537703
    1582066010072558707455

    Алиса имеет исходный текст P = 3200, чтобы передать Бобу. Она выбирает r = 545131, вычисляет C1 и C2 и передает их Бобу.

    P = 3200
    r = 545131
    _____________________________________________________________________
    C1 = 8872970693835284710225704714922756631202600672565621250181883514
    29417223599712681114105363661705173051581533189165400973736355080
    295736788569060619152881
    _____________________________________________________________________
    C2 = 7084543330489299445770160123807949995674360218361924469617745069
    2124469615516580077945559308034588961440240859952591957920972162
    88796813505827795664302950

    Боб вычисляет исходный текст $$P{\text{ }} = {C_2} \times {({C_1}^d)^{ - 1}}\bmod p{\text{ }} = 3200\bmod p$$

    P = 3200

    Приложение

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

    15.3. Криптосистемы на основе метода эллиптических кривых

    Хотя RSA и Эль-Гамаль — безопасные асимметрично-ключевые криптографические системы, их безопасность обеспечивается ценой их больших ключей. Исследователи искали альтернативный метод, который дает тот же самый уровень безопасности с меньшими размерами ключей. Один из этих перспективных вариантов — криптосистема на основе метода эллиптических кривых (Elliptic Curve CryptosystemECC). Система базируется на теории эллиптических кривых. Хотя глубокое рассмотрение этой теории находится вне задач и целей нашей книги, этот раздел сначала дает очень простое введение в три типа эллиптических кривых, а затем предлагает разновидности криптографических систем, которые используют некоторые из этих кривых.

    Эллиптические кривые в вещественных числах

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

    y2 + b1xy + b2y = x3 + a1x2 + a2x +a3

    Эллиптические кривые в поле вещественных чисел используют специальный класс формы эллиптических кривых:

    y2 = x3 + ax + b

    В этом случае, если $$4{a^3} + 27{b^2} \ne 0$$, уравнение представляет несингулярную эллиптическую кривую ; в противоположном случае оно описывает сингулярную эллиптическую кривую. Для несингулярной эллиптической кривой уравнение x3 + ax + b = 0 имеет три отличных корня (вещественных или комплексных); для сингулярной уравнение x3 + ax + b = 0 не имеет трех отличных корней.

    В уравнении, как мы можем видеть, левая сторона ( y2 ) имеет степень 2, в то время как правая сторона имеет степень 3 ( x3 ). Это означает, что горизонтальная линия может пересекать кривую в трех точках, если все корни вещественные. Однако вертикальная линия может пересечь кривую самое большее в двух точках.

    Пример 15.5

    Рисунок 15.3 показывает две эллиптические кривые с уравнениями y2 = x3 – 4x и y2 = x 3 – 1. Оба уравнения несингулярны. Однако первое имеет три вещественных корня ( x = -2, x = 0, и x = 2 ), но второе — только один вещественный корень ( x = 1 ) и два мнимых.

    (рис 15.3) Две эллиптические кривые в поле вещественных чисел

    Абелева группа

    Определим абелеву (коммутативную) группу (см. лекции 5-6), использующую точки на эллиптической кривой. Кортеж P = (x1, y1) представляет точку на кривой, если x1 и y1 — координаты точки на кривой, которые удовлетворяют уравнению этой кривой. Например, точки P = (2,0; 0,0), Q = (0,0; 0,0), R = (–2,0; 0,0), S = (10,0;30,98), и T = (10,0; –30,98) – точки на кривой y2 = x3 – 4x. Обратите внимание, что каждая точка представлена двумя вещественными числами. По материалам лекций 5-6, для создания абелевой группы мы нуждаемся во множестве операций над множествами и пяти свойствах, которым удовлетворяют операции. В этом случае группа G = <E, +> — абелева.

    Множество. Мы определим множество как точки на кривой, где каждая точка — пара вещественных чисел. Например, множество E для эллиптической кривой y2 = –x3 – 4x показано как

    E = {(2,0; 0,0), (0,0; 0,0), (-2,0; 0,0), (10,0; 30,98), (10,0,-30,98)...}

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

    R = P + Q, где P = (x1, y1), Q = (x2, y2), и R = (x3, y3)

    Для того чтобы найти R на кривой, рассмотрим три случая, как это показано на рис. 15.4.

    (рис 15.4) Три случая сложения на эллиптической кривой

    1. В первом случае две точки P = (x1, y1) и Q = (x2, y2) имеют различные x -координаты и y -координаты ( $${x_1} \ne {y_1}$$ и $${x_2} \ne {y_2}$$ ), как это показано на рис. 15.4a. Линия, соединяющая P и Q, пересекает кривую в точке, обозначенной R. R есть отражение (-R) относительно y -оси. Координаты точки R, x3 и y3 могут быть найдены по наклону линии, $$\lambda,$$ и затем можно вычислить значений x3 и y3, как показано ниже:

    $$\lambda = (y_{2} – y_{1})/ (x_{2} – x_{1}) \\ x_{3} = \lambda ^{2} – x_{2} – x_{1} \\ y_{3}= \lambda (x_{1} – x_{3}) – y_{1}$$

    2. Во втором случае две точки совпадают (R = P + P), как показано на рис. 15.4b. Наклон линии и координаты точки R могут быть найдены, как показано ниже.

    $$\lambda = (3x_{1}^{2} – a)/2y_{1} \\ x_{3} = \lambda ^{2} – x_{1} – x_{2} \\ y_{3}= \lambda (x_{1} – x_{3}) – y_{1}$$

    3. В третьем случае две точки — аддитивные инверсии друг друга, как это показано на рис. 15.4c. Если первая точка равна P = (x1, y1), а вторая точка равна Q = (x1, – y1), линия, соединяющая эти две точки, не пересекает кривую в третьей точке. Математики говорят в этом случае, что точка пересечения находится в бесконечности. Они определяют точку О (см. рис. 15.4с) как точку в бесконечности или нулевую точку, которая является аддитивным нейтральным элементом группы.

    Свойства операции. Краткие определения свойств операции, как они обсуждались в лекциях 5-6:

  • Замкнутость. Может быть доказано, что сложение двух точек, с использованием операции сложения, определенное в предыдущем разделе, создает другую точку на кривой.
  • Ассоциативность. Может быть доказано, что (P + Q) + R = P + (Q + R).
  • Коммутативность. группа, состоящая из точек несингулярной эллиптической кривой, — абелева группа. Может быть доказано, что P + Q = Q + P.
  • Существование нейтрального элемента. Аддитивный нейтральный элемент в этом случае — нулевая точка. Другими словами, P + 0 = 0 + P.
  • Существование инверсии. Каждая точка на кривой имеет инверсию. Инверсия точки — это ее отражение относительно оси x. Другими словами, точки P = (X1,Y1) И Q = (X1, – Y1)инверсии друг друга; это означает, что P + Q = 0. Заметим, что нейтральный элемент — это инверсия самого себя.
  • Группа и поле

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

    Эллиптические кривые в GF(p)

    Наша предыдущая группа эллиптической кривой использовала вещественное поле для вычислений сложения точек. Криптография требует модульной арифметики. Мы определили группу эллиптической кривой с операцией сложения, но операция на координатах с точками в данном случае есть операция в GF(p) с p> 3. В модульной арифметике точки на кривой не представляют графы, как это можно было видеть на предыдущих рисунках, но сохраняются те же самые основные концепции. Мы используем ту же самую операцию сложения, но с вычислением по модулю p. В результате мы получаем эллиптическую кривую Ep (a, b), где p определяет модуль, и b — коэффициент уравнения y2 = x3 + ax + b. Обратите внимание, что хотя значение x в этом случае от 0 до p, обычно не все точки находятся на кривой.

    Нахождение инверсии

    Инверсия точки (x, y) равна (x, – y), где (–y) — аддитивная инверсия y. Например, если p = 13, инверсия (4, 2) равна (4, 11).

    Нахождение точек на кривой

    Алгоритм 15.7 показывает программу в псевдокоде для нахождения точек на кривой Ep (a, b).

    $$\tt\parindent0pt
    
    Elliptic\_points (p, a, b)              // $p$-модуль
    
    \{ 
    
    $x \gets  0$
    
    while ($x < p$)
    
    \{ 
    
    $w \gets  (x^{3} + ax + b) \mod p$\ \ \            //$w$ – это $y^{2}$
    
    if ($w$ – целое значение квадратного корня в $Z_{p}$)  выход $((x, \sqrt w )(x, - \sqrt w ))$
    
    $x \gets  x + 1$
    
    \} 
    
    \}	$$

    Пример 15.6

    Определите эллиптическую кривую E13 (1, 1) по уравнению y2 = x3 + x + 1 и вычислите по модулю 13. Точки на кривой могут быть найдены, как показано на рис. 15.5.

    (рис 15.5) Точки на эллиптической кривой в поле GF (p)

    Обратите внимание на следующее:

    а. Некоторые значения y2 не имеют квадратного корня по модулю 13. Они не являются точками на этой эллиптической кривой. Например, точки x = 2, x = 3, x = 6 и x = 9 не находятся на кривой.

    б. Каждая точка, определенная на кривой, имеет инверсию. Инверсии перечислены как пары. Заметим, что (7, 0)инверсия самой себя.

    в. Обратите внимание, что для пары обратных точек значения y — аддитивные инверсии друг друга в Zp. Например, 4 и 9 — аддитивные инверсии в Z13. Так что мы можем сказать, что если 4 — это значение y, то 9— это значение (–y).

    г. Инверсии находятся на тех же самых вертикальных линиях.

    Сложение двух точек

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

    Пример 15.7

    Сложим две точки в примере 15.6, R = P + Q, где P = (4, 2) и Q = (10,6).

    а. X = (6 – 2) x (10 – 4) -1 mod 13 = 4 x 6-1 mod 13 != 5 mod 13.

    б. x = (52 – 4 – 10) mod 13 = 11 mod 13.

    в. y = [5 (4 – 11) – 2] mod 13 = 2 mod 13.

    г . R = (11, 2) является точкой на кривой в примере 15.6.

    Умножение точки на константу

    В арифметике умножение числа на константу k означает прибавление числа само к себе k раз. Здесь ситуация та же самая. Умножение точки P на эллиптической кривой на константу k означает прибавление точки P к себе k раз. Например, в E13 (1, 1), если точка (1, 4) умножается на 4, результат есть точка (5, 1). Если точка (8,1) умножается на 3, результат — точка (10, 7).

    Эллиптические кривые в GF(2 в степени n)

    Вычисление в группе эллиптической кривой может быть определено в поле GF(2n). В соответствии с лекциями 5-6, где мы говорили, что элементы множества в этом поле — n -битовые слова, которые можно интерпретировать как полиномы с коэффициентом в GF(2), сложение и умножение этих элементов такое же, как сложение и умножение полиномов. Для того чтобы определить эллиптическую кривую в GF(2n), необходимо только изменить кубическое уравнение. Общее уравнение

    y2 + xy = x3 + ax2 + b

    где $$b \ne 0$$. Обратите внимание, что значение x, y, a и b — полиномы, представляющие n -битовые слова.

    Нахождение инверсии

    Если P = (x, y), то (–P) = (x, x + y).

    Нахождение точек на кривой

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

    Пример 15.8

    Мы выбираем GF (2 3) с элементами (0,1, g, g2, g3, g 4, g5, g6), использующими неприводимый полином f (x) = x3 + x +1. Этому соответствует полином g3 + g +1 = 0 или g3 = g + 1. Другие степени g могут быть вычислены, как это показано ниже.

    0 0 g3 = g + 1 0
    1 0 g4 = g2 + g 1
    g 0 g5 = g2 + g + 1 1
    g2 1 g6 = g2 + 1 1

    Используя эллиптическую кривую y2 + xy = x3 + g3x2 + 1, a = g3 и b = 1, мы можем найти точки на этой кривой, как это показано на рисунке 15.6.

    (рис 15.6) Точки на эллиптической кривой в GF (2 в степени n)

    Сложение двух точек

    Правила для сложения точек в GF(2n) немного отличаются от правил GF(p).

    1. Если P = (x1, y1), Q = (x2, y2), $$Q \ne -P$$, $$Q \ne P$$, то R = (x3, y3) = P + Q может быть найден как

    $$\lambda = (y_{2} + y_{1})/(x_{2} + x_{1}) \\ x_{1}=\lambda ^{2}+\lambda +a \\ y_{3}=x_{1}^{2}+(\lambda +1)x_{3}$$

    2.Если Q = P, то R = P + P (или R = 2P ) и может быть найден как

    $$\lambda = (y_{2} + y_{1})/x_{1} \\ x_{1}=\lambda ^{2}+\lambda +a \\ y_{3}=x_{1}^{2}+(\lambda +1)x_{3}$$

    Пример 15.9

    Пусть нам надо найти R = P + Q, где P = (0,1) и Q = (g2,1). Мы имеем $$\lambda = 0$$ и R = (g5, g4).

    Пример 15.10

    Пусть нам надо найти R = 2P, где P = (g2,1). Мы имеем $$\lambda =g^{2} +1 /g^{2} = g^{2}+ g^{5}= g +1$$ и R = (g6, g5).

    Умножение точек на константу

    Для того чтобы умножить точку на константу, точки должны складываться непрерывно согласно правилу R = 2P.

    Криптография эллиптической кривой, моделирующая криптосистему Эль-Гамаля

    Для шифрования и дешифрования текстов, с помощью эллиптических кривых использовались несколько методов. Один из них состоит в том, чтобы моделировать криптосистему Эль-Гамаля, используя эллиптическую кривую в GF(p) или GF(2n), как это показано на рис. 15.7.

    (рис 15.7) Криптосистема Эль-Гамаля, использующая эллиптическую функцию

    Генерация общедоступных и частных ключей

  • Боб выбирает E (a,b) с эллиптической кривой в GF(p) или GF(2n).
  • Боб выбирает точку на кривой, e1 (x 1, y1 ).
  • Боб выбирает целое число d.
  • Боб вычисляет $${e_2}({x_2},{y_{\text{2}}}) = d \times {e_1}({x_1},{y_1})$$. Обратите внимание: умножение здесь означает, что многократное сложение и определяется как раньше.
  • Боб объявляет E (a,b), e1 (x1, y1 ) и e2 (x2, y2) как свой открытый ключ доступа; он сохраняет d как секретный ключ.
  • Шифрование

    Алиса выбирает P, точку на кривой, как ее исходный текст, P. Затем она вычисляет пару точек, направляет как зашифрованный текст:

    Читатель может задаться вопросом, как произвольным исходным

    C1 = r x e1             C2 = P + r x e2

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

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

    Боб, после получения C1 и C2, вычисляет P, исходный текст, используя следующую формулу:

    P = C2 – (d x C1)   Знак "минус" здесь означает сложение с инверсией.

    Мы можем доказать, что P, вычисленный Бобом, — тот же, что передан Алисой, как это показано ниже:

    $$P + r \times {e_2}-(d \times r \times {e_1}) = = P + (r \times d \times {e_1})-(r \times d \times {e_1}) = = P + 0 = = P$$

    P, C 1, C2 и e2 — это точки на кривой. Обратите внимание, что результат сложения двух обратных точек на кривой — нулевая точка.

    Пример 15.11

    Вот очень тривиальный пример шифровки с использованием эллиптической кривой в GF (p).

  • Боб выбирает E67 (2, 3) как эллиптическую кривую в GF (p).
  • Боб выбирает e1 = (2, 22) и d = 4.
  • Боб вычисляет e2 = (13, 45), где $${e_2} = d \times {e_1}$$.
  • Боб публично объявляет кортеж (E, e1, e2).
  • Алиса хочет передать исходный текст P = (24, 26) Бобу. Она выбирает r = 2.
  • Алиса находит точку C1= (35, 1), где $${C_1} = r \times {e_1}$$.
  • Алиса находит точку C2 = (21, 44), где $${C_2} = P \times {e_1}$$.
  • Боб получает C, и C2. Он использует $$2 \times {C_1}$$, (35, 1) и получает (23, 25).
  • Боб инвертирует точку (23, 25) и получает точку (23, 42).
  • Боб складывает (23, 42) с C2 = (21, 44) и получает первоначальный исходный текст P = (24, 26).
  • Сравнение

    Ниже приводится краткое сравнение алгоритма Эль-Гамаля с его вариантом, использующим эллиптическую кривую.

    a. Алгоритм Эль-Гамаля использует мультипликативную группу; вариант — эллиптическую группу.

    b. Эти два члена в алгоритме Эль-Гамаля — числа в мультипликативной группе; при применении варианта — точки на эллиптической кривой.

    c. Секретный ключ в каждом алгоритме — целое число.

    d. Секретные числа, выбираемые Алисой в каждом алгоритме, — целые числа.

    e. Возведение в степень в алгоритме Эль-Гамаля заменено умножением точки на константу.

    f. Умножение в алгоритме Эль-Гамаля заменено сложением точек.

    g. Инверсия в алгоритме Эль-Гамаля — мультипликативная инверсия в мультипликативной группе; инверсия —заменяется аддитивной инверсией точки на кривой.

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

    Безопасность метода с использованием эллептической кривой

    Чтобы расшифровать сообщение, Ева должна найти значение r или d.

    a. Если Ева знает значение r, она может использовать $$P = {C_2}-(r \times {e_2})$$, чтобы найти точку P, относящуюся к исходному тексту. Но для того чтобы найти r, Ева должна решить уравнение $${C_1} = r \times {e_1}$$. Это значит — найти две точки на кривой, C1 и e1. Ева должна найти множитель, который создает C1 начиная с e1. Эта проблема известна как проблема логарифма эллиптической кривой, единственный известный метод решения этой проблемы — $$РО(\rho )$$ - алгоритм Поларда, который неосуществим, если задано большое r и p в GF (p) или большое n в GF(2n).

    b. Если Ева знает значение d, она может использовать $$P = {C_2} - (d \times {C_1})$$, чтобы найти точку P, относящуюся к исходному тексту. Поскольку $${e_2} = d \times {e_1}$$, это тот же самый тип проблемы, что и в предыдущем пункте. Ева знает значение e1 и e2 — она должна найти d.

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

    Размер модуля

    Для того же самого уровня безопасности (затраты на вычисление) модуль n, может быть меньшим в эллиптической системе (ECC), чем в RSA. Например, ECC в GF(2n) с n, состоящим из 160 битов, может обеспечить тот же уровень безопасности, как RSA с n 1024 битов.

    15.4. Рекомендованная литература

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

    Книги

    Криптографическая система RSА рассматривается в [Sti06], [Sta06], [PHS03], [Vau06], [TW06] и [Mao04]. Криптосистемы Рабина и Эль-Гамаля — в [Sti06] и [Mao04]. Криптография эллиптической кривой — в [Sti06], [Eng99] и [Bla03].

    Сайты

    Следующие сайты дают больше информации о темах, рассмотренных в этой лекции.

  • http: // wwwl.ics.uci.edu / ~ mingl/knapsack.html
  • www.dtc.umn.edu/~odlyzko/doc/arch/knapsack.survey.pdf
  • http://en.wikipedia.org/wiki/RSA
  • citeseer.ist.psu.edu/boneh99twenty.html
  • www.mat.uniroma3.it/users/pappa/SLIDES/RSA-HRL_05.pdf
  • http://en.wikipedia.org/wiki/Rabin_cryptosystem
  • http://en.wikipedia.org/wiki/ElGamaL_encryption
  • ww..cs.purdue.edu/homes/wspeirs/elgamal.pdf
  • http://en.wikipedia.org/wiki/Elliptic__curve_cryptography
  • www.cs.utsa.edu/~rakbani/publications/Akbani-ECC-IEEESMC03.pdf
  • 15.5. Итоги

  • Есть два способа достигнуть информационной безопасности: криптография с симметричными ключами и криптография с асимметричными ключами. Эти два способа существуют параллельно и дополняют друг друга; преимущества одного могут дать компенсацию недостаткам другого.
  • Концептуальные различия между этими двумя способами базируются на том, как они сохраняют секретность. В криптографии с симметричными ключами секретность должна быть разделена между двумя объектами; в криптографии с асимметричными ключами секретность персональная (неразделенная).
  • Криптография с симметричными ключами базируется на подстановке и перестановке символов; криптография с асимметричными ключами базируется на применении математических функций к числам.
  • Криптография с асимметричными ключами использует два отдельных ключа: один секретный и один открытый. Шифрование и дешифрование можно представлять себе как запирание и отпирание замков ключами. Замок, который заперт открытым ключом, можно отпереть только соответствующим секретным ключом.
  • В криптографии с асимметричным ключом ответственность обеспечения безопасности находится, главным образом, на плечах приемника (Боб), который должен создать два ключа: один секретный и один открытый. Боб несет ответственность за секретный ключ. Открытый ключ может быть распространен сообществу через канал распределения открытого ключа.
  • В отличие от криптографии с симметричными ключами, в криптографии с асимметричным ключом исходный текст и зашифрованный текст обрабатываются как целые числа. Сообщение должно кодироваться как целое число (или множество целых чисел) перед шифрованием; целое число (или множество целых чисел) должно быть расшифровано в сообщение после дешифрования. Криптография с асимметричным ключом обычно используется, чтобы зашифровать или расшифровывать маленькие сообщения, такие как ключ шифра для криптографии с симметричными ключами.
  • Главная идея криптографии с асимметричным ключом — понятие "лазейка" в односторонней функции (TOWF), которая является такой функцией, что f вычисляется просто, а f -1 вычислить невозможно (в смысле сложности вычислений), если не используется лазейка.
  • Блестящая идея относительно криптографии общедоступного ключа принадлежит Меркелю и и Хеллману – это ранцевая криптосистема . Когда нам говорят, какие элементы из заранее заданного множества чисел находятся в рюкзаке, мы можем легко вычислить сумму чисел; когда нам сообщают сумму, трудно сказать, какие элементы находятся в рюкзаке, если он не заполнен элементами сверхвозрастающего множества.
  • Самый общий алгоритм общедоступного ключа — криптографическая система RSА. RSA использует два числа e и d, где e — общедоступный ключ, а d является частным (секретным). Алиса использует C = Pe mod n для того, чтобы создать зашифрованный текст C из исходного текста P ; Боб использует P = Сd mod n, чтобы извлечь исходный текст, переданный Алисой.
  • RSA применяет две алгебраических структуры: кольцо и группа. Шифрование и дешифрование выполняются с использованием коммутативного кольца $$R = < {Z_n}^*, + , \times > $$ с двумя арифметическими операциями — сложением и умножением. RSA применяет мультипликативную группу $$G = < {Z_n}^*, \times > $$ для генерации ключей.
  • Никаких разрушительных атак на RSA не было обнаружено. Теоретически предсказано несколько атак, основанных на разложении на множители, выборке шифрованного текста, образце дешифрования, образце шифрования, исходном тексте, модуле и реализации.
  • Криптосистема Рабина — вариант криптографической системы RSА. RSA базируется на экспоненциальном сравнении; криптосистема Рабина базируется на квадратичном сравнении. Мы можем представлять себе, что криптосистема Рабина — это RSA, в которой значение e = 2 и d = 1/2. Криптографическая система Рабина безопасна, пока p и q — большие числа. Сложность криптосистемы Рабина — на том же самом уровне, как и процесс разложения большого числа n на два простых сомножителя p и q.
  • Криптосистема Эль-Гамаля базируется на проблеме дискретного логарифма. Криптосистема Эль-Гамаля использует идею первообразных корней в Zn*. Шифрование и дешифрование в криптосистеме Эль-Гамаля использует группу $$G = < {Z_p}^*, \times > $$ Общедоступный ключ — это два числа, e1 и e2, а секретный ключ — это целое число d. Безопасность криптосистемы Эль-Гамаля основана на том, что решение проблемы дискретного логарифма не существует. Однако в литературе была упомянута атака, основанная на малом значении модуля, и атака знания исходного текста.
  • Другая криптографическая система, рассмотренная в этой лекции, базируется на эллиптических кривых. Эллиптические кривые являются кубическими уравнениями в двух переменных. Эллиптические кривые на поле вещественных чисел используют специальный класс эллиптических кривых y2 = x3 + ax + b, где $$4{a^3} + 27{b^2} \ne 0$$. Абелева группа была определена с помощью эллиптической кривой с операцией сложения, которая показывает, как две точки на кривой можно сложить, чтобы получить другую точку на этой кривой.
  • Криптография эллиптической кривой применяет две алгебраических структуры, абелеву группу и поле. Поле может быть полем вещественных чисел, GF (p) и GF (2n). Мы показали, как криптосистема Эль-Гамаля может моделироваться, используя эллиптические кривые в конечном поле. Безопасность криптографии эллиптической кривой зависит от проблемы логарифма эллиптической кривой, решение которой неосуществимо при большом значении модуля.
  • 15.6. Набор для практики

    Обзорные вопросы

  • Найдите различия между криптосистемами с симметричными ключами и асимметричными ключами.
  • Найдите различия между открытыми и секретными ключами в криптосистеме с асимметричными ключами. Найдите совпадения и различие ключей в криптосистемах с симметричными ключами и с асимметричными ключами.
  • Определите "лазейку" в односторонней функции и объясните её использование в криптографии с асимметричным ключом.
  • Кратко объясните идею ранцевой криптосистемы
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптографической системы RSA.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптосистемы Рабина.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптосистемы Эль-Гамаля.
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Кратко объясните идею криптографии эллиптической кривой (ECC).
  • Что является односторонней функцией в этой системе?
  • Что является лазейкой в этой системе?
  • Определите открытые и секретные ключи в этой системе.
  • Опишите безопасность этой системы.
  • Определите эллиптические кривые и объясните их приложения в криптографии.
  • Определите операцию, используемую в абелевой группе, которая обрабатывает точки на эллиптической кривой.
  • Упражнения

  • Учитывая сверхвозрастающий кортеж b = [7, 11,23,43,87, 173, 357], r =41 и модуль n = 1001, зашифруйте и расшифруйте букву a, используя ранцевую криптосистему. Используйте [7 6 5 1 2 3 4] как таблицу перестановки.
  • В RSA:
  • Дано n = 221 и e = 5, найдите d.
  • Дано n =3937 и e =17, найдите d.
  • Дано p = 19, q = 23 и e = 3, найдите n, $$\varphi ,$$ (n) (^) и d.
  • Для того чтобы понять безопасность алгоритма RSА, найдите d, если вы знаете, что e =17, а n =187.
  • В RSA дано n и $$\varphi (n)$$, вычислите p и q.
  • В RSA дано e = 13 и n = 100. Зашифруйте сообщение "HOW ARE YOU", применяя 00 к 25 для букв от A до Z и 26 — для пробела. Используйте различные блоки, чтобы сделать P <n.
  • В RSA дано n = 12091 и e = 13. Зашифруйте сообщение "THIS IS THOGH", используя схему кодирования 00 к 26. Расшифровать зашифрованный текст, чтобы найти первоначальное сообщение.
  • В RSA:
  • Почему Боб не может выбрать 1 как открытый ключ e?
  • Какова проблема в выборе 2 открытым ключом?
  • Алиса использует открытый ключ RSА Боба (e = 17, n = 19519), чтобы передать сообщение из четырех символов Бобу, применяющему схему $$A \leftrightarrow 0$$, $$B \leftrightarrow 1...Z \leftrightarrow 25$$ кодирования и декодирования по каждому символу отдельно. Ева перехватывает зашифрованный текст (6625 0 2968 17863) и расшифровывает сообщение, не разлагая на множители модуль. Найдите исходный текст; объясните, почему Ева смогла легко взломать зашифрованный текст.
  • Алиса использует открытый ключ RSА Боба (e = 7, n = 143), чтобы передать исходный текст P = 8, зашифрованный в виде текста C = 57. Покажите, как Ева может использовать атаку выборки текста, если она имеет доступ к компьютеру Боба, чтобы найти исходный текст.
  • Алиса использует общедоступный ключ RSA Боба (e = 3, n = 35) и передает зашифрованный текст 22 Бобу. Покажите, как Ева может найти исходный текст, используя атаку циклического повторения.
  • Предложите, как Алиса может предотвратить атаку связанного сообщения на RSA.
  • Используя криптосистему Рабина с p = 47 и q =11:
  • Зашифруйте P = 17 и найдите зашифрованный текст.
  • Используя Китайскую теорему об остатках, найдите четыре возможных исходных текста.
  • В криптосистеме Эль-Гамаля дано простое число p = 31:
  • Выберите соответствующие e1 и d, затем вычислите e2.
  • Зашифруйте сообщение "HELLO" ; используйте 00 к 25 для кодирования. Используйте различные блоки для того, чтобы сделать P<p.
  • Расшифруйте зашифрованный текст, чтобы получить исходный текст.
  • Что случится в криптосистеме Эль-Гамаля —, если C1 и C2 будут изменены в течение передачи?
  • Предположим, что Алиса применяет в криптосистеме Эль-Гамаля общедоступный ключ Боба ( e1 = 2 и e 2 = 8 ), чтобы передать два сообщения — P = 17 и P' = 37. Они оба используют то же самое случайное целое число r = 9. Ева перехватывает зашифрованный текст и так или иначе находит значение P = 17. Покажите, как Ева может использовать атаку знания исходного текста, чтобы найти значение P'.
  • В эллиптической кривой E (1, 2) в поле GF (11):
  • Найдите уравнение кривой.
  • Найдите все точки на кривой и сделайте рисунок, такой же, как рис. 15.5.
  • Сгенерируйте общедоступный и секретный ключи для Боба.
  • Выберите точку на кривой как исходный текст Алисы.
  • Создайте зашифрованный текст, соответствующий исходному тексту Алисы в пункте d.
  • Расшифруйте зашифрованный текст для Боба, чтобы найти исходный текст, передаваемый Алисой.
  • В эллиптической кривой E (g4, 1) в поле GF(24):
  • Найдите уравнение кривой.
  • Найдите все точки на кривой и сделайте рисунок, такой же, как рис. 15.5.
  • Сгенерируйте общедоступный и секретный ключи для Боба.
  • Выберите точку на кривой как исходный текст Алисы.
  • Создайте зашифрованный текст, соответствующий исходному тексту Алисы в пункте г.
  • Расшифруйте зашифрованный текст для Боба, чтобы найти исходный текст, передаемый Алисе.
  • Используйте ранцевую криптосистему:
  • Напишите алгоритм для шифрования.
  • Напишите алгоритм для дешифрования.
  • В RSA:
  • Напишите алгоритм для шифрования, используя оптимальное асимметричное дополнение шифрования (OAEC).
  • Напишите алгоритм для дешифрования, используя оптимальное асимметричное дополнение шифрования (OAEC).
  • Напишите алгоритм для атаки циклического повторения на RSA.
  • Напишите алгоритм для сложения двух точек на эллиптической кривой в GF(p).
  • Напишите алгоритм для сложения двух точек на эллиптической кривой в GF(2n).
  • Вернуться к учебному плану