Асинхронное шифрование (асимметричная криптография) использует пару ключей:
Открытый (public key) – используется для шифрования данных.
Закрытый (private key) – используется для расшифровки данных.
Этот метод отличается от симметричного шифрования, где один и тот же ключ используется и для шифрования, и для дешифровки.
🟠Безопасный обмен ключами
- В симметричном шифровании нужно передать секретный ключ, что создаёт риск его перехвата.
- В асимметричном шифровании передаётся только открытый ключ, а закрытый ключ никогда не покидает владельца.
🟠Цифровая подпись – гарантия подлинности данных
- Можно подписывать данные закрытым ключом, а затем любой человек может проверить их подлинность с помощью открытого ключа.
$data = "Важное сообщение";
$privateKey = openssl_pkey_get_private(file_get_contents("private.pem"));
$publicKey = openssl_pkey_get_public(file_get_contents("public.pem"));
// Создаём подпись
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
// Проверяем подпись
$valid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);
echo $valid ? "Подпись верна" : "Подпись недействительна";
🟠Возможность шифрования без предварительного контакта
- В симметричном шифровании обе стороны должны сначала договориться о ключе.
- В асимметричном шифровании можно просто использовать открытый ключ получателя без предварительного обмена секретами.
🟠Используется в SSL/TLS для безопасного соединения
- Когда вы заходите на сайт с
https://, браузер использует асимметричное шифрование для установки защищённого соединения с сервером. - После этого браузер и сервер могут использовать симметричное шифрование (быстрее), но начальный обмен ключами происходит безопасно.
🚩Как это работает?
1. Браузер запрашивает у сервера его открытый ключ.
2. Шифрует случайный симметричный ключ и отправляет его серверу.
3. Сервер расшифровывает его закрытым ключом и использует для дальнейшей защиты соединения.
Ставь 👍 и забирай 📚 Базу знаний