Sobes.tech
Junior

Jaké klíče přenáší server k klientovi?

sobes.tech AI

Odpověď od AI

Nadpis není podle pravidel potřeba.

Ze serveru k klientovi mohou být přenášeny různé klíče v závislosti na kontextu a používaném protokolu. Hlavní typy klíčů, které mohou být přenášeny nebo dohodnuty:

  1. Veřejné klíče: V asymetrické kryptografii může server předat svůj veřejný klíč klientovi. To se používá pro:

    • Šifrování dat klientem, které může dešifrovat pouze server (držící odpovídající soukromý klíč).
    • Kontrolu digitálního podpisu vytvořeného serverem pomocí jeho soukromého klíče.
  2. Identifikátory relace (Session IDs) / Tokeny relace (Session Tokens): Tyto nejsou čistě kryptografické klíče, ale hrají roli klíče pro identifikaci uživatelské relace. Server generuje unikátní identifikátor po autentizaci klienta a posílá ho klientovi (často ve formě cookie). Klient pak tento ID zahrnuje do dalších požadavků pro udržení stavu relace.

  3. Klíče pro šifrování symetrickými algoritmy: Ačkoliv jsou symetrické klíče zřídka přenášeny přímo v otevřeném tvaru, často jsou generovány nebo dohodnuty při navazování zabezpečeného spojení (například protokoly TLS/SSL). Server a klient mohou použít algoritmus Diffie-Hellman nebo jeho varianty pro bezpečné dohodnutí společného symetrického klíče bez jeho přímého přenosu. Tento symetrický klíč se pak používá pro šifrování veškerého provozu v rámci relace.

  4. Tokeny pro autentizaci a autorizaci (například JWT): Server může vydat klientovi token (například JSON Web Token) po úspěšné autentizaci. Tento token obsahuje informace o uživateli a jeho právech. Klient tento token posílá serveru s každým požadavkem k potvrzení své identity a práv. Ačkoliv token není kryptografický klíč, je podepsán nebo zašifrován pomocí klíčů známých pouze serveru (nebo více serverů/služeb).

  5. API klíče / Tajné klíče klienta: V některých architekturách může server vydat klientovi (například mobilní aplikaci nebo jinému servisu) statický API klíč nebo tajný klíč k použití jako součást autentizace požadavků. To je však méně bezpečné pro klientské aplikace, protože klíč může být získán.

  6. Certifikáty: Server přenáší svůj SSL/TLS certifikát klientovi na začátku navazování zabezpečeného spojení. Certifikát obsahuje veřejný klíč serveru a je podepsán důvěryhodnou certifikační autoritou. Klient používá certifikát k ověření pravosti serveru a získání jeho veřejného klíče.

Příklad použití veřejného klíče v kontextu HTTPS/TLS:

  1. Klient zahajuje TLS handshake.
  2. Server pošle klientovi svůj certifikát, který obsahuje veřejný klíč serveru.
  3. Klient ověří certifikát (řetězec důvěry, platnost atd.) a extrahuje veřejný klíč serveru.
  4. Klient vygeneruje dočasný symetrický klíč relace.
  5. Klient zašifruje tento symetrický klíč pomocí veřejného klíče serveru.
  6. Klient odešle zašifrovaný symetrický klíč serveru.
  7. Server dešifruje symetrický klíč pomocí svého soukromého klíče.
  8. Další výměna dat mezi klientem a serverem je šifrována a dešifrována pomocí tohoto dohodnutého symetrického klíče relace.

Hlavní body:

  • Přímý přenos tajných/soukromých klíčů od serveru k klientovi je extrémně nedoporučen z bezpečnostních důvodů.
  • Nejčastěji server přenáší veřejné klíče, identifikátory relace, tokeny nebo se účastní dohody symetrických klíčů.
  • Použití konkrétních typů klíčů závisí na scénáři (autentizace, šifrování, udržování relace atd.).