Hvad er certificate pinning?
Certificate pinning betyder, at en app eller klient på forhånd får at vide, præcis hvilket certifikat eller hvilken offentlig nøgle den skal acceptere fra serveren. Normalt stoler en klient på ethvert certifikat, der er udstedt af en af de mange betroede udstedere i styresystemets tillidslager. Med pinning strammes det til: Kun det forventede certifikat, eller en nøgle fra en bestemt Certificate Authority, godtages, og alt andet afvises, uanset hvor gyldigt det ellers ser ud.
Hvordan virker certificate pinning?
Ved etablering af en TLS-forbindelse præsenterer serveren sit certifikat, og klienten validerer normalt kæden op til en betroet rod. En pinnende klient tilføjer et ekstra tjek: Matcher certifikatet, eller typisk et hash af dets offentlige nøgle, den værdi der er indbygget i appen? Gør det ikke, afbrydes forbindelsen. Man kan pinne på flere niveauer: selve servercertifikatet, dets offentlige nøgle eller den udstedende CA. Nøgle-pinning er mest robust, fordi certifikatet så kan fornys, uden at pinnen brydes, så længe samme nøglepar genbruges. Grundlaget er stadig almindelig kryptering og certifikatvalidering, pinning er blot et ekstra filter ovenpå.
Hvornår giver pinning mening?
Pinning er stærkest, når udvikleren kontrollerer begge ender af forbindelsen. Typiske eksempler er mobilapps, der kun taler med virksomhedens egen backend, betalings- og bankapps samt maskine-til-maskine-integrationer mellem kendte systemer. Her beskytter pinning mod, at en kompromitteret eller fejludstedende CA kan bruges til man-in-the-middle-angreb, en risiko som blandt andet ENISA beskriver i sine trusselsvurderinger. Omvendt giver pinning sjældent mening mod tjenester, I ikke selv styrer, for så bestemmer andre, hvornår certifikater og nøgler skiftes. Det var netop derfor, browsernes generelle pinning-mekanisme HPKP blev opgivet: Risikoen for at låse besøgende ude ved en fejl var større end gevinsten, og Certificate Transparency-logs overtog rollen som værn mod fejludstedelse.
Faldgruben: pinning og certifikatfornyelse
Den klassiske pinning-fejl er selvforskyldt nedetid: Serverens certifikat fornys med et nyt nøglepar, appen kender kun den gamle pin, og alle brugere mister forbindelsen, indtil en ny appversion er ude. Derfor hører pinning uløseligt sammen med styring af certifikaternes livscyklus: Fornyelser skal planlægges, nøglepar og pins skal koordineres, og appen bør altid indeholde mindst én backup-pin til et reservenøglepar. I en moden PKI er pinning altså ikke en enkeltbeslutning i appteamet, men en del af den samlede certifikatgovernance. Hvordan de dele hænger sammen i praksis, gennemgår vi i e-bogen PKI og HSM i praksis.
Sådan hjælper MI Support IT
Vi har mangeårig specialisterfaring med enterprise-PKI og hjælper jer med at designe en pinning-strategi, der beskytter uden at skabe skrøbelig drift, inklusive backup-pins, nøglerotation og fornyelsesprocesser. Læs mere under PKI Management, eller kontakt os for en konkret vurdering.