diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-12-11 12:43:48 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-12-11 12:43:48 +0400 |
| commit | 032e1fa27ff9faa9a5d82624dbfc5fe8a48c339c (patch) | |
| tree | 40083b63867a6517254e9b27a3a81c8f9aac5d37 /reports/lab5/lab5.tex | |
| parent | a28703315e4628b41e1d7d1d0628189b44b656b8 (diff) | |
Добавлена 5 лабораторная
Diffstat (limited to 'reports/lab5/lab5.tex')
| -rw-r--r-- | reports/lab5/lab5.tex | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/reports/lab5/lab5.tex b/reports/lab5/lab5.tex new file mode 100644 index 0000000..5505297 --- /dev/null +++ b/reports/lab5/lab5.tex @@ -0,0 +1,135 @@ +\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}} +\DeclarePairedDelimiter\ceil{\lceil}{\rceil} +\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} + +\newtheorem{theorem}{Теорема} +\newtheorem*{theorem*}{Теорема} + +% --- Определение --- % +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem*{definition*}{Определение} +% ------------------- % + +\theoremstyle{definition} +\newtheorem*{example}{Пример} + + +\title{{Криптографические методы защиты информации}\\{Лабораторная работа №5}} +\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант} +\date{\the\year{} г.} + +\begin{document} +\maketitle + +\section{Схема} + +Рассмотрим следующее упрощение схемы Эль-Гамаля. Пусть $p$ --- простое число, +$g$ --- порождающий элемент мультипликативной группы $Z^\cdot_p$. Эти данные +открыты. + +Пользователь выбирает секретное число $1 \leq a \leq p - 1$ и открывает значение +$y = g^a \pmod{p}$. + +К сообщению $m \in \{ 0, 1 \}^*$ применяется известная хэш-функция, дающая +значение $h = h(m) \in Z_p$. + +Допустим, что $\gcd(h, p - 1) = 1$. Этого можно добиться, внеся необходимые +коррективы в случае невыполнения. + +При генерации подписи пользователь вычисляет значение +\begin{equation} + z = h^{-1} a \pmod{(p - 1)} + \label{eq:zpow} +\end{equation} + +В качестве подписи под документом $m$ предлагается использовать $g^z$. + +Проверка правильности подписи элементарна: +\begin{equation} + (g^z)^h = g^{h^{-1} h a} = g^a \pmod{p} + \label{eq:check} +\end{equation} + +Подпись принимается, если полученное значение совпадает с $y$. + +Необходимо объяснить почему упомянутая схема неприемлема. + + +\section{Неверность схемы} + +Заметим, что в выражении \ref{eq:check} подразумевается, что значения $z$ +и $h$ находятся в одном кольце и поэтому можно написать $z \cdot h = +h^{-1} \cdot a \cdot h = h^{-1} \cdot h \cdot a = a$. + +Но, также можно заметить, что при вычислении $z$ в выражении \ref{eq:zpow} +умножаемые значения берутся по модулю $(p - 1)$. То есть, значение $z$ +является элементом мультипликативной группы $Z^\cdot_{(p - 1)}$. При этом +значение $h$ является элементом группы $Z^\cdot_p$ по условию. + +Таким образом, в общем случае мы можем сказать, что +\begin{equation*} + z \cdot h + = (h^{-1} \cdot a \pmod{(p - 1)}) \cdot h + \neq h^{-1} \cdot a \cdot h +\end{equation*} + +Например, пусть $p = 31, a = 19, h = 11$. При этом $h^{-1} = 17$, где обратное +берётся в группе $Z^\cdot_p$. + +\begin{align*} + z &= 17 \cdot 19 \pmod{30} = 23 \\ + z \cdot h &= 23 \cdot 11 \pmod{31} = 5 \\ + h^{-1} \cdot a \cdot h &= 17 \cdot 19 \cdot 11 \pmod{31} = 19 +\end{align*} + +Получаем +\begin{equation*} + z \cdot h = 5 \neq 19 = h^{-1} \cdot a \cdot h +\end{equation*} + +Таким образом, получаем, что сгенерированную подпись невозможно проверить и +данная схема является неприменимой и неприемлемой. + +\section{Взлом схемы} + +Будем считать схему подписи \emph{неприемлемой}, если имеется возможность +создать подпись для произвольного сообщения не имея при этом секретного ключа. + +Рассмотрим выражение \ref{eq:check}. Можно заметить, что $(g^z)^h = y$. Также +можем получить +\begin{equation*} + \left( \left( g^z \right)^h \right)^{h^{-1}} = y^{h^{-1}} +\end{equation*} + +То есть +\begin{equation*} + g^z = y^{h^{-1}} +\end{equation*} + +Но значение $y$ является частью открытого ключа, а $h^{-1}$ вычисляется из +публично известной хэш-функции для произвольного сообщения. + +Таким образом, можно создать подпись для произвольного сообщения не имея при +этом секретного ключа, а основываясь только на публичных данных. + +\end{document} |