Криптографические протоколы на эллиптических кривых

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.08.2012
Размер файла 371,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Алгоритм: 1. Если P = O то вернуть (P).

2. T1 < Z12

3. T2 < X1 - T1.

4. T1 < X1 +T1.

5. T2<T2 · T1.

6. T2<3T2.

7. Y3<2Y1.

8. Z3<Y3 · Z1.

9. Y3<Y32

10. T3<Y3 · X1.

11. Y3<Y32

12. Y3<Y3/2.

13. X3<T22

14. T1<2T3.

15. X3<X3 ? T1.

16. T1<T3 ? X3.

17. T1<T1 · T2.

18. Y3<T1?Y3.

Вернуть: (X3 : Y3 : Z3).

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

Вход: точка P = (X1 : Y1 : Z1) в системе координат Якоби, лежащая на кривой y2 = x3 - 3x + b и целое число m > 0.

Выход: 2m P в системе координат Якоби.

Алгоритм: 1. Если P = O то вернуть (P).

2. Y<2Y, W<Z4.

3. Пока m > 0 выполнять:

3.1 A<3(X2 ?W), B<XY 2.

3.2 X<A2 ?2B, Z<ZY.

3.3 m<m ?1. Если m > 0 то W<WY 4.

3.4 Y<2A(B ? X)?Y 4.

Вернуть: (X : Y/2 : Z).

Система координат Чудновского-Якоби ( Jc )

В системе координат Якоби удвоение точки происходит быстрее, чем в стандартной системе координат, однако сложение двух точек требует чуть больше операций. Для того, чтобы избавиться от этого недостатка, можно представлять точки в системе координат Якоби в виде пятерок (X, Y, Z, Z 2, Z 3). Эта система координат называется системой Чудновского-Якоби. В этой системе координат:

t(Jc + Jc) = 10M + 4S,

t(2Jc) = 2M + 8S.

Модифицированная система координат Якоби ( Jm )

Использование системы координат Чудновского-Якоби позволяет «сбалансировать» операции удвоения точки и сложения двух точек. Мы получаем небольшой выигрыш в скорости сложения и платим за это проигрышем в скорости удвоения. Однако схожий подход может быть использован и для того, чтобы дополнительно ускорить операцию удвоения за счет еще большего замедления операции сложения. Для этого в системе координат Якоби добавим четвертую координату (X, Y, Z, aZ4). Возьмем две проективные точки P1 = (X1, Y1, Z1, aZ14), P2 = (X2, Y2, Z2, aZ24), принадлежащие нашей кривой. Тогда координаты точки P3:

P3 = P1 + P2 = (X3, Y3, Z3, aZ34)

вычисляются по следующим формулам:

Если P1 ? ±P2 ,

u1 = X1Z22, u2 = X2Z12,

s1 = Y1Z23, s2 = Y2Z13,

h = u2 - u1, r = s2 - s1,

X3 = -h3 - 2u1h2 + r2,

Y3 = -s1h3 + r(u1h2 - X3),

Z3 = Z1Z2h,

aZ34 = aZ34.

Если P1 = P2 (удвоение точки):

s = 4X1Y12, u = 8Y14,

m = 3X12 + (aZ14),

X3 = -2s + m2,

Y3 = m(s - X3) - u,

Z3 = 2Y1Z1,

aZ34 = 2u(aZ14).

При P1 = ?P2 получаем P3 = O.

Для этой системы координат получаем:

t(Jm + Jm) = 13M + 6S,

t(2Jm) = 4M + 4S.

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

Смешанные координаты

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

Будем строить алгоритм умножения точки эллиптической кривой P на число k. Возьмем в качестве базы алгоритм, в котором k представляется в NAF (Non-adjacent form), и читается справа налево. На каждом шаге алгоритма происходит удвоение точки P и, возможно, сложение точки P с результирующей точкой P*.

