Hvad er Perfect Forward Secrecy (PFS)?
‘Perfect Forward Secrecy (PFS), også kaldt forward secrecy (FS), henviser til et krypteringssystem, der ofte og automatisk ændrer de krypteringsnøgler, der bruges til at kryptere og dekryptere informationer. Denne løbende proces sikrer, at selv hvis den seneste nøgle bliver hacket, vil kun en minimal mængde følsomme data blive afsløret og derved begrænser man skaden HVIS uheldet skulle være ude, at en hacker får adgang til systemet.
Websider, opkaldsapps og besked-apps bruger alle krypteringsværktøjer med Perfect Forward Secrecy, der skifter deres nøgler ved hver request eller hver besked i en samtale eller ved hver genindlæsning af en krypteret webside. På denne måde kompromitterer tab eller tyveri af en dekrypteringsnøgle ikke yderligere følsomme oplysninger og informationer – heller ikke yderligere nøgler ved tyveri af en dekrypteringsnøgle.
Du kan fastslå om der bruges Forward Secrecy ved at inspicere den dekrypterede version i klartekst af dataudvekslingen fra nøgleaftalefasen i led med indledningen af en given session. Et program- eller webstedskrypteringssystem giver “Perfect Forward Secrecy”, hvis det ikke afslører krypteringsnøglen under hele sessionen.
PFS eksempel
Normalt har servere særlige krypteringsnøgler, som de bruger til at holde kommunikationssessioner private og sikre. Når klienten, lad os kalde den “Mette”, ønsker at chatte med serveren “Jens”, finder Mette på en hemmelighed (den såkaldte “pre-master secret“) og krypterer den ved hjælp af Jens' særlige krypteringsnøgle. De bruger denne krypterede pre-master-“hemmelighed” til at fortsætte med at kryptere resten af samtalen.
De eneste personer, der kan dekryptere det, klient-Mette og server-Jens taler om, er dem, der kender Jens' oprindelige krypteringsnøgle. Det kan f.eks. være hans netværksteam. Jens' team er ansvarligt for at opspore kilden til alle fejl, der ødelægger Jens' system. Så det er vigtigt for dem at vide, hvad Jens taler om og med hvem.
Problemet er, at server-Jens bruger den samme nøgle til at kryptere alle pre-masterhemmeligheder med samtlige klienter – hvilket betyder, at hvis en hacker skulle finde ud af den enkelte krypteringsnøgle (via brute force eller andre angrebsteknikker), ville de kunne udspionere alle Jens' samtaler, uden at nogen ved det.
Derimod, så bruger serveren “Torben” Perfect Forward Secrecy (PFS) til at sikre sine samtaler.
Når klienten Mette starter en samtale med Torben, mødes Mette og Torben for at finde frem til en unik krypteringsnøgle – deres pre-master hemmelighed– som er helt privat og KUN gælder for den pågældende samtale. Uden at inddrage Torbens langtidsnøgle beslutter server-Torben og klient-Mette deres krypteringsnøgle bag lukkede døre. Ingen – ikke engang Torbens eget netværksteam, kan se eller høre, hvad eller hvordan de beslutter deres unikke nøgle skal se ud.
Hvis en hacker får fat i Torbens langtidsnøgle, kan han eller hun således stadig ikke dekryptere nogen krypterede samtaler. Selv hvis de stjal en unik PFS-krypteringsnøgle, ville kun Torbens kommunikation med Mette være sårbar.
Hvorfor taler alle om Perfect Forward Secrecy?
Der er sket et par ting det sidste årti, som har gjort, at flere PFS-ordninger er blevet en del af cybersikkerheds-snakken.
For det første viste Edward Snowden os, hvor meget netværkstrafik der i hemmelighed er blevet indsamlet af f.eks. den amerikanske regering – og hvis én instans kan køre et masseovervågningsprogram, kan andre også. For første gang i menneskehedens historie var global hemmelig overvågning ikke blot en mulighed, men en realitet.
Når det er sagt, havde it-verdenen i årevis levet med en indbygget grad af risiko. Jo længere man holder en hemmelighed hemmelig, jo mere tid giver man skurkene til at finde ud af det. Heldigvis var SSL-nøgler på lang sigt sikre nok til, at denne fare syntes håndterbar.
Derefter viste Heartbleed-sårbarheden, hvor simpelt et OpenSSL-angreb i virkeligheden kan være. Efter i årevis at have måttet finde sig i langtids-SSL-nøgler og stadigvæk være rystet over Snowden-afsløringerne, råbte det globale samfund højere og højere for en mere kortvarig metode til nøgleudveksling.
Efter nogle år besluttede Apple, at alle App Store-apps skal bruge PFS-kryptering – og i marts 2018 færdiggjorde Internet Engineering Task Force den nye TLS 1.3-standard, som kræver perfekt forward-kryptering for alle TLS-sessioner.
Desværre er det smukke ved Perfect Forward Secrecy også dens største problem: Hackere kan ikke dekryptere dine data, men medmindre de anvender en af to meget specifikke dekrypteringsmetoder, kan dit eget team heller ikke.
Hvilket leder os til næste spørgsmål…
Hvordan dekrypterer du Perfect Forward Secrecy?
De eneste måder at dekryptere PFS-sessioner på er at dirigere trafikken gennem et sæt TLS-inspektionsenheder eller at installere en agent på serveren. Den ene af disse døre fører til sikkerhed og den anden fører til døden (eller i det mindste til større risiko for nedsat hastighed.)
1) TLS-inspektionsenheder etablerer sig selv som falske slutpunkter mellem en klient og en server og narrer derved begge dele. Det fører til to forskellige TLS-sessioner med inspektionsenheden lige midt i mellem. Flere TLS-sessioner betyder flere ressourcekrav, og det faktum, at en inspektionsenhed aktivt skal snyde sin egen session med hvert legitimt slutpunkt, betyder, at du risikerer at bryde TLS-autentificeringen og forårsage andre problemer.
2) Installation af en agent på serveren betyder integration af en tredjepartsløsning med din server, så de kan få fat i krypteringsnøglerne indefra og give synlighed uden at bryde hver enkelt TLS-session i to dele. Der findes en lang række agenter, der er i stand til at udføre denne proces, og hvor meget pres denne metode lægger på dine ressourcer afhænger helt af, hvor let den pågældende agent ender med at være.