Это не официальный сайт wikipedia.org 01.01.2023

XTR (алгоритм) — Википедия

XTR (алгоритм)

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

Данный алгоритм использует генератор g относительно малой подгруппы порядка q ( q  — простое) подгруппы G F ( p 6 ) . При правильном выборе q , дискретное логарифмирование в группе, порожденной g , имеет ту же вычислительную сложность, что и в G F ( p 6 ) . XTR использует арифметику G F ( p 2 ) вместо G F ( p 6 ) , обеспечивая ту же защищенность, но с меньшими затратами на вычисления и передачу данных.

Теоретическая основа XTRПравить

Алгоритм работает в конечном поле G F ( p 6 )  . Рассмотрим группу порядка p 2 p + 1  , и её подгруппу порядка q, где p — простое число, такое, что другое достаточно большое простое число q является делителем p 2 p + 1  . Группа порядка q называется XTR-подгруппой. Эта циклическая группа g   является подгруппой G F ( p 6 )   и имеет генератор g.

Арифметические операции в G F ( p 2 )  Править

Пусть p — простое число, такое, что p2 mod 3, а p2 — p + 1 делится на достаточно большое простое q. Так как p21 mod 3, p порождает ( Z / 3 Z )  . Таким образом, круговой многочлен Φ 3 ( x ) = x 2 + x + 1   является неприводимым в G F ( p )  . Следовательно, корни α   и α p   образуют оптимальный нормальный базис G F ( p 2 )   над G F ( p )   и

G F ( p 2 ) { x 1 α + x 2 α p : x 1 , x 2 G F ( p ) } .  

С учетом p2 mod 3:

G F ( p 2 ) { y 1 α + y 2 α 2 : α 2 + α + 1 = 0 , y 1 , y 2 G F ( p ) } .  

Таким образом, стоимость арифметических операций следующая:

  • Вычисление xp не требует умножения
  • Вычисление x2 требует двух операций умножения в G F ( p )  
  • Вычисление xy требует трех операций умножения в G F ( p )  
  • Вычисление xz-yzp требует четырёх операций умножения в G F ( p )  .:[1]

Использование следов в G F ( p 2 )  Править

Элементами, сопряженными с h G F ( p 6 )   в G F ( p 2 )   являются: сам h , h p 2   и h p 4  , а их сумма — след h  .

T r ( h ) = h + h p 2 + h p 4 .  

Кроме того:

T r ( h ) p 2 = h p 2 + h p 4 + h p 6 = h + h p 2 + h p 4 = T r ( h )  

Рассмотрим генератор g   XTR-группы порядка q  , где q   — простое число. Так как g   — подгруппа группы порядка p 2 p + 1  , то q p 2 p + 1  . Кроме того,

p 2 = p 1  

и

p 4 = ( p 1 ) 2 = p 2 2 p + 1 = p  .

Таким образом,

T r ( g ) = g + g p 2 + g p 4 = g + g p 1 + g p .  

Отметим также, что сопряженным к элементу g   является 1  , то есть, g   имеет норму равную 1. Ключевой особенностью XTR является то, что минимальный многочлен g   в G F ( p 2 )  

( x g )   ( x g p 1 ) ( x g p )  

упрощается до

x 3 T r ( g )   x 2 + T r ( g ) p x 1  

Иными словами, сопряженные с g   элементы, как корни минимального многочлена в G F ( p 2 )  , полностью определяются следом g  . Аналогичные рассуждения верны для любой степени g  :

x 3 T r ( g n )   x 2 + T r ( g n ) p x 1  

— этот многочлен определяется следом T r ( g n )  .

Идея алгоритма в том, чтобы заменить g n G F ( p 6 )   на T r ( g n ) G F ( p 2 )  , то есть вычислять T r ( g n )   по T r ( g )   вместо g n   по g   Однако для того, чтобы метод был эффективен, необходим способ быстро получать T r ( g n )   по имеющемуся T r ( g )  .