Добавим теперь в этот алгоритм использование смешанных координат. Удвоение точки P каждый раз будем производить в модифицированной системе координат Якоби, то есть в самой выгодной для этого системе координат. Теперь нам нужно подобрать такую систему координат X, которая бы позволяла производить сложение вида Jm + X = X и при этом затраты на эту операцию были бы минимальными. На роль такой системы подходит обычная система координат Якоби. При этом для сложения вида Jm + J = J не требуется выполнять никаких преобразований координат (четвертая координата Jm просто игнорируется). Затрачивать это сложение будет столько же операций, сколько и сложение вида J + J = J. Таким образом, мы можем использовать преимущество модифицированной системы координат Якоби (минимальные затраты операций на удвоение точки) и не расплачиваться за это существенным замедлением операции сложения двух точек. Подробное описание алгоритма:

Вход: точка P = (X1 : Y1 : Z1) в системе координат Якоби, лежащая на кривой y2 = x3 + ax + b и целое число k > 0.

Выход: kP = (Xk : Yk : Zk) в системе координат Якоби.

Алгоритм: 1. P* < (1, 1, 0); T < (X1 : Y1 : Z1 : aZ14)

2. Пока k > 1 выполнять:

2.1 Если k mod 2 = 1 то P* = P* + T.

иначе P* = P* - T.

2.2 k = k/2

2.3 T = 2T

3. P* = P* + T

Вернуть: P*

В данной работе реализованы операции сложения и удвоения точек в системе координат Якоби (метод pointAddJacobi класса eCurve), операция удвоения точки в модифицированной системе координат Якоби (метод pointDoubleJacobiM класса eCurve) и алгоритм умножения точки на число, описанный выше (метод pointMultiplyModifie класса eCurve). Также написана программа, позволяющая увидеть, какое преимущество в скорости дает использование в этом алгоритме проективных координат (test.java, метод compModStd).

Сравнение алгоритмов производилось для эллиптических кривых над полями характеристик p длины 192, 224, 256, 384, 521 бит (то есть те значения длины p, которые используются в стандарте NIST). Все параметры кривой, точка P и большое число k генерировались случайным образом. В результате сравнения были получены следующие результаты:

Длина p

192 бита

224 бита

256 бит

384 бита

521 бит

t(A), мс

14.382

19.172

28.668

78.562

175.43

t(Am), мс

8.257

10.564

15.74

42.888

106.46

t(A) / t(Am)

1.742

1.815

1.821

1.832

1.648

где t(A) - время работы алгоритма, который не использует проективные координаты;

t(Am) - время работы алгоритма, который использует смешанные координаты (J и Jm).

Таким образом, использование смешанных координат увеличивает скорость основных операций эллиптических кривых в ~1.7-1.8 раз. При этом не накладывается никаких ограничений на параметры кривой и не требуется проводить предвычислений.

Эллиптическая криптография

В этом разделе будут рассмотрены реализации криптосистем с открытым ключом на основе эллиптических кривых.

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

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

Рассмотрим общую схему работы системы шифрования с открытым ключом. Пусть сторона А хочет послать конфиденциальное сообщение m стороне B. А получает копию открытого ключа В - eB, и использует функцию шифрования Enc некоторого алгоритма шифрования для вычисления криптограммы c = Enc eB (m). Затем А передает криптограмму с стороне В, которая использует функцию дешифровки Dec со своим секретным ключом db для получения исходного сообщения m = Dec dB (c). Предполагается, что злоумышленник, зная только eb , не сможет расшифровать криптограмму c, т.е. eb может передаваться по незащищенному каналу. Важно лишь, чтобы сторона А получила неиспорченную копию ключа eВ, иначе сообщение будет зашифровано на неверном ключе и расшифровать его будет уже невозможно.

