From 4862c2cf3eafdb6fa017a4e86a6fad8b4fc64171 Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin.drew@gmail.com>
Date: Sun, 13 Nov 2022 11:50:28 +0400
Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0?=
 =?UTF-8?q?=20=D0=B2=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D0=BB=D0=B0=D0=B1?=
 =?UTF-8?q?=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 reports/lab2/lab2.tex | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 137 insertions(+)
 create mode 100644 reports/lab2/lab2.tex

(limited to 'reports/lab2/lab2.tex')

diff --git a/reports/lab2/lab2.tex b/reports/lab2/lab2.tex
new file mode 100644
index 0000000..9a9c82d
--- /dev/null
+++ b/reports/lab2/lab2.tex
@@ -0,0 +1,137 @@
+\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}
-- 
cgit v1.2.3

