HPKP adalah tajuk respons keamanan web yang tidak digunakan lagi, akronimnya adalah HTTP Public Key Pins. Itu dimaksudkan untuk mencegah otoritas sertifikat yang disusupi atau nakal dari menerbitkan sertifikat HTTPS yang tepercaya secara publik, tetapi dikendalikan oleh peretas, untuk sebuah situs web. Dalam skenario ini, peretas akan dapat mendekripsi lalu lintas HTTPS yang dicegat ke situs web yang terpengaruh.
Tips: Header respons web adalah bagian dari meta-data yang disertakan server saat merespons permintaan. Sebagian kecil dari ini disebut sebagai header keamanan, karena mereka mengaktifkan dan mengonfigurasi berbagai fitur keamanan.
Infrastruktur sertifikat HTTPS
Infrastruktur sertifikat tempat HTTPS dibangun didasarkan pada web kepercayaan. Sejumlah perusahaan bertindak sebagai Certificate Authorities (CA) yang menerbitkan satu atau lebih root certificate. Satu set sertifikat root disertakan di semua perangkat di toko kepercayaan. Saat situs web meminta sertifikat HTTPS miliknya sendiri dari CA, sertifikat tersebut ditandatangani oleh sertifikat root. Saat komputer Anda melihat sertifikat HTTPS, komputer akan memeriksa tanda tangan. Jika sertifikat ditandatangani oleh sertifikat root yang dipercaya, komputer Anda juga memercayai sertifikat HTTPS.
Tip: CA juga dapat memiliki sertifikat perantara yang ditandatangani oleh sertifikat root. Sertifikat perantara ini juga dapat digunakan untuk menandatangani sertifikat HTTPS untuk situs web.
Tugas otoritas sertifikat adalah hanya mengeluarkan sertifikat ketika mereka telah memverifikasi bahwa orang yang memintanya adalah pemilik asli situs web. Gagasan dengan struktur ini adalah bahwa jika seorang peretas membuat sertifikat mereka sendiri untuk sebuah situs web, sertifikat itu tidak akan ditandatangani oleh CA yang dipercaya komputer Anda, sehingga Anda akan melihat peringatan.
Apa yang dilakukan HPKP?
Seluruh sistem sertifikat bergantung pada kepercayaan otoritas sertifikat. Awalnya, bagaimanapun, tidak ada perlindungan terhadap CA yang disusupi oleh peretas atau menjadi nakal dan memilih untuk mengeluarkan sertifikat secara tidak benar.
HPKP dirancang untuk menjadi perlindungan terhadap kemungkinan ini. Ini memungkinkan situs web untuk menentukan daftar sertifikat eksklusif yang dapat dipercaya untuk situs web dalam proses yang disebut penyematan. Dimungkinkan untuk menyematkan sertifikat root atau perantara, yang pada dasarnya memungkinkan satu CA untuk mengeluarkan sertifikat untuk situs web. Dimungkinkan juga untuk menyematkan sertifikat situs web itu sendiri, bahkan mencegah CA yang tepat untuk mengeluarkan sertifikat lain yang valid.
Secara teknis bukan sertifikat itu sendiri yang disematkan, tetapi hash dari kunci sertifikat. Hash adalah fungsi kriptografi satu arah. Ini berarti adalah mungkin untuk memverifikasi bahwa sertifikat yang disajikan ke browser oleh situs web cocok dengan sertifikat yang disematkan, tetapi tidak mungkin menggunakan hash untuk membuat sertifikat yang valid.
HPKP membutuhkan setidaknya dua kunci untuk disematkan, setidaknya salah satunya harus menjadi cadangan dan tidak dalam rantai sertifikat saat ini. Cadangan ini memungkinkan Anda untuk mengonfigurasi penyerahan yang lancar ke sertifikat baru yang tidak mencegah pengguna untuk dapat terhubung.
Jika sertifikat HTTPS yang disajikan ke browser oleh situs web tidak cocok dengan salah satu yang disematkan sertifikat, maka browser diharuskan untuk menolaknya dan mencegah pengguna melewati sertifikat pesan eror.
Struktur HPKP
Header HPKP memiliki tiga bagian wajib dan dua bagian opsional. Header harus berjudul “Public-Key-Pins”, dua atau lebih sertifikat berikutnya harus memiliki hash SHA256 yang disandikan base64 yang disematkan dalam format ‘pin-sha256=”
Tip: SHA256 adalah algoritma hashing yang digunakan oleh HPKP. Base64 adalah kumpulan karakter dengan 64 karakter: 0-9, a-z, A-Z, dan karakter khusus "+" dan "/". "=" digunakan untuk menambahkan hingga dua karakter terakhir jika diperlukan.
Pengaturan opsional adalah “includeSubDomains” dan “report-uri”. “includeSubDomains menginstruksikan browser untuk menerapkan perlindungan HPKP ke subdomain mana pun dari situs web saat ini selama durasi “max-age” timer. “report-uri” adalah fitur yang memungkinkan situs web ditentukan di mana laporan kesalahan dapat dikirim, dan dirancang untuk membantu mengidentifikasi dan menyelesaikan masalah.
Ada varian kedua dari header berjudul “Public-Key-Pins-Report-Only”. Semuanya sama, namun, jika kesalahan ditemukan, tidak ada tindakan yang diambil selain mengembalikan pesan kesalahan ke browser dan ke "laporan-uri" jika ada yang dikonfigurasi. Varian hanya laporan dirancang untuk mengaktifkan pengujian header skala penuh sebelum penerapan, di mana kesalahan tidak akan menyebabkan masalah bagi pengguna.
Masalah dengan HPKP
HPKP tidak digunakan lagi karena dua alasan utama. Ada dua cara di mana tajuk dapat menyebabkan masalah serius bagi situs web yang menggunakannya, ini bernama HPKP Suicide dan Ransom PKP.
HPKP Bunuh Diri adalah masalah di mana pemilik sah situs web kehilangan akses ke semua kunci yang disematkan. Ini dapat terjadi melalui penghapusan yang tidak disengaja, peretasan, virus, kerusakan data, atau karena berbagai alasan lainnya. Karena rumitnya penerapan HPKP dengan benar, dan terutama menjaganya agar tetap diperbarui selama rotasi sertifikat, membuat kesalahan konfigurasi relatif mudah. Namun, dengan HPKP, jika Anda melakukan kesalahan, semua pengunjung baru-baru ini ke situs web Anda akan dicegah untuk dapat mengakses situs web Anda selama jangka waktu "usia maksimal". Situs web smashingmagazine.com memposting dan artikel merinci pengalamannya dengan masalah ini, yang pada dasarnya membuat situs offline bagi sebagian besar pengunjung selama empat hari sebelum perbaikan diterapkan.
Ransom PKP adalah serangan teoretis di mana peretas mendapatkan akses ke server web, kemudian mencuri semua sertifikat dan kunci tepercaya, lalu meminta tebusan untuk pengembaliannya. Dalam pengaturan normal, Anda dapat membuat kunci dan sertifikat baru dan membuat situs web dicadangkan dan berjalan dalam waktu kurang dari satu jam. Namun, dengan HPKP diaktifkan, kunci tersebut disematkan, jika Anda tidak dapat menyajikan sertifikat yang disematkan kepada pengguna, mereka tidak akan dapat mengakses situs web selama durasi timer "usia maksimal". Tergantung pada konfigurasi dan jika ada cadangan, mungkin tidak mungkin untuk menyelesaikan masalah ini.
Dengan kedua masalah ini, pengguna baru akan dapat mengakses situs web seperti biasa belum pernah melihat tajuk HPKP lama yang menginstruksikan browser mereka untuk hanya mempercayai yang sekarang hilang sertifikat. Namun, semua pengunjung baru-baru ini, seperti pelanggan dan pembaca tetap, harus menunggu selama seluruh durasi penghitung waktu "usia maksimal".
Mengingat beratnya masalah ini dan kerumitan konfigurasi dan pemeliharaan, penggunaan header HPKP sangat rendah. Akhirnya, browser utama setuju untuk menghentikan dukungan sepenuhnya dan dalam beberapa tahun, header HPKP secara universal tidak digunakan lagi.