-1

我被要求考虑为我们的应用程序设置许可。

  • 客户“租用”10 个工作区(定义为拥有工作站的用户)
  • 客户总是有一台运行我们软件的服务器。

我们正在考虑以下设置。

  • 我们面向互联网的服务器之一* 进行工作区验证(*许可证服务器)
  • 用户机器有“一些”独特的指纹,这些指纹会报告给我们的许可证服务器
  • 客户的本地服务器“跟踪”所有正在使用的指纹,并向我们的许可证服务器报告经过验证的工作区列表

我们当前的问题是如何为所有用户机器生成和收集唯一的指纹。特别是如果它们在像 citrix 这样的虚拟化堆栈上运行。

对于普通机器,我们可以只使用带有一些额外细节的 mac 地址。

所有机器上是否有一个全局唯一的硬件 ID,尤其是每个工作站始终唯一的 citrix 环境?

是否有一些必须阅读的链接,指向实施许可证环境的人的链接,这些故事基于经验。

一些额外的信息:

  • 客户本地服务器始终连接到互联网
  • 如果我们的许可服务器出现故障,我们始终可以使用宽限期或电话解锁码。
4

4 回答 4

1

使用USB 加密狗似乎是唯一的选择。

检查此链接:http ://www.answers.com/topic/dongle

但是让它在虚拟机上工作可能会很棘手。这里的灵丹妙药是使用网络连接的 USB 集线器(例如AnywhereUSB

这意味着您的公司需要额外的硬件成本,以及愤怒的客户。

于 2011-04-14T11:26:59.863 回答
1

我在一家从事许可证管理业务(Agilis Software)的公司工作,这些问题已经在 Orion License Manager中得到解决和处理(来自其他公司的产品,如 Flexera 或 Safenet 也可以这样做)。纯软件系统(不需要加密狗)可以轻松满足您的要求,但要使其对合法用户有效和透明,您确实需要注意细节并考虑可能的部署方案。

首先,虽然它被广泛使用,但我不推荐 MAC 地址作为锁定参数。许多操作系统允许管理员指定 MAC 地址,这是一种不安全的方法。最好使用其他硬件和软件参数,但可用的参数取决于操作系统和硬件平台。显然,使用不止一个参数可以提高安全性,但是当人们对其系统进行微小更改时,您可能希望提供一些弹性。

虚拟系统确实排除了使用这些硬件参数进行锁定,但每个虚拟会话仍然具有可以使用的不变参数。为了进一步安全,您可以要求每个此类会话定期针对服务器重新验证其许可证(我们称之为“租用许可证”)。

您需要考虑的另一个问题是,如果其中一个工作站崩溃,用户如何收回和重新定位许可证。

如果您的客户与 Agilis 的 ISV 客户销售的许多最终用户一样,您还应该考虑公司在没有 Internet 连接的情况下如何获得他们的许可证(也许他们有一个隔离的内部网络,或者您可以)不要通过他们的防火墙)。您的现场服务器将如何获得其许可,您如何确保客户不会复制您的服务器,从而使他们的许可权利翻倍?

(不用说,Agilis 的系统当然包括对这些和其他挑战的解决方案)。

希望这可以帮助,

多米尼克

于 2011-04-14T17:22:27.523 回答
1

看看这篇文章:为您的软件添加网络浮动许可功能

它包含有关基于网络的浮动许可的基础知识以及我们的许可系统CryptoLicensing如何实施这些信息。如果您可以使用现成的商业系统,我建议您看一下 CryptoLicensing - 根据您描述的场景,它可以满足您的大部分要求。

免责声明:我在 CryptoLicensing 的开发人员 LogicNP Software 工作。

于 2011-04-15T07:09:36.083 回答
1

您必须考虑的事实:

  • 机器或工作站的概念并不真正可用,现在有了虚拟机、远程会话、管理程序等......“硬件”不再存在。一切都变成“虚拟软件” :-)
  • 新的 Windows 版本(又名 Vista、7)的安全性得到了显着加强,包括UAC。这对用户有利,但对开发人员不利。这意味着您的用户可能无法读取硬件信息,或在其环境之外的磁盘上写入 (c:\users\john\...)
  • 用户只需从一台机器移动到另一台机器(漫游)。随着便携式设备、PDA 等的普及,这一点每天都变得越来越真实……

这意味着,您将不得不考虑一个与用户而非机器更相关的系统。

我会避免安装驱动程序、加密狗或硬件 stuf,或具有提升特权的特殊进程或服务,因为从现在开始,这可能不支持所有场景。

因此,您可以通过提供与用户绑定的密钥(如 Microsoft 产品密钥)来实现这一点(您可以拥有一个存储用户 <-> 密钥关系的数据库)。您可以在用户登录的每台计算机上存储“每个用户”的密钥缓存,因此每次用户登录时,您都会检查他是否有有效的密钥,如果他没有,则“激活”并存储密钥(或最好是哈希)。您如何定义密钥以及如何存储它们(信用卡、USB 密钥等)取决于您。

于 2011-04-30T06:58:24.233 回答