【问题标题】:Is an ASHWID guaranteed to uniquely identify a device?ASHWID 是否能保证唯一标识设备?
【发布时间】:2012-09-21 16:42:54
【问题描述】:

我们希望在 Windows 8 Metro 应用中使用唯一的设备标识符,建议使用 ASHWID,此处记录:

http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx

我很想知道如何才能保证这是独一无二的。该格式包括每个硬件组件两个字节,其中最唯一可识别的是 MAC 地址和硬盘序列号。但是这些值只有两个字节似乎还不够。

如果使用的字节不是最低有效数字(最右边,人类读取它们),那么生产线上相邻的两台相同的笔记本电脑可能具有相同的 ASHWID。 MAC 和驱动器序列可能是相邻的。

所以,我想我的问题的症结在于,必须生产多少台设备具有相同的 CPU 类型和内存配置,然后才有可能遇到重复。似乎与Birthday Paradox 的问题相同,所以我找到了一个计算器并输入了数字:)

使用一个 MAC 地址和一个硬盘,每个硬盘都有两个字节的标识符,您有大约 40 亿个排列。一旦你只分配了 6,000 个,大约 50/50 有两个是相同的。

(前往http://jeff.aaron.ca/cgi-bin/birthday并插入“6563”和“4294967296”进行实际计算)。

所以这看起来真的不是很独特。我对这个标识符持怀疑态度是对的,还是我错过了一些真正重要的东西?

【问题讨论】:

  • 我不相信 ASHWID 的设计是独一无二的。实际上,您链接的文档页面上甚至都不存在单词 unique。
  • “实现每个设备的逻辑”的含义是可以通过 ID 来识别单个设备(不是少数)。
  • 根据 Microsoft 提供的信息,建议使用 ASHWID 似乎是为了检测已知用户的硬件变化。例如:Acmeflix 想要将视频流式传输给付费客户。为了防止用户与他们的所有朋友共享他们的凭据,Acmeflix 允许每个帐户最多链接 5 台设备。 ASHWID 将允许该方案发挥作用。
  • 你应该这样回答。

标签: windows-8 microsoft-metro uniqueidentifier


【解决方案1】:

不,ASHWID 不能保证唯一标识设备。在工作中,我看到每天发生几十次碰撞,其中一个月是我们的容忍度。

此外,同一设备的 ASHWID 可能会经常更改 - 因为 Windows 8 通常会在可能添加坞站、USB 拇指驱动器或插入式蓝牙适配器的笔记本电脑上运行。 ASHWID 的最佳用途是验证用户是否仅将您的应用安装到有限数量的设备上,您可以通过解析 ASHWID 并有选择地将其与该用户之前看到的 ASHWID 进行比较来做到这一点。

至于唯一的硬件标识符,我建议对包含多个组件的字符串进行 MD5 摘要,其中 ASHWID 的某些组件可以发挥作用。

您可能会随机生成一个大数字(64 位以上)并将其存储(例如在注册表中)。当然,如果您希望在哈希中包含其他内容,则用户的登录名/ID 对于该用户应该是唯一的。如果用户克隆操作系统安装或在驱动器故障后更换 HD,您还需要考虑您想要做什么。

回到 Windows 桌面世界,我使用了 MachineGuid 注册表项和启动设备的序列号,但我正在努力在 Windows 应用商店应用程序中访问该信息。如果您有权访问,MachineGuid 位于HKLM\SOFTWARE\Microsoft\Cryptography,MS 保证它是唯一的。引导设备的序列号::GetVolumeInformationW(::SHGetFolderPathW(~),~) 将是相当唯一的,但只有 32 位。

【讨论】:

【解决方案2】:

来自文章:

ASHWID 在应用程序/包和 设备通过表示几个单独的硬件特性。在 为了保护用户隐私,ASHWID 因应用而异。 除非底层硬件发生变化,否则来自同一个的两个调用 app 将产生相同的 ASHWID。然而,ASHWID 会改变,如果 设备的硬件配置文件发生变化,例如当用户 拔下 USB 蓝牙适配器。后端云服务可以验证 ASHWID 并将其与先前报告的值进行比较。虽然 ASHWID 变化,它可以被解析以检测方差是否简单 由于微小的变化,例如向系统添加内存。这 对差异的容忍程度取决于实施 后端云服务。

ASHWID 由 9 个组件组成:

  1. 处理器的 CPU ID
  2. 内存大小
  3. 磁盘设备的序列号
  4. 网络适配器(NIC MAC 地址 - 第一个实例)
  5. 音频适配器
  6. 扩展坞
  7. 蓝牙地址
  8. 移动宽带设备 ID
  9. BIOS

CPU ID 只对处理器型号唯一,但 NIC MAC 地址应该是唯一的。话虽如此,MAC 地址可以被克隆,USB NIC 可以从一个设备移动到另一个设备。因此,虽然我猜可能两台设备具有相同的 ASHWID,但它非常不太可能。使用此 ID 最具挑战性的是硬件可以更改。由服务决定允许更改 ASHWID 的哪些部分以及不允许更改哪些部分(可接受的差异)。 article 本身提供了这方面的指导。

【讨论】:

  • 完整的 MAC 地址将是非常独特的,但是 - 除非我误解 - 只有两个字节用于表示它。所以这只是 ID 中最独特的组件中的 65,536 个排列。在数亿台设备中,使用其中一个 MAC 地址 sn-ps 命中两个相同 CPU ID 的可能性似乎很高。
猜你喜欢
  • 1970-01-01
  • 2011-06-09
  • 2012-03-21
  • 2013-07-17
  • 2014-04-05
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多