Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.88 KB | None | 0 0
  1. \documentclass{article}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{graphicx}
  4. \usepackage{polski}
  5. \usepackage{float}
  6. \usepackage[T1]{fontenc}
  7. \title{Właściwości algorytmu Gaussa}
  8. \author{Damian Krata}
  9. \date{10 Kwietnia 2019}
  10. \usepackage[pscoord]{eso-pic}% The zero point of the coordinate systemis the lower left corner of the page (the default).
  11.  
  12. \newcommand{\placetextbox}[3]{% \placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}
  13. \setbox0=\hbox{#3}% Put <stuff> in a box
  14. \AddToShipoutPictureFG*{% Add <stuff> to current page foreground
  15. \put(\LenToUnit{#1\paperwidth},\LenToUnit{#2\paperheight}){\vtop{{\null}\makebox[0pt][c]{#3}}}%
  16. }%
  17. }%
  18. \begin{document}
  19.  
  20. \begin{titlepage}
  21. \begin{center}
  22. \fontsize{28pt}{34pt}\selectfont
  23. WOJSKOWA AKADEMIA TECHNICZNA \\
  24. \fontseries{b}\fontsize{14pt}{20pt}\selectfont
  25. im. Jarosława Dąbrowskiego
  26. \vspace*{1.0\baselineskip}
  27.  
  28. \fontseries{b}\fontsize{24pt}{20pt}\selectfont
  29. Wydział Cybernetyki
  30.  
  31. \begin{figure}[!ht]
  32. \centering
  33. \includegraphics{logo_wat.png}
  34. \end{figure}
  35.  
  36.  
  37. %\vspace*{1\baselineskip}
  38. \fontseries{m}\fontsize{32pt}{20pt}\selectfont
  39. Krzywe hipereliptyczne w~kryptologii\\
  40. \fontseries{m}\fontsize{20pt}{20pt}\selectfont
  41. \vspace*{1.15\baselineskip}
  42. %\fontsize{20pt}{15pt}\selectfont
  43. %sierż. pchor. Damian Krata\\
  44. %\vspace*{1.15\baselineskip}
  45. \fontseries{b}\fontsize{15pt}{18pt}\selectfont
  46. ECMQV \\
  47. \end{center}
  48.  
  49. \vspace*{2\baselineskip}
  50. \placetextbox{0.25}{0.25}{Autorzy}
  51. \placetextbox{0.25}{0.23}{inż. Tomasz Czechowski}
  52. \placetextbox{0.25}{0.21}{sierż. pchor. Damian Krata}
  53.  
  54. \placetextbox{0.75}{0.25}{Prowadzący}
  55. \placetextbox{0.75}{0.23}{mjr Tomasz Kijko}
  56.  
  57.  
  58. \placetextbox{0.5}{0.15}{Warszawa 2019}
  59. \end{titlepage}
  60. \section{Opis protokołu}
  61.  
  62. \hspace*{5mm}\textit{\textbf{Eliptic Curve Menezes–Qu–Vanstone (Eliptic Curve MQV)}} jest protokołem uzgadniania klucza oparty na schemacie Diffie'go-Hellman'a, działający w grupie krzywej eliptycznej. Pierwotnie został zaproponowany w 1995 roku.\\
  63.  
  64. Alicja posiada parę kluczy $(A, a)$ z $A$ jej kluczem publicznym i $a$ jej kluczem prywatnym, takimi że $A = aP$, gdzie $P$ jest punktem na krzywej eliptycznej. Analogicznie, Bob posiada parę kluczy $(B, b)$ z $B$ jego kluczem publicznym i $b$ jego kluczem prywatnym.\\
  65.  
  66. Niech $R = (x, y)$ będzie punktem na krzywej eliptycznej. Wtedy $\overline{R} = (x \bmod 2^L) + 2^L$, gdzie $L = \lceil \frac{\lfloor log_2{n} \rfloor + 1}{2} \rceil$ i $n$ jest rzędem punktu $P$. Czyli $\overline{R}$ to pierwsze $L$ bitów pierwszej współrzędnej punktu $R$.\\
  67.  
  68. \begin{enumerate}
  69. \item Alicja generuje parę kluczy $(X, x)$ generując losowo $x$ i obliczając $X = xP$, gdzie $P$ jest punktem na krzywej eliptycznej.
  70. \item Bob generuje parę kluczy $(Y, y)$ w ten sam sposób jak Alicja.
  71. \item Alicja oblicza $S_a = x + \overline{X}a$ modulo $n$ i wysyła $X$ do Boba.
  72. \item Bob oblicza $S_b = y + \overline{Y}b$ modulo $n$ i wysyła $Y$ do Alicji.
  73. \item Alicja oblicza $K = h \cdot S_a(Y + \overline{Y}B)$, a Bob oblicza $K = h \cdot S_b(X + \overline{X}A)$, gdzie $h$ jest kofaktorem krzywej eliptycznej.
  74. \item Komunikacja sekretu $K$ zakończyła się powodzeniem. Klucz dla algorytmu symetrycznego można uzyskać z $K$.
  75. \end{enumerate}
  76.  
  77. \section{Dowód poprawności}
  78. \begin{itemize}
  79. \item Bob oblicza: \\ $K = h \cdot S_b(X + \overline{X}A) = h \cdot S_b(xP + \overline{X}aP) = h \cdot S_b(x + \overline{X}a)P = h \cdot S_bS_aP$
  80. \item Alicja oblicza: \\ $K = h \cdot S_a(Y + \overline{Y}B) = h \cdot S_a(yP + \overline{Y}bP) = h \cdot S_a(y + \overline{Y}b)P = h \cdot S_bS_aP$
  81. \item Stąd sekrety $K$ Alicji i Boba są takie same z $K = h \cdot S_bS_aP$.
  82. \end{itemize}
  83.  
  84. \section{Uwagi dotyczące bezpieczeństwa}
  85. \begin{itemize}
  86. \item Pary kluczy długoterminowych $(A, a)$ oraz $(B, b)$ mają na celu zabezpieczyć przed atakiem \textit{\textbf{Man in the middle}}.
  87. \item Pary kluczy $(X, x)$ oraz $(Y, y)$ mają na celu zapewnić unikalność sesji uzgadniania sekretu.
  88. \end{itemize}
  89.  
  90. \section{Parametry krzywej eliptycznej}
  91. \begin{itemize}
  92. \item $y^2 = x^3 + ax + b$, $a = 0$ i $b = 7$ (Secp256k1, Bitcoin)
  93. \item $p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\FFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F_{hex}$
  94. \item punkt $P=(79BE667EF9DCBBAC55A06295CE870B07029BFC\\DB2DCE28D959F2815B16F81798_{hex},483ADA7726A3C4655DA\\4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8_{hex})$
  95. \item rząd $n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAA\\EDCE6AF48A03BBFD25E8CD0364141_{hex}$ punktu $P$
  96. \item kofaktor $h = 1$
  97. \end{itemize}
  98.  
  99. \section{Opis implementacji}
  100. Implementacja została wykonana w języku C++ z wykorzystaniem oprogramowania \textit{\textbf{Qt Creator}} oraz biblioteki dużych liczb \textit{\textbf{GMP}}. Komunikacja pomiędzy Alicją, a Bobem odbywa się za pomocą socketów oraz protokołui UDP. Wybór protokołu został podyktowany wykorzystaniem jednej jednostki obliczeniowej, przez co straty wynikające z transmisji można było pominąć.
  101.  
  102. W celu realizacji potoku obliczeń powstała arytmetyka na krzywej:
  103. \begin{enumerate}
  104. \item funkcja curve\_init - za pomocą tej funkcji, na początku działania programu, następuje wczytanie parametrów krzywej i klucza prywatnego osoby wywołującej program. Ponadto następuje wpisanie trwałego klucza publicznego osoby z którą się komunikujemy, poprzez odczytanie tych danych z innego pliku. Pliki wejściowe do funkcji podawane są w momencie uruchamiania programu.
  105. \item funkcja add - reprezentuje ona dodawanie punktów na krzywej eliptycznej. Warto w tym miejscu zauważyć, że dodawanie to może się odbywać na krzywej o współczynniku przy x równym zero.
  106. \item funkcja quick\_add - realizuje szybkie liczenie krotności punktu. Działa podobnie do algorytmu szybkiego potęgowania.
  107. \item funkcja generate\_key - tworzy klucze tymczasowe użytkowników, które następnie wysyłane są za pośrednictwem sieci.
  108. \item funkcja R\_hat - zwraca wartość oznaczoną w protokole jako R z daszkiem.
  109. \item funkcja S i K - realizują kroki algorytmu zgodnie z przedstawionymi powyżej wzorami.
  110. \item funkcja wait - wprowadza element dydaktyczny do implementacji, nakazując wciśnięcie klawisza ENTER w celu dalszego obliczania protokołu. Dzięki tej funkcji, wszystkie kroki algorytmu wykonywane są zgodnie z wiedzą użytkownika.
  111. \end{enumerate}
  112. \subsection{Uruchomienie programu}
  113. \begin{figure}[H]
  114. \begin{center}
  115. \includegraphics[width=\textwidth]{1.png}
  116. \caption{Pliki niezbędne do uruchomienia programu.}
  117. \label{fig:uruchomienie}
  118. \end{center}
  119. \end{figure}
  120. \hspace*{5mm}W celu uruchomienia programu, w folderze zawierającym plik wykonywalny muszą znajdować się dwa dodatkowe pliki tekstowe. Jeden odpowiedzialny za przechowywanie klucza tajnego użytkownika wraz z parametrami krzywej oraz drugi przechowujący klucz publiczny osoby, z którą chcemy nawiązać kontakt, również wraz z parametrami krzywej. Parametry krzywej są zapisane heksadecymalnie, natomiast klucze decymalnie.
  121.  
  122. Plik z kluczem prywatnym w kolejnych liniach składa się z:
  123. \begin{enumerate}
  124. \item liczba pierwsza $p$.
  125. \item współczynnik $a$ krzywej.
  126. \item współczynnik $b$ krzywej.
  127. \item współrzędna $P_x$ punktu $P$.
  128. \item współrzędna $P_y$ punktu $P$.
  129. \item rząd $n$ punktu $P$.
  130. \item kofaktor $h$ krzywej.
  131. \item klucz prywatny.
  132. \end{enumerate}
  133.  
  134. Plik z kluczem publicznym w kolejnych liniach składa się z:
  135. \begin{enumerate}
  136. \item liczba pierwsza $p$.
  137. \item współczynnik $a$ krzywej.
  138. \item współczynnik $b$ krzywej.
  139. \item współrzędna $P_x$ punktu $P$.
  140. \item współrzędna $P_y$ punktu $P$.
  141. \item rząd $n$ punktu $P$.
  142. \item kofaktor $h$ krzywej.
  143. \item klucz publiczny $A_x$.
  144. \item klucz publiczny $A_y$.
  145. \end{enumerate}
  146.  
  147. Uruchomienie wymaga wpisania w linię komend:\\
  148. $./nazwa\_programu$ $klucz\_prywatny.txt$ $klucz\_publiczny.txt$, gdzie\\ $klucz\_prywatny.txt$ jest plikiem zawierającym klucz prywatny użytkownika, a $klucz\_publiczny.txt$ plikiem zawierającym klucz publiczny osoby, z którą chcemy nawiązać kontakt. Przykładowe uruchomienie:
  149.  
  150. \begin{figure}[H]
  151. \begin{center}
  152. \includegraphics[width=\textwidth]{2.png}
  153. \caption{Uruchomienie programów z wiersza poleceń.}
  154. \label{fig:uruchomienie_2}
  155. \end{center}
  156. \end{figure}
  157. Jak widzimy na rysunku nr \ref{fig:uruchomienie_2}, w celu uruchomienia np. programu realizującego potok obliczeniowy dla Alice, należy jako parametry podać pliki alice.txt oraz bob.txt.
  158. \subsection{Etapy działania programu}
  159. Kolejne etapy działania programu realizowane są następująco:
  160. \begin{figure}[H]
  161. \begin{center}
  162. \includegraphics[width=\textwidth]{3.png}
  163. \caption{Wprowadzenie i wypisanie na ekran parametrów krzywej.}
  164. \label{fig:uruchomienie_3}
  165. \end{center}
  166. \end{figure}
  167. \begin{figure}[H]
  168. \begin{center}
  169. \includegraphics[width=\textwidth]{4.png}
  170. \caption{Przykładowy potok dla Alice.}
  171. \label{fig:uruchomienie_4}
  172. \end{center}
  173. \end{figure}
  174. \begin{figure}[H]
  175. \begin{center}
  176. \includegraphics[width=\textwidth]{5.png}
  177. \caption{Przykładowy potok dla Boba.}
  178. \label{fig:uruchomienie_5}
  179. \end{center}
  180. \end{figure}
  181. \begin{figure}[H]
  182. \begin{center}
  183. \includegraphics[width=\textwidth]{6.png}
  184. \caption{Zakończenie pracy dla Alice.}
  185. \label{fig:uruchomienie_6}
  186. \end{center}
  187. \end{figure}
  188.  
  189. Zgodnie z rysunkiem nr \ref{fig:uruchomienie_5} oraz \ref{fig:uruchomienie_6} widzimy, że uzgodnione przez Alicję i Boba klucze są takie same. Mogą one stanowić podstawę dla funkcji uzgadniania kluczy (ang. \textit{Key Derivation Function}) i stanowić początek dla szyfrowania za pomocą np. algorytmu blokowego.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. \begin{thebibliography}{9}
  197. \bibitem{fips}
  198. Phillip Rogaway, Mihir Bellara, Dan Boneh
  199. Evaluation of Security Level of Cryptography
  200. ECMQVS (from SEC 1)
  201. \textit{https://www.ipa.go.jp/security/enc/CRYPTREC/fy15/doc/1069\_ks\-ecmqv.pdf}. 2019.
  202.  
  203. \end{thebibliography}
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement