5

我们对通过 USB 密钥安装的软件进行了自动更新(自动运行)。如果我想确保只使用授权的 USB 密钥,最好的方法是什么?

我们的安装程序已经签名,否则它不会运行。但我更想检查 USB 密钥是否有签名的安装程序,如果它不存在,则忽略,甚至“弹出”USB 设备。

而且我应该能够分辨出 USB 存储设备之间的区别(在代码中),比如相机或键盘。

我只想禁用未经授权的存储设备。

谢谢你的想法。

4

3 回答 3

4

非授权存储设备?这取决于您希望它有多安全。对于最安全的级别,它将包括:

  • 写入闪存驱动器的特殊固件以获得额外的“元信息”(阅读:昂贵的闪存驱动器定制制造)
  • 用于从闪存驱动器读取元信息的特殊 Windows 驱动程序
  • 您的程序与该设备驱动程序对话以确认它已获得授权。

或者对于最不安全的级别,您有以下选项:

  • 使用隐藏文件和特殊密钥(可能是上次文件系统修改的哈希时间或其他东西?)(dd 易碎)
  • 降至文件系统级别以下并重新创建您自己的非常简单的文件系统..(尽管通过默默无闻提高安全性,但 dd 可能会破坏它)

此外,对于“最安全”的选项,您确实需要一种比自动运行和设备驱动程序更安全的运行程序的方式(它可能是半生不熟的,以使任何东西看起来都是授权的)。为什么您仍然希望它仅从授权的闪存驱动器进行更新?

于 2010-04-13T19:29:27.767 回答
2

您可能能够读取 USB 驱动器的序列号(假设您获得具有序列号的 USB 驱动器;并非所有人都这样做)。然后您的应用程序可以打电话回家以获取最新的授权序列号列表,并检查是否有匹配项。

于 2010-04-13T19:38:37.053 回答
0

Earlz 的反应很好,尽管我认为您不需要定制制造闪存驱动器......您只需要具有某种唯一固件加密标识符的闪存驱动器。也许金士顿数据旅行者系列中的某些东西可能会起到作用。(我从来没有真正使用过这些加密的 USB 棒,所以我对实际的实现细节有点模糊)。

于 2010-04-13T19:38:58.627 回答