Hvordan Diffie-Hellman Key Exchange giver krypteret kommunikation


En effektiv cybersikkerhedspolitik inkorporerer moderne kryptografi til sikker datatransmission. Kryptering af data beskytter følsomme oplysninger under kommunikationsudveksling, så kun dem, der er autoriseret til at dekryptere disse data, kan få adgang til dem. Uden kryptering risikerer alle data, der overføres over det offentlige internet, at blive aflyttet og misbrugt på ondsindet vis. Kryptering hjælper med at forhindre stjålne data gennem en række værktøjer, herunder kryptografiske cifre som Diffie-Hellman-nøgleudvekslingen.

Denne artikel giver et kort overblik over, hvordan Diffie-Hellman-nøgleudvekslingen fungerer til kryptering over en offentlig kommunikationskanal, identificerer potentiel risikoeksponering ved brug af Diffie-Hellman-primtal og skitserer tre løsninger til at sikre din brug af Diffie-Hellman-algoritmen.

Hvad er kryptografisk nøgleudveksling?

I kryptografi refererer nøgleudveksling til den proces, hvorigennem krypteringsnøgler udveksles mellem to eller flere parter. Nøglen gør det muligt for hver part at kryptere meddelelser, de ønsker at sende, og dekryptere meddelelser, de har modtaget.

Kryptering giver et lag af sikkerhed mellem dine data og potentielle angribere. Komplekse krypteringsalgoritmer beskytter dataene mod potentiel dekryptering ved brute force-angreb, der kan gætte krypteringsnøglen. Der findes en række krypteringssuiter med variable komponenter. Krypteringsstandarder ændrer sig konstant, men brug af en række af de værktøjer, der er tilgængelige til offentlig nøgleinfrastruktur, såsom asymmetrisk og symmetrisk nøglekryptering, kan hjælpe dig med at opretholde en stærk cybersikkerhedsstilling.

Asymmetrisk kryptering er afhængig af et nøglepar (en offentlig nøgle og en privat nøgle), hvor den offentlige nøgle krypterer dataene, og den private nøgle dekrypterer dem. Meddelelsen eller dataene kaldes klartekst. Efter at være blevet krypteret af en nøgle, kaldes den chiffertekst. Asymmetrisk nøglekryptering er grundlæggende for SSL/TLS-protokoller, der giver sikker kommunikation over HTTPS.

Med symmetrisk nøglekryptering bruger afsenderen og modtageren en enkelt identisk nøgle til at dekryptere meddelelser. Diffie-Hellman nøgleudveksling er en af de mest almindeligt anvendte symmetriske krypteringsmetoder, der bruges i offentlig nøglekryptografi.

Diffie-Hellman nøgleudveksling

Diffie-Hellman-nøgleudvekslingsalgoritmen er en metode til at acceptere og beregne en hemmelig symmetrisk nøgle mellem parter på en usikker kanal eller et offentligt netværk. Taster kan være flygtige (bruges til en enkelt session), statiske (langvarige) eller en kombination af de to (semistatiske). Den er opkaldt efter Whitfield Diffie og Martin Hellman, som offentliggjorde deres samarbejde om offentlige algoritmer i 1976. Hellman har foreslået at omdøbe den til Diffie-Hellman-Merkle nøgleudveksling for at inkludere Ralph Merkles bidrag.

Diffie-Hellman-nøgleudveksling kombinerer typisk en offentlig variabel og modulo-operator med to private variabler for at resultere i en delt symmetrisk krypteringsnøgle. Diffie-Hellman nøgleudveksling bruger store primtal til at beregne nøglerne. Udvekslingen kræver enighed om en indledende prime- og en modulo-operatør, så beregningen for nøgleaftale vil være konsistent mellem begge parter, på trods af at der ikke udveksles hemmelige oplysninger over offentlige kanaler.

Med Diffie-Hellman-nøgleudveksling bliver de to parter enige om en fælles offentlig variabel (generatoren) med en heltalsværdi og et modul, som typisk er et stort primtal på 2000 eller 4000 bit. Hver part har deres egen private variabel (nogle gange kaldet en privat nøgle), der giver en eksponentfunktion. Selvom disse variabler nogle gange omtales som offentlige og private nøgler, er det vigtigt at bemærke, at Diffie-Hellman ikke er asymmetrisk nøglekryptering, men snarere en metode til beregning af en delt symmetrisk nøgle gennem eksponentiering.

Hver part vil tage den offentlige variabel til deres private variabel, køre modulo-operationen for at opnå et numerisk resultat og derefter udveksle resultatet. Når hver part har modtaget den offentlige variabel til afsenderens private variabel, tager de dette resultat til deres egen private variabel og kører modulo-operationen, som beregner til det samme endelige resultat for begge parter. Resultatet af denne beregning er den delte hemmelige nøgle.

Da den delte hemmelige nøgle kræver både den offentlige variabel, der udveksles, og de private variabler, der ikke udveksles, bliver det sværere for en hacker at bestemme den delte hemmelige nøgle, da det er beregningsmæssigt vanskeligt at tage roden af en ligning, og hackeren ikke har direkte adgang til nogen af parternes private variabel. Når modulet er usædvanligt stort, bliver modulo-operationen ekstremt vanskelig at knække. Diffie-Hellmans brug af store primtal gør diskret logaritmeberegning vanskelig, hvilket er grunden til, at Diffie-Hellman ofte anvendes som en del af en krypteringssuite.

Der er dog begrænsninger, da Diffie-Hellman-nøgleudveksling ikke kræver godkendelse mellem parter. Logjam-sårbarheden (CVE-2015-4000) gør det f.eks. muligt for en hacker at nedgradere en sikker forbindelse og anvende logjam-præberegning for kendte primtal, der bruges i 512-bit og 1024-bit implementeringer. Når du bestemmer dine krypteringspakker og vælger den kryptografiske algoritme, skal du sikre dig, at du har afbalanceret eventuelle begrænsninger mellem komponenterne.

Resultater af Diffie-Hellman-risici

Diffie-Hellman-algoritmen giver en metode til at bestemme et hemmeligt tal, der er relativt simpelt at opnå og beregningsmæssigt vanskeligt at knække. Der er stadig nogle risici forbundet med at bruge Diffie-Hellman, især hvis primtallet er svagt eller almindeligt.

Du kan også bruge et automatiseret scanningsværktøj, der tager højde for de nødvendige data for at sikre, at du hurtigt kan identificere eventuelle svage led i krypteringsstandarderne for dine eksterne aktiver. UpGuard BreachSight giver kontinuerlig overvågning og automatiseret scanning for potentielle trusler, herunder kendte sårbarheder relateret til Diffie-Hellman-nøgleudveksling:

  • Svag Diffie-Hellman-primtal brugt i nøgleudveksling
  • Almindelig Diffie-Hellman-primtal brugt i nøgleudveksling

Små nøglestørrelser og forudsigelige primtal kan give angribere mulighed for at bryde Diffie-Hellman-krypteringsnøglen. Nogle Diffie-Hellman-nøgler bruger de samme fælles primtal. Tidligere sårbarheder, som logjam-sårbarheden, har gjort det muligt for angribere at bryde disse kendte primtal, hvilket kan føre til passiv lytning af uautoriserede agenter og man-in-the-middle-angreb (også kendt som person-in-the-middle-angreb). UpGuard scanner også for Logjam-sårbarheden med fundet Sårbar over for CVE-2015-4000 (Logjam).

For at forhindre et svagt primtal skal du sørge for at bruge primtal, der er mindst 2048-bit eller større. Du kan også skifte til Elliptic-Curve Diffie-Hellman Ephemeral (ECDHE) nøgleudveksling, som bruger Diffie-Hellman-protokollen med flygtige nøgler og elliptisk kurvekryptografi.

Ud over de to Diffie-Hellman-resultater evaluerer UpGuard også svage eller usikre SSL/TLS- og krypteringspakker for at sikre, at dit websted implementerer stærke cybersikkerhedsforanstaltninger. For at forstå, hvordan UpGuard evaluerer disse resultater, kan du læse vores artikel om svag SSL.

Nuværende UpGuard-brugere kan logge ind og få adgang til deres risikoprofil for at søge efter Diffie-Hellman-nøgleudvekslingsresultater blandt deres aktiver. Hvis du ikke er en nuværende UpGuard-bruger, og du vil køre en automatiseret scanning af dine aktiver med BreachSight, skal du tilmelde dig en prøveversion.