Теперь рассмотрим общую схему работы алгоритма цифровой подписи с открытым ключом. Пусть сторона А использует алгоритм генерации цифровой подписи Sign и ее секретный ключ dA для вычисления подписи сообщения s = Sing dA (m). При получении m и s, сторона В, которая имеет копию публичного ключа eA использует алгоритм заверения подписи для подтверждения того, что подпись s была действительно получена из сообщения m и секретного ключа dA. Так как dA - секретный ключ, который известен только стороне А, сторона В может быть уверена в том, что сообщение действительно получено от А. Более того, так как заверение требует только не подлежащих засекречиванию данных m и eA, то подпись s для сообщения m также может быть заверена третьей стороной для разрешения спора в том случае, если А отрицает акт подписи сообщения m. В отличие от обычной подписи документа, цифровая подпись s зависит от сообщения m, а значит, злоумышленник не сможет подделать подпись, просто приложив ее к другому сообщению m'. Несмотря на то, что на открытый ключ eA не накладывается никаких ограничений секретности, необходимо чтобы заверяющая сторона В получила подлинную копию eA при заверении сообщения, предположительно подписанного стороной А.

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

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

Генерация ключа. Пусть P - точка эллиптической кривой E над полем G(p), имеющая порядок n. Тогда циклическая подгруппа E порожденная точкой P будет состоять из точек {O, P,2P,3P, . . .,(n?1)P}. Характеристика поля p, уравнение эллиптической кривой E, точка P и ее порядок n являются параметрами кривой. Секретным ключом является число d, которое выбирается случайно из интервала [1, n-1], а открытым ключом является точка Q = dP. Задача вычисления d по известным параметрам кривой и точке Q называется проблемой дискретного логарифма в группе точек эллиптической кривой (ECDLP). Ниже предоставлен алгоритм генерации ключевой пары ECC.

Вход: Параметры кривой (p, E, P, n).

Выход: Открытый ключ Q и секретный ключ d.

Алгоритм: 1. Выбрать d Ѓё R [1,n?1].

2. Вычислить Q = dP.

Вернуть: (Q,d)

Шифрование.

Открытый текст m представляется в виде точки M, а затем шифруется путем сложения с точкой kQ. Отправитель передает точку C1 = kP и C2 = M + kQ получателю, который использует свой секретный ключ d для вычисления dC1 = d(kP) = kQ и затем восстанавливает M = C2 - kq. Злоумышленник, желающий восстановить M, должен вычислить kQ. Проблема вычисления kQ при знании параметров кривой, Q и C1 = kP, является аналогом проблемы Диффи-Хеллмана для эллиптических кривых. Ниже предоставлен алгоритм шифрования.

Вход: Параметры кривой (p, E, P,n), открытый ключ Q, текст m.

Вывод: Криптограмма (C1,C2).

Алгоритм: 1. Представить сообщение m в виде точки M кривой E(Fp).

2. Выбрать k Ѓё R [1,n?1].

3. Вычислить C1 = kP.

4. Вычислить C2 = M +kQ.

Вернуть: (C1,C2).

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

Вход: Параметры кривой (p, E, P,n), секретный ключ d, криптограмма (C1,C2).

Выход: Исходный текст m.

Алгоритм: 1. Вычислить M = C2 ? dC1, и вычислить m из M.

Вернуть: (m).

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

Алгоритм цифровой подписи на основе эллиптических кривых

Схема цифровой подписи ECDSA состоит из четырех алгоритмов:

1. Алгоритм генерации параметров эллиптической кривой.

2. Алгоритм генерации пары ключей.

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

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

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

Заверение открытого ключа особенно важно в алгоритмах, основанных на алгоритме Диффи-Хеллмана, в которых сторона A создает общий секрет k, складывая свой секретный ключ d с открытым ключом стороны B, и затем использует k в некотором протоколе с симметричном ключом. Если B окажется злоумышленником, то он может выбрать открытый ключ таим образом, что использование этого ключ стороной А может помочь ему узнать некоторую информацию о секретном ключу A.

Вход: Параметры кривой D, открытый ключ Q.

Выход: Принятие или отвержение ключа Q.

Алгоритм: 1. Установить, что Q O.

2. Убедиться, что x0 и y0 являются элементами поля GF(q) (то есть являются целыми числами из интервала [0,q ?1] если кривая задана над полем большой характеристики или последовательностями битов длины m, если кривая задана над расширением полем характеристики два GF(q=2m)).

3. Убедиться, что подстановка координат Q в уравнение эллиптической кривой обращает его в верное равенство.

4. Убедиться, что nQ O.

5. Если хотя бы одна из проверок прошла неудачно, то вернуть (“Invalid”); иначе вернуть (“Valid”).

Алгоритм цифровой подписи на эллиптических кривых является аналогом алгоритма цифровой подписи DSA. Он является самым стандартизированным алгоритмом, использующим эллиптические кривые, и занесен в такие стандарты, как ANSI X9.62, FIPS 186-2, IEEE 1363-2000 и ISO/IEC 15946-2. В последующем описании алгоритма через H обозначается криптографическая хэш-функция, выходное значение которой не превышает числа n (если это условие не выполняется, то значения хэш-функции могут быть усечены).

Алгоритм генерации цифровой подписи:

Вход: Параметры эллиптической кривой D = (a, b, p), секретный ключ d, сообщение m, порождающая точка G и ее порядок q.

Выход: Подпись (r, s).

Алгоритм: 1. Выбрать k Ѓё R [1,q?1].

2. Вычислить kG = (x1, y1).

3. Вычислить r = x1 mod q. Если r = 0 вернуться к шагу 1.

4. Вычислить h = H(m).

5. Вычислить s = k?1(h+d*r) mod q. Если s = 0 вернуться к шагу 1.

Вернуть: (r, s).

Алгоритм заверения цифровой подписи:

Вход: Параметры кривой D = (a, b, p), открытый ключ Q, сообщение m, подпись (r, s), порождающая точка G и ее порядок q.

Выход: Заверение или отвержение подписи.

Алгоритм: 1. Вычислить h = H(m).

2. Вычислить w = s?1 mod q.

3. Вычислить u1 = hw mod q и u2 = rw mod q.

4. Вычислить Pver = (x1, y1) = u1*G +u2*Q.

5. Если Pver =О то вернуть (“Reject the signature”);

6. Вычислить v= x1 mod q.

7. Если v = r то вернуть (“Accept the signature”);

Иначе вернуть (“Reject the signature”).

Можно легко показать, что данный алгоритм действительно успешно заверяет цифровую подпись. Если подпись (r, s) сообщения m была действительно сгенерирована с использованием секретного ключа, то s ? k?1(h+dr) (mod q). Раскрывая скобки получим:

k ? s?1(h + dr) ? s?1h + s?1rd ? wh + wrd ? u1 + u2d (mod q).

Тогда Pver = u1*G +u2*Q = (u1 +u2d)*G = kG и значит v = r, что и требуется для заверения подписи.

Преимущества использования схем эллиптической криптографии

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

1. Функциональность. Предоставляет ли данная схема шифрования все необходимые возможности?

2. Безопасность. Какие гарантии того, что данная схема шифрования является безопасной?

3. Производительность. Работает ли данная схема шифрования за допустимое время?

Все три основных схемы шифрования RSA, DL и EC предоставляют базовый набор функций криптографии с открытым ключом - шифрование, ЭЦП и использование общего ключа. Безопасность данных алгоритмов в основном определяется трудностью математической проблемы, лежащей в их основе. Для алгоритма RSA это проблема факторизации целых чисел, для DL - проблема дискретного логарифмирования, а для EC - проблема дискретного логарифмирования для эллиптических кривых. Сложность этих задач непосредственно сказывается на производительности, так как она определяет необходимый размер параметров шифрования и ключа, что в свою очередь сказывается на производительности всего алгоритма в целом.

Алгоритмы решения задачи факторизации целых чисел. Частным случаем проблемы факторизации целых чисел является задача разложения целого числа n на два простых числа размера l/2 бит. Размер входных данных - O(l) бит. Быстрейший известный алгоритм факторизации n - Number Field Sieve (NFS) имеет субэкспотенциальное ожидаемое время работы.

Ln [1/3, 1.923], где Ln[a ,c] = O()

