关于CE模块AES算法key的问题
-
有人研究过 使用crypto engine 使用SSK做 AES 加密吗?
我测试写入SSK "1234567890ABCDEF",然后用这个SSK作为KEY加密一个消息
再使用输入key "1234567890ABCDEF",加密同样一个消息
两个结果不一样?why?其中输入key的测试是没有问题的,使用标准 test vector测试过,结果没有问题
难道 CE 在使用SSK加密前对key做了某种黑盒变换吗?
-
没有人回复下吗,求原厂大神解释一下啊。。。我现在想用SSK作为密钥加密kernel镜像,那么我量产时如何不依赖硬件,在主机上生成kernel镜像啊。
-
@mengxp 建议问FAE(((没玩过这类东西
-
本意是保护kernel镜像不被反编译破解?
-
@xiaowenge 是我想保护kernel不被读出并反编译,同时受保护的ssk密钥也无法读出,防硬件抄板拷贝。我现在只是不明白,ssk密钥在被硬件ce引擎作为aes密钥加解密时,是不是经过了某种处理?
-
问题解决了。
我今天看到了 v833 的 Tina_Linux_Secure_Development_Guide.pdf 文档,里面有 TA 使用 SSK 加密的案例,查看了tina相关的代码,有一个sign.py,看了下,确认了加密引擎确实是使用原始SSK加密的,没有做什么黑盒变换。
那特么为什么我自己写的bootloader在调用CE使用ssk加密的结果异常呢?
想来optee肯定有相关的接口,找了下也就是
#define TEESMC_SSK_ENCRYPT 0
#define TEESMC_SSK_DECRYPT 3由于optee是闭源的,只能拿IDA逆了一下看他是怎么做的。
发现了一个奇怪的事情,既然CE是使用SSK作为key,那代码里为什么要申请一个 256 字节的keyBuf呢?然后我试着在我的bootloader里面,给 task desc 的 key 指向了一个 256 字节的缓冲,果然OK了!!!
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号