ECIES

ECIES (англ. 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. Encriptyon (ENC) — алгоритм шифрування, що використовується обома сторонами.
  4. Method Authentication Code (MAC) — функція для генерації аутентифікаційних даних (імітовставка).
  5. Hash (HASH) — функція хешування (використовується в MAC і KDF).

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

Перша сторона Аліса:[2]

  •  — відкритий ключ Боба
  •  — власний закритий ключ
  • Ε — група точок еліптичної кривої над
  • G — циклічна підгрупа групи точок E еліптичної кривої
  • g — генератор підгрупи G

Друга сторона Боб:[2]

  •  — відкритий ключ
  •  — власний закритий ключ
  • Ε — група точок еліптичної кривої над
  • G — підгрупа групи точок E еліптичної кривої
  • g — генератор підгрупи G

Шифрування

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

Для відправки повідомлення Аліса виконує наступні дії:[3]

  • За допомогою методу генерації загального секрету KA Аліса обчислює загальний секрет = × (за протоколом Діффі — Геллмана).
  • Використовуючи отриманий загальний секрет і метод отримання ключів з ключовою і додатковою інформацією KDF, Аліса отримує ключ шифрування , а також ключ для обчислення імітовставки .
  • Взявши ключ , зашифроване повідомлення та інші, заздалегідь обговорені сторонами параметри, Аліса обчислює тег повідомлення за допомогою функції MAC.
  • Аліса відправляє Бобу {, , }.

Розшифрування

Щодо процесу розшифрування кроки, які повинен виконати Боб, є наступними:[4]

  • З допомогою отриманого відкритого ключа Аліси і свого закритого ключа отримати загальний секрет = × ключі шифрування і імітовставки .
  • За допомогою ключів шифрування й імітовставки обчислити тег повідомлення і порівняти його з отриманим тегом. Якщо вони не збігаються, Боб повинен відхилити повідомлення через невдачу у процедурі перевірки MAC.
  • Якщо теги виявляться однаковими, то Боб може продовжити процес, розшифровуючи зашифроване повідомлення , використовуючи симетричний алгоритм Encryption і .

Порівняння з іншими алгоритмами

Безпека 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

«М'яка вразливість»

Віктор Шоуп (англ. Victor Shoup) довів[7], що якщо публічний ключ U не включений у вхідні дані функції KDF і якщо в KDF використовується тільки x-координата розділеного секрету, то ECIES вразливий до атак на основі адаптивного шифротексту (англ. 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).

Примітки

Література

Статті

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.