Алгоритм быстрого вычисления T r ( g n )   по T r ( g )  [2]Править

Определение: Для каждого c   G F ( p 2 )   определим:

F ( c , X ) = X 3 c X 2 + c p X 1 G F ( p 2 ) [ X ] .  

Определение: Пусть h 0 ,   h 1 , h 2   — корни F ( c , X )   в G F ( p 6 )  , а n Z  . Обозначим:

c n = h 0 n + h 1 n + h 2 n .  

Свойства c n   и F ( c , X )  :

  1. c = c 1  
  2. c n = c n p = c n p  
  3. c n G F ( p 2 )   для n Z  
  4. c u + v = c u c v c v p c u v + c u 2 v   для u , v Z  
  5. Либо все h j   имеют порядок, являющийся делителем p 2 p + 1   и > 3  , либо все h j   — в поле G F ( p 2 )  . В частности, F ( c , X )   — неприводим тогда и только тогда, когда его корни имеют порядок, являющийся делителем p 2 p + 1   и > 3  .
  6. F ( c , X )   приводим в поле G F ( p 2 )   тогда и только тогда, когда c p + 1 G F ( p )  

Утверждение: Пусть даны c ,   c n 1 , c n , c n + 1  .

  1. Вычисление c 2 n = c n 2 2 c n p   требует двух операций произведения в поле G F ( p )  .
  2. Вычисление c n + 2 = c n + 1 c c p c n + c n 1   требует четырёх операций произведения в поле G F ( p )  .
  3. Вычисление c 2 n 1 = c n 1 c n c p c n p + c n + 1 p   требует четырёх операций произведения в поле G F ( p )  .
  4. Вычисление c 2 n + 1 = c n + 1 c n c c n p + c n 1 p   требует четырёх операций произведения в поле G F ( p )  .

Определение: Пусть S n ( c ) = ( c n 1 , c n , c n + 1 ) G F ( p 2 ) 3  .

Алгоритм для вычисления S n ( c )   при заданных n   и c  Править

  • При n < 0   алгоритм применяется для n   и c  , затем используется свойство 2 для получения конечного результатаю
  • При n = 0  , S 0 ( c )   = ( c p , 3 , c )  .
  • При n = 1  , S 1 ( c )   = ( 3 , c , c 2 2 c p )  .
  • При n = 2  , воспользуемся выражениями для c n + 2 = c n + 1 c c p c n + c n 1   и S 1 ( c )  , чтобы найти c 3   и, соответственно, S 2 ( c )  .
  • При n > 2  , чтобы вычислить S n ( c )  , введем
S ¯ i ( c ) = S 2 i + 1 ( c )  
и m ¯ = n   если не n   нечетно и m ¯ = n 1   если четно. Положим m ¯ = 2 m + 1 , k = 1   и найдем S ¯ k ( c ) = S 3 ( c )  , используя Утверждение, и S 2 ( c )  . Пусть, в дальнейшем,
m = j = 0 r m j 2 j  
где m j 0 , 1   и m r = 1  . Для j = r 1 , r 2 , . . . , 0   последовательно выполним следующее:
  • При m j = 0  , воспользуемся S ¯ k ( c )   чтобы найти S ¯ 2 k ( c )  .
  • При m j = 1  , воспользуемся S ¯ k ( c )   чтобы найти S ¯ 2 k + 1 ( c )  .
  • Заменим k   на 2 k + m j  .

По завершении итераций, k = m  , а S m ¯ ( c ) = S ¯ m ( c )  . Если n — четно, воспользуемся S m ¯ ( c )   чтобы найти S ¯ m + 1 ( c )  .

Выбор параметровПравить

Выбор поля и размера подгруппыПравить

