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]
Предположим, Алиса хочет послать сообщение Бобу. У Алисы есть открытый ключ Боба , у Боба — соответствующий закрытый ключ , также Алиса генерирует временную пару своих открытого и закрытого ключей. Закрытые ключи — элементы конечного поля (поля, на котором задана эллиптическая кривая), а открытые ключи — точки, принадлежащие эллиптической кривой и вычисленные как произведение закрытого ключа и генератора g эллиптической кривой.[3]
Для отправки сообщения Алиса выполняет следующие действия:[3]
С помощью метода генерации общего секрета KA Алиса вычисляет общий секрет = × (по протоколу Диффи — Хеллмана).
Используя полученный общий секрет и метод получения ключей из ключевой и дополнительной информации KDF, Алиса получает ключ шифрования , а также ключ для вычисления имитовставки .
Относительно процесса расшифрования шаги, которые должен выполнить Боб, являются следующими:[4]
С помощью полученного открытого ключа Алисы и своего закрытого ключа получить общий секрет = × , ключи шифрования и имитовставки .
При помощи ключей шифрования и имитовставки вычислить тэг сообщения и сравнить его с полученным тэгом. Если они не совпадают, Боб должен отклонить сообщение из-за неудачи в процедуре проверки MAC.
Если тэги окажутся одинаковыми, то Боб может продолжить процесс, расшифровывая зашифрованное сообщение , используя симметричный алгоритм Encryption и .
Безопасность ECIES основывается на вычислительной сложности задачи дискретного логарифмирования в группе точек эллиптической кривой (ECDLP). Криптографические алгоритмы также могут основываться на вычислительной сложности задач факторизации (пример алгоритма: RSA) и дискретного логарифмирования (схема Эль-Гамаля). Однако ECDLP считается сложнейшей[5] из этих трёх задач, что приводит к важному преимуществу ECIES: размеру ключа.
Преимущество в размер ключа позволяет предъявлять меньшие требования к аппаратному обеспечению (например, к размерам буфера, оперативной и физической памяти; к пропускной способности канала в случае передачи ключей по сети).
Важным недостатком ECIES по сравнению с другими криптографическими алгоритмами является существование нескольких версий ECIES, описываемых различными стандартами (ANSI X9.63, IEEE 1363a, ISO/IEC 18033-2 и SECG SEC 1). Различия между данными стандартами — выбор конкретных функций и параметров для реализации составляющих ECIES (KA, KDF, ENC, MAC, HASH). Недостаток заключается в том, что невозможно реализовать версию ECIES, удовлетворяющую всем стандартам[6].
Виктор Шоуп доказал[7], что если публичный ключ U не включён во входные данные функции KDF и, если в KDF используется только x-координата разделённого секрета, то ECIES подвержен атакам на основе адаптивного шифротекста (eng. Adaptive Chosen Ciphertext Attacks (CCA2)). Уязвимость названа «мягкой», так как никакая атака не смогла получить значимую информацию с использованием этой уязвимости.
Одно из возможных решений, предложенных Шоупом — добавить публичный ключ U во входные данные функции KDF.
Шоуп также доказал[8], что схема ECIES может быть уязвима, когда функция XOR используется при шифровании сообщений переменной длины. В частности, это может привести к уязвимости для атак на основе адаптивного шифротекста (англ. Adaptive Chosen Ciphertext Attacks (CCA2)). Возможные решения:
Интерпретировать выходные данные функции KDF как ||[9].
Запретить использование потоковых фильтров в ECIES (разрешить только блочные шифры)[10].
Атака малыми подгруппами (англ. ‘’Small subgroup attack’’)[править | править код]
Данный тип атак возможен, когда противник специально предоставляет неверный публичный ключ. Если отправитель не проверяет подлинность публичного ключа другой стороны, то противник сможет подменить публичный ключ на ключ меньшего размера с целью получения разделённого секрета или получения информации о закрытом ключе отправителя. Возможные решения: