ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่มความแข็งแกร่งให้การตรวจสอบสิทธิ์ด้วยการเพิ่ม ความปลอดภัยของเซสชันที่ได้รับการสนับสนุนจากฮาร์ดแวร์
บทนำ
เว็บไซต์จำนวนมากใช้คุกกี้ที่มีอายุยาวนานเพื่อการตรวจสอบสิทธิ์ผู้ใช้ แต่คุกกี้เหล่านี้ มีความเสี่ยงต่อการลักลอบใช้เซสชัน ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่ม เลเยอร์ความปลอดภัยที่ได้รับการสนับสนุนจากฮาร์ดแวร์เพื่อลดความเสี่ยงนี้ โดยจะช่วยให้มั่นใจได้ว่าเซสชันจะ ผูกกับอุปกรณ์ที่เฉพาะเจาะจง
คู่มือนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ดูแลขั้นตอนการตรวจสอบสิทธิ์ในเว็บแอปพลิเคชัน โดยจะอธิบายวิธีการทำงานของ DBSC และวิธีผสานรวมเข้ากับเว็บไซต์
วิธีการทำงานของ DBSC
ในระดับสูง DBSC จะนำคู่คีย์การเข้ารหัสที่เชื่อมโยงกับ อุปกรณ์ของผู้ใช้มาใช้ Chrome จะสร้างคู่คีย์นี้ในระหว่างการเข้าสู่ระบบและจัดเก็บ คีย์ส่วนตัวไว้ในฮาร์ดแวร์ที่ปลอดภัย เช่น Trusted Platform Module (TPM) เมื่อพร้อมใช้งาน เซสชันใช้คุกกี้ที่มีอายุสั้น เมื่อคุกกี้เหล่านี้ หมดอายุ Chrome จะพิสูจน์การครอบครองคีย์ส่วนตัวก่อนที่จะรีเฟรชคุกกี้ กระบวนการนี้จะลิงก์ความต่อเนื่องของเซสชันกับอุปกรณ์เดิม
หากอุปกรณ์ของผู้ใช้ไม่รองรับการจัดเก็บคีย์ที่ปลอดภัย DBSC จะกลับไปใช้ลักษณะการทำงานมาตรฐานโดยไม่ขัดขวางขั้นตอนการตรวจสอบสิทธิ์
ภาพรวมการใช้งาน
หากต้องการผสานรวม DBSC เข้ากับแอปพลิเคชัน คุณต้องทำการเปลี่ยนแปลงต่อไปนี้
- แก้ไขขั้นตอนการเข้าสู่ระบบให้มีส่วนหัว
Secure-Session-Registration - เพิ่มปลายทางการลงทะเบียนเซสชันที่มีลักษณะดังนี้
- เชื่อมโยงคีย์สาธารณะกับเซสชันของผู้ใช้
- แสดงการกำหนดค่าเซสชัน
- เปลี่ยนไปใช้คุกกี้ที่มีอายุสั้น
- เพิ่มปลายทางการรีเฟรชเพื่อจัดการการต่ออายุคุกกี้และการตรวจสอบการครอบครองคีย์
โดยส่วนใหญ่แล้ว คุณไม่จำเป็นต้องเปลี่ยนแปลงปลายทางที่มีอยู่ DBSC ออกแบบมาเพื่อ เพิ่มประสิทธิภาพและไม่รบกวนการทำงาน
เมื่อไม่มีคุกกี้แบบอายุสั้นที่จำเป็นหรือคุกกี้หมดอายุ Chrome จะหยุดคำขอชั่วคราวและพยายามรีเฟรชคุกกี้ ซึ่งจะช่วยให้แอปของคุณยังคงใช้การตรวจสอบคุกกี้เซสชันตามปกติ เพื่อยืนยันว่าผู้ใช้ลงชื่อเข้าใช้แล้ว เนื่องจากวิธีนี้ตรงกับขั้นตอนการตรวจสอบสิทธิ์ทั่วไป DBSC จึงทำงานโดยมีการเปลี่ยนแปลงตรรกะการเข้าสู่ระบบน้อยที่สุด
ขั้นตอนการติดตั้งใช้งาน
ส่วนนี้จะอธิบายการเปลี่ยนแปลงที่จำเป็นต่อระบบการตรวจสอบสิทธิ์ รวมถึงวิธีแก้ไขขั้นตอนการเข้าสู่ระบบ จัดการการลงทะเบียนเซสชัน และจัดการ การรีเฟรชคุกกี้ที่มีอายุสั้น แต่ละขั้นตอนออกแบบมาเพื่อผสานรวมกับ โครงสร้างพื้นฐานที่มีอยู่ได้อย่างราบรื่น
ขั้นตอนการติดตั้งใช้งานเป็นไปตามขั้นตอนทั่วไปที่ผู้ใช้ที่ลงชื่อเข้าใช้จะได้รับ เมื่อ DBSC ทำงานอยู่ ได้แก่ การลงทะเบียนเมื่อเข้าสู่ระบบ ตามด้วยการรีเฟรชคุกกี้แบบมีอายุสั้นเป็นประจำ คุณทดสอบและใช้แต่ละขั้นตอน แยกกันได้ ขึ้นอยู่กับระดับความละเอียดของเซสชันของแอป