Чтобы воспользоваться преимуществами представления элементов групп в виде их следов и обеспечить достаточную защищенность данных, необходимо найти простые p   и q  , где p   — характеристика поля G F ( p 6 )  , причем p 2   mod   3  , а q   — размер подгруппы и делитель p 2 p + 1  . Обозначим как P   и Q   размеры p   и q   в битах. Чтобы достичь уровня безопасности, который обеспечивает, к примеру, RSA с длиной ключа в 1024 бита, требуется выбрать P   таким, что 6 P > 1024  , то есть P 170   а Q   может быть около 160. Первый алгоритм, который позволяет вычислить такие простые p   и q   — Алгоритм А.

Алгоритм А

  1. Найдём r Z   такое, что число q = r 2 r + 1   — простое число длиной в Q   бит.
  2. Найдем k Z   такое, что число p = r + k q   — простое длиной P   бит, а также p 2   mod   3  .
Корректность Алгоритма А:
Необходимо проверить лишь то, что q p 2 p + 1  , так как все оставшиеся свойства очевидно выполнены из-за специфики выбора p   и q  .
Нетрудно заметить, что p 2 p + 1 = r 2 + 2 r k q + k 2 q 2 r k q + 1 = r 2 r + 1 + q ( 2 r k + k 2 q k ) = q ( 1 + 2 r k + k 2 q k )  , значит q p 2 p + 1  .

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

От этого недостатка избавлен более медленный Алгоритм Б.

Алгоритм Б

  1. Выберем простое число q   длиной в Q   бит, такое, что q 7   mod   12  .
  2. Найдем корни r 1   и r 2   X 2 X + 1   mod   q  .
  3. Найдем k Z   такое, что p = r i + k q  , p  - простое P  -битовое число и при этом p 2   mod   3   для i { 1 , 2 }  
Корректность Алгоритма Б:
Как только мы выбираем q 7   mod   12  , автоматически выполняется условие q 1   mod   3   (Так как 7 1   mod   3   и 3 12  ). Из этого утверждения и квадратичного закона взаимности следует, что корни r 1   и r 2   существуют.
Чтобы проверить, что q p 2 p + 1   снова рассмотрим p 2 p + 1   для r i { 1 , 2 }   и заметим, что p 2 p + 1 = r i 2 + 2 r i k q + k 2 q 2 r i k q + 1 = r i 2 r i + 1 + q ( 2 r k + k 2 q k ) = q ( 2 r k + k 2 q k )  .Значит r 1   и r 2   -корни X 2 X + 1   и, следовательно, q p 2 p + 1  .

Выбор подгруппыПравить

В предыдущем разделе мы нашли размеры p   и q   конечного поля G F ( p 6 )   и мультипликативной подгруппы в G F ( p 6 )  . Теперь следует найти подгруппу g   в G F   ( p 6 )   для некоторых g G F ( p 6 )   таких, что g = q  . Однако, необязательно искать явный элемент g G F ( p 6 )  , достаточно найти элемент c G F ( p 2 )   такой, что c = T r ( g )   для элемента g G F ( p 6 )   порядка q  . Но при данном T r ( g )  , генератор g   XTR-группы может быть найден путём нахождения корня F ( T r ( g ) ,   X )  . Чтобы найти это c  , рассмотрим свойство 5 F ( c ,   X )  . Найдя такое c   следует проверить, действительно ли оно порядка q  , однако сначала нужно выбрать c\in GF(p²), такое, что F(c,\ X) — неприводимо. Простейший подход в том, чтобы выбирать c G F ( p 2 ) G F ( p )   случайным образом.

Утверждение: Для случайно выбранного c G F ( p 2 )   вероятность, что F ( c ,   X ) = X 3 c X 2 + c p X 1 G F ( p 2 ) [ X ]   — неприводимо, больше 1/3.

Базовый алгоритм для поиска T r ( g )  :

  1. Выберем случайное c G F ( p 2 ) G F ( p )  .
  2. Если F ( c ,   X )   — приводим, вернемся на первый шаг.
  3. Воспользуемся алгоритмом для поиска S n ( c )  . Найдем d = c ( p 2 p + 1 ) / q  .
  4. Если d   имеет порядок не равный q  , вернемся на первый шаг.
  5. Пусть T r ( g ) = d  .

