-
Notifications
You must be signed in to change notification settings - Fork 0
/
lecture_08.tex
151 lines (128 loc) · 8.65 KB
/
lecture_08.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
\section{Системи шифрування та цифровий підпис Рабіна}
\begin{flushright}
\emph{(Автор: Маша Коляда. Редагувалось)}
\par \emph{(Версія від 22 січня 2017 р.)}
\end{flushright}
Дана система шифрування та цифрового підпису використовує односторонню функцію Рабіна : $y=x^2 \bmod n$, де $n=p \cdot q$, $p\ne q$ -- великі прості числа.
\textit{Побудова системи шифрування Рабіна користувачем А}:
\subsection{Схема шифрування Рабіна 1}
\begin{center}
\textbf{Зашифрування відкритого тексту користувачем \textsl{B}}
\end{center}
\begin{enumerate}
\item Користувач \textsl{А} обирає прості числа $p,q : p\ne q$. Зазвичай $p=2 \cdot p’+1$, $q=2 \cdot q’+1$, де $p’, q’$ -- великі прості числа.
\item Користувач \textsl{А} обчислює $n=p \cdot q$, де $p, q$ -- його секретний ключ.
\item Користувач \textsl{A} \textit{«оголошує»} відкритий ключ $n$ для зашифрування повідомлень до нього.
\item Зашифрування повідомлення \textsl{M} користувачем \textsl{B}: $ C=M^2 \bmod n$ – шифртекст, \par
де $\sqrt{n}<M<n$.
\item Користувач \textsl{B} відправляє повідомлення користувачу \textsl{А}.
\end{enumerate}
\textbf{Зауваження}: При $M^2<n$, розрахунок квадратного кореня аналогічний до розрахунку квадратного кореня на множині дійсних чисел, що легко виконується.\\
\begin{center}
\textbf{Розшифрування шифртексту користувачем \textsl{А}}:
\end{center}
\begin{enumerate}
\item Використовуючи $p$, обчислює: $\pm \beta_p=C^{\frac{1}{2}}\bmod p$.
\item Використовуючи $q$, обчисює: $\pm \beta_q=C^{\frac{1}{2}}\bmod q$.
\item За китайською теоремою про лишки знаходить 4 корені:
\[
C^{\frac{1}{2}}\bmod n={(\pm \beta_p)\cdot q \cdot q^{-1}\bmod p
\pm \beta_q \cdot p \cdot p^{-1}\bmod q}.
\]
Отримує ${M_1,M_2,M_3,M_4}$, після чого обирає один з цих коренів за змістом.
\end{enumerate}
\subsection{Схема шифрування Рабіна 2(коли n – число Блюма)}
\begin{center}
\textbf{Зашифрування відкритого тексту $M$ : $\sqrt{n}<M<n$ користувачем \textsl{В}}
\end{center}
\begin{enumerate}
\item Обчислює $M^2\bmod n=C$.
\item Обчислює 2 біти:
\begin{align*}
b_1 &= \begin{cases}
0, &\text{якщо \textsl{M} парне} \\
1, &\text{інакше}
\end{cases} \\
b_2 &= \begin{cases}
0, &\text{якщо} \left(\frac{M}{n}\right)=-1\\
1, &\text{якщо} \left(\frac{M}{n}\right)=1
\end{cases}
\end{align*}
%\todo{(ПОМИЛКА. Оточення cases не працює в цьому фрагменті -- розібратись. -- С.Я.)}
\item Формує зашифроване повідомлення $(C,b_1,b_2)$ та відправляє його користувачу \textsl{А}.
\end{enumerate}
\begin{center}
\textbf{Розшифрування $(C,b_1,b_2)$ користувачем \textsl{А}}
\end{center}
\begin{enumerate}
\item Аналогічно схемі шифрування Рабіна 1 знаходить ${M_1,M_2,M_3,M_4}$.
\item Використовуючи $(b_1,b_2)$, обчислює $ (b^i_1, b^i_2) , i=\overline{1,4}$ та обирає $M_i$ у якого $(b^i_1, b^i_2)= (b_1,b_2)$.
\end{enumerate}
\ Стійкість до атаки на основі шифртексту повністю заснована на(еквівалентна) складності задачі факторизації. Схеми шифрування Рабіна 1 і 2 не стійкі до атаки на основі вибраного шифртексту.
\subsection{Атаки на схеми шифрування}
\begin{center}
\textbf{Атака на схему шифрування Рабіна 1}
\end{center}
\begin{enumerate}
\item Криптоаналітик \textsl{Е} підбирає послідовність
відкритого тексту $M_1$….$M_k$, обчислює відповідні їм $C_1$…$C_k$.
\item Відправляє отриманий шифртекст \textsl{A}.
\item $A$ : $M'_1$….$M'_k$. Перевіряє $M_i=\pm M'_i$.
\item Якщо така пара знайшлась, то обчислює $\left(M_i\pm M'_i,n\right)=p \: \text{або} \:q$.
\end{enumerate}
\begin{center}
\textbf{Атака на схему шифрування Рабіна 2}
\end{center}
\begin{enumerate}
\item Криптоаналітик \textsl{E} обирає відкритий текст \textsl{M}. Обчислює ($b_1,b_2$).
\item Обчислює $M^2\bmod n=C$.
\item Відправляє шифртекст ($C, b_1,b^{'}_2$), де $b^{'}_2=b_2 \oplus 1$
\item Отримавши відкритий текст $M^{'}$, знає, що $M\ne M^{'}$, обчислює $\left(M_i\pm M^{'}_i,n\right)=p \: \text{або} \: q$.
\end{enumerate}
\subsection{Схема цифрового підпису Рабіна}
\begin{center}
\textbf{Побудова схеми цифрового підпису Рабіна користувачем А}
\end{center}
\begin{enumerate}
\item Обирає великі прості числа $p,q$ : $p\ne q$.
\item Обчислює геш-функцію $h(x)$.
\item Оголошує $n=p \cdot q$.
\item Оголошує відкритий ключ ($n, h(x)$) для перевірки цифрового підпису \textsl{А}.
\end{enumerate}
\ При цьому $p,q$ -- секретний ключ користувача \textsl{А} для формування цифрового підпису.
\begin{center}
\textbf{Формування цифрового підпису А}
\end{center}
\begin{enumerate}
\item $M =m_1m_2…m_k$. Генерує випадкову послідовність $R=r_1…r_s$.
\item Обчислює $h(M||R)=h(m_1…m_k+r_1…r_s)=H$
\item Перевіряє, чи є $H$ квадратичним лишком за модулем $n$.
\begin{enumerate}
\item Якщо виконується $H^{\frac{p-1}{2}}\bmod p=1$ і $H^{\frac{q-1}{2}}\bmod q=1$, переходимо до кроку 4.
\item інакше переходимо до кроку 1.
\end{enumerate}
\ Якщо n--число Блюма, то в средньому, цей пункт виконується на 4-ій спробі.
\item Обчислює $H^{\frac{1}{2}}\bmod n$:
\begin{enumerate}
\item Використовуючи $p$ обчислює: $\pm \beta_p=H^{\frac{1}{2}}\bmod p$
\item Використовуючи $q$ обчислює: $\pm \beta_q=H^{\frac{1}{2}}\bmod q$
\item За китайською теоремою про лишки знаходить 4 корені:
\[
C^{\frac{1}{2}}\bmod n={\pm \beta_p \cdot q \cdot q^{-1}\bmod p \pm ( \beta_q) \cdot p \cdot p^{-1}\bmod q} \rightarrow M_1,M_2,M_3,M_4
\]
\end{enumerate}
\item Обирає один з коренів $\beta$, та формує підпис ($M,R, \beta$)
\end{enumerate}
\begin{center}
\textbf{Перевіка цифрового підпису користувачем В}
\end{center}
\begin{enumerate}
\item $(M,R,\beta) \rightarrow M,R,\beta$
\item Обчислює $h(M||R)=h(m_1…m_k+r_1…r_s)=H$
\item Перевіряє рівність : $\beta^2 = H \bmod n$.
\begin{enumerate}
\item Якщо виконується, то підпис правильний
\item Інакше, не правильний.
\end{enumerate}
\end{enumerate}
\ Складність взлому цифрового підпису Рабіна поліноміально еквівалентна складності задачі факторизації.