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=""' ส่วนบังคับสุดท้ายคือ "อายุสูงสุด" ซึ่งนับเป็นวินาทีสำหรับระยะเวลาที่เบราว์เซอร์ควรใช้ข้อจำกัด
เคล็ดลับ: SHA256 คืออัลกอริธึมการแฮชที่ใช้โดย HPKP Base64 คือชุดอักขระที่มีอักขระ 64 ตัว: 0-9, az, AZ และอักขระพิเศษ “+” และ “/” “=” ใช้เพื่อขยายอักขระสองตัวสุดท้ายหากจำเป็น
การตั้งค่าทางเลือกคือ “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 หากคุณทำผิดพลาด ผู้เยี่ยมชมเว็บไซต์ของคุณล่าสุดทั้งหมดจะถูกป้องกันไม่ให้เข้าถึงเว็บไซต์ของคุณตามระยะเวลาของตัวจับเวลา "อายุสูงสุด" เว็บไซต์ smashingmagazine.com ได้โพสต์บทความที่ให้รายละเอียดประสบการณ์กับปัญหานี้ ซึ่งทำให้เว็บไซต์ออฟไลน์สำหรับผู้เยี่ยมชมส่วนใหญ่เป็นเวลาสี่วันก่อนที่จะมีการแก้ไข
PKP ของค่าไถ่เป็นการโจมตีเชิงทฤษฎีที่แฮ็กเกอร์เข้าถึงเว็บเซิร์ฟเวอร์ จากนั้นขโมยใบรับรองและคีย์ที่เชื่อถือได้ทั้งหมด จากนั้นจึงเรียกค่าไถ่เพื่อส่งคืน ในการตั้งค่าปกติ คุณสามารถสร้างคีย์และใบรับรองใหม่ และให้เว็บไซต์สำรองและทำงานภายในเวลาไม่ถึงหนึ่งชั่วโมง อย่างไรก็ตาม เมื่อเปิดใช้งาน HPKP คีย์เหล่านั้นจะถูกตรึงไว้ หากคุณไม่สามารถให้บริการใบรับรองที่ตรึงไว้กับผู้ใช้ พวกเขาจะเข้าถึงเว็บไซต์ไม่ได้ในช่วงระยะเวลาของตัวจับเวลา "อายุสูงสุด" ขึ้นอยู่กับการกำหนดค่าและหากมีการสำรองข้อมูลอยู่ อาจไม่สามารถแก้ไขปัญหานี้ได้
จากปัญหาทั้งสองนี้ ผู้ใช้ใหม่จะสามารถเข้าถึงเว็บไซต์ได้ตามปกติ เนื่องจากพวกเขาจะไม่เคยเห็นส่วนหัว HPKP แบบเก่าที่สั่งเบราว์เซอร์ของตนให้เชื่อถือเฉพาะใบรับรองที่หายไปในขณะนี้เท่านั้น อย่างไรก็ตาม ผู้เยี่ยมชมล่าสุดทั้งหมด เช่น ลูกค้าประจำและผู้อ่าน จะต้องรอตลอดระยะเวลาของตัวจับเวลา "อายุสูงสุด"
เนื่องจากปัญหาเหล่านี้มีความรุนแรงและความซับซ้อนของการกำหนดค่าและการบำรุงรักษา การใช้ส่วนหัว HPKP จึงต่ำมาก ในที่สุด เบราว์เซอร์หลักตกลงที่จะยกเลิกการสนับสนุนทั้งหมด และภายในสองสามปี ส่วนหัว HPKP ก็ถูกเลิกใช้ในระดับสากล