ECIES (ECIES)
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) включает в себя несколько функций:
- Key Agreement (KA)- функция для генерации общего секрета. Например, протокол Диффи — Хеллмана либо его модификации.
- Key Derivation Function (KDF) — функция для генерации общих ключей из некоторого набора данных и параметров.
- Encryption (ENC) — алгоритм шифрования, использующийся обеим сторонами.
- Message Authentication Code (MAC) — функция для генерации аутентификационных данных (имитовставка).
- Hash (HASH) — функция хеширования (используется в MAC и KDF).
Входные параметры алгоритма
[править | править код]Первая сторона — Алиса:[2]
- — открытый ключ Боба
- — закрытый собственный ключ
- Ε — группа точек над эллиптической кривой
- G — циклическая подгруппа точек группы E эллиптической кривой
- g — генератор подгруппы G
Вторая сторона — Боб:[2]
- — открытый ключ Алисы
- — закрытый собственный ключ
- Ε — группа точек над эллиптической кривой
- G — подгруппа точек группы E эллиптической кривой
- g — генератор подгруппы G
Шифрование
[править | править код]Предположим, Алиса хочет послать сообщение Бобу. У Алисы есть открытый ключ Боба , у Боба — соответствующий закрытый ключ , также Алиса генерирует временную пару своих открытого и закрытого ключей. Закрытые ключи — элементы конечного поля (поля, на котором задана эллиптическая кривая), а открытые ключи — точки, принадлежащие эллиптической кривой и вычисленные как произведение закрытого ключа и генератора g эллиптической кривой.[3]
Для отправки сообщения Алиса выполняет следующие действия:[3]
- С помощью метода генерации общего секрета KA Алиса вычисляет общий секрет = × (по протоколу Диффи — Хеллмана).
- Используя полученный общий секрет и метод получения ключей из ключевой и дополнительной информации KDF, Алиса получает ключ шифрования , а также ключ для вычисления имитовставки .
- С помощью симметричного алгоритма шифрования Алиса шифрует открытое сообщение ключом и получает шифротекст .
- Взяв ключ , зашифрованное сообщение и другие заранее обговорённые сторонами параметры, Алиса вычисляет тэг сообщения с помощью функции MAC.
- Алиса отсылает Бобу {, , }.
Расшифрование
[править | править код]Относительно процесса расшифрования шаги, которые должен выполнить Боб, являются следующими:[4]
- С помощью полученного открытого ключа Алисы и своего закрытого ключа получить общий секрет = × , ключи шифрования и имитовставки .
- При помощи ключей шифрования и имитовставки вычислить тэг сообщения и сравнить его с полученным тэгом. Если они не совпадают, Боб должен отклонить сообщение из-за неудачи в процедуре проверки MAC.
- Если тэги окажутся одинаковыми, то Боб может продолжить процесс, расшифровывая зашифрованное сообщение , используя симметричный алгоритм Encryption и .
Cравнение с другими алгоритмами
[править | править код]Безопасность ECIES основывается на вычислительной сложности задачи дискретного логарифмирования в группе точек эллиптической кривой (ECDLP). Криптографические алгоритмы также могут основываться на вычислительной сложности задач факторизации (пример алгоритма: RSA) и дискретного логарифмирования (схема Эль-Гамаля). Однако ECDLP считается сложнейшей[5] из этих трёх задач, что приводит к важному преимуществу ECIES: размеру ключа.
Уровень безопасности (бит) | Длина ключа 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)). Возможные решения:
- Зафиксировать длину открытого текста[8].
- Интерпретировать выходные данные функции KDF как ||[9].
- Запретить использование потоковых фильтров в ECIES (разрешить только блочные шифры)[10].
Атака малыми подгруппами (англ. ‘’Small subgroup attack’’)
[править | править код]Данный тип атак возможен, когда противник специально предоставляет неверный публичный ключ. Если отправитель не проверяет подлинность публичного ключа другой стороны, то противник сможет подменить публичный ключ на ключ меньшего размера с целью получения разделённого секрета или получения информации о закрытом ключе отправителя. Возможные решения:
- Проверять правильность публичного ключа, предоставленного принимающей стороной[11].
- Заменить разделенный секрет на его хеш во входных данных функции KDF[11].
Возможная конфигурации ECIES
[править | править код]Пример[12] эффективной и безопасной реализации ECIES, совместимой со стандартами IEEE 1363a и ISO/IEC 18033-2:
- KA: Протокол Диффи — Хеллмана
- Hash: SHA-512 (SHA-256 для устройств с ограниченными ресурсами).
- KDF: KDF2.
- ENC: AES-128 в режиме сцепления блоков CBC mode.
- MAC: HMAC-SHA-512 (HMAC-SHA-256 для устройств с ограниченными ресурсами).
- Разделение секрета: Использовать только первую координату (без хеширования).
- Интерпретация выходных данных KDF: ||.
- Схема генерации эллиптической кривой: Brainpool (RFC 5639).
Примечания
[править | править код]- ↑ 1 2 V. Gayoso Mart´ınez, F. Hernandez Alvarez, L. Hernandez Encinas, pp. 1—2.
- ↑ 1 2 V. Gayoso Martínez, L. Hernández Encinas, C. Sánchez Ávila, p. 9.
- ↑ 1 2 V. Gayoso Martínez, L. Hernández Encinas, C. Sánchez Ávila, pp. 9—10.
- ↑ V. Gayoso Martínez, L. Hernández Encinas, C. Sánchez Ávila, p. 10.
- ↑ N. Koblitz, pp. 3—4.
- ↑ 1 2 V. Gayoso Martínez, L. Hernández Encinas, C. Sánchez Ávila, p. 2.
- ↑ V. Shoup, p. 13.
- ↑ 1 2 V. Shoup, p. 38.
- ↑ J. Stern, pp. 20—21.
- ↑ Quisquater, J., Koeune, F., p. 20.
- ↑ 1 2 V. Gayoso Martínez, L. Hernández Encinas, A. Queiruga Dios, pp. 7—8.
- ↑ V. Gayoso Martínez, L. Hernández Encinas, A. Queiruga Dios, pp. 17—18.
Литература
[править | править код]Статьи
[править | править код]- Víctor Gayoso Martínez, L. Hernández Encinas, Carmen Sánchez Ávila. A Survey of the Elliptic Curve Integrated Encryption Scheme (англ.).
- Victor Shoup. A Proposal for an ISO Standard for Public Key Encryption (version 2.1) (англ.).
- Neha Gupta, Harsh Kumar Singh, Anurag Jain. An Efficient Implementation For Key Management Technique Using Smart Card And ECIES Cryptography (англ.).
- V. Gayoso Mart´ınez, F. Hernandez Alvarez, L. Hernandez Encinas. Information Processing and Coding (англ.).
- N. Koblitz. Elliptic curve cryptosystems (англ.) // Mathematics of Computation.
- J. Stern. Evaluation report on the ECIES cryptosystem cryptosystems (англ.). Архивировано 1 февраля 2013 года.
- J. Quisquater, F. Koeune,. ECIES - Security evaluation of the encryption scheme and primitives (англ.). Архивировано 31 марта 2017 года.
- V. Gayoso Martínez, L. Hernández Encinas, A. Queiruga Dios. ECIES - Security evaluation of the encryption scheme and primitives (англ.).