Матрицы, которые прячут ваши секреты: как школьная алгебра шифрует переписку
Люди всегда хотели прятать важное от чужих глаз. Полководцы отправляли зашифрованные донесения, а Юлий Цезарь сдвигал буквы алфавита, чтобы враг не прочитал приказ. Сегодня ставки выше: шифрование защищает почту, банковские данные и обычную личную переписку. И вместо механических приспособлений в дело идёт математика, а один из самых наглядных её инструментов это матрица.
Пишу про математику интересно и доступно у себя в телег!
Разберёмся с базовыми понятиями. Матрица это прямоугольная таблица чисел, расставленных по строкам и столбцам, почти как аккуратная таблица в Excel. Шифрование превращает читаемое сообщение в бессмысленный набор символов. Дешифрование делает обратное и возвращает исходный текст. А ключ это данные или математическое правило, без которого зашифрованное сообщение не открыть, так же как сейф не открыть без физического ключа.
Теперь пройдём весь путь на конкретном примере. Допустим, союзнику нужно передать сообщение ENEMY AT THE GATES, то есть предупреждение о враге у ворот.
Шаг первый: переводим буквы в числа. С буквами арифметику не построишь, поэтому каждой букве присваиваем её номер в алфавите: A равно 1, B равно 2 и так до Z равно 26. Пробелы обозначаем нулём. Слово ENEMY превращается в 5, 14, 5, 13, 25, а дальше по тому же принципу кодируется вся фраза с нулями на месте пробелов.
Шаг второй: собираем матрицу с данными. Полученную последовательность чисел записываем в сетку слева направо и сверху вниз. Выходит матрица A размером шесть строк на три столбца. Это наше сообщение в чистом виде, которое пока легко раскусить.
Шаг третий: генерируем ключ. Если отправить матрицу A как есть, любой, кто её перехватит, быстро догадается про трюк с нумерацией букв. Поэтому создаём ключевую матрицу B из случайных чисел. У неё есть жёсткое условие: она должна быть квадратной, а число её строк должно совпадать с числом столбцов матрицы A. У нас три столбца, значит ключ будет размером три на три.
Шаг четвёртый: шифруем умножением. Чтобы закрыть сообщение, умножаем матрицу A на ключевую матрицу B. Матричное умножение смешивает числа довольно хитро, и на выходе получается совсем новая сетка, матрица X. Для постороннего это просто груда больших чисел без смысла. Именно её можно смело отправлять по сети. Но у получателя обязательно должна быть копия ключа B.
Шаг пятый: расшифровываем. Союзник получил матрицу X и держит в руках секретный ключ B. В обычной арифметике обратное действие к умножению это деление. В мире матриц его роль играет умножение на обратную матрицу. Получатель считает обратную матрицу ключа и умножает на неё матрицу X, возвращая исходную матрицу A со всеми её числами. Остаётся перевести числа обратно в буквы, и на экране снова появляется предупреждение ENEMY AT THE GATES.
На что стоит обратить внимание на практике. Ключевая матрица обязана быть невырожденной, то есть иметь обратную матрицу. Если обратной нет, сообщение окажется заперто навсегда. Умножение тоже не единственный вариант: можно добавлять другие операции и слои сложности. И главная головная боль любого шифрования: как безопасно передать сам ключ. Отправлять его вместе с сообщением бессмысленно, ведь тогда у перехватчика окажутся и замок, и ключ одновременно.
Сам по себе этот метод не заменяет современную криптографию, но отлично показывает её логику. Слова превращаются в числа, числа перемешиваются через упорядоченный хаос матричного умножения, и переписка остаётся подальше от чужих глаз. Хорошая иллюстрация того, как школьная алгебра работает в основе вещей, которыми мы пользуемся каждый день.