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

时间:2016-01-27 00:23:54

标签: android security google-cloud-messaging

我编写了一个Android应用程序,它使用以下方法生成Android唯一设备ID。我假设此ID对每个设备都是唯一的,与其上安装的应用程序无关。我还假设即使应用程序多次卸载/安装,也可以在设备上生成相同的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?可以使用反向查找来识别个人吗?这些可以用来从电话运营商那里提取有关个人的信息吗?

1 个答案:

答案 0 :(得分:1)

如果公开公开此值,是否存在任何安全漏洞?

据我所知,使用此ANDROID_ID的漏洞没有明确的风险,但使用它作为唯一标识符存在缺陷,我在此link中找到了它。

  

ANDROID_ID似乎是唯一设备标识符的不错选择。有一些缺点:首先,它在2.2之前的Android版本(“Froyo”)上并非100%可靠。此外,在主要制造商的流行手机中至少有一个被广泛观察到的错误,其中每个实例都具有相同的ANDROID_ID。

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

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

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

可以使用反向查找来识别个人吗?这些可以用来从电话运营商那里提取有关个人的信息吗?

关于这两个问题,我对这两个问题知之甚少,但我发现这个How reverse phone lookup链接可能会有所帮助。

  

如果您曾查看过来电显示的电话号码,并想知道它的号码是什么,那么反向电话查询就适合您。您可以使用网上提供的免费反向电话查询或反向电话簿查找此人的姓名和地址。