Какво е HPKP?

click fraud protection

HPKP е остарял заглавка за отговор на уеб сигурността, акронимът означава HTTP Public Key Pins. Той имаше за цел да попречи на компрометиран или фалшив сертифициращ орган да издаде публично доверен, но контролиран от хакери HTTPS сертификат за уебсайт. При този сценарий хакерите ще могат да дешифрират всеки прихванат HTTPS трафик към засегнатия уебсайт.

Съвет: Заглавките на уеб отговорите са части от метаданни, които сървърът включва, когато отговаря на заявки. Малко подмножество от тях се наричат ​​защитни заглавки, тъй като позволяват и конфигурират различни функции за защита.

HTTPS сертификатна инфраструктура

Инфраструктурата за сертификати, върху която е изграден HTTPS, се основава на мрежа на доверие. Редица компании действат като сертифициращи органи (CA), които публикуват един или повече основни сертификати. Набор от основни сертификати е включен във всички устройства в хранилище за доверие. Когато уебсайт поиска собствен HTTPS сертификат от CA, сертификатът се подписва от основен сертификат. Когато компютърът ви види HTTPS сертификат, той проверява подписа. Ако сертификатът е подписан от основен сертификат, на който има доверие, тогава вашият компютър също има доверие на HTTPS сертификата.

Съвет: CA може също да има междинни сертификати, подписани от основния сертификат. Тези междинни сертификати могат да се използват и за подписване на HTTPS сертификати за уебсайтове.

Работата на сертифициращия орган е да издава сертификат само когато е потвърдил, че лицето, което ги иска, е истинският собственик на уебсайта. Идеята с тази структура е, че ако хакер създаде свой собствен сертификат за уебсайт, той няма да бъде подписан от CA, на когото вашият компютър има доверие, и така ще видите предупреждение.

Какво направи HPKP?

Цялата система за сертифициране разчита на надеждността на сертифициращите органи. Първоначално обаче нямаше защита срещу компрометиране на CA от хакери или измамник и избор на неправилно издаване на сертификати.

HPKP е проектиран да бъде защита срещу тази възможност. Той позволява на уебсайтовете да определят изключителен списък от сертификати, на които може да се има доверие за уебсайта в процес, наречен закрепване. Беше възможно да се закачи основният или междинен сертификат, което по същество позволява на един CA да издава сертификати за уебсайта. Също така беше възможно да се закачи сертификатът на самия уебсайт, предотвратявайки дори правилния CA да издаде друг валиден сертификат.

Технически не самият сертификат е закрепен, а хеш на ключа на сертификата. Хешът е еднопосочна криптографска функция. Това означава, че е възможно да се провери дали сертификатът, представен на браузъра от уебсайта, съответства на фиксиран сертификат, но не е възможно да се използва хешът, за да се направи валиден сертификат.

HPKP изисква да бъдат закрепени поне два ключа, поне един от които трябва да е резервен и да не е в текущата верига от сертификати. Това архивиране ви позволява да конфигурирате плавно предаване към нов сертификат, който не пречи на потребителите да могат да се свързват.

Ако HTTPS сертификатът, представен на браузъра от уебсайта, не съвпада с един от фиксираните сертификати, тогава браузърът трябва да го отхвърли и да попречи на потребителя да заобиколи сертификата съобщение за грешка.

Структура на HPKP

Заглавката на HPKP има три задължителни части и две незадължителни. Заглавката трябва да бъде озаглавена „Public-Key-Pins“, следващите два или повече сертификата трябва да имат хеш SHA256, кодиран в base64, закрепен във формат „pin-sha256=“”’. Последната задължителна част е „max-age“, което е броене в секунди за колко време браузърът трябва да прилага ограниченията.

Съвет: SHA256 е алгоритъмът за хеширане, използван от HPKP. Base64 е набор от знаци от 64 знака: 0-9, a-z, A-Z и специалните знаци “+” и “/”. Знакът „=“ се използва за добавяне до последните два знака, ако е необходимо.

Незадължителните настройки са „includeSubDomains“ и „report-uri“. „includeSubDomains инструктира браузъра да приложи HPKP защитите към всеки поддомейн на текущия уебсайт за продължителността на таймера „max-age“. „report-uri“ е функция, която позволява да се посочи уебсайт, където могат да се изпращат отчети за грешки, и е предназначена да помогне за идентифициране и разрешаване на проблеми.

Има втори вариант на заглавката, озаглавен „Public-Key-Pins-Report-Only“. Всичко е същото, обаче, ако се открие грешка, не се предприемат действия освен връщане на съобщение за грешка към браузъра и към „report-uri“, ако е конфигуриран. Вариантът само за отчет е проектиран да даде възможност за пълномащабно тестване на заглавката преди внедряването, при което грешките няма да причинят проблеми за потребителите.

Проблеми с HPKP

HPKP беше остарял поради две основни причини. Имаше два начина, по които заглавката може да причини сериозни проблеми за уебсайта, използващ го, те бяха наречени HPKP Suicide и Ransom PKP.

HPKP Suicide е проблем, при който законните собственици на уебсайта губят достъп до всички закрепени ключове. Това може да се случи чрез случайно изтриване, хакване, вируси, повреда на данни или по много други причини. Поради сложността на правилното внедряване на HPKP и особено поддържането му актуализирано по време на ротации на сертификати, е сравнително лесно да се направи грешка в конфигурацията. С HPKP обаче, ако сбъркате нещата, всички скорошни посетители на вашия уебсайт ще бъдат възпрепятствани да имат достъп до уебсайта ви за продължителността на таймера за „max-age“. Уебсайтът smashingmagazine.com публикува статия подробно описвайки опита си с точно този проблем, който по същество изведе сайта офлайн за повечето посетители в продължение на четири дни, преди да бъде внедрена корекцията.

Ransom PKP е теоретична атака, при която хакер получава достъп до уеб сървър, след което краде всички доверени сертификати и ключове и след това изисква откуп за връщането им. При нормална настройка можете просто да генерирате нови ключове и сертификати и да накарате уебсайта да работи отново за по-малко от час. При активиран HPKP обаче тези ключове са фиксирани, ако не можете да предоставите закрепен сертификат на потребителите, те няма да имат достъп до уебсайта за времето на таймера за „макс. възраст“. В зависимост от конфигурацията и ако съществуват резервни копия, може да е невъзможно да се разреши този проблем.

И при двата проблема новите потребители ще имат достъп до уебсайта както обикновено никога не са виждали старата заглавка на HPKP, която инструктира браузъра си да се доверява само на липсващото сертификати. Всички скорошни посетители обаче, като редовни клиенти и читатели, ще трябва да изчакат цялото времетраене на таймера за „максимална възраст“.

Като се има предвид сериозността на тези проблеми и сложността на конфигурацията и поддръжката, използването на заглавката HPKP беше много ниско. В крайна сметка големите браузъри се съгласиха да прекратят поддръжката му изцяло и в рамките на няколко години заглавката на HPKP беше универсално отхвърлена.