Данный алгоритм вычисляет элемент поля G F ( p 2 )   эквивалентный T r ( g )   для некоторых g G F ( p 6 )   порядка q  .[1]

ПримерыПравить

Протокол Диффи-ХеллманаПравить

Предположим, у Алисы и Боба есть открытый XTR-ключ ( p , q , T r ( g ) )   и они хотят сгенерировать общий закрытый ключ K  .

  1. Алиса выбирает случайное число a Z   такое, что 1 < a < q 2  , вычисляет S a ( T r ( g ) ) = ( T r ( g a 1 ) , T r ( g a ) , T r ( g a + 1 ) ) G F ( p 2 ) 3   и посылает T r ( g a ) G F ( p 2 )   Бобу.
  2. Боб получает T r ( g a )   от Алисы, выбирает случайное b Z   такое, что 1 < b < q 2  , вычисляет S b ( T r ( g ) ) = ( T r ( g b 1 ) , T r ( g b ) , T r ( g b + 1 ) ) G F ( p 2 ) 3   и посылает T r ( g b ) G F ( p 2 )   Алисе.
  3. Алиса получает T r ( g b )   от Боба, вычисляет S a ( T r ( g b ) ) = ( T r ( g ( a 1 ) b ) , T r ( g a b ) , T r ( g ( a + 1 ) b ) ) G F ( p 2 ) 3   и получает T r ( g a b ) G F ( p 2 )   — закрытый ключ K  .
  4. Точно так же, Боб вычисляет S b ( T r ( g a ) ) = ( T r ( g a ( b 1 ) ) , T r ( g a b ) , T r ( g a ( b + 1 ) ) ) G F ( p 2 ) 3   и получает T r ( g a b ) G F ( p 2 )   — закрытый ключ K  .

Схема Эль-ГамаляПравить

Предположим, у Алисы есть часть публичного ключа XTR: ( p , q , T r ( g ) )  . Алиса выбирает секретное целое число k   и вычисляет и публикует T r ( g k )  . Получив публичный ключ Алисы ( p , q , T r ( g ) , T r ( g k ) )  , Боб может зашифровать сообщение M  , предназначенное Алисе, используя следующий алгоритм:

  1. Боб выбирает случайное b Z   такое, что 1 < b < q 2   и вычисляет S b ( T r ( g ) ) = ( T r ( g b 1 ) , T r ( g b ) , T r ( g b + 1 ) ) G F ( p 2 ) 3  .
  2. Затем Боб вычисляет S b ( T r ( g k ) ) = ( T r ( g ( b 1 ) k ) , T r ( g b k ) , T r ( g ( b + 1 ) k ) ) G F ( p 2 ) 3  .
  3. Боб определяет симметричный ключ K   основанный на T r ( g b k ) G F ( p 2 )  .
  4. Боб шифрует сообщение M   ключом K  , получая зашифрованное сообщение E  .
  5. Пару ( T r ( g b ) ,   E )   Боб посылает Алисе.

Получив пару ( T r ( g b ) ,   E )  , Алиса расшифровывает её следующим образом:

  1. Алиса вычисляет S k ( T r ( g b ) ) = ( T r ( g b ( k 1 ) ) , T r ( g b k ) , T r ( g b ( k + 1 ) ) ) G F ( p 2 ) 3  .
  2. Алиса определяет симметричный ключ K   основанный на T r ( g b k ) G F ( p 2 )  .
  3. Зная, что алгоритм шифрования сообщения — симметричный, Алиса ключом K   расшифровывает E  , получая исходное сообщение M  .

Таким образом, сообщение передано.

ПримечанияПравить

  1. 1 2 Lenstra, Arjen K.; Verheul, Eric R. An overview of the XTR public key system (неопр.). Архивировано 15 апреля 2006 года.
  2. Lenstra, Arjen K.; Verheul, Eric R. The XTR public key system (неопр.).