Middle
Как се осъществява криптирането на съобщения между браузъра и сървъра?
sobes.tech AI
Отговор от AI
Шифроването между браузъра и сървъра се осъществява чрез протокола HTTPS, който е надстройка над HTTP с използване на протоколи SSL/TLS (Secure Sockets Layer / Transport Layer Security).
Процесът на установяване на защитена връзка (Handshake):
- Client Hello: Браузърът изпраща на сървъра съобщение, съдържащо поддържаните от него версии на SSL/TLS, списък с шифровални алгоритми (cipher suites), алгоритми за компресия и случайно число (от клиента).
- Server Hello: Сървърът избира най-добрата версия на протокола, шифровален набор и алгоритъм за компресия от предложените от браузъра, както и генерира собствено случайно число (от сървъра) и ги изпраща на браузъра заедно със своя SSL/TLS сертификат.
- Authentication: Браузърът проверява сертификата на сървъра:
- Довереност на кореновия център за сертифициране (Root CA).
- Валидност на сертификата.
- Съответствие на домейн името в сертификата с адреса на уебсайта.
- Липса на сертификат в списъка с оттеглени (CRL или OCSP).
- Premaster Secret: Браузърът генерира случайно число (premaster secret), криптира го с публичния ключ на сървъра (от сертификата) и го изпраща на сървъра.
- Session Key Generation: И двамата, браузърът и сървърът, използват клиентското (Client Random), сървърното (Server Random) случайни числа и premaster secret за генериране на симетричен сесионен ключ (session key).
- Change Cipher Spec: Браузърът изпраща на сървъра съобщение, което информира за преминаване към използване на генерирания сесионен ключ за бъдеща комуникация.
- Finished: Браузърът изпраща на сървъра хеш на всички предишни съобщения от ръкостискането, криптиран с сесийния ключ. Това съобщение проверява коректността на ръкостискането.
- Change Cipher Spec: Сървърът изпраща на браузъра съобщение за преминаване към криптирана връзка.
- Finished: Сървърът изпраща на браузъра хеш на всички предишни съобщения от ръкостискането, криптиран с сесийния ключ.
След успешно ръкостискане, цялата последваща предавка на данни между браузъра и сървъра се осъществява с използване на симетрично криптиране на базата на генерирания сесионен ключ. Симетричното криптиране е много по-ефективно от асиметричното, което го прави подходящо за криптиране на големи обеми данни.
Приложимите алгоритми (пример):
- Асиметрично криптиране (за обмен на сесионен ключ): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
- Симетрично криптиране (за криптиране на данни): AES, 3DES, ChaCha20.
- Хеширане (за проверка на цялостта на съобщенията): SHA-256, SHA-384.