Ответ
Симметричная криптография — это метод шифрования, при котором для зашифровки и расшифровки данных используется один и тот же секретный ключ.
Принцип работы:
Один и тот же ключ (secret_key
) используется как для преобразования открытого текста в шифротекст, так и для обратного преобразования.
Открытый текст
+ Ключ
→ Шифротекст
Шифротекст
+ Ключ
→ Открытый текст
Преимущества:
- Высокая скорость: Симметричные алгоритмы значительно быстрее асимметричных, что делает их идеальными для шифрования больших объемов данных.
- Простота: Алгоритмы вычислительно менее сложны.
Недостаток:
- Проблема распределения ключей: Главная сложность — безопасно передать секретный ключ от отправителя получателю. Если ключ перехвачен, вся переписка будет скомпрометирована.
Пример с использованием AES в Python (библиотека pycryptodome
):
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 1. Данные для шифрования
data = b'This is a secret message.'
# 2. Генерация секретного ключа (16 байт для AES-128)
key = get_random_bytes(16)
# 3. Создание объекта шифра в режиме EAX (обеспечивает конфиденциальность и аутентичность)
cipher = AES.new(key, AES.MODE_EAX)
# 4. Шифрование данных
ciphertext, tag = cipher.encrypt_and_digest(data)
nonce = cipher.nonce
# --- Передача ciphertext, tag, nonce по незащищенному каналу ---
# 5. Расшифровка на другой стороне
decipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = decipher.decrypt_and_verify(ciphertext, tag)
print(f"Расшифрованный текст: {plaintext.decode('utf-8')}")
Популярные алгоритмы: AES (современный стандарт), 3DES, Blowfish, RC4.