Что такое асимметричная криптография и как она работает

Ответ

Асимметричная криптография (или криптография с открытым ключом) — это система шифрования, использующая пару математически связанных ключей: открытого (public) и закрытого (private).

Принцип работы

  1. Открытый ключ свободно распространяется. Он используется для шифрования данных и проверки цифровой подписи.
  2. Закрытый ключ хранится в строгом секрете владельцем. Он используется для расшифровки данных и создания цифровой подписи.

Сообщение, зашифрованное открытым ключом, может быть расшифровано только соответствующим ему закрытым ключом. Это позволяет безопасно обмениваться данными, не передавая секретный ключ по незащищенному каналу.

Пример на Python (библиотека cryptography)

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes

# 1. Генерация пары ключей
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

# 2. Шифрование сообщения открытым ключом
message = b"This is a secret message!"
ciphertext = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 3. Расшифровка сообщения закрытым ключом
plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(f"Расшифрованное сообщение: {plaintext.decode('utf-8')}")
# Вывод: Расшифрованное сообщение: This is a secret message!

Основные области применения

  • SSL/TLS: Защита веб-трафика (HTTPS).
  • Цифровые подписи: Подтверждение авторства и целостности данных.
  • Шифрование email: PGP/GPG.

Ключевой недостаток: асимметричное шифрование значительно медленнее симметричного, поэтому на практике его часто используют для безопасной передачи симметричного ключа, которым уже шифруется основной объем данных.