Windows 8 ASHWID是否保证唯一标识设备?

Windows 8 ASHWID是否保证唯一标识设备?,windows-8,microsoft-metro,uniqueidentifier,Windows 8,Microsoft Metro,Uniqueidentifier,我们希望在Windows 8 Metro应用程序中使用唯一的设备标识符,建议使用ASHWID,记录如下: 我正努力想知道如何保证这是独一无二的。该格式包括每个硬件组件两个字节,其中最唯一可识别的是MAC地址和硬盘序列号。但是仅仅用两个字节来表示这些值似乎还不够 如果所使用的字节不是最低有效数字(人类读取的最右边的数字),那么生产线上相邻的两台相同的笔记本电脑可能具有相同的ASHWID。Mac和驱动器系列可能相邻 所以,我想我的问题的关键是,在你可能遇到重复之前,有多少设备必须使用相同的CPU类

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

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

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

所以,我想我的问题的关键是,在你可能遇到重复之前,有多少设备必须使用相同的CPU类型和内存配置来生产。看起来和问题的类型一样,所以我找到了一个计算器,并插入了数字:)

一个MAC地址和一个硬盘,每个硬盘有一个两字节的标识符,大约有40亿次排列。一旦你只分配了6000个,你得到的两个相同的大约是50/50

(转到并插入“6563”和“4294967296”进行实际计算)

所以这看起来一点也不特别。我对这个标识符的极端怀疑是正确的,还是我遗漏了一些真正重要的东西?

来自文章:

ASHWID在应用程序/软件包和 通过表示多个单独的硬件特征来创建设备。在里面 为了保护用户隐私,ASHWID因应用而异。 除非底层硬件已更改,否则来自同一个硬件的两个调用 应用程序将产生相同的ASHWIDs。但是,如果 设备的硬件配置文件会更改,例如当用户 拔下USB蓝牙适配器。后端云服务可以验证 测量ASHWID,并将其与以前报告的值进行比较。尽管 ASHWID变化,可以对其进行分析,以检测变化是否简单 由于系统中添加了内存等微小更改。这个 对差异的容忍程度取决于 后端云服务

ASHWID由9个部件组成:

  • 处理器的CPU ID
  • 内存大小
  • 磁盘设备的序列号
  • 网络适配器(NIC MAC地址-第一个实例)
  • 音频适配器
  • 扩展底座
  • 蓝牙地址
  • 移动宽带设备ID
  • BIOS

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

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

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

    至于唯一的硬件标识符,我建议使用包含多个组件的字符串的MD5摘要,ASHWID的一些组件可以参与其中

    您可能会随机生成一个大数字(64位以上)并将其存储(如在注册表中)。当然,如果您希望在散列中包含其他内容,那么用户的登录名/ID应该是该用户唯一的。如果用户克隆OS安装,或者在驱动器失败后替换HD,您还需要考虑您想做什么。p>
    回到Windows桌面世界,我使用了MachineGuid注册表项和启动设备的序列号,但我正在努力在Windows应用商店应用程序中访问这些信息。如果您有访问权限,则MachineGuid位于
    HKLM\SOFTWARE\Microsoft\Cryptography
    中,MS保证其唯一性。启动设备的序列号
    ::GetVolumeInformationW(::SHGetFolderPathW(~),~)
    将非常唯一,但只有32位

    我不相信阿什维德设计的是独一无二的。事实上,word unique甚至不在您链接的文档页面上。“实现每个设备逻辑”的含义是,单个设备(不是少数)可以通过ID识别。根据Microsoft提供的信息,ASHWID的建议用途似乎是检测已知用户的硬件更改。例如:Acmeflix希望将视频流传送给付费客户。为了防止用户与所有好友共享其凭据,Acmeflix允许每个帐户最多链接5台设备。ASHWID将允许这种情况发生。你应该对此做出回答。完整的MAC地址将是非常唯一的,但是-除非我误解-只有两个字节用于表示它。因此,在ID中最独特的组件中只有65536个排列。在数亿个设备中,使用其中一个MAC地址片段命中两个相同CPU ID的几率似乎很高。是否有方法提取特定组件的字节??是;您必须迭代ASHWID以查找组件。请注意,给定类型可能有多个组件。详情见MSDN: