LUC — криптосистема с открытым ключом , разработанная исследователем из Новой Зеландии — Питером Смитом. Так же как RSA , эта система поддерживает шифрование и цифровую подпись . Отличительной чертой системы является использование последовательностей Люка(Lucas) вместо возведения в степень[ 1] .
Как уже упоминалось ранее, в системе LUC используются последовательности Люка. Они задаются следующими рекурентными соотношениями:
U
n
+
2
(
P
,
Q
)
=
P
⋅
U
n
+
1
(
P
,
Q
)
−
Q
⋅
U
n
(
P
,
Q
)
,
n
≥
0
(
1.1
)
{\displaystyle U_{n+2}(P,Q)=P\cdot U_{n+1}(P,Q)-Q\cdot U_{n}(P,Q),\,n\geq 0\quad (1.1)}
{\displaystyle \quad }
V
n
+
2
(
P
,
Q
)
=
P
⋅
V
n
+
1
(
P
,
Q
)
−
Q
⋅
V
n
(
P
,
Q
)
,
n
≥
0
(
1.2
)
{\displaystyle V_{n+2}(P,Q)=P\cdot V_{n+1}(P,Q)-Q\cdot V_{n}(P,Q),\,n\geq 0\quad (1.2)}
{\displaystyle \quad }
U
0
(
P
,
Q
)
=
0
,
U
1
(
P
,
Q
)
=
1
{\displaystyle U_{0}(P,Q)=0,\quad U_{1}(P,Q)=1}
{\displaystyle \quad }
V
0
(
P
,
Q
)
=
2
,
V
1
(
P
,
Q
)
=
P
{\displaystyle V_{0}(P,Q)=2,\quad V_{1}(P,Q)=P}
{\displaystyle \quad }
Где P,Q — целые неотрицательные числа.
В основном используется последовательность
V
n
(
P
,
Q
)
{\displaystyle V_{n}(P,Q)}
. Поэтому далее будем рассматривать только её. Однако все сформулированные свойства будут справедливы и для
U
n
(
P
,
Q
)
{\displaystyle U_{n}(P,Q)}
.
Пример последовательностей Люка для P = 3, Q = 1
n
{\displaystyle n}
V
n
(
3
,
1
)
{\displaystyle V_{n}(3,1)}
U
n
(
3
,
1
)
{\displaystyle U_{n}(3,1)}
0
2
0
1
3
1
2
7
3
3
18
8
4
47
21
5
123
55
6
322
144
7
843
377
8
2207
987
9
5778
2584
10
15127
6765
11
39603
17711
12
103682
46368
13
271443
121393
14
710647
317811
15
1860498
832040
16
4870847
2178309
17
12752043
5702887
18
33385282
14930352
19
87403803
39088169
20
228826127
102334155
21
599074578
267914296
22
1568397607
701408733
23
4106118243
1836311903
24
10749957122
4807526976
Из таблицы видно, что элементы последовательностей Люка растут очень быстро. Поэтому использовать их в виде (1.1) затруднительно. Эту проблему решает следующее свойство:
V
n
(
P
mod
N
,
Q
mod
N
)
=
V
n
(
P
,
Q
)
mod
N
N
>
2
(
1.3
)
{\displaystyle V_{n}(P\mod N,Q\mod N)=V_{n}(P,Q)\mod N\quad N>2\quad (1.3)}
Для доказательства воспользуемся методом математической индукции по n
1) для n = 0 - выражение (1.3) верно, т.к. по определению (1.1):
V
0
(
P
mod
N
,
Q
mod
N
)
=
2
{\displaystyle V_{0}(P\mod N,Q\mod N)=2}
(
V
0
(
P
,
Q
)
)
mod
N
=
2
{\displaystyle (V_{0}(P,Q))\mod N=2}
2) для n = 1 аналогично:
V
1
(
P
mod
N
,
Q
mod
N
)
=
P
mod
N
{\displaystyle V_{1}(P\mod N,Q\mod N)=P\mod N}
(
V
1
(
P
,
Q
)
)
mod
N
=
P
mod
N
{\displaystyle (V_{1}(P,Q))\mod N=P\mod N}
Предположение индукции.Пусть (1.3) верно для всех значений k≤n-1 :
V
k
(
P
mod
N
,
Q
mod
N
)
=
(
V
k
(
P
,
Q
)
)
mod
N
{\displaystyle V_{k}(P\mod N,Q\mod N)=(V_{k}(P,Q))\mod N}
Шаг индукции. Докажем, что (1.3) выполняется и для k = n:
1) по определению последовательности Люка:
(
V
n
(
P
,
Q
)
)
mod
N
=
(
P
⋅
V
n
−
1
(
P
,
Q
)
−
Q
⋅
V
n
−
2
(
P
,
Q
)
)
mod
N
=
(
P
mod
N
)
⋅
(
V
n
−
1
(
P
,
Q
)
)
mod
N
−
{\displaystyle (V_{n}(P,Q))\mod N=(P\cdot V_{n-1}(P,Q)-Q\cdot V_{n-2}(P,Q))\mod N=(P\mod N)\cdot (V_{n-1}(P,Q))\mod N-}
(
Q
mod
N
)
⋅
(
V
n
−
2
(
P
,
Q
)
)
mod
N
{\displaystyle (Q\mod N)\cdot (V_{n-2}(P,Q))\mod N}
2) Воспользуемся предположением индукции:
(
V
n
(
P
,
Q
)
)
mod
N
=
(
P
mod
N
)
⋅
(
V
n
−
1
(
P
mod
N
,
Q
mod
N
)
)
−
(
Q
mod
N
)
⋅
(
V
n
−
2
(
P
mod
N
,
Q
mod
N
)
)
{\displaystyle (V_{n}(P,Q))\mod N=(P\mod N)\cdot (V_{n-1}(P\mod N,Q\mod N))-(Q\mod N)\cdot (V_{n-2}(P\mod N,Q\mod N))}
В 2) получили определение последовательности Люка. А следовательно (1.3) верно для k = n. Свойство доказано.
Так же используется ещё одно важное утверждение:
V
n
(
V
k
(
P
,
Q
)
,
Q
k
)
=
V
n
k
(
P
,
Q
)
(
1.4
)
{\displaystyle V_{n}(V_{k}(P,Q),Q^{k})=V_{nk}(P,Q)\quad (1.4)}
X
2
−
P
⋅
X
+
Q
=
0
(
0
)
{\displaystyle X^{2}-P\cdot X+Q=0\quad (0)}
V
n
(
P
,
Q
)
=
α
n
+
β
n
(
1
)
{\displaystyle V_{n}(P,Q)=\alpha ^{n}+\beta ^{n}\quad (1)}
P
=
α
+
β
(
2
)
{\displaystyle P=\alpha +\beta \quad (2)}
Q
=
α
⋅
β
(
3
)
{\displaystyle Q=\alpha \cdot \beta \quad (3)}
Теперь подставим в характеристическое уравнение
(
0
)
{\displaystyle (0)}
следующие выражения
P
′
=
V
k
(
P
,
Q
)
,
Q
′
=
Q
k
{\displaystyle P'=V_{k}(P,Q),Q'=Q^{k}}
:
X
2
−
V
k
(
P
,
Q
)
⋅
X
+
Q
k
=
0
(
4
)
{\displaystyle X^{2}-V_{k}(P,Q)\cdot X+Q^{k}=0\quad (4)}
Выведем формулы аналогичные формулам
(
1
)
−
(
3
)
{\displaystyle (1)-(3)}
, полученным для уравнения
(
0
)
{\displaystyle (0)}
:
α
′
+
β
′
=
V
k
(
P
,
Q
)
(
5
)
{\displaystyle \alpha ^{'}+\beta ^{'}=V_{k}(P,Q)\quad (5)}
α
′
⋅
β
′
=
Q
k
(
6
)
{\displaystyle \alpha ^{'}\cdot \beta ^{'}=Q^{k}\quad (6)}
По определению последовательностей Люка:
V
n
(
P
,
Q
)
=
α
n
+
β
n
{\displaystyle V_{n}(P,Q)=\alpha ^{n}+\beta ^{n}\quad }
и следовательно:
V
n
(
V
k
(
P
,
Q
)
,
Q
k
)
=
(
α
′
)
n
+
(
β
′
)
n
(
7
)
{\displaystyle V_{n}(V_{k}(P,Q),Q^{k})=(\alpha ')^{n}+(\beta ')^{n}\quad (7)}
Из (7) и (5) для
V
k
(
P
,
Q
)
{\displaystyle V_{k}(P,Q)}
получим:
V
k
(
P
,
Q
)
=
α
k
+
β
k
=
α
′
+
β
′
(
8
)
{\displaystyle V_{k}(P,Q)=\alpha ^{k}+\beta ^{k}=\alpha '+\beta '\quad (8)}
Аналогично для
Q
k
{\displaystyle Q^{k}\quad }
:
Q
k
=
α
k
⋅
β
k
=
α
′
⋅
β
′
(
9
)
{\displaystyle Q^{k}=\alpha ^{k}\cdot \beta ^{k}=\alpha '\cdot \beta '\quad (9)}
α
k
=
α
′
,
β
k
=
β
′
(
10
)
{\displaystyle \alpha ^{k}=\alpha ',\beta ^{k}=\beta '\quad (10)}
V
n
(
V
k
(
P
,
Q
)
,
Q
k
)
=
(
α
′
)
n
+
(
β
′
)
n
=
(
α
k
)
n
+
(
β
k
)
n
=
α
k
n
+
β
k
n
=
V
n
k
(
P
,
Q
)
{\displaystyle V_{n}(V_{k}(P,Q),Q^{k})=(\alpha ')^{n}+(\beta ')^{n}=(\alpha ^{k})^{n}+(\beta ^{k})^{n}=\alpha ^{kn}+\beta ^{kn}=V_{nk}(P,Q)}
Допустим, что существуют такие
e
{\displaystyle e}
и
d
{\displaystyle d}
, что
V
d
e
(
X
,
1
)
=
X
mod
N
{\displaystyle V_{de}(X,1)=X\mod N}
Тогда из (1.3):
V
d
e
(
X
mod
N
,
1
)
=
V
d
e
(
X
,
1
)
mod
N
=
X
mod
N
{\displaystyle V_{de}(X\mod N,1)=V_{de}(X,1)\mod N=X\mod N}
А из (1.4):
V
d
e
(
X
mod
N
,
1
)
=
V
d
(
V
e
(
X
mod
N
,
1
)
,
1
)
=
X
mod
N
{\displaystyle V_{de}(X\mod N,1)=V_{d}(V_{e}(X\mod N,1),1)=X\mod N}
Сначала от символьного сообщения берётся хеш-функция, которая возвращает цифровое значение X. В качестве функции шифрования используется:
Y
=
V
e
(
X
mod
N
,
1
)
{\displaystyle Y=V_{e}(X\mod N,1)}
А для дешифрования:
V
d
(
Y
mod
N
,
1
)
=
X
mod
N
{\displaystyle V_{d}(Y\mod N,1)=X\mod N}
В этом алгоритме шифрования открытым ключом будет являться пара {e,N}, а закрытым {d,N}.
Сначала выбираются два простых числа p и q .
Вычисляется их произведение
N
=
p
⋅
q
{\displaystyle \textstyle N=p\cdot q}
Выбирается число e , взаимнопростое с числом (p-1)(q-1)(p+1)(q+1):
g
c
d
[
(
p
−
1
)
⋅
(
q
−
1
)
⋅
(
p
+
1
)
⋅
(
q
+
1
)
,
e
]
=
1
{\displaystyle gcd[(p-1)\cdot (q-1)\cdot (p+1)\cdot (q+1),e]=1}
D
=
P
2
−
4
{\displaystyle D=P^{2}-4}
,
где P — наше сообщение
Вычисляются следующие символы Лежандра
(
D
p
)
{\displaystyle \textstyle ({\frac {D}{p}})}
и
(
D
q
)
{\displaystyle \textstyle ({\frac {D}{q}})}
Находится наименьшее общее кратное
S
(
N
)
=
l
c
m
[
(
p
−
(
D
p
)
)
,
(
q
−
(
D
q
)
)
]
{\displaystyle \textstyle S(N)=lcm[(p-({\frac {D}{p}})),(q-({\frac {D}{q}}))]}
d
=
e
−
1
mod
S
(
N
)
{\displaystyle d=e^{-1}\mod S(N)}
K
U
=
(
e
,
N
)
{\displaystyle KU=(e,N)}
K
R
=
(
d
,
N
)
{\displaystyle KR=(d,N)}
1) Шифрование сообщения P , при условии P < N :
C
=
V
e
(
P
,
1
)
mod
N
{\displaystyle C=V_{e}(P,1)\mod N}
2) Дешифрование сообщения:
P
=
V
d
(
C
,
1
)
mod
N
{\displaystyle P=V_{d}(C,1)\mod N}
Рассмотрим криптосистему LUC на конкретном примере:
1) Выбираем два простых числа:
p
=
1949
,
q
=
2089
{\displaystyle p=1949,\quad q=2089}
2) Вычисляем N :
N
=
p
⋅
q
=
4071461
{\displaystyle N=p\cdot q=4071461}
3) Вычисляем открытый ключ e из уравнения
g
c
d
[
(
p
−
1
)
⋅
(
p
+
1
)
⋅
(
q
−
1
)
⋅
(
q
+
1
)
,
e
]
=
1
{\displaystyle gcd[(p-1)\cdot (p+1)\cdot (q-1)\cdot (q+1),\quad e]=1}
:
g
c
d
[
1948
⋅
2088
⋅
1950
⋅
2090
,
e
]
=
1
=>
e
=
1103
{\displaystyle gcd[1948\cdot 2088\cdot 1950\cdot 2090,\quad e]=1\quad =>\quad e=1103}
4) Шифровать будем следующее сообщение P = 11111 , далее вычисляем символ Лежандра
(
D
p
)
{\displaystyle \textstyle ({\frac {D}{p}})}
:
параметр
D
{\displaystyle D}
:
D
2
=
P
2
−
4
=
123454317
{\displaystyle D^{2}=P^{2}-4=123454317}
(
D
p
)
=
−
1
{\displaystyle \textstyle ({\frac {D}{p}})=-1}
(
D
q
)
=
−
1
{\displaystyle \textstyle ({\frac {D}{q}})=-1}
5) Теперь вычисляем функцию S(N) :
S
(
N
)
=
l
c
m
[
(
1949
+
1
)
,
(
2089
+
1
)
]
=
407550
{\displaystyle S(N)=lcm[(1949+1),(2089+1)]=407550}
6) Закрытый ключ:
d
=
e
−
1
mod
407550
=
24017
{\displaystyle d=e^{-1}\mod 407550=24017}
7) Зашифрованное сообщение:
C
=
V
1103
(
11111
,
1
)
mod
4071461
=
3975392
{\displaystyle C=V_{1103}(11111,1)\mod 4071461=3975392}
8)Дешифрованное сообщение:
P
=
V
24017
(
3975392
,
1
)
mod
4071461
=
11111
{\displaystyle P=V_{24017}(3975392,1)\mod 4071461=11111}
При использовании криптосистемы LUC возникают некоторые вычислительные трудности.
Во-первых, вычисление больших чисел Люка может оказаться довольно сложной задачей, так как они задаются рекурентно, а следовательно придётся перебрать все предыдуще числа. Однако, эту проблему решают следующие свойства последовательностей Люка:
V
2
n
(
P
,
Q
)
=
[
V
n
(
P
,
Q
)
]
2
−
2
⋅
Q
n
{\displaystyle V_{2n}(P,Q)=[V_{n}(P,Q)]^{2}-2\cdot Q^{n}}
V
n
+
m
(
P
,
Q
)
=
V
n
(
P
,
Q
)
⋅
V
m
(
P
,
Q
)
−
Q
n
⋅
V
n
−
m
{\displaystyle V_{n+m}(P,Q)=V_{n}(P,Q)\cdot V_{m}(P,Q)-Q^{n}\cdot V_{n-m}}
Используя эти свойства можно довольно быстро получить нужное число, раскладывая номер элемента последовательности по степеням двойки. Этот алгоритм аналогичен алгоритму быстрого возведения в степень , который используется в криптосистеме RSA .
Во-вторых, приватный ключ d зависит от исходного сообщения P .
Для каждого e существует четыре возможных значений функции S(N) :
l
c
m
[
(
p
+
1
)
,
(
q
+
1
)
]
{\displaystyle lcm[(p+1),(q+1)]}
l
c
m
[
(
p
+
1
)
,
(
q
−
1
)
]
{\displaystyle lcm[(p+1),(q-1)]}
l
c
m
[
(
p
−
1
)
,
(
q
+
1
)
]
{\displaystyle lcm[(p-1),(q+1)]}
l
c
m
[
(
p
−
1
)
,
(
q
−
1
)
]
{\displaystyle lcm[(p-1),(q-1)]}
И следовательно существует четыре возможных значений закрытого ключа d :
d
=
e
−
1
mod
(
l
c
m
[
(
p
+
1
)
,
(
q
+
1
)
]
)
{\displaystyle d=e^{-1}\mod (lcm[(p+1),(q+1)])}
d
=
e
−
1
mod
(
l
c
m
[
(
p
+
1
)
,
(
q
−
1
)
]
)
{\displaystyle d=e^{-1}\mod (lcm[(p+1),(q-1)])}
d
=
e
−
1
mod
(
l
c
m
[
(
p
−
1
)
,
(
q
+
1
)
]
)
{\displaystyle d=e^{-1}\mod (lcm[(p-1),(q+1)])}
d
=
e
−
1
mod
(
l
c
m
[
(
p
−
1
)
,
(
q
−
1
)
]
)
{\displaystyle d=e^{-1}\mod (lcm[(p-1),(q-1)])}
Получая сообщение С , зашифрованное открытым ключом e , первым делом считаем символы Лежандра:
(
C
2
−
4
p
)
,
(
C
2
−
4
q
)
{\displaystyle \textstyle ({\frac {C^{2}-4}{p}}),({\frac {C^{2}-4}{q}})}
По их значениям определяем какой из четырёх закрытых ключей d нужно использовать для дешифровки.
Для доказательства необходимо проверить следующее равенство:
V
d
[
V
e
(
P
,
1
)
,
1
]
=
P
{\displaystyle V_{d}[V_{e}(P,1),1]=P\quad }
, где
d
=
e
−
1
mod
S
(
N
)
,
g
c
d
[
(
p
−
1
)
⋅
(
p
+
1
)
⋅
(
q
−
1
)
⋅
(
q
+
1
)
,
e
]
=
1
,
N
=
p
⋅
q
{\displaystyle d=e^{-1}\mod S(N),\quad gcd[(p-1)\cdot (p+1)\cdot (q-1)\cdot (q+1),e]=1,\quad N=p\cdot q}
Сначала сформулируем две леммы.
2
⋅
Q
⋅
V
n
−
m
(
P
,
Q
)
=
V
n
(
P
,
Q
)
⋅
V
m
(
P
,
Q
)
−
D
⋅
U
n
(
P
,
Q
)
⋅
U
m
(
P
,
Q
)
{\displaystyle \quad 2\cdot Q\cdot V_{n-m}(P,Q)=V_{n}(P,Q)\cdot V_{m}(P,Q)-D\cdot U_{n}(P,Q)\cdot U_{m}(P,Q)}
1) Из свойств последовательностей Люка имеем:
U
n
(
P
,
Q
)
=
α
n
−
β
n
α
−
β
,
V
n
(
P
,
Q
)
=
α
n
+
β
n
,
P
=
α
+
β
,
Q
=
α
⋅
β
{\displaystyle U_{n}(P,Q)={\frac {\alpha ^{n}-\beta ^{n}}{\alpha -\beta }},\quad V_{n}(P,Q)=\alpha ^{n}+\beta ^{n},\quad P=\alpha +\beta ,\quad Q=\alpha \cdot \beta }
2) Подставим эти формулы в условие леммы:
2
⋅
Q
⋅
V
n
−
m
(
P
,
Q
)
=
(
α
n
+
β
n
)
⋅
(
α
m
+
β
m
)
−
(
α
−
β
)
2
⋅
α
n
−
β
n
α
−
β
⋅
α
m
−
β
m
α
−
β
{\displaystyle 2\cdot Q\cdot V_{n-m}(P,Q)=(\alpha ^{n}+\beta ^{n})\cdot (\alpha ^{m}+\beta ^{m})-(\alpha -\beta )^{2}\cdot {\frac {\alpha ^{n}-\beta ^{n}}{\alpha -\beta }}\cdot {\frac {\alpha ^{m}-\beta ^{m}}{\alpha -\beta }}}
=
(
α
n
+
β
n
)
⋅
(
α
m
+
β
m
)
−
(
α
n
−
β
n
)
⋅
(
α
m
−
β
m
)
{\displaystyle =(\alpha ^{n}+\beta ^{n})\cdot (\alpha ^{m}+\beta ^{m})-(\alpha ^{n}-\beta ^{n})\cdot (\alpha ^{m}-\beta ^{m})}
=
(
α
n
+
m
+
α
n
⋅
β
m
+
α
m
⋅
β
n
+
β
n
+
m
)
−
(
α
n
+
m
−
α
n
⋅
β
m
−
α
m
⋅
β
n
+
β
n
+
m
)
{\displaystyle =(\alpha ^{n+m}+\alpha ^{n}\cdot \beta ^{m}+\alpha ^{m}\cdot \beta ^{n}+\beta ^{n+m})-(\alpha ^{n+m}-\alpha ^{n}\cdot \beta ^{m}-\alpha ^{m}\cdot \beta ^{n}+\beta ^{n+m})}
=
2
⋅
α
n
⋅
β
m
+
2
⋅
α
m
⋅
β
n
{\displaystyle =2\cdot \alpha ^{n}\cdot \beta ^{m}+2\cdot \alpha ^{m}\cdot \beta ^{n}}
=
α
m
⋅
β
m
⋅
(
α
n
−
m
+
β
n
−
m
)
{\displaystyle =\alpha ^{m}\cdot \beta ^{m}\cdot (\alpha ^{n-m}+\beta ^{n-m})}
=
2
⋅
Q
m
⋅
V
n
−
m
(
P
,
Q
)
{\displaystyle =2\cdot Q^{m}\cdot V_{n-m}(P,Q)}
Для простых
p
,
q
{\displaystyle p,q\quad }
,
N
=
p
⋅
q
{\displaystyle N=p\cdot q\quad }
,
S
(
N
)
{\displaystyle \quad S(N)\quad }
и любых целых
k
{\displaystyle \quad k\quad }
верно:
U
k
S
(
N
)
(
P
,
1
)
=
0
mod
N
{\displaystyle U_{kS(N)}(P,1)=0\mod N}
V
k
S
(
N
)
(
P
,
1
)
=
2
mod
N
{\displaystyle V_{kS(N)}(P,1)=2\mod N}
Оставим эту лемму без доказательства[ 2] .
Используя эти две леммы, определение последовательностей Люка и (1.4) получаем:
из уравнения (1.4)
V
d
(
V
e
(
P
,
1
)
,
1
)
=
V
d
e
(
P
,
1
)
{\displaystyle V_{d}(V_{e}(P,1),1)=V_{de}(P,1)\quad }
по определению e и d:
=
V
k
S
(
N
)
+
1
(
P
,
1
)
{\displaystyle =V_{kS(N)+1}(P,1)\quad }
по определению (1.2), полагая что Q = 1:
=
P
⋅
V
k
S
(
N
)
(
P
,
1
)
−
V
k
S
(
N
)
−
1
(
P
,
1
)
{\displaystyle =P\cdot V_{kS(N)}(P,1)-V_{kS(N)-1}(P,1)\quad }
из леммы 1:
=
P
⋅
V
k
S
(
N
)
(
P
,
1
)
−
1
2
[
V
k
S
(
N
)
(
P
,
1
)
⋅
V
1
(
P
,
1
)
−
D
⋅
U
k
S
(
N
)
(
P
,
1
)
⋅
U
1
(
P
,
1
)
]
{\displaystyle =P\cdot V_{kS(N)}(P,1)-{\frac {1}{2}}[V_{kS(N)}(P,1)\cdot V_{1}(P,1)-D\cdot U_{kS(N)}(P,1)\cdot U_{1}(P,1)]}
так как
V
1
(
P
,
1
)
=
P
,
U
1
(
P
,
1
)
=
1
{\displaystyle \quad V_{1}(P,1)=P,\quad U_{1}(P,1)=1}
=
P
⋅
V
k
S
(
N
)
(
P
,
1
)
−
1
2
[
P
⋅
V
k
S
(
N
)
(
P
,
1
)
−
D
⋅
U
k
S
(
N
)
(
P
,
1
)
]
{\displaystyle =P\cdot V_{kS(N)}(P,1)-{\frac {1}{2}}[P\cdot V_{kS(N)}(P,1)-D\cdot U_{kS(N)}(P,1)]\quad }
из Леммы 2:
=
2
P
−
1
2
[
2
P
−
0
]
=
P
mod
N
{\displaystyle =2P-{\frac {1}{2}}[2P-0]=P\mod N}
То есть верно равенство:
V
d
(
V
e
(
P
,
1
)
,
1
)
=
P
{\displaystyle V_{d}(V_{e}(P,1),1)=P}
Алгоритм LUCDIF является комбинацией алгоритма LUC и протокола Диффи-Хеллмана . Основным назначением этого алгоритма является разделение двумя сторонами общего секретного ключа. Реализуется это следующим образом:
Сначала Алиса выбирает простое число p , число g , такое что g < p и какое-то секретное число a.
Затем Алиса вычисляет число:
V
a
(
g
,
1
)
mod
p
{\displaystyle V_{a}(g,1)\mod p}
После этого Алиса отправляет Бобу сообщение
(
V
a
(
g
,
1
)
mod
p
,
p
,
g
)
{\displaystyle (V_{a}(g,1)\mod p,\quad p,\quad g)}
Боб выбирает своё секретное число b. Используя его, он во-первых, получает общий секретный ключ:
V
b
(
V
a
(
g
,
1
)
)
mod
p
{\displaystyle V_{b}(V_{a}(g,1))\mod p}
И затем отправляет Алисе сообщение:
V
b
(
g
,
1
)
mod
p
{\displaystyle V_{b}(g,1)\mod p}
Алиса, в свою очередь, тоже вычисляет общий секре��ный ключ:
V
a
(
V
b
(
g
,
1
)
)
mod
p
{\displaystyle V_{a}(V_{b}(g,1))\mod p}
Из свойств последовательностей Люка, следует, что выражения полученные в конечном итоге Алисой и Бобом будут равны. Следовательно, Алиса и Боб будут иметь общий секретный ключ[ 3] .
Алгоритм LUCELG строится на Схеме Эль-Гамаля и последовательностях Люка. Схема Эль-Гамаля используется для шифрования/расшифрования и генерации цифровой подписи. Рассмотрим работу этого алгоритма при шифровании сообщения.
1) Генерация пары открытого и закрытого ключа:
Выбираем простое число P
Затем выбираем λ такое, что для любых t>1 и делящих (p+1) верно:
V
p
+
1
t
(
λ
,
1
)
≠
2
mod
p
{\displaystyle V_{\frac {p+1}{t}}(\lambda ,1)\neq 2{\bmod {p}}}
Выбираем случайное число x , которое и будет секретным ключом.
Вычисляем открытый ключ следующим образом:
y
=
V
x
(
λ
,
1
)
mod
p
{\displaystyle y=V_{x}(\lambda ,1){\bmod {p}}}
2) Шифрование сообщения:
Сначала выбирается случайное число k , такое что 1 ≤ k ≤ p — 1 .
После этого, используя открытый ключ y , вычисляется параметр G:
G
=
V
k
(
y
,
1
)
mod
p
{\displaystyle G=V_{k}(y,1){\bmod {p}}}
Первая часть криптограммы:
d
1
=
V
k
(
λ
,
1
)
mod
p
{\displaystyle d_{1}=V_{k}(\lambda ,1){\bmod {p}}}
d
2
=
G
⋅
M
mod
p
{\displaystyle d_{2}=G\cdot M{\bmod {p}}}
3) Дешифровка сообщения:
Используя закрытый ключ вычисляется G:
G
=
V
x
(
d
1
,
1
)
mod
p
{\displaystyle G=V_{x}(d_{1},1){\bmod {p}}}
Далее, получая обратный элемент к G по модулю p, получаем исходное сообщение:
M
=
d
2
(
G
−
1
)
mod
p
{\displaystyle M=d_{2}(G^{-1}){\bmod {p}}}
William Stallings , Network and Internetwork Security Principles and Practice, 1995 — ISBN 0-02-415438-0 .
Peter Smith , LUC Public-Key Encryption : Dr. Dobb’s journal Jan 1993 pp.44-49.
Брюс Шнайер , Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си, 2000 — М : Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4 .
Daniel Bleichenbache, Wieb Bosma, Arjen K.Lenstra , Some Remarks on Lucas-Based Cryptosystems