\documentclass[a4paper,oneside]{article} \usepackage[utf8]{inputenc} \usepackage[T2A]{fontenc} \usepackage[english,russian]{babel} \usepackage{amsmath} \usepackage{mathtools} \usepackage{amsfonts} \usepackage{enumitem} \usepackage{amsthm} \usepackage{minted} \setminted{fontsize=\small, breaklines=true, style=emacs, linenos} \usepackage{graphicx} \graphicspath{ {./images/} } \usepackage{float} \usepackage{algorithm} \floatname{algorithm}{Алгоритм} \newcommand{\Z}{\mathbb{Z}} \newtheorem{theorem}{Теорема} \newtheorem*{theorem*}{Теорема} % --- Определение --- % \theoremstyle{definition} \newtheorem{definition}{Определение} \newtheorem*{definition*}{Определение} % ------------------- % \theoremstyle{definition} \newtheorem*{example}{Пример} \title{{Криптографические методы защиты информации}\\{Лабораторная работа №2}} \author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант} \date{\the\year{} г.} \begin{document} \maketitle \begin{definition*} Функция Эйлера $\varphi (n)$ --- мультипликативная арифметическая функция, значение которой равно количеству натуральных чисел, меньших $n$ и взаимно простых с ним. \end{definition*} \begin{theorem} \label{thm:euler-mult} Для любых взаимно простых чисел $m$ и $n$: \begin{equation*} \varphi(mn) = \varphi(m) \varphi(n) \end{equation*} \end{theorem} Для простого $p$ значение функции Эйлера задаётся явной формулой: $\varphi(p) = p - 1$, которая следует из определения. Таким образом, исходя из теоремы \ref{thm:euler-mult}, функция Эйлера от числа $n = pq$, где $p, q$ --- простые числа, равна $\varphi(n) = \varphi(p) \varphi(q) = (p - 1) \cdot (q - 1)$. Рассмотрим алгоритм генерации ключей криптосистемы RSA: \begin{algorithm}[H] \caption{Генерация ключей криптосистемы RSA}\label{alg:generate} \begin{enumerate} \item Выбираются два различных случайных простых числа $p$ и $q$ заданного размера; \item Вычисляется их произведение $n = p \cdot q$, которое называется \emph{модулем}; \item Вычисляется значение функции Эйлера от числа $n$: $$\varphi(n) = (p - 1) \cdot (q - 1);$$ \item Выбирается целое число $e$ (\emph{открытая экспонента}), удовлетворяющее $1 < e < \varphi(n)$, взаимно простое со значением функции $\varphi(n)$; \item Вычисляется число $d$ (\emph{секретная экспонента}), мультипликативно обратное к числу $e$ по модулю $\varphi(n)$, то есть число, удовлетворяющее сравнению: \begin{equation} d \cdot e \equiv 1 \pmod{\varphi(n)}; \label{eq:d-calc} \end{equation} \item Пара $(e, n)$ публикуется в качестве открытого ключа RSA; \item Пара $(d, n)$ играет роль закрытого ключа RSA. \end{enumerate} \end{algorithm} \begin{algorithm}[H] \caption{Зашифрование сообщения криптосистемой RSA}\label{alg:encrypt} \begin{enumerate} \item Взять открытый ключ $(e, n)$; \item Взять открытый текст $m : m \in \Z_n, \gcd(m, n) = 1$; \item Зашифровать сообщение с использованием открытого ключа: $$c = E(m) = m^e \pmod{n}$$ \end{enumerate} \end{algorithm} \begin{algorithm}[H] \caption{Расшифрование сообщения криптосистемой RSA}\label{alg:decrypt} \begin{enumerate} \item Принять зашифрованное сообщение $c$; \item Взять закрытый ключ $(d, n)$; \item Применить закрытый ключ для расшифрования сообщения: $$m = D(c) = c^d \pmod{n}$$ \end{enumerate} \end{algorithm} \begin{definition} Порядок элемента в теории групп --- наименьшее положительное целое $m$, такое что $m$-кратное групповое умножение данного элемента $g \in G$ на себя даёт нейтральный элемент: $$\underbrace{g g \dots g}_m = g^m = 1$$ \end{definition} Предположим, что мы знаем порядок открытой экспоненты $e$ в группе $Z^*_{\varphi(n)}$ и он равен $k$. Тогда, по определению, справедливо сравнение \begin{equation} e^k \equiv 1 \pmod{\varphi(n)} \label{eq:order1} \end{equation} Выражение \ref{eq:order1} также можно записать как \begin{equation} e^{k - 1} \cdot e \equiv 1 \pmod{\varphi(n)} \label{eq:order2} \end{equation} Из выражений \ref{eq:order2} и \ref{eq:d-calc} можно заметить, что секретная экспонента $d = e^{k - 1}$. Таким образом, зная порядок элемента $e$ в группе $\Z^*_{\varphi(n)}$, можно вычислить секретную экспоненту $d$, и с её помощью расшифровать сообщение $m^e \pmod{n})$ по алгоритму \ref{alg:decrypt}. \end{document}