碧波液压网 欢迎你,游客。 登录 注册

采用闪存的微控制器在代码发布中的代码保护

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。
液压导航网

  包装信息可能包含:指定目标设备、代码版本、大小、日期和其它对用户有用的信息。这个信息可警告操作员正在使用一个较低版本的固件,从而会使设备的部分性能降低,或者正在装载一个不支持的指定设备。

  在如今竞争激烈的市场中,保护公司的知识产权(IP)是最高优先级的事项之一。多年的开发可能产生了包含很多商业秘密或专有算法的设计。随着基于闪存的微控制器得到更多地应用并集成了更多的特性,许多公司摒弃传统的一次性可编程(OTP)微控制器(MCU),转而采用闪存。

  闪存允许在生产线的终点进行实时编程,也允许在生产之后修改代码。但是如果通过因特网,公司将面临IP将泄漏给竞争者的问题。应该采用各种方法来控制更新授权许可,并在泄漏产品的IP的情况下,提供现场更新。

  代码保护

  保护现场配置的软件产品的方法很多,采用哪种方法取决于供应商希望保护什么。大多数软件保护机制是防止对程序或数据进行未经授权的复制。如今复制文件非常容易,通过因特网能很快地找到许多拷贝。当固件是某个硬件平台的一部分时,保护固件中包含的IP通常比保护对文件的拷贝更重要。当然,如果固件更新需要购买,那么保护拷贝也很重要。

  另一个问题涉及基于微控制器产品破解密码的性能。RSA和DES标准对性能和存储器的要求都很高。不幸的是,大多数的微控制器在这两方面的资源都有限,从而要求不同的加密和解密方法。我们必须提供一种通用的或者针对特定设备的密钥方案。

  简单密码

  循环码(Rolling-code)产生器已在车库门锁、安全进出卡等多种设备上应用多年。图1显示简单的循环码产生器是如何工作的。一组具有相同时钟信号的双稳态触发器串联连接,其输出端有各种抽头。在给出的例子中,Q2端没有被使用,其余的输出端连接唯一的OR功能端口,该端口在每个时钟信号沿得到新的输入位。可能产生的组合数目取决于触发器的个数和接到OR函数端口的抽头个数。

  通常将几个触发器的输出用作循环钥匙码。实际应用时(如作在车库门锁),使用一个完全相同的发生器来测试钥匙码。随着新码被不断地使用,会发生整个序列重复出现的情况,这可能是在千万或几亿个钥匙码之后。这时就不能再使用它了。在用于车库门锁的情况下,它可以防止罪犯用无线接收机盗听并简单地重现钥匙码以开门。

  在代码加密的情况下,触发器的输出与被加密或解密的数据被送到另外一个OR函数端口(图2中的A1)。数据的每个字节、字或双字都与选中的触发器端口进行OR运算,再加上用户特定另外函数。那个函数可以简单到只加上一个常数。这个过程必须是可逆的,所以用户定义的函数不是随机的。由安置触发器抽头决定的密码和由移位寄存器的初态、所选定的种子一起提供了加密和解密的算法。可按照串行数字的方法拆分这些密码,以向特定设备提供唯一的密码。也就是说,设备的串行号码仅提供一半的密码信息,制造商保留其余密码信息。很明显,这种方案存在着多种排列。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码: 看不清?点击更换

最新评论