是否存在暴露唯一 Android 设备 ID 的漏洞?

Any vulnerability to exposing Unique Android Device ID?

我编写了一个 Android 应用程序,它使用以下方法生成 Android 唯一设备 ID。我假设此 ID 对于每台设备都是唯一的,与安装在其上的应用程序无关。我还假设即使应用程序 uninstalled/installed 多次,也可以在设备上生成相同的 ID:Is there a unique Android device ID?

代码:

private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 

代码:

final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

    final String tmDevice, tmSerial, androidId;
    tmDevice = "" + tm.getDeviceId();
    tmSerial = "" + tm.getSimSerialNumber();
    androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
    String deviceId = deviceUuid.toString();

如果公开这个值,是否存在安全漏洞?是否可以根据这些值生成推送通知的 GCM ID?可以使用反向查找来识别个人吗?这些可以用于从 phone 运营商中提取有关个人的信息吗?

如果公开这个值,是否存在安全漏洞?

据我所知,使用这个 ANDROID_ID 没有确定的漏洞风险,但是将它用作唯一标识符时存在缺陷,我在这个 link.

ANDROID_ID seems a good choice for a unique device identifier. There are downsides: First, it is not 100% reliable on releases of Android prior to 2.2 (“Froyo”). Also, there has been at least one widely-observed bug in a popular handset from a major manufacturer, where every instance has the same ANDROID_ID.

它已经很老了,但是到目前为止还没有关于这个的更新。

是否可以根据这些值生成推送通知的 GCM ID?

GCM 服务器是生成正在使用的 ID 的服务器。我认为不可能影响 ID 的生成方式。

是否可以使用反向查询来识别个人?这些可以用于从 phone 运营商中提取有关个人的信息吗?

关于这两个问题,我对这两个问题了解不多,但我发现这个How reverse phone lookuplink可能会有帮助。

If you've ever looked at a phone number on Caller ID and wondered whose number it is, reverse phone lookup is for you. You can find out the person's name and address by using free reverse phone lookup or reverse phone directories available on the Web.