HPKP yra nebenaudojama žiniatinklio saugos atsako antraštė, akronimas reiškia HTTP viešojo rakto kaiščius. Juo buvo siekiama neleisti pažeistai ar nesąžiningai sertifikavimo institucijai išduoti viešai patikimo, bet įsilaužėlių kontroliuojamo svetainės HTTPS sertifikato. Pagal šį scenarijų įsilaužėliai galėtų iššifruoti bet kokį perimtą HTTPS srautą į paveiktą svetainę.
Patarimas: Žiniatinklio atsakymų antraštės yra metaduomenų dalys, kurias serveris įtraukia atsakydamas į užklausas. Nedidelis jų pogrupis vadinamas saugos antraštėmis, nes jos įgalina ir konfigūruoja įvairias saugos funkcijas.
HTTPS sertifikatų infrastruktūra
Sertifikatų infrastruktūra, ant kurios sukurtas HTTPS, yra pagrįsta pasitikėjimo tinklu. Kai kurios įmonės veikia kaip sertifikavimo institucijos (CA), kurios skelbia vieną ar daugiau šakninių sertifikatų. Šakninių sertifikatų rinkinys įtrauktas į visus patikimos parduotuvės įrenginius. Kai svetainė prašo savo HTTPS sertifikato iš CA, sertifikatas pasirašomas šakniniu sertifikatu. Kai jūsų kompiuteris mato HTTPS sertifikatą, jis patikrina parašą. Jei sertifikatas pasirašytas šakniniu sertifikatu, kuriuo jis pasitiki, jūsų kompiuteris taip pat pasitiki HTTPS sertifikatu.
Patarimas: CA taip pat gali turėti tarpinius sertifikatus, pasirašytus šakniniu sertifikatu. Šie tarpiniai sertifikatai taip pat gali būti naudojami svetainių HTTPS sertifikatams pasirašyti.
Sertifikatų institucijos užduotis yra išduoti sertifikatą tik tada, kai jie patvirtina, kad asmuo, kurio prašoma, yra tikrasis svetainės savininkas. Šios struktūros idėja yra ta, kad jei įsilaužėlis sukuria savo svetainės sertifikatą, jo nepasirašys CA, kuria pasitiki jūsų kompiuteris, todėl pamatysite įspėjimą.
Ką padarė HPKP?
Visa sertifikatų sistema priklauso nuo sertifikatus išduodančių institucijų patikimumo. Tačiau iš pradžių nebuvo jokios apsaugos nuo įsilaužėlių įsilaužimo arba sukčiavimo ir pasirinkimo neteisingai išduoti sertifikatus.
HPKP buvo sukurta kaip apsauga nuo šios galimybės. Tai leidžia svetainėms nurodyti išskirtinį sertifikatų, kuriais galima pasitikėti svetainėje, sąrašą, vadinamą prisegimu. Buvo galima prisegti šakninį arba tarpinį sertifikatą, iš esmės leidžiant vienai CA išduoti svetainės sertifikatus. Taip pat buvo galima prisegti pačios svetainės sertifikatą, neleidžiant net tinkamam CA išduoti kito galiojančio sertifikato.
Techniškai prisegtas ne pats sertifikatas, o sertifikato rakto maiša. Maiša yra vienpusė kriptografinė funkcija. Tai reiškia, kad galima patikrinti, ar svetainės naršyklei pateiktas sertifikatas atitinka prisegtą sertifikatą, tačiau negalima naudoti maišos norint sukurti galiojančią sertifikatą.
HPKP reikėjo prisegti bent du raktus, iš kurių bent vienas turi būti atsarginis, o ne dabartinėje sertifikatų grandinėje. Ši atsarginė kopija leidžia sukonfigūruoti sklandų perkėlimą į naują sertifikatą, kuris netrukdo vartotojams prisijungti.
Jei svetainės naršyklei pateiktas HTTPS sertifikatas neatitinka vieno iš prisegtų sertifikatus, tada naršyklė turi jį atmesti ir neleisti vartotojui apeiti sertifikato klaidos pranešimas.
HPKP struktūra
HPKP antraštė turi tris privalomas dalis ir dvi pasirenkamas dalis. Antraštė turi būti pavadinta „Public-Key-Pins“, kituose dviejuose ar daugiau sertifikatų turi būti prisegta base64 koduota SHA256 maiša tokiu formatu: pin-sha256=
Patarimas: SHA256 yra HPKP naudojamas maišos algoritmas. „Base64“ yra 64 simbolių rinkinys: 0–9, a–z, A–Z ir specialieji simboliai „+“ ir „/“. Jei reikia, simbolis „=“ naudojamas iki dviejų paskutinių simbolių.
Pasirenkami nustatymai yra „includeSubDomains“ ir „report-uri“. „includeSubDomains nurodo naršyklei taikyti HPKP apsaugą bet kuriam dabartinės svetainės padomeniui „maksimalaus amžiaus“ laikmačio laikotarpiu. „Report-uri“ yra funkcija, leidžianti nurodyti svetainę, kur galima siųsti klaidų ataskaitas, ir skirta padėti nustatyti ir išspręsti problemas.
Yra antrasis antraštės variantas, pavadintas „Public-Key-Pins-Report-Only“. Viskas yra taip pat, tačiau jei randama klaida, nereikia imtis jokių veiksmų, išskyrus klaidos pranešimo grąžinimą naršyklei ir „report-uri“, jei ji sukonfigūruota. Tik ataskaitos variantas buvo sukurtas taip, kad būtų galima atlikti viso masto antraštės testavimą prieš įdiegiant, kai klaidos nesukeltų problemų vartotojams.
HPKP problemos
HPKP buvo nebenaudojamas dėl dviejų pagrindinių priežasčių. Buvo du būdai, kuriais antraštė gali sukelti rimtų problemų ją naudojančiai svetainei: jie buvo pavadinti HPKP Suicide ir Ransom PKP.
HPKP savižudybė yra problema, kai teisėti svetainės savininkai praranda prieigą prie visų prisegtų raktų. Taip gali nutikti dėl netyčinio ištrynimo, įsilaužimo, virusų, duomenų sugadinimo ar dėl daugelio kitų priežasčių. Dėl sudėtingo teisingo HPKP diegimo, o ypač nuolat atnaujinant sertifikatus, gana lengva padaryti konfigūracijos klaidą. Tačiau naudojant HPKP, jei ką nors padarysite ne taip, visi naujausi jūsų svetainės lankytojai negalės pasiekti jūsų svetainės per „maksimalaus amžiaus“ laikmačio trukmę. Svetainė smashingmagazine.com paskelbė an straipsnis išsamiai aprašo savo patirtį, susijusią su būtent šia problema, dėl kurios dauguma lankytojų keturias dienas atjungė svetainę, kol buvo įdiegtas pataisymas.
Ransom PKP yra teorinė ataka, kai įsilaužėlis gauna prieigą prie žiniatinklio serverio, tada pavagia visus patikimus sertifikatus ir raktus ir reikalauja išpirkos už jų grąžinimą. Naudodami įprastą sąranką galite tiesiog sugeneruoti naujus raktus ir sertifikatus, o svetainę atkurti ir paleisti greičiau nei per valandą. Tačiau įjungus HPKP, šie raktai yra prisegti. Jei negalite pateikti prisegto sertifikato vartotojams, jie negalės pasiekti svetainės per „maksimalaus amžiaus“ laikmačio laikotarpį. Atsižvelgiant į konfigūraciją ir jei yra atsarginių kopijų, šios problemos gali būti neįmanoma išspręsti.
Esant abiem šioms problemoms, nauji vartotojai galės pasiekti svetainę kaip įprasta niekada nematė senosios HPKP antraštės, nurodančios jų naršyklei pasitikėti tik dabar trūkstamomis sertifikatus. Tačiau visi naujausi lankytojai, tokie kaip nuolatiniai klientai ir skaitytojai, turėtų laukti visą „maksimalaus amžiaus“ laikmačio laiką.
Atsižvelgiant į šių problemų rimtumą ir konfigūracijos bei priežiūros sudėtingumą, HPKP antraštė buvo naudojama labai mažai. Galiausiai pagrindinės naršyklės sutiko visiškai atsisakyti jos palaikymo ir per porą metų HPKP antraštė buvo visuotinai nebenaudojama.