假设您在现场部署网络连接设备(小型 PC)。您希望允许这些设备在开机后回拨,然后由最终用户识别并激活。

我们当前的计划是用户在我们网站的激活页面中输入 MAC 地址。稍后我们的软件(在盒子上运行)将从接口读取地址并在“回拨”数据包中传输该地址。如果匹配,服务器将响应客户信息并激活该框。

我们喜欢这种方法,因为它很容易访问,并且通常打印在外部标签上(FCC 要求?)。

有什么需要注意的问题吗?(所使用的硬件外形尺寸较小,因此所有网卡等都是嵌入式的,很难更改。客户通常无法以任何方式直接访问操作系统)。

我知道微软使用 PCI 设备 ID、内存大小等为 Windows 激活做了一些疯狂的模糊哈希函数。但这对于我们的需求来说似乎有些过分了。

--

@Neall 基本上,为了讨论的目的,调用我们的服务器,您可以称我们为制造商。

尼尔是正确的,我们只是将地址用作常量。我们将读取它并在另一个数据包中传输它(比方说 HTTP POST),而不是依赖于以某种方式从以太网帧中获取它。

有帮助吗?

解决方案

我不认为你在这里所做的事情有什么神奇之处 - 你所做的事情不能被描述为:

“在生产过程中,我们在每台设备中刻录了一个唯一的编号,该编号既可供最终用户读取(位于标签上),又可由内部处理器访问。我们的用户必须将此号码及其信用卡详细信息输入到我们的网站中,盒子随后会联系网站以获得操作许可”

"无独有偶 我们还使用这个数字作为网络数据包的 MAC 地址,因为无论如何我们都必须在生产过程中唯一地分配它,所以它节省了我们重复这项工作”

我想说两个明显的危险是:

  1. 人们侵入您的设备并将此地址更改为其他人已经激活的地址。这种情况是否有可能发生,取决于偷窃的难度和盗窃的成本之间的某种关系。您可能想考虑一下他们如何轻松地获取固件升级文件并从中获取代码。

  2. 有人使用防火墙/路由器规则和一些自定义软件的组合来生成复制操作的服务器 你的 “auth server”并授予设备继续操作的权限。您可以通过将散列/PKE 组合作为协议的一部分来使这一过程变得更加困难。

与以往一样,一些乏味、昂贵的一次性黑客在很大程度上是无关紧要的,你不想要的是一种可以通过互联网分发给每个小偷的阶级突破。

其他提示

我不认为众所周知的 MAC 地址欺骗性在这种情况下是一个问题。我认为tweakt 只是想用它们进行初步识别。该设备可以读取自己的 MAC 地址,安装人员可以(只要它打印在标签上)读取相同的数字并知道,“好的 - 这是我放在位置 A 的盒子。”

调整 - 这些盒子会调用制造商的服务器,还是使用它们的公司/个人的服务器(或者在这种情况下是同一件事)?

MAC 地址与印刷在手册/贴纸上的序列号一样唯一。

Microsoft 进行哈希处理是为了防止 MAC 地址欺骗,并允许更多的隐私。

通过唯一的 MAC 方法,您只需位于同一子网中即可轻松将设备与客户匹配。散列通过对使用的标准不透明并且无法对各个部分进行逆向工程来防止这种情况发生。

(参见密码哈希)

从安全角度来看,我知道欺骗 MAC 是可能的,尽管我不完全确定它有多困难或需要什么。

否则,如果客户无法轻松访问硬件或操作系统,那么您这样做应该相当安全......也许最好贴一个警告标签,说明弄乱任何东西都会中断与服务器的通信。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top