summaryrefslogtreecommitdiff
path: root/cryptography/lectures/lecture7.tex
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-10-25 13:50:08 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-10-25 13:50:08 +0400
commit6346c39c3b4349f3381172d7300bb985212b8f98 (patch)
tree7592c1c5be584a415abc6370dffbb07405037baf /cryptography/lectures/lecture7.tex
parent4a4296a4f5139f66a69f4f290e4860737b3bb6e6 (diff)
Документ по криптографии разделён на лекции
Diffstat (limited to 'cryptography/lectures/lecture7.tex')
-rw-r--r--cryptography/lectures/lecture7.tex228
1 files changed, 228 insertions, 0 deletions
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\)
+пар блоков открытого текста и соответствующих их блоков шифртекста, полученные
+на данном ключе.