Шифр Хилла

Материал из testwiki
Версия от 23:04, 24 апреля 2024; imported>InternetArchiveBot (Добавление ссылок на электронные версии книг (20240423)) #IABot (v2.0.9.5) (GreenC bot)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Хилл Сандерс Лестер

Шифр Хилла — полиграммный шифр подстановки, основанный на линейной алгебре и модульной арифметике. Изобретён американским математиком Лестером Хиллом в 1929 году. Это был первый шифр, который позволил на практике (хотя и с трудом) одновременно оперировать более чем с тремя символами. Шифр Хилла не нашёл практического применения в криптографии из-за слабой устойчивости ко взлому и отсутствия описания алгоритмов генерации прямых и обратных матриц большого размера.

История

Впервые шифр Хилла был описан в статье «Cryptography in an Algebraic Alphabet»[1], опубликованной в журнале «The American Mathematical Monthly» в июне-июле 1929 года. В августе того же года Хилл расширил тему и выступил с речью о криптографии перед Американским математическим обществом в Боулдере, штат Колорадо[2]. Позднее его лекция привела ко второй статье «Concerning Certain Linear Transformation Apparatus of Cryptography»[3], которая была опубликована в журнале «The American Mathematical Monthly» в марте 1931 года. Дэвид Кан в своем труде «Взломщики кодов» так описал шифр Хилла и его место в истории криптографии[4]: Шаблон:Начало цитаты Хилл был одним из тех, кто разработал общий и мощный метод. К тому же шифр Хилла впервые перевёл криптографию с использованием полиграмм в разряд практических дисциплин. Шаблон:Oq Шаблон:Конец цитаты

Описание шифра Хилла

Шифр Хилла является полиграммным шифром, который может использовать большие блоки с помощью линейной алгебры. Каждой букве алфавита сопоставляется число по модулю 26. Для латинского алфавита часто используется простейшая схема: A = 0, B = 1, …, Z = 25, но это не является существенным свойством шифра. Блок из n букв рассматривается как n-мерный вектор и умножается по модулю 26 на матрицу размера n × n. Если в качестве основания модуля используется число больше чем 26, то можно использовать другую числовую схему для сопоставления буквам чисел и добавить пробелы и знаки пунктуации[5]. Элементы матрицы являются ключом. Матрица должна быть обратима в 26n, чтобы была возможна операция расшифрования[6][7].

Для n = 3 система может быть описана так:

