嵌入式开发者社区

标题: 加密版TMS320C6748 DSP处理器加密原理及使用详解 [打印本页]

作者: 522066584    时间: 2016-9-2 15:48
标题: 加密版TMS320C6748 DSP处理器加密原理及使用详解
1,概述
    加密版的OMAP-L138 DSP+ARM 和 C6748 DSP处理器,使用安全引导模式,用户程序只能在绑定的器件上使用,提供了对知识产权的保护。C674x内核中的加解密组件如下图所示:
                              
一个安全类型的TMS320C6748/OMAP-L138器件支持128-bit eFuse 可编程密匙,这个密匙称之为KEK,对于每个器件来说它是随机的和唯一的,外部无法获取的。
器件中还有一个 8-bit eFuse 用来区别TMS320C6748器件和OMAP-L138器件,用户无法更改。
2,Key Data包含哪些信息
KeyData 包含的信息如下图所示:
这里把它定义为 SL_usrKeyStruc 结构体类型的变量。没有经过加密的 KeyData ,如下图所示:
其中,usrKeyMagic 为固定值 0x0xBE40C0DE,JTAGforceOff 通常设置为1禁用JTAG,hashAlgSelect为哈希算法的选择设置为1时选择的是SHA256算法,
randomSeed的值可以任意设置,custKey[0]和custKey[1]共同组成了一个128-bit的用户密匙也就是CEK。调用芯片ROM中的API函数使用芯片特定的KEK运用SHA256算法加密上图中的 KeyData 后得到的数据如下图所示:
我们可以看到不止加密了CEK,KeyData中的信息都被加密了。
3,如何加密Key Data
     加密Key Data需要编写DSP程序,使DSP以“SECUREWITHSK”模式退出 boot,然后调用DSP ROM中的API函数来加密KeyData。详细内容请参考附录参考文档。当然创龙为客户提供了相关的程序,参考操作指南即可很容易的完成对KeyData的加密以及获取加密后的文件。
4,如何加密image
    我们在PC上使用 SecureHexAIS_OMAP-L138.exe 工具加密image,该工具需要在命令行下使用,如下图所示:
  
     
使用该工具时需要有 .ini 的配置文件,.ini可以参考TI提供的“OMAP-L138_generic_secure.ini”文件来修改,当然创龙也提供了修改好的 .ini 文件,如下图所示:
  
需要注意的是在 .ini 中要使用加密后的Key Data来替换未加密的Key Data,这样加密后的image中所含有的是加密后的Key Data信息,直接使用加密后的Key Data信息是无法解密image的,因为加密image时使用的是未加密的Key Data中的CEK,所以只有DSP芯片通过自己的KEK解密Key Data得到原来的CEK后才能解密image,故 加密后的image与特定的DSP芯片绑定其他芯片是无法使用。否则image中所含有的是未加密的Key Data,里面含有的CEK可以很容易的解密image,这样的话其他加密版的C6748器件也能使用该image。 所以用户应该妥善保管自己的原来CEK,而经过KEK加密后的CEK泄漏是没有关系的。
下图展示了加密后的image中含有未加密的Key Data信息:
下图展示了加密后的image中含有加密的后的Key Data信息:
5,如何加载解密image
    Bootloader程序首先会加载 Key Data,通过 usrKeyMagic判断Key Data是否被加密,如果没有加密则直接安装CEK,使用CEK解密image。如果KeyData被加密了则首先使用芯片自生的KEK解密Key Data,如果解密后得到的usrKeyMagic为0x BE40C0DE,则解密正确,然后安装解密后的CEK解密image。流程如下图所示:
6,如何解锁JTAG
    加密版的C6748器件,上电后JTAG接口处于锁定状态,无法通过仿真器连接JTAG。需要通过“GenericSecureUartHost.exe”工具从串口加载解锁JTAG的程序,然后才能连接仿真器。生成解锁JTAG的程序时需要在 .ini 文件中设置 BootExit type as NONSECUREand TAPCFG= 0x0000FFFF。
   
7,如何从FLASH启动
   解锁JTAG后,就可以像操作普通芯片一样把加密后的image烧写进FLASH中,例如可以使用“NANDWriter_DSP.out" 把image烧写到NANDFLASH里,详细的操作方法请查阅广州创龙提供的用户手册。
参考文档:
OMAPL138_C6748_Generic_Security_Users_Guide_v1.0.2.pdf
Using the TMS320C6748 Bootloader.pdf
http://processors.wiki.ti.com/index.php/Basic_Secure_Boot_for_OMAP-L138_C6748


作者: b01010101    时间: 2016-9-7 22:40
请问“当然创龙也提供了修改好的 .ini 文件”,在哪里?
谢谢!
作者: b01010101    时间: 2016-9-7 22:43
请问“当然创龙为客户提供了相关的程序,参考操作指南即可很容易的完成对KeyData的加密以及获取加密后的文件。”,相关程序在哪里?
谢谢!

作者: human    时间: 2016-9-11 10:05
可以发邮件到support.tronlong.com邮箱的,提供一下购买信息。
作者: yshqin    时间: 2017-1-17 16:49
我是这样做的,但出现了一个错误,不知道怎么解决,如下
http://www.51ele.net/forum.php?m ... tid=1597&extra=
作者: 一度幻想v    时间: 2018-4-16 17:34
命令行下具体写些神马指令能具体说下嘛   我现在被困在这步了   新手求指教

作者: 明月松间照    时间: 2019-8-20 16:53
感谢楼主分享





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4