NTRUSign

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

Шаблон:Unibox NTRUSign, також відомий як NTRU Signature Algorithm — алгоритм цифрового підпису з відкритим ключем на основі Шаблон:Iw.

Історія

Вперше алгоритм був представлений на сесії Asiacrypt 2001 року і опублікований в рецензованій формі на конференції RSA 2003 року[1]. Видання 2003 року включало рекомендації параметрів для рівня безпеки 80 біт. У наступній публікації 2005 року були переглянуті рекомендації для рівня безпеки 80 біт, а також представлені параметри затребуваних рівнів безпеки 112, 128, 160, 192 і 256 біт і описані алгоритми для отримання наборів параметрів для будь-якого бажаного рівня безпеки. Компанія NTRU Cryptosystems, Inc. подала патентну заявку на даний алгоритм.

Особливості

NTRUSign включає в себе відображення повідомлення що шифрується у випадкову точку в 2N-мірному просторі, де N є одним з параметрів NTRUSign, і вирішення задачі знаходження найближчого вектора в ґратці, тісно пов'язаної з ґраткою NTRUEncrypt. Дана ґратка має властивість: приватний 2N-мірний базис для ґратки можна описати з допомогою 2-х векторів, кожен з яких складається з N коефіцієнтів і базису, який може бути визначений окремим N-розмірним вектором. Це дозволяє представляти відкриті ключі в O(N) просторі, а не O(N2) як і у випадку з іншими схемами підпису на основі ґраток. Операції займають O(N2) часу, на відміну від O(N3) для криптографії на еліптичних кривих та RSA. Тому NTRUSign швидше даних алгоритмів при низьких рівнях безпеки і значно швидше при високих рівнях безпеки.[2][3]

NTRUSign знаходиться в стадії розгляду по стандартизації робочою групою IEEE P1363.

Опис алгоритму

Так само як і в NTRUEncrypt, в NTRUSign обчислення проводяться в кільці R=q[X]/(XN1), де множення «*» є циклічною згорткою по модулю q. Добутком двох поліномів f=[f0,f1,,fN1] і g=[g0,g1,,gN1] є f*g=i+jkmodNfigjmodq.

За основу NTRUSign можуть бути взяті стандартні або транспоновані решітки. Основна перевага транспонованої решітки полягає в тому, що коефіцієнти многочлена належать {-1,0,1}. Це збільшує швидкість множення.

Генерація ключа

  • Вхідні дані: цілі N,q,df,dg,B>0, рядок t=standard або transpose.
  • Генерація B закритих ґраткових базисів і одиного відкритого ґраткового базису: Встановити i=B. До тих пір, поки i>0:
  1. Довільно обрати f, g взаємно прості з df, dg відповідно.
  2. Знайти малі F,G,E,R такі, що f*GF*g=q.
  3. Якщо t=standard, встановити fi=f і f'i=F.
Якщо t=transpose, встановити fi=f і f'i=g.
Обчислити hi=fi1*f'imodq. Встановити i=i1.
  • Публічний ключ: вхідні параметри і h=ho=f01*f'0modq.
  • Закритий ключ: {fi,f'i,hi} для i=0...B.

Підпис

Підпис вимагає геш-функцію H:𝒟R на цифровому просторі документу 𝒟.

  • Вхідні данні: цифровий документ D𝒟 закритий ключ {fi,f'i,hi} для i=0...B.
  • Встановити r=0.
  • Встановити s=0i=B. Представити rяк рядок біт. Встановити mo=H(D||r), де || означає конкатенацию. Встановити m=mo.
  1. {fi,f'i,hi} — i-та підстава
  2. Обчислити x=1qmi*f'i
  3. Обчислити y=1qmi*fi
  4. si=x*f+y*f
  5. mi=si*(hihi1)modq
  6. Пілпис: s=s+si

Перевірка підпису

Верифікація вимагає таку ж геш-функцію H, «нормуючий зв'язок» 𝒩 і норму полінома ||.||. Норма ||t|| полінома t визначається як inf0k<q||t+kq||z, де ||r||z=i=0N1ri21Ni=0Nri (де останнє — Евклідова норма).

  • Вхідні дані: Підписані дані (D,r,s) і публічний ключ h.
  • Уявити r як рядок бітів. Встановити m=H(D||r).
  • Обчислити b=||(s,s*hmmodg))||.
  • підпис вважається вірним, якщо b<𝒩.

Зауваження

  • Рекомендовані параметри (N,q,df,dg,B,t,𝒩)=(251,128,73,71,1,transpose,310)

Див. також

Примітки

Шаблон:Примітки

Посилання

Шаблон:Бібліоінформація

Шаблон:Асиметричні криптосистеми

  1. Шаблон:Стаття Шаблон:Webarchive
  2. Помилка цитування: Неправильний виклик тегу <ref>: для виносок під назвою :0 не вказано текст
  3. Помилка цитування: Неправильний виклик тегу <ref>: для виносок під назвою :1 не вказано текст