找回密码
 立即注册
Qt开源社区 门户 查看内容

嵌入式软件保护方案

2019-3-11 08:20| 发布者: admin| 查看: 711| 评论: 0

摘要: 来源于微信公众号:为远信安 方案概述随着嵌入式产品性能的日益提高,嵌入式系统在消费类电子、汽车、工业控制和通信等行业迅速普及;但由于嵌入式系统开发成本高、研发周期长,使得关键技术的加密和重要数据的保密 ...
来源于微信公众号:为远信安

方案概述

随着嵌入式产品性能的日益提高,嵌入式系统在消费类电子、汽车、工业控制和通信等行业迅速普及;但由于嵌入式系统开发成本高、研发周期长,使得关键技术的加密和重要数据的保密问题日益突出,只有通过自主创新掌握知识产权,才能占领信息技术前沿。在这些嵌入式系统中采用低成本、高效率的方法保护自己的科研成果不被非法仿制和剽窃,同时保存一些关键代码或数据已成为困扰许多研发工程师的问题之一。

为远信安WY16系列芯片提供一系列机制用于软件保护,包括基于非对称算法的挑战应答机制、完整性校验机制、关键数据存储机制、程序移植机制、WDT/GPIO机制以及密钥管理机制。以上软件保护机制客户可以根据实际情况进行选择组合。

挑战应答

支持基于非对称算法ECC的挑战应答机制,如下图所示,同时也支持基于对称算法的挑战应答机制。该方法是最常见的软件保护方法,开发成本低,实现简单,但是安全性也低。攻击者可以通过获取HOST端程序屏蔽掉对比点来破解芯片。



算法移植

完整的软件程序是由HOST程序和安全芯片程序共同组成的。算法移植就是在WY16内部用C语言编程实现HOST中被移植代码的功能,编译成功后将生成的 Hex文件下载到WY安全芯片中。当 HOST需要运行被移植的程序时,给 WY16发送指令来调用,然后WY16返回运行结果。



完整性校验

完整性校验可对软件启动过程中的程序代码进行完整性度量,只有通过完整性校验的程序代码才能在处理器中运行,这样就避免了被篡改的启动过程给系统带来的威胁。用户使用该机制时分为两大步骤:软件初始化和软件运行。

软件初始化时,需要用户对要保护的代码进行16分组,每个分组进行抽取或不抽取,然后调用WY16的算法库得到校验值codekey,WY16的算法库计算校验值时加入了WY16的SN信息,保证唯一性,并把codekey保存到WY16中。



当软件正常运行时,若要对代码完整性进行验证,则执行以下步骤:

首先,由HOST从WY16获取要验证的codeid,WY16返回的codeid是随机产生的。然后,HOST通过codeid找到对应的分段的代码的信息,计算codekey。最后,用该codekey发起挑战应答来决定程序是否正常运行。



关键数据存储

WY16提供的数据区可用于用户关键数据的存储,在使用时加密读到HOST端RAM中,然后解密使用。数据的存储和读取都需要认证HOST的身份,加密写的密钥认证通过了才能写入WY16,加密读的密钥认证通过了才能将数据从WY16中读出。关键数据存储如下图所示。



WDT/GPIO控制

WY16可提供2路GPIO和1路WDT计数器,可通过GPIO的状态来控制HOST执行流程。

由于WY16 GPIO可与HOST的检查PIN相连,在数据读取过程中,检测PIN的状态是否符合预期,若PIN的状态不符合预期,则说明WY16 WDT溢出导致GPIO复位,进一步说明HOST程序被非法修改或者暂停。HOST在该情况下可产生复位或中断以保护自己。



密钥管理及下载

WY16有一套完整的密钥管理及下载流程,用于生成过程中对于密钥管理、程序的下载及数量管控。

1.管理员(老板)可以配置UKEY烧写密钥,授权烧写颗数,烧写内容

2.程序员使用老板配置的文件进行开发

3.烧写员使用UKEY和烧写器烧写,烧写后锁定不可更改

密钥管理特点:

1.防山寨仿冒:相关软件和库针对每个客户都是定制设计的,并且USBKEY及以上软件之间是一一绑定相关,必须版本一致才能使用,A公司烧写的WY16芯片和B公司烧写WY16芯片即便配置的密钥一样,也无法进行相互访问,有效防止第三方公司仿冒窜货。

2.防内部人员攻击:程序开发员:使用的WY16_engineer.h文件是真实密钥的密文,知道此密文也无法实现对WY16芯片进行复制,有效的防止员工辞职仿冒原公司产品的风险。

3.防烧写员:使用USBKEY和烧写器时,老板严格控制授权烧写颗数,有效的防止内部烧写员配合代工厂仿冒产品的风险。

生产出货数量控制:整个过程只有老板(管理员)一个人知道真实的密钥,并可以设定烧写数量,方便准确控制公司产品出货数量

4.防外部攻击破解:WY16_API库内部使用了密钥散列算法(每家客户的算法都不同),烧写时根据USBKEY配置的密钥、WY16芯片的SN号和UID号计算出每颗WY16芯片的实际密钥再进行写入,由于SN号唯一性及UID号的不同,这样即便物理上完全复制一颗WY16芯片到另外一颗WY16芯片中,也无法正确工作,有效的防止破解一颗芯片后整个系统被破解。

欢迎关注为远信安公众号





----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:为远信安,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了