1. Основные понятия
Шифрование — преобразование данных для защиты от несанкционированного доступа.
Ключ — секретная информация, используемая для шифрования/расшифрования.
Типы шифров:
| Тип | Ключи | Скорость | Безопасность |
|---|---|---|---|
| Симметричные | Один общий ключ | Высокая | Средняя |
| Асимметричные | Пара ключей (публичный/приватный) | Низкая | Высокая |
2. Шифры простой замены
Принцип: Замена каждого символа на другой по фиксированному правилу.
Шифр Цезаря:
Сдвиг букв на фиксированное число позиций
Формулы:
$$ C = (P + K) \mod 26 $$
$$ P = (C — K) \mod 26 $$
Где \( P \) — код исходной буквы (A=0, B=1, …, Z=25), \( C \) — код зашифрованной буквы, \( K \) — ключ.
Пример (K=3): Исходный: A B C → Зашифрованный: D E F
Шифр Виженера:
Использует ключ-слово. Каждая буква ключа определяет сдвиг для соответствующей буквы текста.
Пример:
- Текст:
HELLO - Ключ:
KEY(K=10, E=4, Y=24) - Шифрование:
- H(7) + K(10) = 17 → R
- E(4) + E(4) = 8 → I
- L(11) + Y(24) = 35 mod 26 = 9 → J
- L(11) + K(10) = 21 → V
- O(14) + E(4) = 18 → S
- Результат:
RIJVS
3. Симметричные шифры
Принцип: Один ключ для шифрования и расшифрования.
Примеры: AES, DES, ГОСТ 28147-89
Схема работы:
graph LR A[Открытый текст] -->|Ключ| B[Шифрование] B --> C[Шифртекст] C -->|Тот же ключ| D[Расшифрование] D --> E[Открытый текст]
Плюсы и минусы:
- Плюсы: Высокая скорость, простая реализация
- Минусы: Сложность передачи ключа, уязвимость при компрометации
4. Асимметричные шифры
Принцип: Использует пару ключей: публичный (шифрует) и приватный (расшифровывает).
Примеры: RSA, ECC, ElGamal
Схема работы:
graph LR A[Открытый текст] -->|Публичный ключ| B[Шифрование] B --> C[Шифртекст] C -->|Приватный ключ| D[Расшифрование] D --> E[Открытый текст]
Плюсы и минусы:
- Плюсы: Безопасная передача данных, цифровые подписи
- Минусы: Медленная скорость, сложные вычисления
5. Алгоритм RSA
Этапы работы:
- Генерация ключей:
- Выбрать два простых числа \( p \) и \( q \)
- Вычислить модуль \( n = p \times q \)
- Вычислить \( \phi(n) = (p-1)(q-1) \)
- Выбрать \( e \) (где \( 1 < e < \phi(n) \)), причём \( e \) и \( \phi(n) \) взаимно просты
- Найти \( d \): \( d \times e \equiv 1 \mod \phi(n) \)
- Публичный ключ: \( (e, n) \), Приватный ключ: \( (d, n) \)
- Шифрование: \( C = M^e \mod n \)
- Расшифрование: \( M = C^d \mod n \)
Пример (упрощённый):
- \( p = 3 \), \( q = 11 \) → \( n = 33 \), \( \phi(n) = 20 \)
- \( e = 3 \) (3 и 20 взаимно просты)
- \( d = 7 \) (т.к. \( 3 \times 7 = 21 \equiv 1 \mod 20 \))
- Шифруем \( M = 4 \): \( C = 4^3 \mod 33 = 64 \mod 33 = 31 \)
- Расшифруем: \( M = 31^7 \mod 33 = 4 \)