ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC)

ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่มความแข็งแกร่งให้กับการตรวจสอบสิทธิ์ด้วยการเพิ่มการรักษาความปลอดภัยเซสชันที่รองรับฮาร์ดแวร์

บทนำ

เว็บไซต์จํานวนมากใช้คุกกี้ที่มีอายุการใช้งานยาวนานสําหรับการตรวจสอบสิทธิ์ผู้ใช้ แต่คุกกี้เหล่านี้มีความเสี่ยงต่อการลักลอบใช้เซสชัน ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ (DBSC) จะเพิ่มระดับความปลอดภัยที่รองรับฮาร์ดแวร์เพื่อลดความเสี่ยงนี้ และช่วยให้มั่นใจว่าเซสชันจะผูกกับอุปกรณ์ที่เฉพาะเจาะจง

คู่มือนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ดูแลรักษาขั้นตอนการตรวจสอบสิทธิ์ในแอปพลิเคชันเว็บ ซึ่งจะอธิบายวิธีการทำงานของ DBSC และวิธีผสานรวมเข้ากับเว็บไซต์

วิธีการทํางานของ DBSC

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

หากอุปกรณ์ของผู้ใช้ไม่รองรับที่เก็บคีย์ที่ปลอดภัย DBSC จะเปลี่ยนกลับไปทำงานตามลักษณะการทำงานมาตรฐานโดยไม่ขัดจังหวะขั้นตอนการตรวจสอบสิทธิ์

ภาพรวมการใช้งาน

หากต้องการผสานรวม DBSC เข้ากับแอปพลิเคชัน คุณต้องทําการเปลี่ยนแปลงต่อไปนี้

  • แก้ไขขั้นตอนการเข้าสู่ระบบให้รวมส่วนหัว Sec-Session-Registration
  • เพิ่มปลายทางการลงทะเบียนเซสชันที่มีลักษณะดังนี้
    • เชื่อมโยงคีย์สาธารณะกับเซสชันของผู้ใช้
    • แสดงการกำหนดค่าเซสชัน
    • การเปลี่ยนไปใช้คุกกี้ที่มีอายุสั้น
  • เพิ่มปลายทางการรีเฟรชเพื่อจัดการการต่ออายุคุกกี้และการยืนยันการครอบครองคีย์

ปลายทางที่มีอยู่ส่วนใหญ่ไม่จําเป็นต้องเปลี่ยนแปลง DBSC ออกแบบมาเพื่อเพิ่มประสิทธิภาพและทำงานได้อย่างราบรื่น

เมื่อคุกกี้ที่มีอายุสั้นซึ่งจําเป็นขาดหายไปหรือหมดอายุ Chrome จะหยุดคําขอชั่วคราวและพยายามรีเฟรชคุกกี้ ซึ่งจะช่วยให้แอปของคุณใช้การตรวจสอบคุกกี้เซสชันตามปกติเพื่อยืนยันว่าผู้ใช้ลงชื่อเข้าใช้อยู่ต่อไปได้ เนื่องจากการดำเนินการนี้ตรงกับขั้นตอนการตรวจสอบสิทธิ์ทั่วไป DBSC จึงทํางานได้โดยมีการเปลี่ยนแปลงตรรกะการเข้าสู่ระบบเพียงเล็กน้อย

ขั้นตอนการใช้งาน

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

ขั้นตอนการติดตั้งใช้งานจะเป็นไปตามขั้นตอนทั่วไปที่ผู้ใช้ที่ลงชื่อเข้าใช้จะได้รับเมื่อ 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 กับเซิร์ฟเวอร์ ดังนี้

  1. Chrome จะเลื่อนคําขอของผู้ใช้ไปยังแอปพลิเคชันของคุณและส่งคําขอรีเฟรชไปยัง /RefreshEndpoint ดังนี้

    POST /RefreshEndpoint HTTP/1.1
    Sec-Session-Id: session_id
    
  2. เซิร์ฟเวอร์ของคุณตอบกลับด้วยภารกิจ

    HTTP/1.1 401 Unauthorized
    Sec-Session-Challenge: "challenge_value"
    
  3. Chrome จะลงนามคำขอแจ้งปัญหาโดยใช้คีย์ส่วนตัวที่เก็บไว้และส่งคำขออีกครั้ง

    POST /RefreshEndpoint HTTP/1.1
    Sec-Session-Id: session_id
    Sec-Session-Response: <JWT proof>
    
  4. เซิร์ฟเวอร์จะตรวจสอบหลักฐานที่ลงชื่อและออกคุกกี้ที่มีอายุสั้นซึ่งรีเฟรชแล้ว ดังนี้

    HTTP/1.1 200 OK
    
    Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax
    
  5. Chrome ได้รับคุกกี้ที่รีเฟรชแล้วและดำเนินการตามคำขอเดิมที่เลื่อนไว้ต่อ

รูปแบบการผสานรวมทางเลือก

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

  • คุกกี้ที่มีอายุการใช้งานยาวนานจะยังคงอยู่แม้ว่า DBSC จะดำเนินการไม่สำเร็จก็ตาม
  • ระบบจะรีเฟรชคุกกี้ที่มีอายุสั้นโดยใช้ DBSC และจำเป็นต้องใช้สำหรับการดำเนินการที่มีความละเอียดอ่อน

รูปแบบนี้ช่วยให้เว็บไซต์ควบคุมวิธีจัดการกรณีขอบได้มากขึ้น

ข้อควรระวังและลักษณะการทำงานสำรอง

Chrome อาจข้ามการดำเนินการ DBSC และส่งคำขอโดยไม่มีคุกกี้ที่มีอายุสั้นซึ่งจัดการโดย DBSC ในสถานการณ์ต่อไปนี้

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

ในกรณีเหล่านี้ Chrome จะกลับไปใช้คุกกี้ที่มีอายุการใช้งานยาวนานหากยังมีอยู่ ตัวเลือกสำรองนี้จะใช้งานได้ก็ต่อเมื่อการติดตั้งใช้งานมีทั้งคุกกี้ที่มีอายุการใช้งานยาวและคุกกี้ที่มีอายุการใช้งานสั้น หากไม่ Chrome จะส่งคำขอโดยไม่มีคุกกี้

สรุป

ข้อมูลเข้าสู่ระบบเซสชันที่ผูกกับอุปกรณ์ช่วยเพิ่มความปลอดภัยของเซสชันโดยมีการเปลี่ยนแปลงแอปพลิเคชันเพียงเล็กน้อย ซึ่งจะมอบการป้องกันที่รัดกุมยิ่งขึ้นจากการลักลอบใช้เซสชันโดยเชื่อมโยงเซสชันกับอุปกรณ์ที่เฉพาะเจาะจง ผู้ใช้ส่วนใหญ่จะได้รับประโยชน์โดยไม่พบการหยุดชะงักใดๆ และ DBSC จะเปลี่ยนไปใช้ฮาร์ดแวร์ที่รองรับ

ดูข้อมูลเพิ่มเติมได้ที่ข้อกำหนด DBSC