ECIES (eng. Elliptic Curve Integrated Encryption Scheme) — это схема шифрования на открытых ключах, основанная на эллиптических кривых. Эта схема была предложена Виктором Шоупом[англ.] в 2001 году. ECIES используется в различных стандартах, например, ANSI X9.63, IEEE 1363a, ISO 18033-2 и SECG SEC 1.

Историческая справка

[править | править код]

В 1997 году учёными Михиром Белларе[англ.] и Филлипом Рогавэем[англ.] была изобретена схема DLAES (Discrete Logarithm Augmented Encryption Scheme), которая впоследствии была переименована в DHAES (Diffie-Hellman Augmented Encryption Scheme) в 1998 году, а позже, во избежание путаницы с аббревиатурой AES, переименована в DHIES(Diffie-Hellman Integrated Encryption Scheme). DHIES представляет собой усовершенствованную схему Эль-Гамаля, в которой используются эллиптические кривые, различные алгоритмы имитовставки и хеш-функции.[1]

DHIES была оценена ANSI и с некоторыми модификациями схема была включена в стандарт ANSI X9.63 в 2001 году. Так же, независимо, с некоторыми поправками схема была включена в стандарт IEEE 1363 в 2000 году. В 2004 году, когда стандарт ANSI X9.63 стал общедоступным, IEEE пересмотрела схему с учётом достоинств двух предыдущих из стандартов ANSI X9.63 и IEEE 1363 и включила новую схему в стандарт IEEE 1363a в 2004 году.

Все вышеперечисленные схемы получили общее название ECIES (Elliptic Curve Integrated Encryption Scheme).

В 2009 году одна из версий ECIES вошла в стандарт ISO/IEC 18033-2, а в 2009 в стандарт SECG SEC 1.[1]

Описание алгоритма

[править | править код]

ECIES (Elliptic Curve Integrated Encryption Scheme) включает в себя несколько функций:

  1. Key Agreement (KA)- функция для генерации общего секрета. Например, протокол Диффи — Хеллмана либо его модификации.
  2. Key Derivation Function (KDF) — функция для генерации общих ключей из некоторого набора данных и параметров.
  3. Encryption (ENC) — алгоритм шифрования, использующийся обеим сторонами.
  4. Message Authentication Code (MAC) — функция для генерации аутентификационных данных (имитовставка).
  5. Hash (HASH) — функция хеширования (используется в MAC и KDF).

Входные параметры алгоритма

[править | править код]

Первая сторона — Алиса:[2]

Вторая сторона — Боб:[2]

Шифрование

[править | править код]

Предположим, Алиса хочет послать сообщение Бобу. У Алисы есть открытый ключ Боба , у Боба — соответствующий закрытый ключ , также Алиса генерирует временную пару своих открытого и закрытого ключей. Закрытые ключи — элементы конечного поля (поля, на котором задана эллиптическая кривая), а открытые ключи — точки, принадлежащие эллиптической кривой и вычисленные как произведение закрытого ключа и генератора g эллиптической кривой.[3]

Для отправки сообщения Алиса выполняет следующие действия:[3]

Расшифрование

[править | править код]

Относительно процесса расшифрования шаги, которые должен выполнить Боб, являются следующими:[4]

Cравнение с другими алгоритмами

[править | править код]

Безопасность ECIES основывается на вычислительной сложности задачи дискретного логарифмирования в группе точек эллиптической кривой (ECDLP). Криптографические алгоритмы также могут основываться на вычислительной сложности задач факторизации (пример алгоритма: RSA) и дискретного логарифмирования (схема Эль-Гамаля). Однако ECDLP считается сложнейшей[5] из этих трёх задач, что приводит к важному преимуществу ECIES: размеру ключа.

Сравнение длин ключей ECIES и RSA[6]
Уровень безопасности (бит) Длина ключа RSA (бит) Длина ключа ECIES (бит)
80 1024 160-223
112 2048 224-255
128 3072 256-283
192 7680 384-511
256 15360 512-571

Преимущество в размер ключа позволяет предъявлять меньшие требования к аппаратному обеспечению (например, к размерам буфера, оперативной и физической памяти; к пропускной способности канала в случае передачи ключей по сети).

Важным недостатком ECIES по сравнению с другими криптографическими алгоритмами является существование нескольких версий ECIES, описываемых различными стандартами (ANSI X9.63, IEEE 1363a, ISO/IEC 18033-2 и SECG SEC 1). Различия между данными стандартами — выбор конкретных функций и параметров для реализации составляющих ECIES (KA, KDF, ENC, MAC, HASH). Недостаток заключается в том, что невозможно реализовать версию ECIES, удовлетворяющую всем стандартам[6].

Известные атаки на ECIES

[править | править код]

«Мягкая уязвимость»

[править | править код]

Виктор Шоуп[англ.] доказал[7], что если публичный ключ U не включён во входные данные функции KDF и, если в KDF используется только x-координата разделённого секрета, то ECIES подвержен атакам на основе адаптивного шифротекста (eng. Adaptive Chosen Ciphertext Attacks (CCA2)). Уязвимость названа «мягкой», так как никакая атака не смогла получить значимую информацию с использованием этой уязвимости.

Одно из возможных решений, предложенных Шоупом — добавить публичный ключ U во входные данные функции KDF.

Уязвимость при использовании функции XOR

[править | править код]

Шоуп также доказал[8], что схема ECIES может быть уязвима, когда функция XOR используется при шифровании сообщений переменной длины. В частности, это может привести к уязвимости для атак на основе адаптивного шифротекста (англ. Adaptive Chosen Ciphertext Attacks (CCA2)). Возможные решения:

Атака малыми подгруппами (англ. ‘’Small subgroup attack’’)

[править | править код]

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

Возможная конфигурации ECIES

[править | править код]

Пример[12] эффективной и безопасной реализации ECIES, совместимой со стандартами IEEE 1363a и ISO/IEC 18033-2:

Примечания

[править | править код]

Литература

[править | править код]

Статьи

[править | править код]