Перейти к содержанию

ECDSA

Материал из Мегавики — свободной энциклопедии

ECDSA (Elliptic Curve Digital Signature Algorithm) — алгоритм с открытым ключом, использующийся для построения и проверки электронной цифровой подписи при помощи криптографии на эллиптических кривых.

История[править]

Эллиптические кривые, в качестве математического понятия, изучаются уже достаточно давно, существует множество научных работ на эту тему. Однако, несмотря на все исследования, их применение для реальных задач, в частности для криптографии, было неизвестно до конца XX века. В 1985 году Виктор Миллер и Нил Коблиц предложили использование эллиптических кривых для криптографии[1].

В 1991 году Национальным институтом стандартов и технологий (NIST) был разработан DSA, построенный на идее использования проблемы дискретного логарифма. Вскоре после этого, NIST запросил публичные комментарии по поводу своего предложения о схемах цифровой подписи. Воодушевившись данной идеей, Скотт Ванстоун в статье «Responses to NIST’s proposal» предложил аналог алгоритму цифровой подписи, использующий криптографию на эллиптических кривых (ECDSA)[1].

В период с 1998-2000 гг. ECDSA был принят различными организациями, как стандарт (ISO 14888-3, ANSI X9.62, IEEE 1363—2000, FIPS 186-2)[2].

Применение[править]

ECDSA используется в криптовалютных транзакциях (например, в биткойне и эфириуме) для обеспечения того, чтобы средства могли быть потрачены только их законными владельцами[3].

Основные параметры эллиптической кривой[править]

Основными параметрами (англ. domain parameters) D=(q,FR,a,b,G,n,h) эллиптической кривой над конечным полем 𝔽q называется совокупность следующих величин[4]:

  • Порядок конечного поля q (напрмер, простое конечное поле 𝔽p при q=p, где p>3 и является простым числом).
  • FR (Field Representation) — индикатор, использующийся для представления элементов, приндлежащих полю 𝔽q.
  • Два элемента поля a,b∈𝔽q, задающие коэффициенты уравнения эллиптической кривой E над полем 𝔽q (например, y2=x3+ax+b при q=p>3).
  • Базовая точка G=(xG,yG)∈E(𝔽q), имееющая простой порядок n.
  • Целое число h, являющееся кофактором h=#E(𝔽q)/n, где #E(𝔽q) — порядок кривой, численно совпадающий с числом точек в E(𝔽q).

Параметры должны быть выбраны таким образом, чтобы эллиптическая кривая, опредённая над конечным полем 𝔽q была устройчива ко всем известным атакам, применимым к ECDLP. Помимо этого, могут быть и другие ограничения, связанные с соображениями безопасности или реализации. Как правило, основные параметры являются общими для группы сущностей, однако в некоторых приложениях (реализациях), они могут быть специфичными для каждого конкретного пользователя[5]

ECDSA по стандарту ANSI X9.62[править]

Для практического применения ECDSA налагают ограничения на поля[6], в которых определены эллиптические кривые. Для простоты, рассмотрим случай реализации алгоритмов, когда 𝔽q — простое конечное поле, (для других полей — аналогично), тогда наше эллиптическое уравнение принимает вид y2=x3+ax+b.

Алгоритм генерации основных параметров[править]

Для того, чтобы избежать известных атак, основанных на проблеме дискретного логарифма в группе точек эллиптической кривой, необходимо, чтобы число точек эллиптической кривой E делилось на достаточно большое простое число n. Стандарт ANSI X9.62 требует n>2160. Предлагается следующий алгоритм[7]:

Ввод: Порядок поля q, индикатор представления поля FR для 𝔽q, L - уровень безопасности: 160⩽L⩽[log2q] и 2L⩾4q.

Вывод: Основные параметры эллиптической кривой D=(q,FR,a,b,G,n,h).

Шаг 1. Выберите верифицировано случайным образом элементы a,b∈𝔽q, удовлетворяющие условию 4a3+27b2≢0modq.

Шаг 2. N:=#E(𝔽q), порядок кривой можно вычислить при помощи алгоритма SEA.

Шаг 3. Проверьте, что Nmodn=0 при большом простом числе n⩾2L. Если нет, тогда перейдите к шагу 1.

Шаг 4. Проверьте, что qk−1modn=0 ∀k∈[1,20]. Если нет, тогда перейдите к шагу 1.

Шаг 5. Проверьте, что n≠q. Если нет, тогда перейдите к шагу 1.

Шаг 6. h:=N/n.

Шаг 7. Выберите произвольную точку G'∈E(𝔽q) и задайте G:=hG'. Повторяйте, пока G≠𝒪, где 𝒪 - бесконечно удалённая точка

Шаг 8. Верните (q,FR,a,b,G,n,h)

Алгоритмы верификации случайным образом дают гарантию того, что эллиптическая кривая над конечным полем была сгенерирована абсолютно случайно[8].

Алгоритм генерации ключевой пары[править]

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

Ввод: Основные параметры эллиптической кривой D.

Вывод: Открытый ключ - Q, закрытый ключ - d.

Шаг 1. Выберите случайное или псевдослучайное целое число d∈[1,n−1].

Шаг 2. Вычислите координаты точки на эллиптической кривой Q=dG.

Шаг 3. Верните (Q,d).

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

Алиса, обладающая основными параметрами кривой D и закрытым ключом d хочет подписать сообщение m, для этого она должна сгенерировать подпись (r,s)[11].

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

Ввод: Основные параметры эллиптической кривой D, закрытый ключ d, сообщение m.

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

Шаг 1. Выберите случайное или псевдослучайное целое число k∈[1,n−1].

Шаг 2. Вычислите координаты точки kQ=(x1,y1).

Шаг 3. Вычислите r=x1modn. Если r=0, тогда перейдите к шагу 1.

Шаг 4. Вычислите e=ℋ(m).

Шаг 5. Вычислите s=k−1(e+dr)modn. Если s=0, тогда перейдите к шагу 1.

Шаг 6. Верните (r,s).

Алгоритм проверки цифровой подписи[править]

Чтобы проверить подпись Алисы (r,s) сообщения m, Боб получает аутентичную копию её основных параметров кривой D и связанный с ними открытый ключ Q[12]:.

Ввод: Основные параметры эллиптической кривой D, открытый ключ Q, сообщение m, подпись (r,s).

Вывод: Решение о принятии или отклонении подписи.

Шаг 1. Проверьте, что r,s - целые числа, принадлежащие [1,n−1]. Если какая-либо проверка не удалась, то вернуть "Отклонить".

Шаг 2. Вычислите e=ℋ(m).

Шаг 3. Вычислите w=s−1modn.

Шаг 4. Вычислите u1=ewmodn и u2=rwmodn.

Шаг 5. Вычислите координаты точки X=(x2,y2)=u1G+u2Q.

Шаг 6. Если X=𝒪, то вернуть "Отклонить". Иначе вычислить v=x2modn.

Шаг 7. Если v=r, то вернуть "Принять", иначе "Отклонить"

Пример работы ECDSA[править]

В данном примере[14], мы будем описывать только значащие вычислительные шаги в алгоритмах, считая, что все проверки могут быть сделаны без текстового описания.

1. Используя алгоритм генерации основных параметров, получим следующие значения: p=114973, эллиптическая кривая E:y2=x3−3x+69424, и базовая точка G=(11570,42257) с порядком n=114467.

2. Сгенерируем пару ключей, в соответвии с алгоритмом генерации ключевой пары:

Шаг 1. Выбираем d=86109∈[1,114466].

Шаг 2. Вычисляем координаты точки Q=dG=(6345,28549).

3. Алгоритмом генерации цифровой подписи, подпишем сообщение, заданное в виде текста m=worldof с значением хэш-функции e=ℋ(m)=1789679805.

Шаг 1. Выбираем k=84430∈[1,114466].

Шаг 2. Вычисляем координаты точки kG=(x1,y1)=(11705,10585).

Шаг 3. Вычисляем r=x1modn=11705mod114973=31167.

Шаг 4. Вычисляем s=k−1(e+dr)modn=84430−1(1789679805+86109⋅31167)mod114973=82722.

4. Проверим достоверность подписи (r,s) для сообщения m с помощью алгоритма проверки цифровой подписи.

Шаг 1. Вычисляем w=s−1modn=82722−1mod114973=83035.

Шаг 2. Вычисляем u1=ewmodn=1789679805⋅83035mod114973=71001 и u2=rwmodn=31167⋅83035mod114973=81909.

Шаг 3. Вычисляем координаты точки X=u1G+u2Q=(66931,53304)+(88970,41780)=(31167,31627).

