Опубликован: 02.03.2017 | Доступ: свободный | Студентов: 2512 / 557 | Длительность: 21:50:00
Лекция 6:

Классические шифры

6.7 Преобразования биграмм

Предположим теперь, что элементами открытого и шифрованного текстов являются двухбуквенные блоки, называемые биграммами. Это значит, что открытый текст разбивается на двухбуквенные сегменты. Если открытый текст состоит из нечётного числа букв, то, чтобы получить целое число биграмм, добавим к концу текста ещё одну букву, выбрав её так, чтобы не исказить смысл, например, добавим пробел, если он содержится в нашем алфавите.

Каждой биграмме приписывается далее её числовой эквивалент. Простейший способ - взять его в виде xN+y, где x-числовой эквивалент первой буквы биграммы, y-числовой эквивалент второй буквы биграммы, а N-число букв в алфавите. Таким образом, мы рассматриваем биграмму, как запись двузначного числа в системе счисления с основанием N. Это даёт взаимно однозначное соответствие между множеством всех биграмм в $N$-буквенном алфавите и множеством всех неотрицательных целых, меньших {N}^{2}.

Следующий шаг - выбор шифрующего преобразования, т. е. перестановки целых чисел \left\{0,1,2,{\dots},{N}^{2}-1\right\}. Примером простейших шифрующих преобразований служат аффинные преобразования: при шифровании P переходит в неотрицательное целое число, меньшее {N}^{2} и удовлетворяющее сравнению C\equiv aP+b(mod N^2). Здесь, как и раньше, число a должно не иметь общих множителей с N (что означает отсутствие общих множителей и с N^2) для того, чтобы существовало обратное преобразование.

Пример 6.9 Пусть мы имеем дело с 33-буквенным алфавитом и используем биграммное шифрующее преобразование C\equiv 157 P + 580 (\mod  1089). Тогда биграмма "НО" имеет числовой эквивалент 14\cdot 33+15=477, и ей соответствует биграмма шифртекста 157\cdot 477+580=75469(\mod  1089) = 328= 9\cdot 33+31, то есть "ИЮ". Биграмма "ОН" имеет числовой эквивалент 15\cdot 33 + 14 = 509, и ей соответствует биграмма шифртекста 157\cdot 509 + 580 = 80493 = 996 = (\mod 1089)=30\cdot 33 + 6, то есть "ЭЁ". Заметим, что биграмма преобразуется как единое целое, и между зашифрованными биграммами, имеющими общую букву или даже составленными из одних и тех же букв, но в разном порядке, нет явной связи.

Для вскрытия биграммной системы, использующей аффинное преобразование C\equiv aP + b ~(\mod  N^2), надо знать элементы шифртекста, соответствующие двум разным элементам открытого текста. Так как элементами текста являются биграммы, то частотный анализ означает выделение в длинном отрезке шифртекста двухбуквенных блоков, встречающихся чаще других (разумеется, надо считать только элементы текста и игнорировать пары, образованные буквами соседних элементов), и сравнение с известными частотами биграмм в английских текстах, записанных в том же алфавите. Например, если используется 26-буквенный алфавит, то статистический анализ, скорее всего, покажет, что наиболее частыми биграммами являются "T H" и "H E" (в указанном порядке). Информации о двух парах отвечающих друг другу биграмм открытого и шифрованного текстов зачастую (но не всегда) бывает достаточно для определения a и b.

Пример 6.10 Вы знаете, что ваш противник использует криптосистему с 27-буквенным алфавитом, в котором буквы A-Z имеют числовые эквиваленты 0-25, и пробел=26. Каждой биграмме отвечает числовой эквивалент - целое число между 0 и 728= {27}^{2}-1, определяемое по правилу 27x+y - числовые эквиваленты букв биграммы. Пусть анализ длинного шифртекста показал, что чаще всего в нём встречаются биграммы "Z A", "I A" и "I W" (в указанном порядке). Предположим, что самыми частыми биграммами в английском языке (в текстах в нашем 27-буквенном алфавите) являются биграммы "E_" (т. е. E и пробел), "S_" и "_T". Мы знаем, что криптосистема использует аффинное шифрующее преобразование по модулю 729. Найти ключ расшифрования и прочитать сообщение "NDXBHO". Найти также ключ шифрования.

Решение. Мы знаем, что открытый текст шифруется по правилу C\equiv aP+b ~(\mod  729), и что шифртекст может быть расшифрован по правилу P\equiv sC+t ~(\mod  729), где a, b образуют ключ шифрования, а s, t - ключ расшифрования. Сначала мы хотим найти s и t. Нам известно, как расшифровываются три биграммы. Заменив эти биграммы их числовыми эквивалентами, получим три сравнения

675s+t\equiv 134 ~(\mod  729),
216s+t\equiv 512 ~(\mod  729),
238s+t\equiv 721 ~(\mod  729).

