- •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. Требования к размеру
- •Системы защиты информации
- •Банковские приложения
- •Государственные информационные системы
- •Понятная математическая основа
- •Вычисление вспомогательных величин:
Электронная цифровая подпись (в сочетании с ГОСТ Р 34.10-94)
Системы защиты информации
Банковские приложения
Государственные информационные системы
Сравнение с другими хеш-функциями
Переход к новому стандарту
В 2012 году был принят новый стандарт ГОСТ Р 34.11-2012 ("Стрибог"), который:
Использует более современную конструкцию
Поддерживает размеры хеша 256 и 512 бит
Обеспечивает более высокую криптостойкость
Вывод
ГОСТ Р 34.11-94 представляет собой важный этап в развитии российской криптографии. Несмотря на обнаруженные уязвимости, он успешно применялся в течение почти 20 лет и заложил основы для создания более современных отечественных хеш-функций.
Ключевые особенности:
Построение на основе блочного шифра ГОСТ 28147-89
Четырехпроходная структура обработки
Большой размер хеша (256 бит)
Широкое применение в системах ЭЦП
Сегодня использование ГОСТ Р 34.11-94 не рекомендуется для новых систем — следует применять более современный ГОСТ Р 34.11-2012, но понимание старого стандарта важно для работы с унаследованными системами и изучения эволюции криптографических алгоритмов.
Исторический контекст
Алгоритм был предложен Тахером Эль-Гамалем в 1985 году. Это была одна из первых практических схем цифровой подписи, основанная на сложности задачи дискретного логарифмирования.
Математическая основа
Безопасность EGSA основана на сложности задачи дискретного логарифмирования в конечных полях:
Для известных g, y и p трудно найти x такой, что: y ≡ g^x (mod p)
Генерация ключей
Параметры системы:
p — большое простое число
g — первообразный корень по модулю p (генератор мультипликативной группы Z_p*)
x — закрытый ключ, случайное число: 1 < x < p-1
y — открытый ключ: y ≡ g^x (mod p)
Открытый ключ: (p, g, y) Закрытый ключ: x
Процесс создания подписи
Для подписания сообщения m:
Выбор случайного числа k:
k — случайное число, взаимно простое с (p-1): 1 < k < p-1
НОД(k, p-1) = 1
k должно быть уникальным для каждой подписи
Вычисление первого элемента подписи:
r ≡ g^k (mod p)
Вычисление второго элемента подписи:
Решается уравнение: m ≡ x × r + k × s (mod (p-1))
Отсюда находим s: s ≡ (m - x × r) × k^(-1) (mod (p-1))
Цифровая подпись: (r, s)
Процесс проверки подписи
Для проверки подписи (r, s) для сообщения m:
Проверка условий:
1 ≤ r ≤ p-1
1 ≤ s ≤ p-1
Вычисление левой части:
A ≡ g^m (mod p)
Вычисление правой части:
B ≡ y^r × r^s (mod p)
Проверка равенства:
Подпись верна, если A ≡ B (mod p)
Почему это работает? (Доказательство корректности)
Из определения s: m ≡ x × r + k × s (mod (p-1))
Тогда: g^m ≡ g^(x×r + k×s) (mod p) g^m ≡ (g^x)^r × (g^k)^s (mod p) g^m ≡ y^r × r^s (mod p)
Что exactly соответствует проверочной формуле.
Пример с маленькими числами
Генерация ключей:
p = 23, g = 5
x = 7 (закрытый ключ)
y = 5^7 mod 23 = 17
Открытый ключ: (23, 5, 17) Закрытый ключ: 7
Создание подписи для m = 12:
Выбираем k = 11 (НОД(11, 22) = 1)
r = 5^11 mod 23 = 22
s = (12 - 7×22) × 11^(-1) mod 22 = (12 - 154) × 11^(-1) mod 22 = (-142) × 11^(-1) mod 22 = 10 × 11^(-1) mod 22
Находим обратный к 11 mod 22: 11 × 1 = 11 ≠ 1 11 × 2 = 22 ≡ 0 ... не существует! Выбираем другое k = 5
С k = 5:
r = 5^5 mod 23 = 20
s = (12 - 7×20) × 5^(-1) mod 22 = (12 - 140) × 5^(-1) mod 22 = (-128) × 5^(-1) mod 22 = 4 × 5^(-1) mod 22
Обратный к 5 mod 22: 5×9 = 45 ≡ 1 mod 22 s = 4 × 9 mod 22 = 36 mod 22 = 14
Подпись: (r=20, s=14)
Проверка подписи: A = 5^12 mod 23 = 6 B = 17^20 × 20^14 mod 23 = 6 A ≡ B → подпись верна!
Особенности и требования
Критически важные требования:
k должно быть уникальным для каждой подписи
k должно быть случайным и непредсказуемым
НОД(k, p-1) = 1
Уязвимости и атаки
1. Раскрытие ключа при повторном использовании k
Если два сообщения подписаны с одинаковым k:
m₁ ≡ x×r + k×s₁ (mod p-1)
m₂ ≡ x×r + k×s₂ (mod p-1)
Вычитая: (m₁ - m₂) ≡ k×(s₁ - s₂) (mod p-1) Можно найти k, а затем x.
2. Атака на подобранное сообщение
Злоумышленник может создать валидную подпись для определенных сообщений.
3. Необходимость хеширования
Исходный алгоритм работает с сообщениями m < p. На практике всегда используется хеш-функция.
Модификации и улучшения
Цифровая подпись Шнорра (Schnorr)
Упрощенная версия с меньшим размером подписи.
DSA (Digital Signature Algorithm)
Модификация Эль-Гамаля, принятая как стандарт в США:
Меньший размер подписи
Определенные параметры
Жесткая структура
ECDSA (Elliptic Curve DSA)
Версия на эллиптических кривых с повышенной безопасностью.
Преимущества EGSA
