Sobes.tech
Middle

Как се осъществява криптирането на съобщения между браузъра и сървъра?

sobes.tech AI

Отговор от AI

Шифроването между браузъра и сървъра се осъществява чрез протокола HTTPS, който е надстройка над HTTP с използване на протоколи SSL/TLS (Secure Sockets Layer / Transport Layer Security).

Процесът на установяване на защитена връзка (Handshake):

  1. Client Hello: Браузърът изпраща на сървъра съобщение, съдържащо поддържаните от него версии на SSL/TLS, списък с шифровални алгоритми (cipher suites), алгоритми за компресия и случайно число (от клиента).
  2. Server Hello: Сървърът избира най-добрата версия на протокола, шифровален набор и алгоритъм за компресия от предложените от браузъра, както и генерира собствено случайно число (от сървъра) и ги изпраща на браузъра заедно със своя SSL/TLS сертификат.
  3. Authentication: Браузърът проверява сертификата на сървъра:
    • Довереност на кореновия център за сертифициране (Root CA).
    • Валидност на сертификата.
    • Съответствие на домейн името в сертификата с адреса на уебсайта.
    • Липса на сертификат в списъка с оттеглени (CRL или OCSP).
  4. Premaster Secret: Браузърът генерира случайно число (premaster secret), криптира го с публичния ключ на сървъра (от сертификата) и го изпраща на сървъра.
  5. Session Key Generation: И двамата, браузърът и сървърът, използват клиентското (Client Random), сървърното (Server Random) случайни числа и premaster secret за генериране на симетричен сесионен ключ (session key).
  6. Change Cipher Spec: Браузърът изпраща на сървъра съобщение, което информира за преминаване към използване на генерирания сесионен ключ за бъдеща комуникация.
  7. Finished: Браузърът изпраща на сървъра хеш на всички предишни съобщения от ръкостискането, криптиран с сесийния ключ. Това съобщение проверява коректността на ръкостискането.
  8. Change Cipher Spec: Сървърът изпраща на браузъра съобщение за преминаване към криптирана връзка.
  9. Finished: Сървърът изпраща на браузъра хеш на всички предишни съобщения от ръкостискането, криптиран с сесийния ключ.

След успешно ръкостискане, цялата последваща предавка на данни между браузъра и сървъра се осъществява с използване на симетрично криптиране на базата на генерирания сесионен ключ. Симетричното криптиране е много по-ефективно от асиметричното, което го прави подходящо за криптиране на големи обеми данни.

Приложимите алгоритми (пример):

  • Асиметрично криптиране (за обмен на сесионен ключ): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Симетрично криптиране (за криптиране на данни): AES, 3DES, ChaCha20.
  • Хеширане (за проверка на цялостта на съобщенията): SHA-256, SHA-384.