尊敬的TI工程师,
您好!
我们公司的产品也要用NandFlash进行Secure Boot,目前正在搞这一块,也折腾了好几天了。看了之前论坛上的回答,还有有些没搞明白。希望得到您的指教 。
因为文字较长,为了能够精确地进行交流,我将问题分解成了许多小问题。给您添麻烦了!
Q1:所以如果要用NandFlash进行Secure Boot,应该的步骤是:
Step1. 用SecureHexAIS_OMAP-L138.exe这个工具,生成Secure AIS文件。其中,CEK放在ini里,并且启动的配置(如PLL、DDR、PSC等的配置)也是放在ini里,而不像Nosecure AIS那样,是直接在AIS文件里的。Q1.1:STEP1对吗?
Step2. 用GenericSecureUartHost.exe这个工具,解锁JTAG,并在CCS中加载Nand Writer程序。Q1.2:STEP2对吗?
Step3. 用Nand Writer程序将Secure AIS文件烧写到Nandflash中。此时,Nandflash中的Key Header是未经过KEK加密的。Q1.3:STEP3对吗?
Step4. 用GenericSecureUartHost.exe这个工具,加载一个自己写的程序。该程序从UART启动,读取head,调用ROM的API将head的CEK用KEK加密后再写回NAND。此时,Nandflash中的Key Header是经过KEK加密的。Q1.4:STEP4对吗?
Q2:我不太理解,虽然Step4,用KEK加密了CEK。但是Nandflash中的AIS文件的剩余部分,就是除了Key Header的其他部分,并没有用KEK加密啊。Q2.1:对吗?
在Step1中,SecureHexAIS_OMAP-L138.exe用来生成Secure AIS文件。但是该工具并没有办法利用具体芯片上的KEK进行加密。
难道是SecureHexAIS_OMAP-L138.exe仅仅用CEK对整个AIS文件进行加密,而KEK的唯一作用是对Key Header进行加密,从而隐藏CEK?Q2.2:对吗?
那么如果别人知道CEK的话,就可以直接对Secure AIS的剩余部分进行解密。Q2.3:对吗?
或者如果别人知道KEK的话,就可以对Key Header进行解密,从而获得CEK,从而再对Secure AIS的剩余部分进行解密。Q2.4:对吗?
Q3:我们希望产品的代码收到严格保护,另一方面,又希望产品的固件能够远程升级。
我们系统的架构是C6748+CC2541,两者通过SPI进行通信,CC2541提供蓝牙与手机进行通信。希望通过手机将新的DSP固件更新至DSP的nandflash。并且使用Basic Secure Boot来保障新的固件的安全。
我想了很久,觉得这似乎办不到。远程升级的话,如果还想加密固件,就得把CEK发过来,CEK总归要先显示地写入到Nandflash中(此时CEK就暴露了),再去调用API将Key Header加密。Q3.1:您看是这样吗?
Q3.2:如果要同时实现DSP固件更新和Basic Secure Boot,您有什么建议?
Secure Boot及远程升级对我们产品至关重要,麻烦TI的工程师给予帮助。
非常感谢!
Frank