安全存储,ARM HUK

HUK

HUK, Hardware Unique Key,指硬件唯一密钥,类似与人体指纹,对于硬件具有唯一性。HUK是烧写在芯片eFuse中的一段随机值,类似于TPM中Storage Root Key。
这段随机值无法通过CPU访问,但可以通过SOC内部安全引擎访问,将安全引擎视为一个函数接口,如
(Cipher, Tag) = AES-GCM-256(HUK, IV, AAD, PLAIN_TEXT)。
用户输入IV, AAD, PLAIN_TEXT,安全引擎将返回密文Cipher和Tag。
由于HUK的机密性与唯一性,通过芯片加密后的数据,仅能在该芯片解密。该芯片加密后的数据,存储下来后,被拷贝到别处将无法解密。

实际应用中,IV/AAD可以通过硬件真随机数生成。安全引擎的驱动代码一般部署在安全世界,如optee/ATF中,加密过程在安全世界处理。HUK一般不直接作为加密密钥,先由HUK派生出工作密钥(work key),再由work key对用户数据进行加密。这样软件流程为:

  1. (work_key, Tag) = AES-GCM-256(HUK, IV, AAD, PLAIN_TEXT)
  2. (Cipher, Tag) = AES-GCM-256(work_key, IV, AAD, PLAIN_TEXT)

Cache属性

由于CPU与安全引擎均需存储系统交互,需要注意cache属性设置问题,确保cpu与安全引擎获取数据的一致性。ARM core发出地址访问需要经过MMU,而硬件安全引擎访问内存则经过SMMU;需要通过设置页表保持访问空间cache属性的一致性,一般设置为Normal uncached unbuffered,即不经过cache去访问内存。

参考

https://optee.readthedocs.io/en/latest/architecture/secure_storage.html
https://www.jianshu.com/p/ba56e6a0d788

https://blog.csdn.net/shuaifengyun/article/details/73715950
https://zhuanlan.zhihu.com/p/42527644

https://blog.csdn.net/Thanksgining/article/details/111564548?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-111564548-blog-73715950.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-111564548-blog-73715950.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=5

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值