加密版TMS320C6748 DSP处理器加密原理及使用详解 - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3255|回复: 5

加密版TMS320C6748 DSP处理器加密原理及使用详解

[复制链接]

27

主题

29

帖子

157

积分

QQ游客

积分
157
发表于 2016-9-2 15:48:25 | 显示全部楼层 |阅读模式
1,概述
    加密版的OMAP-L138 DSP+ARM 和 C6748 DSP处理器,使用安全引导模式,用户程序只能在绑定的器件上使用,提供了对知识产权的保护。C674x内核中的加解密组件如下图所示:
1.png
                              
一个安全类型的TMS320C6748/OMAP-L138器件支持128-bit eFuse 可编程密匙,这个密匙称之为KEK,对于每个器件来说它是随机的和唯一的,外部无法获取的。
器件中还有一个 8-bit eFuse 用来区别TMS320C6748器件和OMAP-L138器件,用户无法更改。
2,Key Data包含哪些信息
KeyData 包含的信息如下图所示:
2.png
这里把它定义为 SL_usrKeyStruc 结构体类型的变量。没有经过加密的 KeyData ,如下图所示:
3.png
其中,usrKeyMagic 为固定值 0x0xBE40C0DE,JTAGforceOff 通常设置为1禁用JTAG,hashAlgSelect为哈希算法的选择设置为1时选择的是SHA256算法,
randomSeed的值可以任意设置,custKey[0]和custKey[1]共同组成了一个128-bit的用户密匙也就是CEK。调用芯片ROM中的API函数使用芯片特定的KEK运用SHA256算法加密上图中的 KeyData 后得到的数据如下图所示:
4.png
我们可以看到不止加密了CEK,KeyData中的信息都被加密了。
3,如何加密Key Data
     加密Key Data需要编写DSP程序,使DSP以“SECUREWITHSK”模式退出 boot,然后调用DSP ROM中的API函数来加密KeyData。详细内容请参考附录参考文档。当然创龙为客户提供了相关的程序,参考操作指南即可很容易的完成对KeyData的加密以及获取加密后的文件。
4,如何加密image
    我们在PC上使用 SecureHexAIS_OMAP-L138.exe 工具加密image,该工具需要在命令行下使用,如下图所示:
   5.png
6.png
     
使用该工具时需要有 .ini 的配置文件,.ini可以参考TI提供的“OMAP-L138_generic_secure.ini”文件来修改,当然创龙也提供了修改好的 .ini 文件,如下图所示:
7.png
8.png
  
需要注意的是在 .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信息:
9.png
下图展示了加密后的image中含有加密的后的Key Data信息:
10.png
5,如何加载解密image
    Bootloader程序首先会加载 Key Data,通过 usrKeyMagic判断Key Data是否被加密,如果没有加密则直接安装CEK,使用CEK解密image。如果KeyData被加密了则首先使用芯片自生的KEK解密Key Data,如果解密后得到的usrKeyMagic为0x BE40C0DE,则解密正确,然后安装解密后的CEK解密image。流程如下图所示:
11.png
6,如何解锁JTAG
    加密版的C6748器件,上电后JTAG接口处于锁定状态,无法通过仿真器连接JTAG。需要通过“GenericSecureUartHost.exe”工具从串口加载解锁JTAG的程序,然后才能连接仿真器。生成解锁JTAG的程序时需要在 .ini 文件中设置 BootExit type as NONSECUREand TAPCFG= 0x0000FFFF。
12.png
   
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

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有5人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

3

主题

5

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
发表于 2016-9-7 22:40:44 | 显示全部楼层
请问“当然创龙也提供了修改好的 .ini 文件”,在哪里?
谢谢!
回复 支持 反对

使用道具 举报

3

主题

5

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
发表于 2016-9-7 22:43:59 | 显示全部楼层
请问“当然创龙为客户提供了相关的程序,参考操作指南即可很容易的完成对KeyData的加密以及获取加密后的文件。”,相关程序在哪里?
谢谢!
回复 支持 反对

使用道具 举报

2

主题

766

帖子

2782

积分

广州创龙

Rank: 8Rank: 8

积分
2782
发表于 2016-9-11 10:05:59 | 显示全部楼层
可以发邮件到support.tronlong.com邮箱的,提供一下购买信息。
回复 支持 反对

使用道具 举报

7

主题

28

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2017-1-17 16:49:44 | 显示全部楼层
我是这样做的,但出现了一个错误,不知道怎么解决,如下
http://www.51ele.net/forum.php?m ... tid=1597&extra=
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1034

积分

金牌会员

Rank: 6Rank: 6

积分
1034
发表于 2018-4-16 17:34:58 | 显示全部楼层
命令行下具体写些神马指令能具体说下嘛   我现在被困在这步了   新手求指教
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号-1  

GMT+8, 2018-9-21 00:14 , Processed in 0.307141 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表