Heldigvis har vi i dag asymmetrisk offentlig-nøgle-kryptering, der gør det muligt for os at forhandle en delt hemmelighed med en anden part, uanset om det er en person eller en maskine; uanset om vi har mødt den pågældende eller ej. Det er det, der ligger bag nøgleudvekslings-delen af kommunikation med SSL/TLS (brugt i HTTPS), SSH og PGP. Offentlig-nøgle-kryptering er også en iboende del af alle kryptovalutaer. Det er et fascinerende emne, og det er også svært at få begreb om, men vi overlader det til dig selv at fundere over det. Alt, hvad du behøver at vide, er, at det kræver, at parterne har ikke én, men to nøgler – et nøglepar. Kun en af dem behøver at blive holdt hemmelig, og der indgår vilkårlige tal.
Ransomware, der ringer hjem til en central server, vil kunne bruge symmetrisk kryptering til sin usle adfærd. En vilkårlig nøgle og en unik identifikator kan blive genereret på målmaskinen, og begge disse tal kan blive sendt og derefter lagret på denne command and control-server (CC). Alle spor af nøglen bliver fjernet fra maskinen, når filerne er blevet ødelagt, og det intetanende offer sender derefter løsesummen sammen med sin unikke identifikator til afpresseren.
Hvis denne afpresser har det mindste gran af anstændighed, vil han eller hun levere dekrypteringsnøglen, og livet kan gå videre. Den proces bygger på en grad af centralisering: Et eller andet sted skal der lagres en liste over nøgler og tokens. Til storstilede angreb er dette ikke ideelt. Ofte bruger man flere CC-servere med henblik på redundans, og det giver bedre mening at lagre disse nøgler lokalt på en eller anden måde. Uden offentlig-nøgle-kryptering udvikler det sig til en Punkt-22-kaskade af frugtesløshed. Man kan kryptere nøglen og lagre den lokalt, men hvor lagrer man den nøgle, som skal kryptere den nøgle?
En angriber kan i stedet bruge en hybridmetode, hvormed den symmetriske nøgle (eller nøglerne), der bliver brugt til at kryptere alle filerne, bliver gemt på offerets maskine, men krypteret asymmetrisk. Den enkleste brug af denne metode ville kræve, at vores angriber kun skulle lede efter en enkelt nøgle, mens den offentlige nøgle kunne bliver lagret lokalt – for eksempel inden i dekrypteringsprogrammet.
Når offeret skal genvinde sine filer, må han eller hun altså betale løsesummen, hvilket udløser angriberens private nøgle, som bliver kombineret med den offentlige nøgle, og disse to nøgler bliver så brugt til at dekryptere den lokalt lagrede symmetriske nøgle. Enkelt, ikke sandt? Hvem vover at påstå, at disse folk ikke arbejder for pengene?
Det gør de imidlertid ikke. Ransomware og CC-servere kan man uden videre købe eller leje via de mere tvivlsomme dele af det mørke internet, og al denne nøglehåndtering kan man ordne med nogle få klik i en venlig brugerflade. Det er ikke vanvittig klogt at lade en enkelt privat nøgle styre alle ofrene.
Det er enkelt nok at beskytte den, mens den bliver sendt af sted fra C2-serveren til offerets maskine over HTTPS eller SSH, men en tilstrækkelig omhyggelig researcher ville med tid nok og udsigt til et honorar være i stand til at udlede den af hukommelsen under dekrypteringsfasen. På denne måde ville betaling af løsesummen én gang (eller måske et par gange) kunne levere dekrypteringsmateriale for enhver. Det er ikke det, malwareskabere ønsker, og derfor bliver der som regel brugt mere avanceret nøgledistribution.