XTR (алгоритм)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

XTR (скорочення від ECSTR — «Efficient and Compact Subgroup Trace Representation») — алгоритм шифрування з відкритим ключем, який базується на обчислювальній складності задачі дискретного логарифмування. Перевагами цього алгоритму перед іншими, що використовують цю ідею, є більша швидкість і менший розмір ключа.

Алгоритм використовує генератор відносно малої підгрупи порядку ( — просте) підгрупи . За правильного вибору , дискретне логарифмування в групі, породженій , має таку ж обчислювальну складність, що й у . XTR використовує арифметику замість , забезпечуючи таку ж захищеність, але з меншими витратами на обчислення і передавання даних.

Теоретична основа XTR

[ред. | ред. код]

Алгоритм працює в скінченному полі . Розглянемо групу порядку , і її підгрупу порядку q, де p — просте число, таке, що інше досить велике просте число q є дільником . Група порядку q називається XTR-підгрупою. Ця циклічна група є підгрупою і має генератор g.

Арифметичні операції в

[ред. | ред. код]

Нехай p — просте число, таке, що p2 mod 3, а p 2 — p + 1 ділиться на досить велике просте q. Оскільки p 21 mod 3, p породжує . Таким чином, коловий многочлен[прояснити] є таким, що не переводиться в . Отже, корені і утворюють оптимальний нормальний базис над і

З урахуванням p2 mod 3:

Лема. Вартість арифметичних операцій така:

  • Обчислення xp не вимагає множення
  • Обчислення x2 вимагає двох операцій множення в
  • Обчислення xy вимагає трьох операцій множення в
  • Обчислення xz-yzp вимагає чотирьох операцій множення в .[1]

Використання слідів в

[ред. | ред. код]

Елементами, сполученими з в є: сам і , а їх сума — слід .

Крім того:

Розглянемо генератор XTR-групи порядку , де  — просте число. Оскільки  — підгрупа групи порядку , то . Крім того,

і

.

Таким чином,

Відзначимо також, що зв'язаним до елементу є , тобто, має норму рівну 1. Ключовою особливістю XTR є те, що мінімальний многочлен в

спрощується до

Іншими словами, пов'язані з елементи, як корені мінімального многочлена в , повністю визначаються слідом . Аналогічні міркування вірні для будь-якого степеня :

- цей многочлен визначається слідом .

Ідея алгоритму в тому, щоб замінити на , тобто обчислювати за замість за . Однак для того, щоб метод був ефективним, потрібен спосіб швидко отримувати за наявним .

Алгоритм швидкого обчислення за [2]

[ред. | ред. код]

Означення: Для кожного з визначимо:

Означення: Нехай  — корені в , а . Позначимо:

Властивості і  :

  1. для
  2. для
  3. або всі мають порядок, який є дільником і , або всі  — в полі . Зокрема,  — є таким, що не переводиться тоді і тільки тоді, коли його корені мають порядок, який є дільником і .
  4. звідне в полі тоді і тільки тоді, коли

Лема: Нехай дано .

  1. обчислення вимагає двох операцій множення в полі .
  2. обчислення вимагає чотирьох операцій множення в полі .
  3. обчислення вимагає чотирьох операцій множення в полі .
  4. обчислення вимагає чотирьох операцій множення в полі .

Визначення: Нехай .

Алгоритм для обчислення при заданих і

[ред. | ред. код]
  • Якщо , то алгоритм застосовується для і , потім використовується властивість 2 для отримання кінцевого результату.
  • Якщо , .
  • Якщо , .
  • Якщо , скористаємося виразами для і , щоб знайти і відповідно, .
  • Якщо , щоб обчислити , введемо
і якщо непарне і якщо парне. Покладемо і знайдемо , використовуючи твердження, і . Нехай, надалі,
де і . Для послідовно виконаємо таке:
  • Якщо , скористаємося щоб знайти .
  • Якщо , скористаємося щоб знайти .
  • Замінимо на .

По завершенні ітерацій, , а . Якщо n — парне, скористаємося щоб знайти .

Вибір параметрів

[ред. | ред. код]

Вибір поля і розміру підгрупи

[ред. | ред. код]

