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

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 ขึ้นไป

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

LockSettingsService จะจัดการการจัดเก็บและการยืนยัน LSKF ผู้ใช้จะมี LSKF ที่ใช้งานอยู่ได้ครั้งละ 1 รายการเท่านั้น การกำหนด 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 พบว่าอัตราความสำเร็จในการคาดเดา PIN ในโลกจริงอยู่ที่ 16.2% หลังจากคาดเดา 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 ได้