ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่มความแข็งแกร่งให้กับการตรวจสอบสิทธิ์ด้วยการเพิ่มการรักษาความปลอดภัยเซสชันที่รองรับฮาร์ดแวร์
บทนำ
เว็บไซต์จํานวนมากใช้คุกกี้ที่มีอายุการใช้งานยาวนานสําหรับการตรวจสอบสิทธิ์ผู้ใช้ แต่คุกกี้เหล่านี้มีความเสี่ยงต่อการลักลอบใช้เซสชัน ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่มระดับความปลอดภัยที่รองรับฮาร์ดแวร์เพื่อลดความเสี่ยงนี้ และช่วยให้มั่นใจว่าเซสชันจะผูกกับอุปกรณ์ที่เฉพาะเจาะจง
คู่มือนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ดูแลรักษาขั้นตอนการตรวจสอบสิทธิ์ในแอปพลิเคชันเว็บ ซึ่งจะอธิบายวิธีการทำงานของ DBSC และวิธีผสานรวมเข้ากับเว็บไซต์
วิธีการทํางานของ DBSC
ในระดับสูง DBSC จะแนะนำคู่คีย์การเข้ารหัสที่เชื่อมโยงกับอุปกรณ์ของผู้ใช้ Chrome จะสร้างคู่คีย์นี้ระหว่างการเข้าสู่ระบบและจัดเก็บคีย์ส่วนตัวไว้ในฮาร์ดแวร์ที่มีความปลอดภัย เช่น Trusted Platform Module (TPM) หากมี เซสชันใช้คุกกี้ที่มีอายุสั้น เมื่อคุกกี้รายการใดรายการหนึ่งหมดอายุ Chrome จะพิสูจน์การครอบครองคีย์ส่วนตัวก่อนที่จะรีเฟรชคุกกี้ กระบวนการนี้จะลิงก์ความต่อเนื่องของเซสชันกับอุปกรณ์เดิม
หากอุปกรณ์ของผู้ใช้ไม่รองรับที่เก็บคีย์ที่ปลอดภัย DBSC จะเปลี่ยนกลับไปทำงานตามลักษณะการทำงานมาตรฐานโดยไม่ขัดจังหวะขั้นตอนการตรวจสอบสิทธิ์
ภาพรวมการใช้งาน
หากต้องการผสานรวม DBSC เข้ากับแอปพลิเคชัน คุณต้องทําการเปลี่ยนแปลงต่อไปนี้
- แก้ไขขั้นตอนการเข้าสู่ระบบให้รวมส่วนหัว
Sec-Session-Registration
- เพิ่มปลายทางการลงทะเบียนเซสชันที่มีลักษณะดังนี้
- เชื่อมโยงคีย์สาธารณะกับเซสชันของผู้ใช้
- แสดงการกำหนดค่าเซสชัน
- การเปลี่ยนไปใช้คุกกี้ที่มีอายุสั้น
- เพิ่มปลายทางการรีเฟรชเพื่อจัดการการต่ออายุคุกกี้และการยืนยันการครอบครองคีย์
ปลายทางที่มีอยู่ส่วนใหญ่ไม่จําเป็นต้องเปลี่ยนแปลง DBSC ออกแบบมาเพื่อเพิ่มประสิทธิภาพและทำงานได้อย่างราบรื่น
เมื่อคุกกี้ที่มีอายุสั้นซึ่งจําเป็นขาดหายไปหรือหมดอายุ Chrome จะหยุดคําขอชั่วคราวและพยายามรีเฟรชคุกกี้ ซึ่งจะช่วยให้แอปของคุณใช้การตรวจสอบคุกกี้เซสชันตามปกติเพื่อยืนยันว่าผู้ใช้ลงชื่อเข้าใช้อยู่ต่อไปได้ เนื่องจากการดำเนินการนี้ตรงกับขั้นตอนการตรวจสอบสิทธิ์ทั่วไป DBSC จึงทํางานได้โดยมีการเปลี่ยนแปลงตรรกะการเข้าสู่ระบบเพียงเล็กน้อย
ขั้นตอนการใช้งาน
ส่วนนี้จะอธิบายการเปลี่ยนแปลงที่จำเป็นในระบบการตรวจสอบสิทธิ์ ซึ่งรวมถึงวิธีแก้ไขขั้นตอนการเข้าสู่ระบบ จัดการการลงทะเบียนเซสชัน และจัดการการรีเฟรชคุกกี้ที่มีอายุสั้น แต่ละขั้นตอนออกแบบมาเพื่อผสานรวมกับโครงสร้างพื้นฐานที่มีอยู่ได้อย่างราบรื่น
ขั้นตอนการติดตั้งใช้งานจะเป็นไปตามขั้นตอนทั่วไปที่ผู้ใช้ที่ลงชื่อเข้าใช้จะได้รับเมื่อ DBSC ทำงานอยู่ ซึ่งได้แก่ การลงทะเบียนเมื่อเข้าสู่ระบบ ตามด้วยการรีเฟรชคุกกี้ที่มีอายุสั้นเป็นประจํา คุณสามารถทดสอบและติดตั้งใช้งานแต่ละขั้นตอนแยกกันได้ ทั้งนี้ขึ้นอยู่กับระดับความไวของเซสชันของแอป
1. แก้ไขขั้นตอนการเข้าสู่ระบบ
หลังจากผู้ใช้เข้าสู่ระบบแล้ว ให้ตอบกลับด้วยคุกกี้ที่มีอายุการใช้งานยาวนานและส่วนหัว Sec-Session-Registration
เช่น
ระบบจะแสดงส่วนหัวการตอบกลับ HTTP ต่อไปนี้หลังจากลงทะเบียนเซสชันเรียบร้อยแล้ว
HTTP/1.1 200 OK
Sec-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-Session-Id: session_id
เซิร์ฟเวอร์ของคุณตอบกลับด้วยภารกิจ
HTTP/1.1 401 Unauthorized Sec-Session-Challenge: "challenge_value"
Chrome จะลงนามคำขอแจ้งปัญหาโดยใช้คีย์ส่วนตัวที่เก็บไว้และส่งคำขออีกครั้ง
POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id Sec-Session-Response: <JWT proof>
เซิร์ฟเวอร์จะตรวจสอบหลักฐานที่ลงชื่อและออกคุกกี้ที่มีอายุสั้นซึ่งรีเฟรชแล้ว ดังนี้
HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax
Chrome ได้รับคุกกี้ที่รีเฟรชแล้วและดำเนินการตามคำขอเดิมที่เลื่อนไว้ต่อ
รูปแบบการผสานรวมทางเลือก
เว็บไซต์สามารถเพิ่มคุกกี้ที่ไม่ใช่ DBSC รายการที่ 2 ควบคู่ไปกับคุกกี้ที่มีอายุสั้นเพื่อเพิ่มความยืดหยุ่น คุกกี้ที่มีอายุการใช้งานยาวนานนี้ใช้เพื่อออกโทเค็นใหม่ที่มีอายุการใช้งานสั้นเท่านั้น และช่วยแยกความแตกต่างระหว่างคำขอที่ไม่มีการรับรองอย่างแท้จริงกับ DBSC ที่ไม่สําเร็จชั่วคราว
- คุกกี้ที่มีอายุการใช้งานยาวนานจะยังคงอยู่แม้ว่า DBSC จะดำเนินการไม่สำเร็จก็ตาม
- ระบบจะรีเฟรชคุกกี้ที่มีอายุสั้นโดยใช้ DBSC และจำเป็นต้องใช้สำหรับการดำเนินการที่มีความละเอียดอ่อน
รูปแบบนี้ช่วยให้เว็บไซต์ควบคุมวิธีจัดการกรณีขอบได้มากขึ้น
ข้อควรระวังและลักษณะการทำงานสำรอง
Chrome อาจข้ามการดำเนินการ DBSC และส่งคำขอโดยไม่มีคุกกี้ที่มีอายุสั้นซึ่งจัดการโดย DBSC ในสถานการณ์ต่อไปนี้
- เข้าถึงปลายทางการรีเฟรชไม่ได้เนื่องจากข้อผิดพลาดของเครือข่ายหรือปัญหาเกี่ยวกับเซิร์ฟเวอร์
- TPM ไม่ว่างหรือพบข้อผิดพลาดในการลงนาม เนื่องจาก TPM มีการแชร์ในกระบวนการต่างๆ ของระบบ การรีเฟรชที่มากเกินไปอาจเกินขีดจำกัดอัตรา
- คุกกี้ที่มีอายุสั้นซึ่งจัดการโดย DBSC เป็นคุกกี้ของบุคคลที่สาม และผู้ใช้ได้บล็อกคุกกี้ของบุคคลที่สามในการตั้งค่าเบราว์เซอร์
ในกรณีเหล่านี้ Chrome จะกลับไปใช้คุกกี้ที่มีอายุการใช้งานยาวนานหากยังมีอยู่ ตัวเลือกสำรองนี้จะใช้งานได้ก็ต่อเมื่อการติดตั้งใช้งานมีทั้งคุกกี้ที่มีอายุการใช้งานยาวและคุกกี้ที่มีอายุการใช้งานสั้น หากไม่ Chrome จะส่งคำขอโดยไม่มีคุกกี้
สรุป
ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ช่วยเพิ่มความปลอดภัยของเซสชันโดยมีการเปลี่ยนแปลงแอปพลิเคชันเพียงเล็กน้อย ซึ่งจะมอบการป้องกันที่รัดกุมยิ่งขึ้นจากการลักลอบใช้เซสชันโดยเชื่อมโยงเซสชันกับอุปกรณ์ที่เฉพาะเจาะจง ผู้ใช้ส่วนใหญ่จะได้รับประโยชน์โดยไม่พบการหยุดชะงักใดๆ และ DBSC จะเปลี่ยนไปใช้ฮาร์ดแวร์ที่รองรับ
ดูข้อมูลเพิ่มเติมได้ที่ข้อกำหนด DBSC