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

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

บทนำ

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

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

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

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

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

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

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

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

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

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

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

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

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

3. ติดตั้งใช้งานปลายทางการรีเฟรช

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

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

    POST /RefreshEndpoint HTTP/1.1
    Sec-Secure-Session-Id: session_id
    
  2. เซิร์ฟเวอร์จะตอบกลับด้วยการท้าทาย

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

    POST /RefreshEndpoint HTTP/1.1
    Sec-Secure-Session-Id: session_id
    Secure-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 จะได้รับคุกกี้ที่รีเฟรชแล้วและดำเนินการต่อกับคำขอเดิมที่เลื่อนออกไป

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

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

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

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

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

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

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

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

สรุป

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

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