Если исключить t, взяв разность первых двух сравнений, то получим 459s \equiv 351 ~(\mod  729), что не даёт единственного решения s по модулю 729 (имеется 27 решений). Будет лучше, если вычесть из первого сравнения третье, что даст 437s\equiv 142 ~(\mod  729). Для решения последнего сравнения надо найти число, обратное к 437 по модулю 729. Воспользуемся алгоритмом Евклида:

729=437+292,\quad 437=292+145,\quad 292=2\cdot 145+2,\quad 145=72\cdot 2+1,

и затем 1=145-72\cdot 2=145-72(292-2\cdot 145) =145\cdot 145-72\cdot 292   =145(437-292)-72\cdot 292    =145\cdot 437-217\cdot 292 =145\cdot 437-217(729-437)\equiv 362\cdot 437 ~(\mod  729).

Итак, s\equiv 362\cdot 142\equiv 374 ~(\mod  729), и, следовательно, t\equiv 134 - 675\cdot 374\equiv 647 ~(\mod  729). Теперь применим преобразование дешифрования к биграммам "N D", "X B" и "H O" нашего сообщения (им соответствуют целые числа 354, 622 и 203 соответственно) и получим числа 365, 724 и 24. Записав 365=13\cdot 27+14, 724=26\cdot 27+22, 24=0\cdot 27+24, мы соединим биграммы открытого текста в сообщение "NO WAY". Наконец, для нахождения ключа шифрования мы вычисляем a\equiv  {s}^{-1}\equiv {374}^{-1}{\equiv} 614 ~(\mod  729) (снова используя алгоритм Евклида) и b\equiv -{s}^{-1} t \equiv  -614\cdot 647\equiv 47 ~(\mod  729).

6.7.1 Шифрующие матрицы

Пусть имеется N-буквенный алфавит, и блоками сообщения являются биграммы. Ранее мы каждой биграмме сопоставляли целое число по модулю N^2, т.е. элемент кольца Z_{N^2}. Другой подход заключается в том, чтобы сопоставлять биграмме вектор \left(\begin{array}{l}x\\y\end{array}\right) с целыми числами x и y, рассматриваемыми по модулю N. Например, если используется русский алфавит из 33 букв, то биграмме ОН соответствует вектор \left(\begin{array}{l}15\\14\end{array}\right) (нумерация начинается с нуля, так что буква А имеет номер 0, буква Я имеет номер 32).

Для коммутативного кольца K обозначим через M_2(K) множество всех квадратных матриц порядка 2 с операциями сложения и умножения матриц. Как нетрудно видеть, мы получаем кольцо матриц над K.

Теорема 6.3 Пусть A\in M_2(Z_N), D - определитель матрицы A. Следующие условия равносильны:

  • \GCD(D,N)=1,
  • существует матрица, обратная к A,
  • если хотя бы один из элементов x,y\in Z_N отличен от нуля, то A\cdot \left(\begin{array}{l}x\\y\end{array}\right)\neq \left(\begin{array}{l}0\\0\end{array}\right),
  • матрица A задаёт взаимно однозначное отображение множества Z_N^2 на себя.

На основании сформулированного утверждения мы можем выполнять шифрующее преобразование, используя матрицы из M_2(Z_N), у которых определители взаимно просты с N.

Элемент открытого текста P=\left(\begin{array}{l}x\\y\end{array}\right) преобразуется в элемент шифртекста C=\left(\begin{array}{l}u\\v\end{array}\right) по правилу C=A\cdot P, т.е.

\left(\begin{array}{l}u\\v\end{array}\right)=\left(\begin{array}{ll} a & b\\c & d \end{array}\right) \cdot\left(\begin{array}{l}x\\y\end{array}\right).

Расшифрование производится с помощью обратной матрицы: P=A^{-1} C.

Пример 6.11 Зашифруем открытый текст ШИФРОВАНИЕ с помощью матрицы A=\left(\begin{array}{ll}2&3\\4&7\end{array}\right).

Биграмме ШИ соответствует вектор \left(\begin{array}{l}25\\9\end{array}\right), биграмме ФР - вектор \left(\begin{array}{l}21\\17\end{array}\right), и так далее. Слову ШИФРОВАНИЕ соответствует последовательность векторов \left(\begin{array}{lllll}25&21&15&0&9\\9&17&2&14&5\end{array}\right). Умножаем их на шифрующую матрицу, выполняя вычисления по модулю 33:

\left(\begin{array}{ll}2&3\\4&7\end{array}\right)\left(\begin{array}{lllll}25&21&15&0&9\\9&17&2&14&5\end{array}\right) = \left(\begin{array}{lllll}11&27&3&9&0\\31&5&8&32&5\end{array}\right).

Теперь записываем биграммы, соответствующие полученным векторам: \left(\begin{array}{l}11\\31\end{array}\right) соответствует КЮ, \left(\begin{array}{l}27\\5\end{array}\right) - ЪЕ, и так далее. Получаем шифртекст: КЮЪЕГЗИЯАЕ.

Шифрование триграмм проводится аналогично, триграмме сопоставляется вектор из трех компонент, а шифрующая матрица имеет порядок 3.

Евгений Шаров
Евгений Шаров

как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами?

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?