Какие методы шифрования используются в HTTPS

«Какие методы шифрования используются в HTTPS» — вопрос из категории Безопасность, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTPS использует симметричное и асимметричное шифрование в комбинации.

  1. Асимметричное шифрование (RSA, ECDSA) – для обмена ключами и аутентификации сервера (SSL/TLS handshake).
  2. Симметричное шифрование (AES, ChaCha20) – для шифрования данных после установки соединения.
  3. Хеширование (SHA-256) – для проверки целостности данных.

Пример обмена ключами в TLS 1.3:

// Упрощённый пример (не для продакшена!)
func handshake() {
    // Сервер отправляет публичный ключ
    pubKey, privKey := generateRSAKeys() 
    // Клиент шифрует симметричный ключ
    encryptedKey := rsa.EncryptOAEP(sha256.New(), rand.Reader, pubKey, symKey, nil)
    // Сервер расшифровывает
    symKey := rsa.DecryptOAEP(sha256.New(), rand.Reader, privKey, encryptedKey, nil)
    // Далее общение идёт с symKey (AES)
}

Современные стандарты (TLS 1.3) минимизируют использование асимметричного шифрования из-за его медлительности.