Ответ
Асимметричная криптография (или криптография с открытым ключом) — это система шифрования, использующая пару математически связанных ключей: открытого (public) и закрытого (private).
Принцип работы
- Открытый ключ свободно распространяется. Он используется для шифрования данных и проверки цифровой подписи.
- Закрытый ключ хранится в строгом секрете владельцем. Он используется для расшифровки данных и создания цифровой подписи.
Сообщение, зашифрованное открытым ключом, может быть расшифровано только соответствующим ему закрытым ключом. Это позволяет безопасно обмениваться данными, не передавая секретный ключ по незащищенному каналу.
Пример на 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.
Ключевой недостаток: асимметричное шифрование значительно медленнее симметричного, поэтому на практике его часто используют для безопасной передачи симметричного ключа, которым уже шифруется основной объем данных.
Ответ 18+ 🔞
Так, слушай сюда, про эту вашу асимметричную криптографию, она же с открытым ключом. Представь себе, блядь, такой математический пиздец, где у тебя не один ключик, а целая парочка, связанная невидимой нитью, ёпта.
Вот есть у тебя ключ открытый (public). Этот товарищ — душа компании, его можно всем раздавать, на столбах клеить, в соцсетях публиковать. Им данные шифруют. А есть у него брат-близнец, но полная противоположность — ключ закрытый (private). Этот сидит в сейфе, в голове не держит, никому не показывает, сука, ни-ко-му. Им только расшифровывают.
И вся магия, блядь, в чём? Что если ты зашифровал что-то этим всеми любимым открытым ключом, то расхуячить это обратно может только его вторая половинка — тот самый, секретный, закрытый ключ. Получается, можно слать секреты хоть через говнокоммутатор соседа, не передавая при этом никаких паролей. Гениально и просто, как яйца, блядь.
Ну-ка, глянем на живом примере (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://. Весь твой трафик к банку или к порнохабу — под защитой этой хуйни. - Цифровые подписи: Чтобы какой-нибудь мудак не подсунул тебе договор с другим текстом. Подписал — и всё, авторство и целостность как в аптеке.
- Шифрование почты: Тот самый PGP, чтобы письма твои не читали все, кому не лень.
Но есть, сука, ложка дёгтя. Вся эта асимметрия — она овердохуища медленная, как черепаха в сиропе. Поэтому умные люди её используют по-хитрому: сначала этим медленным, но безопасным способом передают ключ от быстрого симметричного шифрования. А потом уже этим быстрым ключом гоняют терабайты данных. Как говорится, и волки сыты, и овцы целы, в рот меня чих-пых!