Алгоритмы решения задачи дискретного логарифмирования. В задаче дискретного логарифмирования параметрами являются числа p и q, где p - простое число размером l бит и q - простой делитель числа p-1 размера t. Размер входных данных равен O(l) бит. Быстрейшими алгоритмами решения такой задачи являются Number Field Sieve (NFS) с ожидаемым временем работы Ln [1/3, 1.923] и Pollard's rho algorithm с ожидаемым временем работы

Выбор наиболее эффективного алгоритма зависит от размера входных данных.

Алгоритмы для решения задачи дискретного логарифмирования эллиптических кривых. Целью задачи является целое число d Ѓё [1,n?1], такое, что Q = dP, где n - простое число размером t бит, P - точка порядка n эллиптической кривой над полем GF(p), и Q принадлежит циклической подгруппе, порожденной точкой P. Если положить n ? p, как обычно и бывает на практике, то размер входных данных составляет O(t) бит. Быстрейший алгоритм решения данной проблемы - Pollard's rho algorithm, который имеет ожидаемое время работы

Как видно, сложность математической проблемы для всех трех алгоритмов сравнима. Самым важным преимуществом ECDSA является возможность его работы на значительно меньших полях GF(p). Предполагается, что битовый размер открытого ключа, который будет необходим для ECDSA, равен двойному размеру секретного ключа в битах. Ниже приведена таблица сравнения размера параметров ECDSA, RSA и DL для стандартных ключей длины 80 (SKPJACK), 112 (Triple-DES), 128 (AES-small), 192 (AES-medium), 256 (AES-large).

Параметры

80 (SKPJACK)

112 (Triple-DES)

128 (AES-small)

192 (AES-medium)

256 (AES-large)

q (DL)

160

224

256

384

512

n (EC)

160

224

256

384

512

n (RSA)

1024

2048

3072

8192

15360

p (DL)

1024

2048

3072

8192

15360

Таблица демонстрирует что в алгоритмах ECC могут быть использованы параметры намного меньше размера, чем в RSA и DL при достижении того же уровня безопасности. При этом разница в размере параметров растет с увеличением уровня безопасности. Соответственно, операции в алгоритмах ECC протекают намного быстрее, чем в RSA и DL.

Заключение

В данной работе изложены базовые понятия теории эллиптических кривых, необходимые для реализации криптографических протоколов. Рассмотрены основные алгоритмы арифметики точек эллиптической кривой, а также способы генерации кривых, пригодных для использования в криптографических алгоритмах. Даны алгоритмы шифрования Эль-Гамаля и ЭЦП с использование эллиптических кривых, а в приложение вынесен пример реализации схемы цифровой подписи ECDSA на языке Java с подробными комментариями.

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

Список использованных источников

1. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. А. А. Болотов [и др.]. - М.: КомКнига, 2006. - 328 с.

2. Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых. А. А. Болотов [и др.]. - М.: КомКнига, 2006. - 280 с.

3. Hankerson D. Guide to Elliptic Curve Cryptography. Darrel Hankerson, Alfred J. Menezes, Scott Vanstone. - New York:Springer, 2004. - 332 с.

4. Anoop Deoras K. Implementation of elliptic curve cryptography. Anoop K. Deoras. - Pune: Electronics and Telecommunication, Government College of Engineering, 2008 - 77 с.

5. Peters С. Counting points on elliptic curves over Fq / Christiane Peters. - New York:DIAMANT, 2008 - 30 с.

6. Turki F. Al-Somani. Performance Evaluation of Elliptic Curve Projective Coordinates with Parallel GF(p) Field Operations and Side-Channel Atomicity / Turki F. Al-Somani // JOURNAL OF COMPUTERS, VOL. 5 - Saudi Arabia., 2010 - 99-109 c.

7. Amoop M.S. Elliptic Curve Crypthography - An Implementation Tutorial. Anoop M.S. - Thiruvananthapuram.: Tata Elxsi Ltd, 2011. - 11 c.

8. Washington, Lawrence C. Elliptic Curves: Number Theory and Cryptography / Lawrence C. Washington. - 2-е изд. - Maryland: University of Maryland, 2008. - 524 c.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.