รหัสอุปกรณ์ที่ไม่เปลี่ยนรูป

ใน Android 6 ขึ้นไป ผู้ให้บริการ Wi-Fi และตัววิเคราะห์แพ็กเก็ตถูกจำกัดไม่ให้ดึงที่อยู่ MAC จากโรงงานของอุปกรณ์ผ่านสแต็ก Wi-Fi จากคำขอของเครือข่าย เริ่มใน Android 10 มีข้อจำกัดเพิ่มเติมที่จำกัดการเข้าถึงตัวระบุอุปกรณ์ (ID) ให้กับแอปที่มี ระดับการอนุญาต ที่มี สิทธิ์ สิ่งนี้ปกป้องรหัสอุปกรณ์เช่น

  • หมายเลขโทรศัพท์ IMEI, MEID, ESN และ IMSI
  • build, SIM หรือหมายเลขซีเรียล USB

ใครบ้างที่สามารถเข้าถึงรหัสอุปกรณ์

รหัสอุปกรณ์ถูกจำกัดในอุปกรณ์ Android 10 ทั้งหมด แม้ว่าแอปจะกำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า ID อุปกรณ์สามารถเข้าถึงได้โดย

  • แอป SMS เริ่มต้น
  • แอปที่มีทั้งสิทธิ์ READ_PRIVILEGED_PHONE_STATE ในคลาส Manifest.permission และรายการที่อนุญาตในไฟล์ privapp-permission.xml ต้องโหลดสิ่งเหล่านี้ในไดเร็กทอรี priv-app ด้วย
  • แอปที่มีสิทธิ์ของผู้ให้บริการตามที่กำหนดไว้ใน UICC Carrier Privileges
  • เจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ที่มีสิทธิ์ READ_PHONE_STATE ที่ได้รับในคลาส Manifest.permission (ไม่จำเป็นต้องอนุญาติ)

สิทธิ์การเข้าถึงแพ็คเกจ

แพ็คเกจต้องได้รับสิทธิพิเศษในการเข้าถึง ID อุปกรณ์ ต้องมีสิทธิ์ READ_PRIVILEGED_PHONE_STATE ในคลาส Manifest.permission และได้รับอนุญาตในไฟล์ privapp-permission.xml สำหรับข้อมูลเกี่ยวกับกระบวนการรายการที่อนุญาต โปรดดู รายการที่ อนุญาตสิทธิ์

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

รหัสอุปกรณ์ที่ถูกจำกัดและที่อยู่ MAC แบบสุ่ม

ในการจำกัดรหัสอุปกรณ์เพิ่มเติม อุปกรณ์ทั้งหมดบน Android 10 จะส่งที่อยู่ MAC แบบสุ่มโดยค่าเริ่มต้นสำหรับทั้งโพรบและคำขอที่เกี่ยวข้อง และต้องมีที่อยู่ MAC แบบสุ่มที่แตกต่างกันสำหรับ SSID แต่ละรายการ อย่าใช้ที่อยู่ MAC ของโรงงานในโหมดไคลเอ็นต์ จุดเข้าใช้งานแบบซอฟต์ (AP) หรือกรณีการใช้งาน Wi-Fi Direct ต้องซ่อนไว้จาก API ที่เข้าถึงได้แบบสาธารณะซึ่งไม่ใช่แอปที่มีสิทธิพิเศษ แอปที่มีสิทธิ์ซึ่งต้องใช้ที่อยู่ MAC จากโรงงานจะต้องได้รับอนุญาตจาก LOCAL_MAC_ADDRESS

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

Screen shows if device ID uses a randomized MAC address for privacy
รูปที่ 1 ที่อยู่ MAC แสดงเป็นแบบสุ่มภายใต้ ความเป็นส่วนตัว ใน รายละเอียดเครือข่าย

แอปที่เรียกใช้ API ID อุปกรณ์

แอปที่เรียกใช้ API รหัสอุปกรณ์ต้องเป็นไปตามข้อกำหนดของ Android 10 มิฉะนั้น เมื่อพวกเขาพยายามเข้าถึง ID อุปกรณ์ ต่อไปนี้จะถูกส่งคืน:

  • แอปที่กำหนดเป้าหมายเป็น Android 10
    • SecurityException ถูกส่งออกมาจาก ID ของอุปกรณ์ API
  • แอปที่กำหนดเป้าหมายเป็น Android 9 หรือเก่ากว่า
    • หากมีสิทธิ์ READ_PHONE_STATE จะมีการตอบกลับเป็น null หรือข้อมูลตัวยึดตำแหน่ง
    • หากไม่เป็นเช่นนั้น API ID ของอุปกรณ์จะส่ง SecurityException ที่มีชื่อของเมธอดที่เรียกใช้ และข้อบ่งชี้ว่าแอปที่เรียกไม่ตรงตามข้อกำหนดในการเข้าถึง ID ที่ร้องขอ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรหัสอุปกรณ์ที่ไม่เปลี่ยนรูป โปรดดู ตัวระบุอุปกรณ์ ที่ไม่สามารถรีเซ็ตได้ และ แนวทางปฏิบัติที่ดีที่สุดสำหรับตัวระบุที่ไม่ซ้ำ

การทดสอบ

ต้อง ป้องกันไม่ให้แอปเข้าถึงหมายเลขซีเรียลของอุปกรณ์ และ IMEI / MEID, หมายเลขซีเรียลของซิม และ ID สมาชิก (ถ้ามี) แอปที่มีสิทธิ์เข้าถึง ID เหล่านี้จะต้องเป็นไปตามเกณฑ์อย่างใดอย่างหนึ่งที่อยู่ในรายการ ใครสามารถเข้าถึงรหัสอุปกรณ์ ได้