SSL Teknik

SSL og TLS

Krypteringsprotokollerne Secure Sockets Layer (SSL) og efterfølgeren Transport Layer Security (TLS) beskytter kommunikationen på internettet. SSL blev oprindeligt udviklet af Netscape, og efter en række forbedringer er videreudviklet til SSL v3, som tilføjede ekstra sikkerhed mod aflytning og forfalskning af meddelelser. SSL v3 kan også ses som TLS 1.0. Selv om SSL er det mest anvendte udtryk, bruges termerne SSL og TLS ofte som indbyrdes udskiftelige. Protokollerne sikrer:

  • Autentificering af serveren (for eksempel serveren i en webshop) og eventuelt klienten (for eksempel browser af den besøgende) ved hjælp af et SSL certifikat. Der anvendes asymmetrisk kryptering.
  • Garanti for privatlivets fred ved at kryptere de udvekslede data, baseret på en skiftende, symmetrisk nøgle.
  • Garanti for integritet så snart data ændres, er forbindelsen brudt.

Alle SSL protokoller er nu forældede og ikke længere sikker. Rådgivningen er derfor at deaktivere den på serveren.

TLS Handshake Procedure

Opsætning af en TLS-forbindelse sker i en række trin. I de fleste tilfælde tager hele proceduren ikke mere end et sekund.

Når klienten og serveren har besluttet at bruge TLS forbindelsen (ofte bruges port 443 til HTTPS), etableres forbindelsen yderligere ved hjælp af en 'håndtryk' procedure. Under dette håndtryk er klienten og serveren enige om forskellige parametre for at etablere en sikker forbindelse:

  1. Inden SSL forbindelsen er oprettet, udveksler klienten og serveren data, for eksempel den stærkeste algoritme og den nyeste SSL / TLS protokol, som de begge støtter.
  2. Serveren sender bevis for sin identitet i form af et digitalt certifikat (certifikatets offentlige nøgle), som klienten kontrollerer for gyldighed. På den måde kender klienten med hvem han kommunikerer. I tilfælde af dobbeltsidet SSL kræver serveren også et digitalt certifikat fra klienten, så både serveren og klienten ved, hvem de kommunikerer med.
  3. Klienten bruger oplysninger fra serveren til at verificere serveren. Hvis serveren ikke kan verificeres, advares brugeren om, at der ikke kan oprettes en krypteret forbindelse. Kun når serveren kan bekræftes, vil klienten fortsætte til næste trin.
  4. Klienten krypterer et tilfældigt tal med den offentlige nøgle af certifikatet, som den modtog i trin 2 fra serveren; Dette bliver en såkaldt session-specifik pre-master hemmelighed. Klienten sender den til serveren, som kun kan dechiffrere pre-master hemmeligheden, fordi den har den private nøgle til det anvendte certifikat. Fordi kun de to nævnte parter har adgang til de anvendte nøgler, kan misbrug fra tredjeparter udelukkes.
  5. Hvis serveren har bedt om klientautentificering (i tilfælde af tosidet SSL, et valgfrit trin i håndtrykket), vil klienten underskrive et andet unikt stykke data. Disse data er unikke for denne håndtryk og er kendt for både klienten og serveren. I dette tilfælde sender klienten de underskrevne data, klientens eget certifikat og den krypterede pre-master hemmelighed til serveren.
  6. Hvis klienten ikke kan verificeres, er sessionen lukket. Hvis klienten kan bekræftes, bruger serveren sin private nøgle til at dekryptere pre-master hemmeligheden. Så udfører både klienten og serveren en række trin for at generere en master secret baseret på pre-master hemmeligheden.
  7. Både klienten og serveren bruger masterhemmeligheden til at generere sessionsnøgler. Det er symmetriske nøgler, som bruges til kodning og afkodning af oplysninger, der udveksles under SSL sessionen og for at kontrollere integriteten (dvs. at registrere eventuelle ændringer i dataene mellem afsendelse og modtagelse af data over SSL forbindelse).
  8. Klienten sender en besked til serveren. Dette indikerer, at fremtidige meddelelser fra klienten krypteres med sessionsnøglen. Klienten sender derefter en separat krypteret meddelelse, der angiver, at klientdelen af ??håndtrykket er afsluttet.
  9. Serveren sender en besked til klienten. Dette indikerer, at fremtidige meddelelser fra serveren krypteres med sessionsnøglen. Serveren sender derefter en separat krypteret besked, der angiver, at serverdelen af ??håndtrykket er gennemført.