Når du har identificeret en krypteringsrisiko blandt dine aktiver, kan du opsætte sikkerhedsforanstaltninger for at afhjælpe problemet, så brugerne forbliver beskyttet, når de får adgang til dit websted.

Sådan implementeres Diffie-Hellman Key Exchange til SSL/TLS-kryptering

Diffie-Hellman-nøgleudveksling er gavnlig for kryptering over offentlige netværk. For at sikre, at din brug af Diffie-Hellman giver de nødvendige sikkerhedsforanstaltninger, kan du implementere Diffie-Hellman-udvekslingen for Transport Layer Security (TLS) med følgende tre anbefalinger.

Deaktiver eksport af krypteringspakker

Eksportkrypteringspakker er krypteringskrypteringspakker med lav styrke, der kan introducere nedgraderingsangreb på TLS-forbindelser. Eksportkrypteringspakker er svage af design og bør fjernes, medmindre det udtrykkeligt kræves på grund af lovgivningsmæssige behov.

Implementer elliptisk-kurve Diffie-Hellman Ephemeral (ECDHE)

Elliptisk kurvekryptografi bruger elliptiske kurver over endelige felter til at hjælpe med at generere krypteringsnøglen. Ved at bruge midlertidige, flygtige nøgler til Diffie-Hellman-nøgleudveksling vil hver krypteringsudveksling kræve en ny nøgle i stedet for genbrug af statiske nøgler. ECDHE-kryptering tilføjer også en elliptisk kurve til det diskrete logaritmeproblem, hvilket øger problemets kompleksitet og sænker bittærsklen for det samme sikkerhedsniveau. ECDHE giver også mulighed for perfekt forward secrecy. De fleste browsere foretrækker Elliptic-Curve Diffie-Hellman (ECDH) nøgleudveksling frem for finite field Diffie-Hellman.

Brug en stærk Diffie-Hellman-gruppe

For at forhindre forberegning og potentielle aflytninger skal du bruge en stærk Diffie-Hellman-gruppe på mindst 2048 bit eller mere. De fleste moderne webbrowsere, herunder Google Chrome, Mozilla Firefox og Microsoft Internet Explorer, kræver en gruppestørrelse på mindst 1024 bit for Diffie-Hellman offentlig nøglekryptering, og beregningen bliver sværere at knække med større bitstørrelser.

For at sikre, at din server bruger stærke ECDHE-parametre, skal du implementere Mozillas anbefalede krypteringspakker, når du konfigurerer din server. Mozillas Server Side TLS giver en guide til konfiguration og anbefalede krypteringspakker til sikkerhed. Du kan bruge SSL Configuration Generator til at generere konfigurationskode i henhold til dine server- og miljøbehov.

Nogle serversoftwareudbydere tilbyder også anbefalinger til implementering:

  • Microsoft Internet Information Services (IIS): Opdateret understøttelse af Diffie-Hellman Key Exchange
  • Amazon Elastic Load Balancing: Foruddefinerede SSL-sikkerhedspolitikker for klassiske Load Balancers
>

For anden software skal du bruge den relevante konfigurationsfil til at foretage ændringer:

  • Apache HTTP-server: [.rt-script]httpd.conf[.rt-script] eller for specifikke virtuelle værter, der findes i mappen [.rt-script]/etc/apache2/sites-available/[.rt-script]
  • Apache Tomcat: [.rt-script]server.xml[.rt-script]
  • Dovecot: [.rt-script]/etc/dovecot.conf[.rt-script]
  • HAProxy: [.rt-script]/etc/haproxy/haproxy.cfg[.rt-script]
  • Lighttpd: [.rt-script]/etc/lighttpd/lighttpd.conf[.rt-script]
  • Nginx: serverblokken i mappen [.rt-script]/etc/nginx/sites-enabled/default[.rt-script]
  • Postfix SMTP: [.rt-script]/etc/postfix/main.cf[.rt-script]
  • Sendmail: [.rt-script]/etc/mail/sendmail.mc[.rt-script]

Når du har implementeret dine opdaterede konfigurationsindstillinger, kan du udvide din brug af Diffie-Hellman med andre kryptografiske værktøjer, såsom digitale signaturer til godkendelse. Du kan f.eks. bruge ECDHE-RSA-certifikater, så RSA-algoritmen kan godkende kilden til meddelelsen.