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="”’. ส่วนบังคับสุดท้ายคือ "อายุสูงสุด" ซึ่งนับเป็นวินาทีสำหรับระยะเวลาที่เบราว์เซอร์ควรใช้ข้อจำกัด

เคล็ดลับ: 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 หากคุณทำผิดพลาด ผู้เยี่ยมชมเว็บไซต์ของคุณล่าสุดทั้งหมดจะถูกป้องกันไม่ให้เข้าถึงเว็บไซต์ของคุณตามระยะเวลาของตัวจับเวลา "อายุสูงสุด" เว็บไซต์ smashingmagazine.com โพสต์และ บทความ ให้รายละเอียดประสบการณ์ตรงเกี่ยวกับปัญหานี้ ซึ่งทำให้ไซต์ออฟไลน์สำหรับผู้เข้าชมส่วนใหญ่เป็นเวลาสี่วันก่อนที่จะมีการแก้ไข

PKP ของค่าไถ่เป็นการโจมตีเชิงทฤษฎีที่แฮ็กเกอร์เข้าถึงเว็บเซิร์ฟเวอร์ จากนั้นจึงขโมยใบรับรองและคีย์ที่เชื่อถือได้ทั้งหมด จากนั้นจึงเรียกค่าไถ่เพื่อส่งคืน ในการตั้งค่าปกติ คุณสามารถสร้างคีย์และใบรับรองใหม่ และให้เว็บไซต์สำรองและทำงานภายในเวลาไม่ถึงหนึ่งชั่วโมง เมื่อเปิดใช้งาน HPKP คีย์เหล่านั้นจะถูกตรึงไว้ หากคุณไม่สามารถให้บริการใบรับรองที่ตรึงไว้กับผู้ใช้ พวกเขาจะเข้าถึงเว็บไซต์ไม่ได้ในช่วงระยะเวลาของตัวจับเวลา "อายุสูงสุด" ขึ้นอยู่กับการกำหนดค่าและหากมีการสำรองข้อมูลอยู่ อาจไม่สามารถแก้ไขปัญหานี้ได้

จากปัญหาทั้งสองนี้ ผู้ใช้ใหม่จะสามารถเข้าถึงเว็บไซต์ได้ตามปกติเหมือนเช่นเคย ไม่เคยเห็นส่วนหัว HPKP เก่าที่สั่งเบราว์เซอร์ให้เชื่อถือเฉพาะส่วนที่ขาดหายไปในตอนนี้ ใบรับรอง อย่างไรก็ตาม ผู้เยี่ยมชมล่าสุดทั้งหมด เช่น ลูกค้าประจำและผู้อ่าน จะต้องรอตลอดระยะเวลาของตัวจับเวลา "อายุสูงสุด"

เนื่องจากปัญหาเหล่านี้มีความรุนแรงและความซับซ้อนของการกำหนดค่าและการบำรุงรักษา การใช้ส่วนหัว HPKP จึงต่ำมาก ในที่สุด เบราว์เซอร์หลักตกลงที่จะยกเลิกการสนับสนุนทั้งหมด และภายในสองสามปี ส่วนหัว HPKP ก็ถูกเลิกใช้ในระดับสากล