如何限制Chrome应用仅适用于特定计算机?

时间:2014-04-06 13:59:20

标签: security token google-chrome-app software-distribution secret-key

我正在使用Chrome(打包)应用开发POS客户端。它将在已安装的计算机上本地运行,并通过Web服务与服务器交互。此应用程序应仅在商店的特定计算机上运行。

我知道我可以访问每个商店并安装.crx文件,在这种情况下,我不必将应用程序发布到Chrome网上应用店。但是,我希望将其发布到Chrome网上应用店,以便我可以利用其自动更新功能。

我该怎么做才能确保应用只能在商店的电脑上运行? (我可以去商店并安装第一次安装所需的任何东西)。

我想到的选项:

  1. 创建一些密钥,并在第一次运行时将其输入到应用程序。
  2. 构建一个小工具(winforms应用程序)以生成基于时间的令牌并将其安装在计算机上。每次打开应用程序时,工作人员都需要输入令牌。
  3. 更好的想法如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

你说应用程序需要与Web服务通信才能工作。这是一个简单方法的关键。 (假设您不关心员工是否获得客户端应用程序的非功能性副本。)

  • 启动时,app会检查存储在chrome.storage.local中的某种验证是否存在。如果存在,则继续启动。
  • 如果缺少验证,应用程序会检查是否存在chrome.storage.local中存储的GUID。
  • 如果缺少GUID,请使用window.crypto.getRandomValues()等内容生成并存储GUID。
  • 通过发送GUID并获得回复,要求服务器进行验证。
  • 如果验证回来,请将其保存在chrome.storage.local中,然后返回到此序列的开头。
  • 否则告诉用户迷路。

此方法的完整版本将具有一些其他功能:

  • 使用HMAC(GUID,secret)进行验证。我假设工作人员不是技术超级巨星,所以像布尔这样简单的东西就足够了。
  • 可选择添加每次启动步骤,该步骤会发送GUID并进行验证并确认每次都有效。
  • 请求验证时,您可能会提示您在问题中提到的密钥。在正常情况下,仅在供应时才需要这样做。
  • 如果您还没有弄明白,服务器现在就像一个简单的许可服务器,因此您可以决定如何确定验证请求是否成功。也许它只允许一次存在N个验证,或者在完成配置后,您将硬编码未来的验证失败。也许它限制了对某些IP地址的验证请求。你可以选择。

这就是要点。这是一个简单的DRM系统,比安装中的enter-secret-install方法更容易管理,但是不能承受超过30分钟的攻击(因为智能攻击者只会将另一台机器的GUID和HMAC验证注入到重复机器的chrome.storage.local)。