HPKP ir novecojusi tīmekļa drošības atbildes galvene, akronīms apzīmē HTTP publiskās atslēgas pins. Tas bija paredzēts, lai neļautu apdraudētai vai negodīgai sertifikācijas iestādei izdot publiski uzticamu, bet hakeru kontrolētu HTTPS sertifikātu vietnei. Šādā gadījumā hakeri varētu atšifrēt jebkuru pārtverto HTTPS trafiku uz ietekmēto vietni.
Padoms. Tīmekļa atbilžu galvenes ir metadatu daļas, ko serveris iekļauj, atbildot uz pieprasījumiem. Neliela no tām apakškopa tiek saukta par drošības galvenēm, jo tās iespējo un konfigurē dažādus drošības līdzekļus.
HTTPS sertifikātu infrastruktūra
Sertifikātu infrastruktūra, uz kuras ir izveidots HTTPS, ir balstīta uz uzticamības tīklu. Vairāki uzņēmumi darbojas kā sertifikācijas iestādes (CA), kas publicē vienu vai vairākus saknes sertifikātus. Saknes sertifikātu kopa ir iekļauta visās uzticamības veikalā esošajās ierīcēs. Kad vietne no CA pieprasa savu HTTPS sertifikātu, sertifikātu paraksta saknes sertifikāts. Kad jūsu dators redz HTTPS sertifikātu, tas pārbauda parakstu. Ja sertifikātu paraksta saknes sertifikāts, kuram tas uzticas, jūsu dators uzticas arī HTTPS sertifikātam.
Padoms. CA var būt arī starpposma sertifikāti, kas parakstīti ar saknes sertifikātu. Šos starpposma sertifikātus var izmantot arī vietņu HTTPS sertifikātu parakstīšanai.
Sertifikācijas iestādes uzdevums ir izsniegt sertifikātu tikai tad, kad viņi ir pārliecinājušies, ka persona, kas to pieprasa, ir patiesais vietnes īpašnieks. Šīs struktūras ideja ir tāda, ka, ja hakeris izveido savu sertifikātu vietnei, to neparakstīs CA, kurai jūsu dators uzticas, un tāpēc jūs redzēsit brīdinājumu.
Ko izdarīja HPKP?
Visa sertifikātu sistēma ir atkarīga no sertifikācijas iestāžu uzticamības. Tomēr sākotnēji nebija aizsardzības pret CA, ko apdraud hakeri vai negodīgi un izvēlējās nepareizi izsniegt sertifikātus.
HPKP tika izstrādāta kā aizsardzība pret šo iespēju. Tas ļauj vietnēm norādīt ekskluzīvu sertifikātu sarakstu, kuriem var uzticēties vietnei procesā, ko sauc par piespraušanu. Bija iespējams piespraust saknes vai starpposma sertifikātu, būtībā ļaujot vienai CA izsniegt sertifikātus vietnei. Bija iespējams arī piespraust pašas vietnes sertifikātu, neļaujot pat pareizajai CA izsniegt citu derīgu sertifikātu.
Tehniski tiek piesprausts nevis pats sertifikāts, bet gan sertifikāta atslēgas jaucējvārds. Hash ir vienvirziena kriptogrāfijas funkcija. Tas nozīmē, ka ir iespējams pārbaudīt, vai vietnes pārlūkprogrammai iesniegtais sertifikāts atbilst piespraustajam sertifikātam, taču nav iespējams izmantot jaucējfunkciju, lai izveidotu derīgu sertifikātu.
HPKP bija jāpiesprauž vismaz divas atslēgas, no kurām vismaz vienai jābūt rezerves kopijai, nevis pašreizējā sertifikātu ķēdē. Šis dublējums ļauj konfigurēt vienmērīgu nodošanu jaunam sertifikātam, kas neliedz lietotājiem izveidot savienojumu.
Ja tīmekļa vietnes pārlūkprogrammai iesniegtais HTTPS sertifikāts neatbilst vienam no piespraustiem sertifikātus, tad pārlūkprogrammai tas ir jānoraida un neļauj lietotājam apiet sertifikātu kļūdas ziņojums.
HPKP struktūra
HPKP galvenē ir trīs obligātās daļas un divas izvēles daļas. Galvenes nosaukumam ir jābūt “Public-Key-Pins”, nākamajos divos vai vairāk sertifikātos ir jābūt base64 kodētam SHA256 jaucējam, kas ir piesprausts formātā “pin-sha256=”.
Padoms. SHA256 ir HPKP izmantotais jaukšanas algoritms. Base64 ir rakstzīmju kopa ar 64 rakstzīmēm: 0-9, a-z, A-Z un īpašajām rakstzīmēm “+” un “/”. “=” tiek izmantots, lai vajadzības gadījumā aizpildītu līdz pat pēdējām divām rakstzīmēm.
Izvēles iestatījumi ir “includeSubDomains” un “report-uri”. “includeSubDomains uzdod pārlūkprogrammai piemērot HPKP aizsardzību jebkuram pašreizējās vietnes apakšdomēnam “maksimālā vecuma” taimera darbības laikā. “report-uri” ir funkcija, kas ļauj norādīt vietni, uz kuru var nosūtīt kļūdu ziņojumus, un ir izstrādāta, lai palīdzētu identificēt un atrisināt problēmas.
Ir otrs galvenes variants ar nosaukumu “Public-Key-Pins-Report-Only”. Viss ir tas pats, tomēr, ja tiek atrasta kļūda, netiek veiktas nekādas darbības, izņemot kļūdas ziņojuma nosūtīšanu pārlūkprogrammai un “report-uri”, ja tāda ir konfigurēta. Tikai pārskata variants tika izstrādāts, lai iespējotu pilna mēroga galvenes testēšanu pirms izvietošanas, kur kļūdas lietotājiem neradītu problēmas.
Problēmas ar HPKP
HPKP tika pārtraukta divu galveno iemeslu dēļ. Bija divi veidi, kā galvene varēja izraisīt nopietnas problēmas vietnei, kas to izmanto, — tie tika nosaukti HPKP Suicide un Ransom PKP.
HPKP pašnāvība ir problēma, kuras dēļ vietnes likumīgie īpašnieki zaudē piekļuvi visām piespraustajām atslēgām. Tas var notikt nejaušas dzēšanas, uzlaušanas, vīrusu, datu sabojāšanas vai daudzu citu iemeslu dēļ. Pareizas HPKP ieviešanas sarežģītības dēļ un jo īpaši tā atjaunināšana sertifikātu rotācijas laikā ir salīdzinoši viegli pieļaut konfigurācijas kļūdu. Tomēr HPKP gadījumā, ja kļūdāties, visi nesenie jūsu vietnes apmeklētāji nevarēs piekļūt jūsu vietnei visā “maksimālā vecuma” taimera garumā. Vietne smashingmagazine.com ievietoja an rakstu sīki izklāstot savu pieredzi tieši ar šo problēmu, kuras dēļ vietne vairumam apmeklētāju četras dienas bija bezsaistē, pirms tika ieviests labojums.
Ransom PKP ir teorētisks uzbrukums, kurā hakeris iegūst piekļuvi tīmekļa serverim, pēc tam nozog visus uzticamos sertifikātus un atslēgas un pēc tam pieprasa izpirkuma maksu par to atgriešanu. Parastā iestatījumā jūs varētu vienkārši ģenerēt jaunas atslēgas un sertifikātus, un vietne tiks dublēta un darbotos mazāk nekā stundas laikā. Tomēr, ja HPKP ir iespējots, šīs atslēgas ir piespraustas. Ja nevarēsiet apkalpot piesprausto sertifikātu lietotājiem, viņi nevarēs piekļūt vietnei "maksimālā vecuma" taimera darbības laikā. Atkarībā no konfigurācijas un dublējumkopiju pastāvēšanas šo problēmu var nebūt iespējams atrisināt.
Ar abām šīm problēmām jauni lietotāji varētu piekļūt vietnei kā parasti nekad neesmu redzējis veco HPKP galveni, kas liek pārlūkprogrammai uzticēties tikai pazudušajam sertifikāti. Savukārt visiem nesenajiem apmeklētājiem, piemēram, pastāvīgajiem klientiem un lasītājiem, būtu jāgaida visu “maksimālā vecuma” taimera darbības laiku.
Ņemot vērā šo problēmu nopietnību un konfigurācijas un uzturēšanas sarežģītību, HPKP galvenes izmantošana bija ļoti zema. Galu galā lielākās pārlūkprogrammas piekrita pilnībā atteikties no tā atbalsta, un dažu gadu laikā HPKP galvene tika vispārēji novecojusi.