การจํากัดอัตรา

Android ปกป้องข้อมูลผู้ใช้ ซึ่งรวมถึงพื้นที่เก็บข้อมูลที่เข้ารหัสด้วยข้อมูลเข้าสู่ระบบและคีย์ Keystore ที่ผูกกับการตรวจสอบสิทธิ์ด้วย ปัจจัยความรู้เกี่ยวกับหน้าจอล็อก (LSKF) ที่ผู้ใช้กำหนดค่าไว้ เช่น PIN, รูปแบบ และ รหัสผ่าน โดยปกติแล้ว LSKF จะเป็นค่าเอนโทรปีต่ำ เช่น PIN 4 หรือ 6 หลัก จึงต้องมีการป้องกันการโจมตีแบบ Brute-Force

Android ใช้ตัวจำกัดอัตราของสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) หรือองค์ประกอบที่ปลอดภัย (SE) เพื่อชะลอการโจมตีแบบ Brute-Force ที่ผู้โจมตีพยายามใช้กับ LSKF และหากพยายามมากพอ ก็จะบล็อกการโจมตีดังกล่าว CDD 9.11 ระบุข้อกำหนดและคำแนะนำด้านความปลอดภัยขั้นต่ำสำหรับตัวจำกัดอัตราของ LSKF Android 16 QPR2 ขึ้นไปใช้นโยบายการจำกัดอัตราที่เข้มงวดกว่า Android เวอร์ชันต่ำกว่าอย่างมาก ดูรายละเอียดเพิ่มเติมได้ที่นโยบายการจำกัดอัตราเริ่มต้นที่เข้มงวดขึ้นใน Android 16 QPR2 ขึ้นไป

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

  • การจัดรูปแบบเวลาที่ได้รับการปรับปรุง: หน้าจอล็อกจะแสดงระยะหมดเวลาที่นานตั้งแต่ 1 นาทีขึ้นไป โดยใช้หน่วยเวลาที่ใหญ่ขึ้นเพื่อให้ผู้ใช้เข้าใจได้ง่ายขึ้น เช่น ลองอีกครั้งใน 30 นาที แทน ลองอีกครั้งใน 1, 800 วินาที
  • ลิงก์สั้นสำหรับการกู้คืน: หน้าจอล็อกจะแสดงลิงก์สั้น (ค่าเริ่มต้นคือ g.co/android/unlock) เพื่อช่วยให้ผู้ใช้ค้นหา ตัวเลือกการกู้คืนในอุปกรณ์เครื่องอื่น คุณกำหนดค่าลิงก์นี้ได้ผ่านทรัพยากร config_lockscreenLockoutShortlink
  • ความคิดเห็นเกี่ยวกับการพยายามซ้ำ: ในอุปกรณ์ที่มีการติดตั้งใช้งาน Weaver ระบบจะแสดงข้อความที่ไม่ซ้ำกันเมื่อมีการป้อนการคาดเดาที่ไม่ถูกต้องซ้ำ ความคิดเห็นเฉพาะนี้ไม่พร้อมใช้งานใน Gatekeeperที่ใช้ Gatekeeper เท่านั้น เนื่องจากอุปกรณ์ดังกล่าวไม่มีรหัสการตอบกลับแยกต่างหากสำหรับการคาดเดาที่ไม่ถูกต้องและความล้มเหลวในการยืนยันอื่นๆ
  • การจัดการการป้อนข้อมูลเข้าสู่ระบบที่สอดคล้องกัน: หน้าจอล็อกจะปิดใช้แป้นป้อน PIN หาก อุปกรณ์ใช้ข้อมูลเข้าสู่ระบบ PIN ซึ่งคล้ายกับการป้อนข้อมูลเข้าสู่ระบบรหัสผ่านและรูปแบบ

เมธอด LockPatternUtils#getLockoutAttemptDeadline(int) เปลี่ยนชื่อเป็น LockPatternUtils#getLockoutEndTime(int) และแสดงเวลาสิ้นสุดการล็อกเอาต์จากแคชที่ระบบจัดการ การอัปเดตนี้ช่วยแก้ปัญหาที่ระบบแคชข้อมูลเฉพาะอินสแตนซ์ LockPatternUtils ซึ่งแสดงระยะหมดเวลาที่ใช้งานอยู่ไม่ถูกต้องหากมีการทริกเกอร์โดยใช้อินสแตนซ์อื่น นักพัฒนาแอปที่สร้างพรอมต์ข้อมูลเข้าสู่ระบบของระบบ เช่น กิจกรรมหน้าจอล็อกและการตั้งค่า ต้องอัปเดตพรอมต์ดังกล่าวเพื่อยืนยันระยะหมดเวลาที่มีอยู่ก่อนที่จะอนุญาตให้พยายามต่อ

ปลดล็อกข้อมูลผู้ใช้ที่ได้รับการปกป้องด้วย LSKF

LockSettingsService จะจัดการการจัดเก็บและการยืนยัน LSKF ผู้ใช้จะมี LSKF ที่ใช้งานอยู่ได้เพียงรายการเดียวในแต่ละครั้ง การกำหนด LSKF ใหม่จะทำให้ LSKF ก่อนหน้าใช้ไม่ได้และเริ่มนโยบายการจำกัดอัตราตั้งแต่ต้น

ตัวจำกัดอัตราหลักใน TEE หรือ SE ซึ่งเป็น Gatekeeper หรือ Weaver, จะบังคับใช้นโยบายการจำกัดอัตราสำหรับ LSKF ที่ใช้งานอยู่ LockSettingsService จะเลือกใช้ Weaver หากมีการติดตั้งใช้งาน

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

