Middle
Kako se vrši šifrovanje poruka između pregledača i servera?
sobes.tech АИ
Одговор од АИ
Шифровање између прегледача и сервера се врши коришћењем протокола 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.