Delen via


TLS Handshake Protocol

Het Tls-handshakeprotocol (Transport Layer Security) is verantwoordelijk voor de verificatie en sleuteluitwisseling die nodig is om beveiligde sessies tot stand te brengen of te hervatten. Bij het tot stand brengen van een beveiligde sessie, beheert het Handshake Protocol het volgende:

  • Coderingssuiteonderhandeling
  • Verificatie van de server en eventueel de client
  • Informatie-uitwisseling van sessiesleutels.

Onderhandelingen over coderingssuite

De client en server maken contact en kiezen de coderingssuite die tijdens de berichtenuitwisseling wordt gebruikt.

Authenticatie

In TLS bewijst een server de identiteit van de client. De client moet mogelijk ook de identiteit van de client aan de server bewijzen. PKI, het gebruik van openbare/persoonlijke sleutelparen, is de basis van deze verificatie. De exacte methode die wordt gebruikt voor verificatie, wordt bepaald door de overeengekomen coderingssuite.

Sleuteluitwisseling

De client en server wisselen willekeurige getallen en een speciaal nummer uit met de naam Pre-Master Secret. Deze nummers worden gecombineerd met aanvullende gegevens waarmee client en server hun gedeelde geheim kunnen maken, het hoofdgeheim genoemd. Het hoofdgeheim wordt door de client en server gebruikt om het MAC-schrijfgeheim te genereren. Dit is de sessiesleutel die wordt gebruikt voor hashingen de schrijfsleutel, de sessiesleutel die wordt gebruikt voor versleuteling.

Een beveiligde sessie tot stand brengen met behulp van TLS

Het TLS Handshake Protocol omvat de volgende stappen:

  1. De client verzendt een 'Client hello'-bericht naar de server, samen met de willekeurige waarde van de client en ondersteunde coderingssuites.
  2. De server reageert door een bericht 'Server hello' naar de client te verzenden, samen met de willekeurige waarde van de server.
  3. De server verzendt het certificaat naar de client voor verificatie en kan een certificaat aanvragen bij de client. De server verzendt het bericht 'Server hello done'.
  4. Als de server een certificaat van de client heeft aangevraagd, verzendt de client het.
  5. De client maakt een willekeurig pre-mastergeheim en versleutelt het met de openbare sleutel van het certificaat van de server, waarbij het versleutelde pre-mastergeheim naar de server wordt verzonden.
  6. De server ontvangt het pre-mastergeheim. De server en client genereren elk het hoofdgeheim en sessiesleutels op basis van het pre-mastergeheim.
  7. De client verzendt de melding 'Coderingsspecificatie wijzigen' naar de server om aan te geven dat de client de nieuwe sessiesleutels gebruikt voor hashing en het versleutelen van berichten. Client verzendt ook het bericht 'Client voltooid'.
  8. Server ontvangt "Wijzigingscoderingsspecificatie" en schakelt de beveiligingsstatus van de recordlaag over naar symmetrische versleuteling met behulp van de sessiesleutels. Server verzendt het bericht 'Server voltooid' naar de client.
  9. Client en server kunnen nu toepassingsgegevens uitwisselen via het beveiligde kanaal dat ze hebben ingesteld. Alle berichten die van client naar server en van server naar client worden verzonden, worden versleuteld met behulp van de sessiesleutel.

Een beveiligde sessie hervatten met behulp van TLS

  1. De client verzendt een bericht 'Client hello' met behulp van de sessie-id van de sessie die moet worden hervat.

  2. De server controleert de sessiecache op een overeenkomende sessie-id. Als er een overeenkomst wordt gevonden en de server de sessie kan hervatten, wordt er een bericht 'Server hello' met de sessie-id verzonden.

    Notitie

    Als er geen overeenkomst met een sessie-id wordt gevonden, genereert de server een nieuwe sessie-id en voert de TLS-client en -server een volledige handshake uit.

     

  3. Client en server moeten berichten uitwisselen "Coderingsspecificatie wijzigen" en "Client finished" en "Server finished" berichten verzenden.

  4. Client en server kunnen nu de uitwisseling van toepassingsgegevens via het beveiligde kanaal hervatten.