Ответ
Шифрование (encryption) — это криптографический процесс преобразования читаемых данных (открытый текст) в нечитаемый формат (шифротекст) с использованием алгоритма и секретного параметра (ключа). Обратный процесс восстановления открытого текста из шифротекста называется дешифрованием.
Основные цели: Конфиденциальность (защита от прочтения), целостность данных (обнаружение изменений), аутентификация (подтверждение источника).
1. Симметричное шифрование
Использует один и тот же ключ для шифрования и дешифрования.
- Алгоритмы: AES (Advanced Encryption Standard), ChaCha20, DES (устарел).
- Плюсы: Высокая скорость.
- Минусы: Сложность безопасной передачи ключа сторонам (проблема распределения ключей).
Пример (AES-256-GCM на Python с библиотекой cryptography):
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os
# Генерация случайного 256-битного ключа и nonce (одноразового номера)
key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
nonce = os.urandom(12) # 96 bits для GCM
# Данные для шифрования
plaintext = b"Sensitive data for encryption"
associated_data = b"metadata" # Данные для аутентификации (опционально)
# Шифрование
ciphertext = aesgcm.encrypt(nonce, plaintext, associated_data)
print(f"Шифротекст: {ciphertext.hex()}")
# Дешифрование (требует тот же key, nonce и associated_data)
decrypted_data = aesgcm.decrypt(nonce, ciphertext, associated_data)
print(f"Расшифровано: {decrypted_data.decode()}")
2. Асимметричное шифрование (шифрование с открытым ключом)
Использует пару ключей: публичный (public) для шифрования и приватный (private) для дешифрования.
- Алгоритмы: RSA, ECC (Elliptic Curve Cryptography).
- Плюсы: Решает проблему распределения ключей. Публичный ключ можно свободно распространять.
- Минусы: Значительно медленнее симметричного шифрования.
Типичное применение (гибридная схема):
- Клиент генерирует случайный сеансовый ключ для симметричного шифрования.
- Клиент шифрует этот сеансовый ключ публичным ключом сервера (асимметрично) и отправляет его.
- Сервер расшифровывает сеансовый ключ своим приватным ключом.
- Далее весь обмен данными идет с использованием быстрого симметричного шифрования на общем сеансовом ключе.
Области применения: Защита данных на диске (шифрование дисков), безопасная передача по сети (TLS/SSL), цифровые подписи.