diff options
Diffstat (limited to 'cryptography/lectures/lecture7.tex')
| -rw-r--r-- | cryptography/lectures/lecture7.tex | 228 |
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\) +пар блоков открытого текста и соответствующих их блоков шифртекста, полученные +на данном ключе. |