Transport Layer Security
Transport Layer Security (TLS) og dens forgjenger Secure Sockets Layer (SSL) er kryptografiske protokoller som tilbyr sikker kommunikasjon på Internett for nettlesing, e-post, lynmeldinger og andre dataoverføringer. Det er små forskjeller mellom SSL og TLS, men de er hovedsakelig like.
Beskrivelse
[rediger | rediger kilde]TLS-protokollen lar programmer kommunisere over et nettverk på en måte som unngår "tyvlytting", forkludring og meldingsforfalskning. TLS tilbyr endepunktsautentisering og privat kommunikasjon over Internett ved bruk av kryptografi. Typisk blir bare tjeneren autentisert (dvs. identiteten verifiseres), klienten forblir uautentisert; dette betyr at sluttbrukeren (en person eller et program) kan være sikker på motpartens identitet. Det neste nivået med sikkerhet kalles gjensidig autentisering. Begge partene er sikre på hvem de kommuniserer med. Gjensidig autentisering krever en PKI (Public Key Infrastructure) mot klientene med mindre TLS-SPK eller TLS-SRP brukes. De tilbyr sterk gjensidig autentisering uten å måtte lage en PKI.
TLS består i grunn av tre faser:
- Partene avtales om algoritmestøtte.
- Nøkler utveksles og identiteter autentiseres.
- Symmetrisk chifferkryptering og meldingsautentisering.
I den første fasen avtales klienten og tjeneren om krypteringsmetoden. Dette bestemmer hvilke chiffere som brukes, nøkkelutveksling, autentiseringsalgoritmer og meldingsautentiseringskoder (MAC-er). Nøkkelutveksling og autentiseringsalgoritmene er typisk offentlige nøkkelkrypteringsalgoritmer eller som i TLS-SPK forhåndsdelte nøkler. Meldingsautentiseringskodene genereres av kryptografiske spredefunksjoner (hashing functions) ved bruk av HMAC.
Typiske algoritmer:
- For nøkkelveksling: RSA, Diffie-Hellman, DSA, SRP, PSK.
- Symmetriske chiffere: RC4, Trippel DES, AES eller Camellia. Eldre versjoner av SSL brukte RC2, IDEA og DES.
- For kryptografisk spredefunksjon: HMAC-MD5 eller HMAC-SHA. Eldre versjoner av SSL brukte også MD2 og MD4.
- Se også utdypende artikkel om Asymmetrisk kryptering
Hvordan det virker
[rediger | rediger kilde]Først gjør klienten og tjeneren en kommunikasjonssjekk (handshake) og bestemmer seg om forskjellige parametere som brukes for å skape en sikker kobling.
- Kommunikasjonssjekken begynner når klienten kobler seg til en TLS-kapabel tjener og ber om en sikker tilkobling. Klienten presenterer en liste støttede chifferkoder og spredefunksjoner (hash functions).
- Fra denne listen velger tjeneren den sterkeste chifferekoden og spredefunksjonen som den også støtter og underretter klienten om valget.
- Tjeneren sender tilbake sin ID som et digitalt sertifikat. Vanligvis inneholder sertifikatet tjenerens navn, den klarerte sertifikat-autoriteten og tjenerens offentlige krypteringsnøkkel.
Klienten kan ta kontakt med tjeneren som utleverte sertifikatet (den nevnte sertifikats-autoriteten) og bekrefte at sertifikatet er autentisk før den fortsetter.
- For å generere koblingens nøkler, krypterer klienten et tilfeldig tall med tjenerens offentlige nøkkel og sender resultatet til tjeneren. Bare tjeneren kan dekryptere det (med dens private nøkkel) – dette gjør sitt til at nøklene holdes skjult ovenfor en tredjepart. Det er bare tjeneren og klienten som har tilgang til disse dataene.
- Ut ifra det tilfeldige tallet genererer begge parter nøkler for kryptering og dekryptering.
Dette slutter kommunikasjonssjekken (handshake) og den sikrede koblingen kan begynne. Den sikrede koblingen krypteres og dekrypteres med de genererte nøklene frem til koblingen lukkes.
Alle de nevnte stegene må fullføres for at TLS-kommunikasjonssjekken skal lykkes og koblingen skapes.
Applikasjoner
[rediger | rediger kilde]TLS kjører på laget under applikasjonsprotokollene som HTTP, FTP, SMTP, NNTP og XMPP og over en pålitelig transportprotokoll som for eksempel TCP. TLS kan tilby sikkerhet for en hvilken som helst protokoll som bruker pålitelige koblinger (slik som TCP), men det er best brukt med HTTP. Denne kombinasjonen kalles HTTPS og brukes for å sikre WWW-sider for elektronisk handel og kapitalforvaltning. SMTP er også et område der TLS har vokst, noe som er spesifisert i RFC 3207. Disse applikasjonene bruker PKI-er for å verifisere identiteten til motparten.
Ett økende antall klient- og tjenerprodukter støtter TLS som standard, men mange mangler fortsatt støtte. Som et alternativ er det mulig at brukere ønsker å bruke frittstående TLS-produkter som Stunnel.
Wrappere som Stunnel er avhengige av å oppnå en TLS-kobling umiddelbart simpelthen ved å koble til en separat port reservert for formålet. For eksempel er standard-TCP-porten for HTTPS 443 for å skille det fra HTTP på port 80.
TLS kan også brukes for å overføre (tunnel) et helt nettverksstakk for å skape en VPN, som i tilfellet med OpenVPN. Mange leverandører forener krypterings- og autentiseringsmekanikkene i TLS med autorisering. Det har også vært en betydelig utvikling siden slutten av 1990-tallet i å skape en klientteknologi på utsiden av nettleseren som muliggjør klient/server-applikasjoner. Når TLS sammenliknes med tradisjonelle IPsec-VPN-teknologier, har TLS noen iboende fordeler ved brannmur og NAT-overfart, noe som gjør det enklere å administrere fjerntilgang (remote-access).
TLS brukes også i økende grad som standard-metoden for å beskytte SIP-applikasjonssignalisering. TLS kan brukes for å skaffe autentisitet og kryptering av SIP-signalisering assosiert med VoIP og andre SIP-baserte applikasjoner.