分享一下嵌入式产品安全保护的措施

来源:互联网 发布:数据帧结构 格式 汇总 编辑:程序博客网 时间:2024/06/05 17:57

在移动互联网时代,越来越多的智能硬件设备涌现,但是如何确保自己的知识产权不被侵犯也是个迫在眉睫的问题。今天就和大家分享一下从技术方面,保证软件安全的经验。

1.绑定唯一序列号方式

特点:成本低,调试方便

安全性:较低,容易通过动静态或者动态调试,篡改设备号方式进行攻击。

目前很多硬件设备都具有唯一设备id,包括SPI flash,SD card,网卡等硬件设备。绑定唯一id的产品由于序列号都不一致,往往需要输入序列号进行激活。序列号的产生依赖唯一设备id。实现方式有很多种,举一个最简单的例子,最常用的方式就是通过hash运算产生。产生的序列号对应唯一的激活码。激活码的算法产生依赖与设备序列号,算法不对外公开。当输入激活码时,软件在内部进行对比校验。

2.通过加密(摘要)芯片进行加密方式

特点:成本较高,安全性较好

安全性:较高,不容易破解

目前有很多加密芯片,最常用的方式就是摘要对比。

SHA256,代表芯片AT88SA102S

SHA256是公认的比较安全的摘要算法,AT88SA102S(加密芯片)通过,challenge,response方式和系统进行交互,通俗的说,就是一问一答,如果加密芯片答非所问,那么就鉴权失败。

AT88SA102S中烧录好key,烧录完成后,key就无法被读出,也无法通过物理方式把芯片进行破坏读取。在芯片内实现了SHA256的引擎,其中烧录进去的key每一次要参与hash运算,key有多组,在发送challenge时可以选择。这样系统可以每次向加密芯片发送challenge,加密芯片返回的摘要信息。SHA256摘要是不逆的,即使从总线上通过逻辑分析仪获取到摘要信息,也无法知道烧录在加密芯片中的key。

challenge的产生可分为固定和动态方式,固定方式是只在系统中提前写好一些预先算好的摘要,以及每次发出的challenge。固定方式好处是在系统中,不用保存key,不在系统中进行SHA256摘要运算,这样破解者对系统进行动态分析,也无法获取到key。但是会带来隐患,可以对系统进行硬件攻击。比如通过写好获取到的challenge,response的对的单片机伪装成加密芯片,每次完成鉴权。

动态方式是系统中保存key,每次动态产生随机的challenge,所以每一次加密芯片应答的也是唯一的摘要信息。这样攻击者无法通过逻辑分析仪分析,然后进行硬件攻击。但是可能有人会问,那如果通过动态分析,获取到key,岂不是被破解?首先,对嵌入式设备动态分析,获取到key就是很复杂的,完全通过一些技巧增加复杂度。另外即使获取到key,由于AT88SA102S的key设置的比较巧妙,有一部分是预先出厂写好的,由代理商提供,每一批的次的硬件会有差别,所以即使被盗取了key,也无法保证能烧录到正确的AT88SA102S中。

好像还有点遗漏,也许要问,如果攻击者要是获取到了完整的key,再通过硬件实现SHA256摘要算法,进行攻击呢?如果要是这样,那只能呵呵了。但是,即使真能用硬件实现了摘要算法(比如用单片机伪装),实际上在时序上也很难满足,毕竟MCU和ASIC比起来,做SHA256的速度还是要差很多。

3DES,代表芯片DM2016,加密摘要解密对比

对称加密简单的说,就是加密和解密采用相同的密钥,具有速度快等特点。DM2016实际上就是3DES的解引擎。也是先烧录好key,同时在系统中也保留相同的key。这样每一次,系统对随机数或者是密文进行加密,之后传输给DM2016引擎。DM2016响应解密的消息。实际上也是摘要对比的一种保护方式。

非对称加密,代表芯片LKT4201N

非对称加密和对称加密的区别就是,加密和解密使用不同密钥。在上面的加密芯片有统一的问题,就是理论上存在key被通过动态分析获取的问题,如果采用非对称加密,则可以避免。公钥和私钥成对出现,私钥烧录在芯片中,公钥保存在系统软件中,即使获取到系统软件中的公钥,也无法推算出私钥。这样每一次系统发送plaintext(随机数,摘要,密文)给加密芯片,芯片通过私钥进行加密返回,如果系统通过公钥进行解密,获取到plaintext则成功。可见,使用非对称加密的方式安全性最好,无法获取到私钥,也无法通过硬件进行攻击。

3.ARM Trustzone

特点:保密性好,难度较大

安全性:很好

国内关于ARM Trustzone的研究也比较少,目前自己也是认识一些皮毛,对软件保护方面,使用trustzone是个不错的选择。敏感的数据和算法运行在trustzone环境中,无法被跟踪。具体实现方式有待继续研究。



0 0
原创粉丝点击