1. แก้ไขขั้นตอนการเข้าสู่ระบบ
หลังจากที่ผู้ใช้เข้าสู่ระบบแล้ว ให้ตอบกลับด้วยคุกกี้ที่มีอายุการใช้งานยาวนานและส่วนหัว Secure-Session-Registration
เช่น
ระบบจะแสดงส่วนหัวการตอบกลับ HTTP ต่อไปนี้หลังจากลงทะเบียนเซสชันสำเร็จ
HTTP/1.1 200 OK
Secure-Session-Registration: (ES256 RS256); path="/StartSession"
Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax
หากอุปกรณ์รองรับการจัดเก็บคีย์อย่างปลอดภัย Chrome จะติดต่อ/StartSession
ปลายทางด้วยคีย์สาธารณะใน JSON Web Token (JWT)
auth_cookie ในตัวอย่างนี้แสดงถึงโทเค็นเซสชัน คุณตั้งชื่อคุกกี้นี้ได้ตามต้องการ ตราบใดที่ชื่อตรงกับฟิลด์ name ในการกำหนดค่าเซสชันและใช้ชื่อนี้อย่างสม่ำเสมอตลอดทั้งแอปพลิเคชัน
2. ใช้ปลายทางการลงทะเบียนเซสชัน
ที่ /StartSession เซิร์ฟเวอร์ของคุณควรมีลักษณะดังนี้
- เชื่อมโยงคีย์สาธารณะที่ได้รับกับเซสชันของผู้ใช้
- ตอบกลับด้วยการกำหนดค่าเซสชัน
- แทนที่คุกกี้ที่มีอายุการใช้งานยาวนานด้วยคุกกี้ที่มีอายุการใช้งานสั้น
ในตัวอย่างต่อไปนี้ ระบบจะกำหนดค่าคุกกี้แบบอายุสั้นให้หมดอายุหลังจากผ่านไป 10 นาที
HTTP/1.1 200 OK
Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax
{
"session_identifier": "session_id",
"refresh_url": "/RefreshEndpoint",
"scope": {
"origin": "https://example.com",
"include_site": true,
"scope_specification": [
{ "type": "exclude", "domain": "*.example.com", "path": "/static" }
]
},
"credentials": [{
"type": "cookie",
"name": "auth_cookie",
"attributes": "Domain=example.com; Secure; SameSite=Lax"
}]
}
3. ติดตั้งใช้งานปลายทางการรีเฟรช
เมื่อคุกกี้ที่มีอายุสั้นหมดอายุ Chrome จะเริ่มขั้นตอนการรีเฟรชเพื่อพิสูจน์ การครอบครองคีย์ส่วนตัว กระบวนการนี้เกี่ยวข้องกับการดำเนินการที่ประสานกันโดยทั้ง Chrome และเซิร์ฟเวอร์ของคุณ ดังนี้
Chrome จะเลื่อนคำขอของผู้ใช้ไปยังแอปพลิเคชันของคุณและส่งคำขอรีเฟรชไปยัง
/RefreshEndpointดังนี้POST /RefreshEndpoint HTTP/1.1 Sec-Secure-Session-Id: session_idเซิร์ฟเวอร์จะตอบกลับด้วยการท้าทาย
HTTP/1.1 403 Forbidden Secure-Session-Challenge: "challenge_value"Chrome จะลงนามในแชลเลนจ์โดยใช้คีย์ส่วนตัวที่จัดเก็บไว้และลองส่งคำขออีกครั้ง
POST /RefreshEndpoint HTTP/1.1 Sec-Secure-Session-Id: session_id Secure-Session-Response: <JWT proof>เซิร์ฟเวอร์จะตรวจสอบหลักฐานที่ลงชื่อแล้วและออกคุกกี้แบบอายุสั้นที่รีเฟรชแล้ว
HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=LaxChrome จะได้รับคุกกี้ที่รีเฟรชแล้วและดำเนินการต่อกับคำขอเดิมที่เลื่อนออกไป
รูปแบบการผสานรวมทางเลือก
เว็บไซต์สามารถเพิ่มคุกกี้ที่ 2 ที่ไม่ใช่ DBSC ควบคู่กับคุกกี้ที่มีอายุสั้นเพื่อปรับปรุงความยืดหยุ่น คุกกี้ที่มีอายุการใช้งานยาวนานนี้ใช้เพื่อออกโทเค็นใหม่ที่มีอายุการใช้งานสั้นเท่านั้น และช่วยแยกความแตกต่างระหว่างคำขอที่ไม่ได้ตรวจสอบสิทธิ์จริงๆ กับความล้มเหลวของ DBSC ชั่วคราว
- คุกกี้ที่มีอายุยาวจะยังคงอยู่แม้ว่า DBSC จะล้มเหลวก็ตาม
- ระบบจะรีเฟรชคุกกี้ที่มีอายุสั้นโดยใช้ DBSC และจำเป็นสำหรับการดำเนินการที่มีความละเอียดอ่อน
รูปแบบนี้ช่วยให้เว็บไซต์ควบคุมวิธีจัดการกรณีที่พบได้น้อยได้มากขึ้น
ข้อควรระวังและลักษณะการทำงานสำรอง
Chrome อาจข้ามการดำเนินการ DBSC และส่งคำขอโดยไม่มีคุกกี้อายุสั้นที่ DBSC จัดการในสถานการณ์ต่อไปนี้
- เข้าถึงปลายทางการรีเฟรชไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเครือข่ายหรือปัญหาเกี่ยวกับเซิร์ฟเวอร์
- TPM ไม่ว่างหรือพบข้อผิดพลาดในการลงนาม เนื่องจากมีการแชร์ TPM ในกระบวนการของระบบ การรีเฟรชมากเกินไปอาจทำให้เกินขีดจำกัดอัตรา
- คุกกี้แบบมีอายุสั้นที่ DBSC จัดการเป็นคุกกี้ของบุคคลที่สาม และ ผู้ใช้ได้บล็อกคุกกี้ของบุคคลที่สามในการตั้งค่าเบราว์เซอร์
ในกรณีเหล่านี้ Chrome จะกลับไปใช้คุกกี้ที่มีอายุยาวหากยังมีอยู่ การสำรองข้อมูลนี้จะใช้ได้ก็ต่อเมื่อการติดตั้งใช้งานมีทั้งคุกกี้แบบมีอายุยาวและคุกกี้แบบมีอายุสั้น หากไม่เป็นเช่นนั้น Chrome จะส่งคำขอโดยไม่มีคุกกี้
สรุป
ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ช่วยปรับปรุงความปลอดภัยของเซสชันโดยมีการเปลี่ยนแปลงแอปพลิเคชันน้อยที่สุด โดยจะให้การป้องกันที่แข็งแกร่งยิ่งขึ้นจากการลักลอบใช้เซสชัน ด้วยการเชื่อมโยงเซสชันกับอุปกรณ์ที่เฉพาะเจาะจง ผู้ใช้ส่วนใหญ่จะได้รับประโยชน์โดยไม่พบ การหยุดชะงักใดๆ และ DBSC จะกลับไปใช้ฮาร์ดแวร์ที่ไม่รองรับอย่างราบรื่น
ดูข้อมูลเพิ่มเติมได้ที่ข้อกำหนดของ DBSC