Щоб скористатися перевагами подання елементів груп у вигляді їх слідів і забезпечити достатню захищеність даних, необхідно знайти прості і , де  — характеристика поля , причому , а  — розмір підгрупи і дільник . Позначимо як і розміри і в бітах. Щоб досягти рівня безпеки, який надає, наприклад, RSA з довжиною ключа 1024 біти, потрібно вибрати таким, що , тобто а може бути близько 160. Перший алгоритм, який дозволяє обчислити такі прості і  — Алгоритм А.

Алгоритм А

  1. Знайдемо таке, що число  — просте число довжиною в біт.
  2. Знайдемо таке, що число  — просте довжиною біт, а також .
Коректність Алгоритму А:
Необхідно перевірити лише те, що , оскільки всі решта властивостей очевидно виконані через специфіку вибору і .
Неважко помітити, що , отже .

Алгоритм А дуже швидкий, однак може бути небезпечним, оскільки вразливий щодо атаки з використанням решета числового поля.

Цього недоліку позбавлений повільніший Алгоритм Б.

Алгоритм Б

  1. Виберемо просте число довжиною в біт, таке, що .
  2. Знайдемо корені і .
  3. Знайдемо таке, що ,  — просте -бітове число і при цьому для
Коректність Алгоритму Б:
Як тільки ми вибираємо , автоматично виконується умова (оскільки і ). З цього твердження і квадратичного закону взаємності випливає, що корені і існують.
Щоб перевірити, що знову розглянемо для і зауважимо, що . Тобто і  — корені і, отже, .

Вибір підгрупи

[ред. | ред. код]

У попередньому розділі ми знайшли розміри і скінченного поля і мультиплікативної підгрупи в . Тепер слід знайти підгрупу в для деяких таких, що . Однак, необов'язково шукати явний елемент , досить знайти елемент такий, що для елемента порядку . Але при цьому , генератор XTR-групи може бути знайдений шляхом знаходження кореня . Щоб знайти це , розглянемо властивість 5 . Знайшовши таке слід перевірити, чи дійсно воно має порядок , проте спочатку потрібно вибрати , таке, що  — незвідне. Найпростіший підхід в тому, щоб вибирати випадковим чином.

Лема: Для випадково вибраного ймовірність, що  — є незвідним, більша 1/3.

Базовий алгоритм для пошуку :

  1. Виберемо випадкове .
  2. Якщо  — звідне, повернемося на перший крок.
  3. Скористаємося алгоритмом для пошуку . Знайдемо .
  4. Якщо має порядок не рівний , повернемося на перший крок.
  5. Нехай .

Даний алгоритм обчислює елемент поля еквівалентний для деяких порядку .[1]

Приклади

[ред. | ред. код]

Припустимо, Аліси і Боб мають відкритий XTR-ключ і вони хочуть згенерувати спільний закритий ключ .

  1. Аліса вибирає випадкове число таке, що , обчислює і посилає Бобу.
  2. Боб отримує від Аліси, вибирає випадкове таке, що , обчислює і посилає Алісі.
  3. Аліса отримує від Боба, обчислює і отримує  — закритий ключ .
  4. Так само, Боб обчислює і отримує  — закритий ключ .

Схема Ель-Гамаля

[ред. | ред. код]

Припустимо, Аліса має частину публічного ключа XTR: . Аліса вибирає секретне ціле число і обчислює і публікує . Отримавши публічний ключ Аліси , Боб може зашифрувати повідомлення , Призначене Алісі, використовуючи такий алгоритм:

  1. Боб вибирає випадкове таке, що і обчислює .
  2. Потім Боб обчислює .
  3. Боб визначає симетричний ключ на основі .
  4. Боб шифрує повідомлення ключем , отримуючи зашифроване повідомлення .
  5. Пару Боб посилає Алісі.

Отримавши пару , Аліса розшифровує її таким чином:

  1. Аліса обчислює .
  2. Аліса визначає симетричний ключ на основі .
  3. Знаючи, що алгоритм шифрування повідомлення — симетричний, Аліса ключем розшифровує , отримуючи початкове повідомлення .

Таким чином, повідомлення надіслано.

Примітки

[ред. | ред. код]
  1. а б Lenstra, Arjen K.; Verheul, Eric R. . [{{{archiveurl}}} Архівовано] з джерела 15 квітня 2006. Процитовано 2015-12-18.
  2. Lenstra, Arjen K.; Verheul, Eric R. The XTR public key system.