- •1. Начальная перестановка (Initial Permutation, ip)
- •2. 16 Раундов сети Фейстеля
- •3. Конечная перестановка (Final Permutation, fp)
- •Атаки на основе особенностей алгоритма:
- •Тип алгоритма: Симметричный блочный шифр.
- •Размер блока: 64 бита.
- •1. Подготовка ключа
- •2. 32 Раунда сети Фейстеля
- •3. Режимы работы
- •Ключевые отличия и преимущества перед des
- •Тип алгоритма: Симметричный блочный шифр
- •Атака на подобранном шифртексте.
- •1. Конструкция Дэвиса-Мейера (Davies-Meyer)
- •2. Конструкция Матьяса-Мейера-Осеаса (Matyas-Meyer-Oseas)
- •3. Конструкция Миягучи-Пренеля (Miyaguchi-Preneel)
- •1. Проблема фиксированных точек (Fixed Points)
- •2. Атаки на связанных ключах (Related-Key Attacks)
- •3. Требования к размеру
- •Системы защиты информации
- •Банковские приложения
- •Государственные информационные системы
- •Понятная математическая основа
- •Вычисление вспомогательных величин:
Тип алгоритма: Симметричный блочный шифр
Размер блока: 128 бит (фиксированный, в отличие от оригинального Rijndael, который поддерживал переменный размер блока)
Размеры ключа: 128, 192 или 256 бит (AES-128, AES-192, AES-256)
Структура: Подстановочно-перестановочная сеть (SPN), в отличие от сети Фейстеля в DES и ГОСТ
Количество раундов: Зависит от размера ключа:
AES-128: 10 раундов
AES-192: 12 раундов
AES-256: 14 раундов
Основные математические концепции
AES основан на операциях в конечном поле Галуа GF(2⁸). Это обеспечивает:
Математическую строгость
Эффективные реализации как в ПО, так и в железе
Хорошую защиту от известных видов криптоанализа
Структура алгоритма
Предварительный этап: Key Expansion
Из основного ключа генерируется набор раундовых ключей (ключей для каждого раунда) с помощью специальной процедуры, включающей:
RotWord (циклический сдвиг байтов)
SubWord (замена байтов через S-бокс)
Rcon (добавление константы раунда)
Структура каждого раунда
Начальный раунд:
AddRoundKey — побитовый XOR с раундовым ключом
Основные раунды (кроме последнего):
SubBytes — замена байтов
ShiftRows — сдвиг строк
MixColumns — перемешивание столбцов
AddRoundKey — побитовый XOR с раундовым ключом
Финальный раунд:
SubBytes
ShiftRows
AddRoundKey (без MixColumns)
Детальное описание преобразований
1. SubBytes (нелинейная замена)
Каждый байт состояния заменяется через S-бокс
S-бокс реализует обратное преобразование в поле Галуа с последующим аффинным преобразованием
Обеспечивает нелинейность — критически важно для защиты от линейного и дифференциального криптоанализа
2. ShiftRows (перестановка)
Строки состояния циклически сдвигаются:
Строка 0: не сдвигается
Строка 1: сдвиг на 1 байт
Строка 2: сдвиг на 2 байта
Строка 3: сдвиг на 3 байта
Обеспечивает диффузию между столбцами
3. MixColumns (линейное преобразование)
Каждый столбец умножается на фиксированную матрицу в поле GF(2⁸)
Обеспечивает сильную диффузию внутри столбцов
В последнем раунде опускается для сохранения симметрии шифрования/дешифрования
4. AddRoundKey (сложение с ключом)
Простой XOR состояния с раундовым ключом
Обеспечивает зависимость от ключа на каждом этапе
Режимы работы
AES, как блочный шифр, используется в различных режимах:
ECB (Electronic Codebook) — простейший, но небезопасный для больших данных
CBC (Cipher Block Chaining) — с цепочкой блоков, требует вектора инициализации (IV)
CTR (Counter) — режим счетчика, превращает блочный шифр в потоковый
GCM (Galois/Counter Mode) — обеспечивает одновременно шифрование и аутентификацию
Безопасность и криптоанализ
Сильные стороны:
Стойкость к известным атакам: За 20+ лет интенсивного анализа не найдено практических уязвимостей
Размер ключа: 128-битный вариант уже достаточно стоек, 256-битный считается безопасным на десятилетия вперед
Эффективность: Быстрые реализации на всех платформах
Известные атаки (теоретические):
Атака на связанных ключах — требует нереалистичных условий
Атака по сторонним каналам — на реализации, а не на сам алгоритм
Практическое применение
AES используется практически везде:
HTTPS/TLS — защита интернет-соединений
Wi-Fi (WPA2, WPA3) — защита беспроводных сетей
VPN — виртуальные частные сети
Файловые системы — шифрование дисков
Мобильные приложения — защита данных
Мессенджеры — сквозное шифрование
Сравнение с другими алгоритмами
Вывод
AES представляет собой золотой стандарт современной криптографии. Его продуманный дизайн, математическая строгость и исключительная эффективность сделали его самым распространенным алгоритмом симметричного шифрования в мире.
Ключевые преимущества:
Доказанная стойкость за decades анализа
Высокая производительность на любых платформах
Стандартизация и поддержка на уровне hardware
Гибкость использования в различных режимах
AES останется основой защиты информации на обозримое будущее, и его значение в современной цифровой экономике трудно переоценить.
Что такое RSA?
RSA — это алгоритм асимметричного шифрования, названный по первым буквам фамилий его создателей: Ривеста (Rivest), Шамира (Shamir) и Адлемана (Adleman). Алгоритм был представлен в 1977 году и стал первым практическим алгоритмом с открытым ключом, пригодным как для шифрования, так и для цифровой подписи.
Основная идея асимметричного шифрования
В отличие от симметричных алгоритмов (AES, DES, ГОСТ), где один ключ используется и для шифрования, и для дешифрования, в RSA используется пара ключей:
Открытый ключ (public key) — используется для шифрования и проверки подписи. Может свободно распространяться.
Закрытый ключ (private key) — используется для дешифрования и создания подписи. Должен храниться в секрете.
Ключевая особенность: Вычислительно невозможно определить закрытый ключ из открытого.
Математическая основа RSA
Безопасность RSA основана на сложности задачи факторизации больших чисел — разложения произведения двух больших простых чисел на исходные множители.
Необходимая математика:
Взаимно простые числа — числа, у которых НОД (наибольший общий делитель) равен 1.
Функция Эйлера φ(n) — количество чисел, меньших n и взаимно простых с n.
Теорема Эйлера: Если a и n взаимно просты, то a^φ(n) ≡ 1 (mod n)
Расширенный алгоритм Евклида — для нахождения обратного элемента по модулю.
Генерация ключей RSA
Процесс создания пары ключей:
Выбор двух больших простых чисел:
Выбираются два случайных больших простых числа p и q
Типичная длина каждого: 1024-4096 бит
Вычисление модуля:
Вычисляется n = p × q
Это modulus (модуль), который будет входить в оба ключа
Вычисление функции Эйлера:
φ(n) = (p-1) × (q-1)
Выбор открытой экспоненты:
Выбирается целое число e такое, что:
1 < e < φ(n)
e и φ(n) — взаимно просты (НОД(e, φ(n)) = 1)
Обычно берут e = 65537 (0x10001) — это обеспечивает хороший баланс между безопасностью и производительностью
Вычисление закрытой экспоненты:
Вычисляется d — мультипликативно обратное к e по модулю φ(n)
d × e ≡ 1 (mod φ(n))
Вычисляется с помощью расширенного алгоритма Евклида
Результат:
Открытый ключ: (e, n)
Закрытый ключ: (d, n)
Процесс шифрования и дешифрования
Шифрование (с помощью открытого ключа):
Исходное сообщение представляется как число m < n
Шифртекст: c = m^e mod n
Дешифрование (с помощью закрытого ключа):
Исходное сообщение: m = c^d mod n
Почему это работает?
Доказательство корректности:
Мы знаем, что:
c = m^e mod n
m = c^d mod n = (m^e)^d mod n = m^(e×d) mod n
Из выбора ключей: e×d ≡ 1 (mod φ(n)) Значит: e×d = 1 + k×φ(n) для некоторого k
Тогда: m^(e×d) = m^(1 + k×φ(n)) = m × (m^φ(n))^k
По теореме Эйлера: m^φ(n) ≡ 1 (mod n) Следовательно: m × (1)^k ≡ m (mod n)
Цифровая подпись на RSA
RSA также используется для цифровых подписей:
Создание подписи:
Вычисляется хеш сообщения: h = hash(m)
Подпись: s = h^d mod n (подписывается закрытым ключом)
Проверка подписи:
Вычисляется хеш сообщения: h = hash(m)
Проверяется: h ≡ s^e mod n (проверяется открытым ключом)
Безопасность RSA
Основные угрозы:
