รหัสอุปกรณ์ที่เปลี่ยนแปลงไม่ได้

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

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

ผู้ที่มีสิทธิ์เข้าถึงรหัสอุปกรณ์

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

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

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

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

ดูข้อมูลเกี่ยวกับการรับรหัสที่ไม่ซ้ำกันสำหรับแพ็กเกจที่ไม่มีสิทธิ์ได้ที่ Use Case ทั่วไปและตัวระบุที่เหมาะสมที่จะใช้

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

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

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

หน้าจอจะแสดงว่ารหัสอุปกรณ์ใช้ที่อยู่ MAC แบบสุ่มเพื่อความเป็นส่วนตัวหรือไม่

รูปที่ 1 ที่อยู่ MAC แสดงเป็นที่อยู่แบบสุ่มในส่วนความเป็นส่วนตัวในรายละเอียดเครือข่าย

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

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

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

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

การทดสอบ

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