Немножко криптографии на ночь, или базовые элементы составления крипто-алгоритмов

в 12:48, , рубрики: криптография, математика, никто не читает теги, чудо, метки: , ,

image

Думаю при слове «криптография» все будут вспоминать этот фильм. На первом курсе у нас даже было домашнее задание типа «Посмотреть фильм „Игры разума“ », ну, были и еще более бредовые типа «Посмотреть мультик „Три паньки“ ». Препод был легендарный дядька, но в своей области спец.

Криптогра́фия (от др.-греч. κρυπτός — скрытый и γράφω — пишу) — наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.

Итак, о чем я?

Сегодня я хотел бы рассказать про стандартную одноключевую, простую блочную криптографию.

Если разбивать ее на основные элементы, то всегда базой идет Схема (Сеть) Фейстеля.

Сеть Фе́йстеля (конструкция Фейстеля) — один из методов построения блочных шифров. Сеть представляет собой определённую многократно повторяющуюся (итерированную) структуру, называющуюся ячейкой Фейстеля.

Так вот, в этой самой схеме есть четыре основных элемента — подстановки, перестановки, гаммирования, и я выделяю это четвертым пунктом — генераторы псевдо-случайных последовательностей (а не чисел, псевдо-случайных чисел не бывает, это бред).

Подстановки

Это такой простой способ обезопасить себя от невооруженного глаза криптоАналитика. На этом методе построено много исторических алгоритмов, таких как шифр Цезаря, Виженера и т.д.
Идея: вместо одних символов (цифр, байтов) подставляем другие, например слово Мама превращается в Жожо, при ключе {М-Ж, м-ж, а-о}.

image

Но эта идея не спасает от частотного анализа, идея которого состоит в том, чтобы подбирать буквы по частоте их употребления в шифр-тексте.

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

Перестановки

Этот способ основан на фиксированой перестановке блока сиволов с некоторой переодичностью.
Лучший способ проилюстрировать — это пример:
Мама мыла раму — Ммаа млыа рмау, при перестановке в слове {1, 3, 2, 4}

image

Дабы улучшить перестановку можно создать ключевой вектор схем перестановок.
И тут в дела входят ГПСП (Генераторы Псевдо Случайных Последовательностей), но т.к. о них можно очень много написать, они будут рассмотрены в отдельной статье.

Гаммирование

Гамми́рование — симметричный метод шифрования, основанный на «наложении» гамма-последовательности на открытый текст. Обычно это суммирование в каком-либо конечном поле, например в поле GF(2) такое суммирование принимает вид обычного «исключающего ИЛИ».

image

Дабы не ограничивать фантазию можно гаммровать в GF(2^32), GF(2^64), но в больших полях будут большие ключи, сопоставимые с размерами поля. А обьединение разных полей вообще дает веселый результат.

Самое главное что надо знать — что на этом приеме можно построит идеальный шифр.
Требование для идеальной гаммы:
Для каждого сообщения использовать новую гамму (повторное использование гаммы недопустимо).
Для формирования гаммы использовать аппаратные генераторы случайных чисел на основе физических процессов.
Длина гаммы должна быть не меньше длины защищаемого сообщения.

То есть это будет реализация шифра одноразовых блокнотов, с абсолютно-случайными ключами, которые используются один раз.

Финально

Соединив все воедино можно узреть ЧУДО:

image

Ну или в более будничном виде:

image

Вот так вот.

Итого: 3 идеи из 4 были рассмотрены.

Это была вечерняя программа «Криптография на ночь» или «Спокойной ночи криптыши».
Увидимся в следующую пятницу.
Спокойной ночи и пусть вам приснятся https-розовые слоники и ssh-удавы.

Автор: Kojiba

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js