SSL håndtrykket er nu afsluttet, og sessionen begynder. Klienten og serveren bruger nu sessionsnøglerne til at kryptere, dekryptere og verificere integriteten af ??data. For hver session (som f.eks. besøgswebsted) udføres håndtrykprocessen igen og nye nøgler bruges.

Historie

Når du opretter en sikker forbindelse, forhandler klienten og serveren en fælles protokol for at beskytte kanalen under håndtrykket. Forskellige versioner af SSL og TLS er blevet udviklet; Den nyeste version er TLS 1.3.

SSL 1.0, 2.0 og 3.0

Den første SSL 1.0-teknologi blev udviklet af Netscape i 1994. På grund af alvorlige sikkerhedsproblemer er denne version aldrig blevet offentliggjort. I 1995 offentliggjorde Netscape SSL 2.0. Sårbarhederne i den tidligere version er blevet forbedret, men SSL 2.0 havde stadig en antal kryptografiske svagheder. Igen offentliggjorde Netscape SSL 3.0 i 1996, udviklet af Paul Kocher. I denne version er protokollen blevet fuldstændigt omskrevet, og alle sikkerhedssvagheder er rettet. I 2014 blev der fundet en anden alvorlig svaghed i SSL 3.0.

PCT 1.0

Private Communications Technology (PCT) 1.0 er en protokol udviklet af Microsoft i 90erne. PCT er designet til at løse sårbarheder i version 2.0 af Netscapes Secure Sockets Layer protokol (SSL), og at tvinge Netscape ejerskab og kontrol med SSL ved at konvertere protokollen til en åben standard. PCT er nu en forældet protokol og erstattet af SSLv3 og TLS. PCT blev midlertidigt understøttet af Internet Explorer, men de seneste versioner understøtter ikke længere PCT. PCT protokollen er stadig i IIS og systembiblioteket i Windows operativsystemer, men er som standard deaktiveret.

TLS 1.0

TLS 1.0 blev først beskrevet i RFC 2246 i januar 1999 som en opgradering af SSL 3.0. Selvom der ikke er nogen signifikante forskelle mellem TLS 1.0 og SSL 3.0, kunne protokollerne ikke samarbejde. Derudover var det muligt at oprette en SSL 3.0 forbindelse med TLS 1.0, hvilket svækkede sikkerheden. I 2011 blev denne version brudt af Thai Duong og Juliano Rizzo, hvilket gør denne version ubrugelig som en sikker protokol.

TLS 1.1

TLS 1.1 blev offentliggjort i april 2006 og beskrevet i RFC4346. TLS 1.1 er en opdatering og videreudvikling af version 1.0. Denne version tilbyder flere forbedringer, såsom forbedret sikkerhed og håndtering af fejl. På trods af den forbedrede funktionalitet bruges denne version sjældent.

TLS 1.2

TLS 1.2 blev offentliggjort i august 2008 og beskrevet i RFC5246. TLS 1.2 er en videreudvikling af version 1.1 med en række væsentlige forbedringer, herunder:

  • Brugte kryptografiske hash'er, som har vist sig usikre, er blevet erstattet af SHA-256.
  • Forbedret support til mere moderne krypteringsmetoder fra Advanced Encryption Standard.
  • Fallback-kompatibilitet med det usikre SSL 2.0 fjernet.

TLS 1.3

TLS 1.3 blev færdiggjort i marts 2018, og implementeringen af det vil starte snart. Større browsere som Chrome og Firefox understøtter det allerede fra version 56 og 52. Der er ingen anmodning om ændring endnu, men bør offentliggøres snart. TLS 1.3 er en videreudvikling af version 1.2 med en række væsentlige forbedringer, herunder:

  • Hastighedsfordele, sammenlignet med den foregående version, kræves kun en frem og tilbage.
  • Forbedret sikkerhed, forældede og usikre funktioner som SHA1 og MD5 er fjernet.

SSLCheck

SSLCheck kontrollerer, om dit certifikat er korrekt installeret på din server og om der potentielt er problemer.