License Model 术语
学习软件许可证词汇和术语的所有细节和内涵,可能会让人感觉像是在学习一门新的语言。
软件许可
许可证密钥(License Key): 许可证“密钥”通常是一个长的字母数字字符序列,在编程界通常称为“字符串”。对我们来说,许可证密钥可以是这样,但也可以不止于这样。密钥可以是简短、独特的随机字符序列,用于识别我们系统中的特定许可资源及其规则。然后,您的企业可以将许可证密钥发送到我们的API进行“验证”,最终目标是:使用许可证密钥保护您的软件。(许可证密钥还可能包含嵌入式数据,通常称为“数据集”。“您的企业可以在系统中利用此数据集来存储许可证权利、客户信息以及此类性质的内容。) 通常也会被叫做 License Code 、Product Key
许可证验证(License Validation): 验证许可证密钥的行为,通常需要与一组额外的参数进行比较。使用NextKey的API,可以通过向我们的API验证端点发送许可证密钥来执行许可证密钥验证。然后,我们将根据您的许可证配置检查各种事项,例如许可证的到期日期、是否允许在当前设备上使用以及其他参数。通常也会被叫做License Verification
许可证权益(License Entitlements): 用于指代许可资源拥有的特定权限或授权。通常,授权指的是软件应用程序的特定功能。许可授权可以通过我们的API的授权资源进行管理,通过许可的“元数据”属性,可以存储任意键值对,或者授权可以直接嵌入到许可的防篡改密钥数据集中。
许可证元数据(License Metadata): 用于 NextKey API 资源的免费表单键值数据存储。通常用于存储许可功能切换、客户信息等。
许可证过期(License Expiration): 许可证到期的具体日期和时间。 过期的许可证在许可证密钥验证期间将返回为“无效”。 可以使用我们的 API 随时更改和续订许可证到期时间。
许可证服务器(License Server): 处理软件许可证所有琐事的服务器,例如许可证验证、设备激活、身份验证和授权等。我们的TO B产品是一款许可证服务器。我们是一家允许您按月、按年或永久许可您的软件应用程序的公司。我们的 SaaS API,以便您的工程团队无需花费时间和金钱来构建和维护内部许可证服务器。使用NextKey,您的工程团队无需了解如何构建许可证服务器,只需了解如何使用我们的API在您的应用程序中实现许可证。
许可证密钥生成器(License Key Generator): 我们的服务NextKey,是一个许可证密钥生成器和许可证激活服务器的结合体。
许可证管理器(License Manager): 软件许可证管理器(许可管理工具),是一个常常被滥用的词汇。 一方面,它可以指的是管理员可以用来管理许可证的应用程序。 例如,对于NextKey,我们的管理员仪表板可以被认为是这种类型的许可证管理工具,因为它允许您的团队管理许可证和其他资源以满足您的业务需求。 另一方面,许可证管理器也可能指的是企业用来管理其拥有的各种其他商业工具的软件许可证的工具。
许可模式(License Model): 企业如何包装和销售其软件,以及企业选择的许可规则来授权其产品给最终用户。 软件许可模式有很多种。 如果您不知道如何许可您的软件,那没关系——我们在这里帮助您。 您可以随时联系我们,我们将非常乐意指导您选择最适合您独特业务目标的许可模式。
许可即服务(Licensing-as-a-Service): 软件即服务(SaaS)的子集,允许用户通过互联网连接并使用基于云的应用程序。许可即服务(LaaS)允许用户连接到基于云的许可服务器(如NextKey),以快速将软件许可添加到其应用程序中。
许可API(License API): 一种面向软件开发人员使用的许可服务器,主要用于机器请求。 软件应用程序可以使用特定的数据格式与基于云的 API 通信,这些格式易于阅读和使用各种编程语言、操作系统和应用程序框架。 与其在您的软件应用程序中包含专有许可证密钥验证算法(因为所有内容都在最终用户的设备上处理,可以被黑客攻击),您可以将数据有效负载发送到安全的基于云的软件许可 API(例如 NextKey),以便在远程服务器上执行许可证验证,并将验证状态返回到您的应用程序以进行进一步处理。
节点锁定许可证(Node-locked License): 是只能在单个激活设备上使用的许可证。节点锁定是一种花哨的说法,即“我只想让许可证在单台机器上有效”,即你将许可证“锁定”到特定的机器资源。当许可证在未激活的机器上进行验证时,验证将返回无效。
浮动许可证(Floating License): 浮动许可证是一种可以在多个激活设备上使用的许可证。浮动是用来描述与"节点锁定"相反的术语,即浮动许可证可以在多台机器上"浮动",但通常最多只能在一定数量的机器上使用。可以简单的理解为:可以在多个激活设备上使用的许可证。
永久许可证(Perpetual License): 永久许可证是一种不失效的许可证,即永久有效,因此得名。
计时许可证(Timed License): 计时许可证(或固定期限许可证)是具有固定期限的许可证,即它在某个时间点到期。
订阅许可证(Subscription License): 是一种计时许可证的变体,但通常根据许可人的计费状态按计费周期(如每月或每年)续订。
功能许可证(Feature License): 功能许可证是一种许可证,用户有权使用软件应用程序的特定功能。例如,企业可能会将其软件应用程序提供的更有价值的功能放在“专业版”许可证后面,价格更高。您可以通过在许可证的元数据属性中存储功能切换来配置许可证以具有不同的功能授权。
软件激活
设备激活(Device Activation): 使用激活许可服务(如NextKey),企业可以激活(和停用)特定的设备,通常称为“节点”或“机器”,以特定的许可。例如,假设许可证“A”已激活机器“X”。当许可证“A”在机器“X”上使用时,一切正常,许可证验证请求将返回有效。但是,如果许可证“A”在机器“Y”上使用,验证将返回无效,带有特定的响应,说明机器“Y”未激活。同样,如果许可证“B”试图在机器“X”上使用,也会返回无效,说明同样的事情。
激活密钥(Activation Key):虽然激活密钥在外观上与许可密钥非常相似,但它们的功能却完全不同。激活密钥用于激活一个或多个设备的特定许可。在我们的例子中,激活密钥或激活“令牌”是您的工程团队用于与我们的许可服务器进行身份验证以激活软件应用程序中的设备的API凭据。通常也会被叫做Activation Code
设备ID(Device ID): 大多数常见操作系统安装都会为设备分配一个唯一标识符。这些ID,也称为UUID,通常类似于这样:7F4A9476-54FC-564B-98C8-F94B055D63BA
MAC地址(MAC Address): MAC(媒体访问控制)地址是识别设备上安装的网络适配器的数字。
设备指纹(Device Fingerprint):一种唯一且不变的值,用于识别特定的设备或机器。它可以是注册表或文件系统中存储的唯一值,也可以是设备ID、硬件ID、虚拟机ID、MAC地址和IP地址等硬件和软件标识符的组合。您的工程团队完全控制用于设备指纹识别的值。
复制保护(Copy-protection):保护您的软件应用程序不被复制,即盗版,到未经授权的设备上。您可以通过在许可模式中实施机器激活来引入反盗版措施。
离线许可和加密
本地软件:一种在客户现场安装的软件应用程序,通常位于客户自己的数据中心内,或者至少在客户控制的设备上,例如云服务器上。
物理隔离环境(Air-gapped):物理隔离环境是一种计算环境,它没有访问公共互联网。这可能意味着设备完全脱机,或者它可以访问本地网络。这是本地软件安装的常见做法。
代理许可服务器:一个具有有限公共互联网访问权限的小型服务器,其唯一目标是将本地网络的数据中继或“代理”到云许可服务器(例如NextKey)。对于许多脱机隔离环境,可以使用简单的代理许可服务器来与我们的云软件许可API通信。
加密许可密钥:加密过程将一个值转换为使用私钥(我们安全存储的私钥)生成的混淆版本。混淆或加密的值可以使用公钥(私钥的公钥版本)解密和读取,公钥与您的唯一NextKey帐户直接关联。
通常为了允许脱机许可密钥验证,您可以选择使用加密许可密钥,这些密钥可以使用您的帐户的公钥解密。加密许可密钥可以是使用我们的API的许可集成的额外安全措施,也可以用作独立机制,安全地将许可密钥和嵌入式数据集交付给物理隔离环境。
有效的许可密钥可以在您的软件应用程序中解密,显示一个数据集,包括授权、功能切换和其他客户信息。无效或篡改的许可密钥将无法解密。
签名许可密钥:与加密类似,签名过程将一个值转换为使用私钥(我们安全存储在服务器上的私钥)生成的签名。签名可以使用公钥验证,通常直接在您的软件应用程序中执行。
您可以选择使用加密签名许可密钥,并在脱机环境中验证其真实性,或者仅作为在线许可集成的额外安全措施。签名许可密钥可以验证,以确保嵌入在密钥中的任何数据都没有被篡改。
例如,如果您在许可密钥的嵌入式数据集中包含使用限制,您将希望确保恶意行为者无法简单地将其使用限制从10更改为10,000。使用签名许可密钥,任何对密钥数据集的更改都将立即使其失效,从而确保数据集免受篡改。
激活证明:与签名许可密钥类似,我们还提供生成“激活证明”的功能,用于脱机环境。设备可以使用许可管理门户或代理许可服务器激活,并且激活证明可以生成并交付给脱机设备。您的软件可以加密验证设备确实已激活,而无需设备连接到公共互联网。
攻击方法
软件密钥生成器:简单地说,密钥生成器是生成许可证密钥的某种形式的软件,即许可证密钥生成器。它经常被用在负面的环境中,因为在历史上,软件许可证密钥是使用专有算法生成的,其中的许多产品可以并且已经被反向工程。一旦弄清楚了专有算法,不良行为者就会创建一个使用专有算法来生成非法软件许可证密钥的软件应用程序。
中间人攻击:欺骗许可证服务器的行为。例如,不良参与者可能伪造许可服务器的地址api.key.com 例如,指向他们自己的本地许可服务器,该服务器总是使用有效的许可密钥进行响应。这是一种“容易实现的目标”攻击,因为它不涉及修改应用程序的源代码,因此通常更容易实现。但值得庆幸的是,我们有针对这种攻击媒介的解决方案。您可以通过让您的工程团队检查响应的加密签名来验证响应是否来自我们的许可服务器。
软件篡改:篡改或修改本地存储的数据的行为,如数据缓存。值得庆幸的是,来自NextKey的所有API响应都包括加密签名,该签名可以与数据一起存储并进行验证,以确保本地数据与我们最初发送的数据完全匹配。
软件破解:直接修改软件应用程序的源代码以绕过其许可系统的行为。安装在最终用户设备上的所有应用程序都容易被破解。防破解是一种试图防止软件破解的行为,或者更现实地说,是让您的软件针对破解程序“加固”。
软件盗版:未经授权分发您的软件应用程序及其在未经授权的设备上使用的行为。可以通过利用设备激活和密码验证来添加反盗版措施。