Sobes.tech
Middle

Kaip vykdomas pranešimų šifravimas tarp naršyklės ir serverio?

sobes.tech AI

Atsakymas iš AI

Naršyklės ir serverio šifravimas vyksta naudojant HTTPS protokolą, kuris yra viršutinis sluoksnis virš HTTP, naudojant SSL/TLS protokolus (Secure Sockets Layer / Transport Layer Security).

Saugios jungties (Handshake) proceso eiga:

  1. Client Hello: Naršyklė siunčia serveriui pranešimą, kuriame nurodo palaikomas SSL/TLS versijas, šifravimo algoritmų sąrašą (cipher suites), suspaudimo algoritmus ir atsitiktinį skaičių (iš kliento).
  2. Server Hello: Serveris pasirenka geriausią protokolo versiją, šifravimo rinkinį ir suspaudimo algoritmą iš naršyklės pasiūlytų, taip pat sugeneruoja savo atsitiktinį skaičių (iš serverio) ir siunčia jį naršyklei kartu su savo SSL/TLS sertifikatu.
  3. Authentication: Naršyklė patikrina serverio sertifikatą:
    • Šaknies sertifikato autoriteto patikimumas (Root CA).
    • Sertifikato galiojimo laikas.
    • Domeno vardo atitikimas sertifikate su svetainės adresu.
    • Sertifikato nepašalinimo iš sąrašo (CRL arba OCSP).
  4. Premaster Secret: Naršyklė sugeneruoja atsitiktinį skaičių (premaster secret), jį užšifruoja viešuoju serverio raktu (iš sertifikato) ir siunčia serveriui.
  5. Session Key Generation: Abu, naršyklė ir serveris, naudoja kliento (Client Random), serverio (Server Random) atsitiktinius skaičius ir premaster secret, kad sugeneruotų simetrinį sesijos raktą (session key).
  6. Change Cipher Spec: Naršyklė siunčia serveriui pranešimą, kuriame informuoja apie pereimą prie naudoti sugeneruoto sesijos rakto tolesniam bendravimui.
  7. Finished: Naršyklė siunčia serveriui visų ankstesnių rankos paspaudimo žinučių hash'ą, užšifruotą sesijos raktu. Šis pranešimas patikrina rankos paspaudimo teisingumą.
  8. Change Cipher Spec: Serveris siunčia naršyklei pranešimą apie pereimą prie šifruotos jungties.
  9. Finished: Serveris siunčia naršyklei visų ankstesnių rankos paspaudimo žinučių hash'ą, užšifruotą sesijos raktu.

Po sėkmingo rankos paspaudimo, visa tolesnė duomenų perdavimas tarp naršyklės ir serverio vyksta naudojant simetrinį šifravimą, pagrįstą sugeneruotu sesijos raktu. Simetrinis šifravimas yra daug efektyvesnis nei asimetrinis, todėl jis yra tinkamas didelių duomenų kiekių šifravimui.

Naudojami algoritmai (pavyzdys):

  • Asimetrinis šifravimas (sesijos rakto keitimui): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Simetrinis šifravimas (duomenų šifravimui): AES, 3DES, ChaCha20.
  • Hash'inimas (žinučių vientisumo patikrinimui): SHA-256, SHA-384.