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

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

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

ใครสามารถเข้าถึงรหัสอุปกรณ์ได้

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

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

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

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

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

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

หากต้องการจำกัด ID อุปกรณ์เพิ่มเติม อุปกรณ์ทั้งหมดบน 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 แสดงเป็นการสุ่มภายใต้ ความเป็นส่วนตัว ใน รายละเอียดเครือข่าย

แอพที่เรียกใช้ Device ID API

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

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

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

การทดสอบ

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