我需要在嵌入式协议栈中实现运行时许可。
我已经知道如何实现这一点,但我有兴趣听取任何其他方法,或任何需要注意的陷阱。您可以假设运行堆栈的每个设备都具有唯一的硬编码标识符(等效的MAC地址)并可以访问某些非易失性存储。
我计划的方法是提供通过散列函数从制造商应存储在非易失性存储中的设备标识符生成的许可密钥。堆栈将使用相同的散列函数对标识符进行散列,并在运行之前验证它是否与存储的密钥匹配。
答案 0 :(得分:3)
您必须确保攻击者无法轻易地重新计算许可证。最明显的方法是使用您的私钥将许可证作为设备标识符的签名,并让应用程序使用将嵌入软件中的公钥对其进行验证。
您还需要确保软件没有被篡改,但这完全是另一个故事。