申请验证

【勇芳软件工作室】汉化HomePreviousNext

您的应用程序必须执行以下步骤来验证许可证系统对挑战的响应:

1.接收对LSRequestLSUpdate功能的呼叫的输出参数,以及许可证系统的响应。

2.使用RSA Data Security,Inc.提供的MD4消息摘要算法计算第二条消息摘要有关此消息摘要格式的其他信息,请参阅LS_CHALLDATA.

3.将此消息摘要与许可证系统的消息摘要进行比较。

接受结果只有两者相等。

您可以使用两种不同的方法来验证挑战响应:

*您可以将代码中的秘密和算法(算法方法)或

*您可以使用预期的回应(表查找方法)预先计算包含多项随机挑战的表格。

有关编码挑战的其他信息,请参阅反篡改指南.

算法方法

使用这种方法,您可以将挑战算法和实际秘密值合并到程序代码中。该方法要求您采取措施来掩盖代码,并确保秘密本身不容易检测到。这些步骤在反篡改指南中描述。

表查找方法

通过这种方法,您可以在程序代码中加入有效的挑战响应的预计算表。该表应包含每个可能的挑战的行和每个唯一秘密响应的列。您的应用程序可以通过检查表中相应的挑战/响应交集来验证挑战。该方法要求您在编写应用程序时选择挑战值除了秘密。

如果入侵者成功复制了应用程序的挑战和响应表,他们也可以规避和替换合法的许可证提供者。如果表中的所有数据都是已知的,则应用程序的秘密是易受攻击的。在检查应用程序和许可证提供者之间的数据交换时,随着表的大小增加,复制整个表变得更加困难。因此,如果您使用表查找方法,请计算大量随机数值,以确保存在大量可能的挑战和响应。

在每个运行时间的开始,您的应用程序必须从表中选择一个挑战值。然后必须在调用LSRequest函数时传递此值。当呼叫返回时,应用程序必须将实际的挑战响应与该挑战值的预期响应进行比较。

以下是示例【】表。值的格式和大小只是示例。

挑战
秘密1
响应
秘密2
响应
秘密3
响应
秘密4
响应
1. 8675309783ndmw7323487dn262367dkb37476dndk263
2.63JSk2363387d6b367b6b5u8b78hn65bv4g7076bb856v6
3.833jh2673d83m29s8N7GJ829n889bn73nBH89348nUU7
4.8LES654733nbV88H8hu8B73h0dn397590nd73n
5.28gHjB439834nd8393n3d93n38393n3ed83n983n38db38

如果应用程序使用上述示例表,并挑战【秘密3】第二个挑战值【63JSk23】,则会在LSRequest 函数的调用中传递此值。合法的许可证制度将以【8hn65bv4g7】的挑战回应和成功的状态作出回应。然后,应用程序将在表中的相应挑战/响应交集中检查条目,并将其与值【8hn65bv4g7】进行比较。在这种情况下,它会找到一个匹配,所以挑战响应是有效的。

除了包括上述示例之外的表格外,您的应用程序还可以包含与LSUpdate功能的调用一起使用的类似的挑战响应表。

有关编码挑战的其他信息,请参阅反篡改指南.