{c1=k11p1+k12p2+k13p3(mod26),c2=k21p1+k22p2+k23p3(mod26),c3=k31p1+k32p2+k33p3(mod26),

или в матричной форме:

[c1c2c3]=[k11k12k13k21k22k23k31k32k33][p1p2p3](mod26),

или

C=KP(mod26),

где P и C — векторы-столбцы высоты 3, представляющие открытый и зашифрованный текст соответственно, K — матрица 3 × 3, представляющая ключ шифрования. Операции выполняются по модулю 26.

Для того, чтобы расшифровать сообщение, требуется получить обратную матрицу ключа K1. Существуют стандартные методы вычисления обратных матриц (см. способы нахождения обратной матрицы), но не все матрицы имеют обратную (см. обратная матрица). Матрица будет иметь обратную в том и только в том случае, когда её детерминант не равен нулю и не имеет общих делителей с основанием модуля[8]. Если детерминант матрицы равен нулю или имеет общие делители с основанием модуля, то такая матрица не может использоваться в шифре Хилла, и должна быть выбрана другая матрица (в противном случае шифротекст будет невозможно расшифровать). Тем не менее, матрицы, которые удовлетворяют вышеприведенным условиям, существуют в изобилии[6].

В общем случае, алгоритм шифрования может быть выражен в следующем виде[6][9]:

Шифрование: C=E(K,P)=KP(mod26).

Расшифрование: P=D(K,C)=K1C(mod26)=K1KP(mod26)=P.

Пример

В следующем примере[7] используются латинские буквы от A до Z, соответствующие им численные значения приведены в таблице.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Шифрование

Рассмотрим сообщение «ACT» и представленный ниже ключ (GYBNQKURP в буквенном виде):

K=[6241131610201715].

Данная матрица обратима, так как её детерминант не равен нулю и не имеет общих делителей с основанием модуля. Опасность того, что детерминант матрицы ключа будет иметь общие делители с основанием модуля, может быть устранена путём выбора простого числа в качестве основания модуля. Например, в более удобном варианте шифра Хилла в алфавит добавляют 3 дополнительных символа (пробел, точка и знак вопроса), чтобы увеличить основание модуля до 29[5].

Так как букве «A» соответствует число 0, «C» — 2, «T» — 19, то сообщение — это вектор

P1=[0219].

Тогда зашифрованный вектор будет

C1=KP1(mod26)=[6241131610201715][0219](mod26)=[15147].

Вектор соответствует зашифрованному тексту «POH». Теперь предположим, что наше сообщение было «CAT»:

P2=[2019].

Теперь зашифрованный вектор будет

C2=KP2(mod26)=[6241131610201715][2019](mod26)=[5813].

Этот вектор соответствует зашифрованному тексту «FIN». Видно, что каждая буква шифротекста сменилась. Шифр Хилла достиг Шаблон:Не переведено 5 по Шеннону, и n-размерный шифр Хилла может достигать диффузии n символов за раз.

Расшифрование

Обратная матрица ключа:

K1(mod26)=[85102182121128].

Возьмём зашифрованный текст из предыдущего примера «POH»:

P1=K1C1(mod26)=[85102182121128][15147](mod26)=[0219].

Этот вектор соответствует сообщению «ACT».

Криптостойкость

Стандартный шифр Хилла уязвим для атаки по выбранному открытому тексту, потому что в нём используются линейные операции. Криптоаналитик, который перехватит n2 пар символ сообщения/символ шифротекста сможет составить систему линейных уравнений, которую обычно несложно решить. Если окажется, что система не решаема, то необходимо всего лишь добавить ещё несколько пар символ сообщения/символ шифротекста. Такого рода расчёты средствами обычных алгоритмов линейной алгебры требует совсем немного времени. В связи с этим для увеличения криптостойкости в него должны быть добавлены какие-либо нелинейные операции. Комбинирование линейных операций, как в шифре Хилла, и нелинейных шагов привело к созданию подстановочно-перестановочной сети (например, сеть Фейстеля). Поэтому с определённой точки зрения можно рассматривать современные блочные шифры как вид полиграммных шифров[7][8].

Длина ключа

Длина ключа — это двоичный логарифм от количества всех возможных ключей. Существует 26n2 матриц размера n × n. Значит, log2(26n2)4,7n2 — верхняя грань длины ключа для шифра Хилла, использующего матрицы n × n. Это только верхняя грань, поскольку не каждая матрица обратима, а только такие матрицы могут быть ключом. Количество обратимых матриц может быть рассчитано при помощи Китайской теоремы об остатках. Матрица обратима по модулю 26 тогда и только тогда, когда она обратима и по модулю 2 и по модулю 13[8].

Количество обратимых по модулю 2 и 13 матриц размера n × n равно порядку линейной группы GL(n, Z2) и GL(n, Z13) соответственно:

|K1|=2n2(11/2)(11/22)(11/2n),
|K2|=13n2(11/13)(11/132)(11/13n).

Количество обратимых по модулю 26 матриц равно произведению этих чисел:

|K|=26n2(11/2)(11/22)(11/2n)(11/13)(11/132)(11/13n).

Кроме того, будет разумно избегать слишком большого количества нулей в матрице-ключе, так как они уменьшают диффузию. В итоге получается, что эффективное пространство ключей стандартного шифра Хилла составляет около 4,64n21,7. Для шифра Хилла 5 × 5 это составит приблизительно 114 бит. Очевидно, полный перебор — не самая эффективная атака на шифр Хилла[7].

Механическая реализация

Шифровальная машина Хилла

При работе с двумя символами за раз шифр Хилла не предоставляет никаких конкретных преимуществ перед шифром Плэйфера и даже уступает ему по криптостойкости и простоте вычислений на бумаге. По мере увеличения размерности ключа шифр быстро становится недоступным для расчётов на бумаге человеком. Шифр Хилла размерности 6 был реализован механически. Хилл с партнёром получили патент на устройство (Шаблон:US patent), которое выполняло умножение матрицы 6 × 6 по модулю 26 при помощи системы шестерёнок и цепей. Расположение шестерёнок (а значит, и ключ) нельзя было изменять для конкретного устройства, поэтому в целях безопасности рекомендовалось тройное шифрование. Такая комбинация была очень сильной для 1929 года, и она показывает, что Хилл несомненно понимал концепции конфузии и диффузии. Однако устройство было довольно медленное, поэтому во Второй мировой войне машины Хилла были использованы только для шифрования трёхсимвольного кода радиосигналов[10].

Примечания

Шаблон:Примечания

Литература

Шаблон:Добротная статья