นโยบายการจำกัดอัตราเริ่มต้นที่เข้มงวดขึ้นใน Android 16 QPR2 ขึ้นไป

CDD 9.11 กำหนดให้มีการจำกัดอัตราของ LSKF ใน Android 6 ขึ้นไป โดยทั่วไปแล้ว นโยบายการจำกัดอัตราที่กำหนดไว้ค่อนข้างยืดหยุ่น ตัวอย่างเช่น การติดตั้งใช้งานที่เป็นไปตามข้อกำหนดขั้นต่ำของ Android 16 อนุญาตให้คาดเดาได้สูงสุด 10 ครั้งในนาทีแรก 20 ครั้งใน 6 นาที 50 ครั้งใน 25 นาที 110 ครั้งใน 24 ชั่วโมง และ 1,800 ครั้งใน 5 ปี

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

ตัวอย่างเช่น การศึกษา This PIN Can Be Easily Guessed พบอัตราความสำเร็จ 16.2% สำหรับการคาดเดา PIN ในโลกจริงหลังจากคาดเดา 100 ครั้ง และ 35.5% สำหรับรูปแบบ ผู้โจมตีที่ทราบข้อมูลเฉพาะของผู้ใช้ เช่น วันเกิด สามารถประสบความสำเร็จในอัตราที่สูงขึ้นได้

ดังนั้น Android 16 QPR2 ขึ้นไปจึงมีนโยบายการจำกัดอัตราเริ่มต้นของ LSKF ที่เข้มงวดขึ้น นโยบายนี้อนุญาตให้คาดเดาได้สูงสุด 6 ครั้งในนาทีแรก 7 ครั้งใน 6 นาที 8 ครั้งใน 25 นาที 12 ครั้งใน 24 ชั่วโมง และ 19 ครั้งใน 5 ปี หลังจากคาดเดาไม่ถูกต้อง 20 ครั้ง ระบบจะไม่อนุญาตให้คาดเดาอีก ตารางต่อไปนี้แสดงกำหนดการระยะหมดเวลาทั้งหมด ซึ่งอาจมีการเปลี่ยนแปลงใน Android เวอร์ชันในอนาคต

จำนวนการคาดเดาไม่ถูกต้อง ระยะหมดเวลาหลังจากการคาดเดาไม่ถูกต้อง
0 ไม่เกี่ยวข้อง
1-4 0 วินาที
5 1 นาที
6 5 นาที
7 15 นาที
8 30 นาที
9 90 นาที
10 4 ชั่วโมง
11 12 ชั่วโมง
12 36 ชั่วโมง
13 4 วัน
14 13 วัน
15 41 วัน
16 123 วัน
17 1 ปี
18 3 ปี
19 9 ปี
20+ ไม่อนุญาตให้คาดเดาอีก

ตัวจำกัดอัตราที่อัปเดต

Android 16 QPR2 ขึ้นไปมีการติดตั้งใช้งาน Gatekeeper และ Weaver ที่อัปเดตแล้ว ซึ่งจะบังคับใช้ นโยบายการจำกัดอัตราในตาราง

ตัวจำกัดอัตราของซอฟต์แวร์

Android 16 QPR2 ขึ้นไปมีตัวจำกัดอัตราทุติยภูมิที่เป็นตัวเลือก ซึ่งก็คือ SoftwareRateLimiter. โดยมีการติดตั้งใช้งานในเซิร์ฟเวอร์ระบบและช่วยให้อุปกรณ์เสนอนโยบายการจำกัดอัตราที่เข้มงวดขึ้นได้เมื่อ ไม่สามารถอัปเดต TEE หรือ SE

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

การตรวจหาการคาดเดาซ้ำ

Android 16 QPR2 ขึ้นไปรองรับการตรวจหาการคาดเดาซ้ำเพื่อปรับปรุงการใช้งานและเปิดใช้การใช้นโยบายการจำกัดอัตราที่เข้มงวดขึ้น เมื่อเปิดใช้ ผู้ใช้จะไม่ถูกลงโทษสำหรับการป้อน LSKF ที่ไม่ถูกต้องรายการเดิมซ้ำหลายครั้ง

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

ในอุปกรณ์ที่ใช้ Android 16 QPR2 ขึ้นไป การติดตั้งใช้งาน Weaver และ SoftwareRateLimiter ที่กำหนดค่าในโหมดบังคับใช้ ระบบจะตรวจหาและปฏิเสธการคาดเดาซ้ำก่อนที่จะส่งไปยัง Weaver การปฏิเสธดังกล่าวจะไม่เพิ่มจำนวนการคาดเดาไม่ถูกต้อง ระบบจะติดตามการคาดเดาไม่ถูกต้องที่ไม่ซ้ำกันสูงสุด 5 รายการในหน่วยความจำ หากตัวติดตามเต็ม ระบบจะทิ้งรายการที่เก่าที่สุดเพื่อเพิ่มพื้นที่ ระบบจะทิ้งการคาดเดาทั้งหมดที่ติดตามไว้ 5 นาทีหลังจากมีการคาดเดาไม่ถูกต้องรายการสุดท้ายที่ไม่ได้ติดตาม

Gatekeeper จะไม่แยกการคาดเดาไม่ถูกต้องออกจากความล้มเหลวในการยืนยันอื่นๆ ดังนั้น SoftwareRateLimiter จึงไม่รองรับการตรวจหาการคาดเดาซ้ำเมื่อ Gatekeeper เป็นตัวจำกัดอัตราหลัก

ผู้ติดตั้งใช้งาน Weaver สามารถเลือกที่จะรองรับการตรวจหาการคาดเดาซ้ำในการติดตั้งใช้งาน Weaver ได้