Sobes.tech
Junior

Aké kľúče sa prenášajú zo servera na klienta?

sobes.tech AI

Odpoveď od AI

Nadpis nie je podľa pravidiel potrebný.

Zo servera k klientovi môžu byť prenášané rôzne kľúče v závislosti od kontextu a používaného protokolu. Hlavné typy kľúčov, ktoré môžu byť prenesené alebo dohodnuté:

  1. Verejné kľúče: V asymetrickej kryptografii môže server preniesť svoj verejný kľúč klientovi. To sa používa na:

    • Šifrovanie dát od klienta, ktoré môže dešifrovať iba server (držaním príslušného súkromného kľúča).
    • Kontrolu digitálneho podpisu vytvoreného serverom pomocou jeho súkromného kľúča.
  2. Identifikátory relácie (Session IDs) / Tokeny relácie (Session Tokens): Tieto nie sú kryptografické kľúče v čistom zmysle, ale hrajú úlohu kľúča na identifikáciu používateľskej relácie. Server generuje unikátne identifikátory po autentifikácii klienta a odosiela ich klientovi (často vo forme cookie). Klient potom tento ID zahrnie do ďalších požiadaviek na udržanie stavu relácie.

  3. Kľúče pre šifrovanie symetrickými algoritmami: Hoci sa symetrické kľúče zriedka prenášajú priamo v otvorenej podobe, často sa generujú alebo dohadujú počas naviazania zabezpečeného spojenia (napríklad pomocou protokolov TLS/SSL). Server a klient môžu použiť algoritmus Diffie-Hellman alebo jeho varianty na bezpečné dohodnutie spoločného symetrického kľúča bez jeho priameho prenosu. Tento symetrický kľúč sa potom používa na šifrovanie celého prenosu v rámci relácie.

  4. Tokeny na autentifikáciu a autorizáciu (napríklad JWT): Server môže vydať klientovi token (napríklad JSON Web Token) po úspešnej autentifikácii. Tento token obsahuje informácie o používateľovi a jeho právach. Klient tento token odosiela serveru s každým požiadavkom na potvrdenie svojej identity a práv. Hoci token nie je kryptografický kľúč, je podpísaný alebo zašifrovaný pomocou kľúčov, ktoré pozná iba server (alebo viaceré servery/služby).

  5. API kľúče / Tajné kľúče klienta: V niektorých architektúrach môže server vydať klientovi (napríklad, mobilnej aplikácii alebo inému servisu) statický API kľúč alebo tajný kľúč na použitie ako súčasť autentifikácie požiadaviek. To je však menej bezpečné pre klientské aplikácie, pretože kľúč môže byť získaný.

  6. Certifikáty: Server prenáša svoj SSL/TLS certifikát klientovi na začiatku naviazania zabezpečeného spojenia. Certifikát obsahuje verejný kľúč servera a je podpísaný dôveryhodnou certifikačnou autoritou. Klient používa certifikát na overenie pravosti servera a na získanie jeho verejného kľúča.

Príklad použitia verejného kľúča v kontexte HTTPS/TLS:

  1. Klient iniciuje TLS handshake.
  2. Server odošle klientovi svoj certifikát, ktorý obsahuje verejný kľúč servera.
  3. Klient overí certifikát (reťazec dôvery, platnosť atď.) a extrahuje verejný kľúč servera.
  4. Klient vygeneruje dočasný symetrický kľúč pre reláciu.
  5. Klient zašifruje tento symetrický kľúč pomocou verejného kľúča servera.
  6. Klient odošle zašifrovaný symetrický kľúč serveru.
  7. Server dešifruje symetrický kľúč pomocou svojho súkromného kľúča.
  8. Následne je výmena dát medzi klientom a serverom šifrovaná a dešifrovaná pomocou tohto dohodnutého symetrického kľúča relácie.

Kľúčové body:

  • Priama predajnosť tajných/súkromných kľúčov od servera ku klientovi je mimoriadne neodporúčaná z bezpečnostných dôvodov.
  • Najčastejšie server prenáša verejné kľúče, identifikátory relácie, tokeny alebo sa zúčastňuje na dohode symetrických kľúčov.
  • Použitie konkrétnych typov kľúčov závisí od scenára (autentifikácia, šifrovanie, udržiavanie relácie atď.).