Шаг 4. Вычислим v=x2modn=31167mod114973=31167.

Шаг 5. Проверяем v=r=31167. Принимаем подпись.

Безопасность[править]

ECDSA по сравнению c DSA[править]

Д. Брауном (Daniel R. L. Brown) было доказано, что алгоритм ECDSA не является более безопасным, чем DSA. Им было сформулировано ограничение безопасности для ECDSA, которое привело к следующему заключению: «Если группа эллиптической кривой может быть смоделирована основной группой и её хеш-функция удовлетворяет определённому обоснованному предположению, то ECDSA устойчива к атаке на основе подобранного открытого текста с существующей фальсификацией»[15].

Математические преимущества[править]

Стойкость алгоритма шифрования основывается на проблеме дискретного логарифма в группе точек эллиптической кривой. В отличие от проблемы простого дискретного логарифма и проблемы факторизации целого числа, не существует субэкспоненциального алгоритма для проблемы дискретного логарифма в группе точек эллиптической кривой. По этой причине «сила на один бит ключа» существенно выше в алгоритме, который использует эллиптические кривые[16].

Это означает, что в криптографии на эллиптических кривых можно использовать значительно меньшие параметры, чем в других системах с открытыми ключами, таких как RSA и DSA, но с эквивалентным уровнем безопасности. К примеру, битовый размер ключей: 160-битный ключ будет равносилен ключам с 1024-битным модулем в RSA и DSA при сопоставимом уровне безопасности (против известных атак). Преимущества, полученные от меньших размеров параметров (в частности, ключей), включают скорость выполнения алгоритма, эффективное использование энергии, пропускной полосы, памяти[17]. Они особенно важны для приложений на устройствах с ограниченными возможностями, таких как смарт-карты[18].

Опасения по поводу разработанных алгоритмов[править]

Проблема состоит в том, что не всем разработанным алгоритмам можно доверять[19]. Например, NIST Special Publication 800-90, содержащая детерминированный генератор случайных битов на эллиптических кривых Dual_EC_DRBG. В самом стандарте содержится набор констант кривой, появление которых в представленном виде не объяснено, Шумоу и Фергюсон показали, что данные постоянные связаны с некоторым случайным набором чисел, работающим как бэкдор, возможно, для целей АНБ, но этому нет никаких достоверных подтверждений[20].

Практическая реализация[править]

Существует множество программных реализаций эллиптических кривых над конечными полями. Большинство этих реализаций сосредоточено на одном приложении, например, на разработке быстрой реализации ECDSA для одного конкретного конечного поля[21].

Примечания[править]

  1. ↑ 1,0 1,1 Liao H. Z., Shen Y. Y, с. 109—110.
  2. ↑ Liao H. Z., Shen Y. Y, с. 110.
  3. ↑ Mayer H.
  4. ↑ Lopez J., Dahab R, с. 12.
  5. ↑ Hankerson et al, с. 172.
  6. ↑ Hankerson et al, с. 173-174.
  7. ↑ Hankerson et al, Алгоритм генерации основных параметров, с. 174.
  8. ↑ Hankerson et al, с. 175-178.
  9. ↑ Hankerson et al, Алгоритм генерации ключевой пары, с. 180.
  10. ↑ Hankerson et al, Алгоритм проверки открытого ключа, с. 181.
  11. ↑ Liao H. Z., Shen Y. Y, Алгоритм генерации цифровой подписи, с. 116-117.
  12. ↑ Liao H. Z., Shen Y. Y, Алгоритм проверки цифровой подписи, с. 117.
  13. ↑ Liao H. Z., Shen Y. Y, Доказательство работы алгоритма проверки цифровой подписи, с. 117.
  14. ↑ Liao H. Z., Shen Y. Y, с. 118—119.
  15. ↑ Brown D.
  16. ↑ Коржев В.
  17. ↑ Hankerson et al, Предисловие, с. xix.
  18. ↑ Lopez J., Dahab R, Аннотация.
  19. ↑ Schneier B. The NSA Is Breaking Most Encryption on the Internet.
  20. ↑ Schneier B. The Strange Story of Dual_EC_DRBG.
  21. ↑ Lopez J., Dahab R.

Литература[править]

Ссылки[править]

Источник — https://megawiki.ru/wiki/ECDSA