From 6346c39c3b4349f3381172d7300bb985212b8f98 Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin.drew@gmail.com>
Date: Tue, 25 Oct 2022 13:50:08 +0400
Subject: =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=20?=
 =?UTF-8?q?=D0=BF=D0=BE=20=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=BE=D0=B3=D1=80?=
 =?UTF-8?q?=D0=B0=D1=84=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB?=
 =?UTF-8?q?=D1=91=D0=BD=20=D0=BD=D0=B0=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8?=
 =?UTF-8?q?=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cryptography/lectures/lecture7.tex | 228 +++++++++++++++++++++++++++++++++++++
 1 file changed, 228 insertions(+)
 create mode 100644 cryptography/lectures/lecture7.tex

(limited to 'cryptography/lectures/lecture7.tex')

diff --git a/cryptography/lectures/lecture7.tex b/cryptography/lectures/lecture7.tex
new file mode 100644
index 0000000..bd17ef1
--- /dev/null
+++ b/cryptography/lectures/lecture7.tex
@@ -0,0 +1,228 @@
+% Лекция 7 (17.10.22)
+Обычно выделяют следующие этапы алгоритма:
+\begin{enumerate}
+  \item
+    Подсчёт частот шифробозначений, а также некоторых их сочетаний
+    (например, биграмм).
+
+    Если длина текста достаточно велика, то найденные частоты окажутся
+    близкими к значениям частот знаков открытого текста;
+  \item
+    Выявление шифробозначений, заменяющих гласные и согласные буквы.
+
+    Основано на характерных свойствах этих букв, например, удвоение
+    гласных в открытом тексте происходит реже, чем согласных.
+
+  \item
+    Выдвижение гипотез о значениях шифробозначений и их проверка.
+
+    Восстановление истинных значений шифробозначений.
+
+    При этом учитывается, что каждая буква имеет предпочтительных
+    связей, которые составляют её наиболее характерную особенность.
+
+    Как правило, такие гипотезы подтверждаются не полностью.
+
+    Хорошим критерием при этом является "читаемость"
+    восстанавливаемого открытого текста.
+\end{enumerate}
+
+Приведём описание эвристического алгоритма дешифрования, основанного на идее
+Томаса Якобсена.
+\begin{enumerate}
+  \item
+    Построить начальный вариант ключа \(k\) на основе сравнения частот
+    знаков криптограмм и открытого текста.
+  \item
+    Положить $v = f(D_k(y))$, где \(f(t) = \sum_{i,j}|\Delta_{ij}(t) - b_{ij}|\)
+    --- "целевая функция", \(\Delta(t) = (\Delta_{ij}(t))_{n \times m}\) ---
+    матрица биграмм данного текста \(t\), \(n\) --- число букв алфавита. \(B =
+    (b_{ij})_{n \times m}\) --- эталонная матрица биграмм открытого текста.
+  \item Положить \(k' = k\).
+  \item
+    Поменять местами в нижней строке подстановки \(k'\) некоторую пару букв,
+    например, \(\alpha\) и \(\beta\).
+  \item Положить \(v' = f(D_{k'}(y))\).
+  \item Если \(v' < v\), то положить \(k = k', \, v' = v\) и перейти к 4).
+  \item Перейти к шагу 3).
+\end{enumerate}
+
+Алгоритм заканчивается, когда условие \(v' < v\) не выполняется в течение
+некоторого числа итераций, например, 100.
+
+Если шифр простой замены не является однобуквенным, то при вскрытии криптограммы
+необходимо попытаться восстановить множество шифрвеличин.
+
+Если задача решена, то дальнейшая работа аналогична.
+
+(б) Некоторые особенности вскрытия равнозначных шифров простой замены.
+
+\begin{enumerate}
+  \item
+    Длины повторений фрагментов и расстояния между ними должны быть
+    кратны значности шифра (\emph{значность шифра} --- количество знаков
+    (цифр или букв), образующих одно шифробозначений).
+  \item
+    Находя НОД этих чисел с большей вероятностью получается искомая значность.
+  \item
+    Подсчитать общее число шифробозначений, если это число близко к ожидаемому
+    числу шифробозначений (например, к числу букв алфавита), и диаграмма их
+    повторяемости близка к табличной, то, скорее всего, значность определена
+    верно.
+\end{enumerate}
+
+(в) Некоторые особенность вскрытия разнозначных шифров простой замены
+
+\begin{enumerate}
+  \item
+    В этом случае числа, равные длинам повторений и расстояниям между ними,
+    скорее всего, взаимно просты в совокупности.
+
+    Для определения множества шифрообозначений помогает естественное
+    ограничение, которым обычно пользуются при составлении таблицы
+    шифрообозначений.
+
+    Оно связано с требованием однозначности расшифрования и заключается в том,
+    чтобы ни одно из шифрообозначений не являлось началом никакого другого
+    шифрообозначения (в теории кодирования в подобной ситуации говорит о
+    \emph{префиксном коде});
+  \item
+    Если значность шифрообозначений колеблется в незначительных пределах,
+    то перебор сравнительно небольшого числа вариантов приводит (с учётом
+    ограничения) к правильному определению большинства шифрообозначений.
+
+    Некоторые затруднения могут возникать лишь при определении значности
+    шифрообозначений, редко встречающихся в тексте.
+
+    Как правило, эти проблемы решаются вместе с попытками прочтения тех участков
+    криптограммы, для которых восстановленная значность шифрообозначений не
+    вызывает сомнений.
+\end{enumerate}
+
+Увеличение значности шифрообозначений делает шифр неэкономным, поэтому получили
+распространение шифры, использующие одно- и двузначные шифрообозначения.
+
+Для таких шифров наибольшую повторяемость в шифртексте имеют цифры, с которых
+начинаются двузначные шифрообозначения.
+
+Выдвигая гипотезы о таких цифрах и отмечая в шифртексте соответствующие
+двузначные шифрообозначения, можно восстановить и однозначные шифрообозначения,
+оказавшиеся в шифртексте между некоторыми двузначными шифрообозначениями.
+
+\subsubsection{(6) Блочные шифры простой замены.}
+
+Пример --- Шифр Хилла.
+
+Шифр Хилла --- полиграммный шифр подстановки, основанный на линейной алгебре и
+модульной арифметике.
+
+Изобретён американским математиком  Л. Хиллом в 1929 году.
+
+Пусть мощность алфавита равна \(m\).
+
+Каждой букве присваивается число, равное порядковому номеру алфавита, последней
+букве --- 0 (полная система вычетов по модулю \(m\)).
+
+/ !!!ТАБЛИЦА С БУКВАМИ И ИХ НОМЕРАМИ /
+
+Пусть открытый текст разбивается на блоки длины \(n\). Шифрование осуществляется
+поблочно. Пусть \(\vec{x}\) --- вектор-строка длины \(n\) (над кольцом вычетов
+\(Z_m\)).
+
+Сообщение преобразуется из открытого текста заменой букв соответствующими
+числами.
+
+Рассмотрим кольцо \(Z_m\).
+
+Выбирается обратимая матрица \(A\) размерности \(n \times n\) над кольцом
+\(Z_m\) и вектор-строка \(\vec{a}\) размерности \(n\) над \(Z_m\).
+
+Шифрование осуществляется по формуле \(\vec{y} = \vec{x} A + \vec{a}\) (все
+действия осуществляются по модулю \(m\), то есть в кольце \(Z_m\)).
+
+Ключом шифра является пара \((A, \vec{a})\).
+
+Тогда дешифрование \(\vec{x} = (\vec{y} - \vec{a}) A^{-1}\).
+
+\emph{Пример}: Еду = \((6, 5, 20) = \vec{x}, m = 32, \vec{x} = (6, 5, -12)\)
+
+Матрица \(A = \begin{pmatrix}
+  1 & 1 & 1 \\
+  1 & 2 & 2 \\
+  1 & 2 & 3
+\end{pmatrix}\)
+
+Матрица \(A^{-1} = \begin{pmatrix}
+   2 & -1 &  0 \\
+  -1 &  2 & -1 \\
+   0 & -1 &  1
+\end{pmatrix}\)
+
+\(\vec{a} = (1, 8, -12)\)
+
+$$\vec{y} = \vec{x} A + \vec{a} = (6, 5, -12) \begin{pmatrix}
+   2 & -1 &  0 \\
+  -1 &  2 & -1 \\
+   0 & -1 &  1
+\end{pmatrix} + (1, 8, -12) = (-1, -8, -20) + (1, 8, -12) = (0, 0, 0) = \text{яяя}$$
+
+$$\vec{x} = (\vec{y} - \vec{a}) A^{-1} = (-1, -8, 12) \begin{pmatrix}
+   2 & -1 &  0 \\
+  -1 &  2 & -1 \\
+   0 & -1 &  1
+\end{pmatrix} = (6, 5, 20) = \text{еду}$$
+
+Для нахождения обратимых матриц над кольцом \(Z_m\) предложен следующий
+практический способ:
+\begin{enumerate}
+  \item
+    Нужно взять произвольную нижнюю треугольную матрицу над \(Z_m\) с
+    определителем, равным 1 (для этого достаточно положить равными 1 все
+    элементы главной диагонали).
+  \item Далее берётся верхняя треугольная матрица над \(Z_m\) с определителем, равным 1.
+  \item Перемножив эти матрица, получаем обратимую матрицу над кольцом \(Z_m\).
+\end{enumerate}
+
+Пример:
+$$\begin{pmatrix}
+  1 & 0 & 0 \\
+  1 & 1 & 0 \\
+  1 & 1 & 1
+\end{pmatrix} \cdot
+\begin{pmatrix}
+  1 & 1 & 1 \\
+  0 & 1 & 1 \\
+  0 & 0 & 1
+\end{pmatrix} =
+\begin{pmatrix}
+  1 & 1 & 1 \\
+  1 & 2 & 2 \\
+  1 & 2 & 3
+\end{pmatrix}$$
+
+Особенно удобно для практического применения шифра Хилла, когда матрица \(A\)
+является \emph{инволютивной}, то есть \(A^{-1} = A\). Тогда \(\vec{x} = (\vec{y}
+- \vec{a}) A\).
+
+Как построить инволютивную матрицу?
+
+\begin{enumerate}
+  \item
+    Пусть для заданных \(m\) и \(n\) имеется пара взаимнообратных матриц \(A\)
+    и \(A^{-1}\). Возьмём любую диагональную инволютивную матрицу \(I\) (можно
+    просто выбрать элементы главной диагонали равными 1 и -1).
+  \item Тогда \(A I A^{-1}\) --- инволютивная матрица.
+\end{enumerate}
+
+\begin{remark}
+  К настоящему времени не найдена простая формула для подсчёта
+  количества инволютивных матриц над $Z_m$.
+\end{remark}
+
+Увеличение значности шифрвеличин резко усложняет попытки вскрытия открытого
+текста по известному тексту криптограмм.
+
+Однако свойство линейности является их криптографической слабостью, например,
+задача нахождения ключа является не слишком трудоёмкой, если известны \(n + 1\)
+пар блоков открытого текста и соответствующих их блоков шифртекста, полученные
+на данном ключе.
-- 
cgit v1.2.3

