Middle
Jak je zajištěno šifrování zpráv mezi prohlížečem a serverem?
sobes.tech AI
Odpověď od AI
Šifrování mezi prohlížečem a serverem se provádí pomocí protokolu HTTPS, který je nadstavbou nad HTTP využívající protokoly SSL/TLS (Secure Sockets Layer / Transport Layer Security).
Proces navázání zabezpečeného spojení (Handshake):
- Client Hello: Prohlížeč odešle serveru zprávu obsahující podporované verze SSL/TLS, seznam cipher suites, algoritmy komprese a náhodné číslo (od klienta).
- Server Hello: Server vybere nejlepší verzi protokolu, sadu šifer a algoritmus komprese z navržených, vygeneruje své vlastní náhodné číslo (od serveru) a odešle je spolu se svým SSL/TLS certifikátem prohlížeči.
- Ověření: Prohlížeč ověří certifikát serveru:
- Kořenová CA (Root CA).
- Platnost certifikátu.
- Shodu doménového jména v certifikátu s adresou webové stránky.
- Absenci odvolaných certifikátů v seznamu (CRL nebo OCSP).
- Premaster Secret: Prohlížeč vygeneruje náhodné číslo (premaster secret), zašifruje ho veřejným klíčem serveru (z certifikátu) a odešle jej na server.
- Vytvoření klíče relace: Jak prohlížeč, tak server použijí náhodná čísla klienta (Client Random), serveru (Server Random) a premaster secret k vygenerování symetrického klíče relace.
- Change Cipher Spec: Prohlížeč odešle zprávu serveru, která oznamuje přechod na použití vygenerovaného klíče relace pro další komunikaci.
- Finished: Prohlížeč odešle serveru hash všech předchozích zpráv handshake, zašifrovaný klíčem relace. Tato zpráva ověřuje správnost handshake.
- Change Cipher Spec: Server odešle prohlížeči zprávu, která indikuje přechod na šifrované spojení.
- Finished: Server odešle prohlížeči hash všech předchozích zpráv handshake, zašifrovaný klíčem relace.
Po úspěšném handshake veškerý přenos dat mezi prohlížečem a serverem probíhá pomocí symetrického šifrování založeného na vygenerovaném klíči relace. Symetrické šifrování je mnohem efektivnější než asymetrické, což ho činí vhodným pro šifrování velkých objemů dat.
Používané algoritmy (příklad):
- Asymetrické šifrování (pro výměnu klíče relace): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
- Symetrické šifrování (pro šifrování dat): AES, 3DES, ChaCha20.
- Hashování (pro kontrolu integrity zpráv): SHA-256, SHA-384.