点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
如果要了解信息安全,首先要解决的问题便是Host和HSM(Hardware Security Module)的通信问题,只有两者有效"对话",才能更准备的知道彼此的"诉求",进而执行正确的Action。所以,Host是如何与HSM建立通信的呢?本文聊一聊这个话题。
提示:基于TC3xx讨论
1、软件框架
如上图,可以看出:HSM和Host的通信,本质就是核间通信(IPC,Inter-Process Communication)。常见的IPC通信方式有:管道、消息队列、共享内存、信号量等。而HSM与Host最常用的方式当属共享内存。
2、HSM与Host通信原理
-
牛郎(Host)和织女(HSM)为了及时的告知彼此近况,通过HT2HSMS(Host to HSM Status)、HSM2HTS(HSM to Host Status)寄存器告知彼此状态。HT2HSMS、HSM2HTS双方均可互相访问,以便于及时获悉彼此状态。除了这两个寄存器,还有HT2HSMF(Host to HSM Flag Register)等寄存器,牛郎和织女可以共同访问,以便于说更多的悄悄话。 -
女人,总是爱管事的,织女(HSM)除了想知道牛郎(Host)的近况,还想知道牛郎平时都在干啥,所以,织女(HSM)就通过SAHBASE(Single Access to Host Base Address Register)、SAHMEM(Single Access to Host Memory Window)寄存器去牛郎田里(Shared Memory)瞅瞅(Access),种的什么庄稼,土豆、胡萝卜还是南瓜呢?当然,牛郎(Host)对织女(HSM)的思念也可以通过SAHBASE、SAHMEM寄存器直接写到田梗上(共享区),之后织女(HSM)去田梗查岗的时候(读取数据),即可知道牛郎(Host)想说啥。织女(HSM)也可以把想传递的信息通过SAHBASE、SAHMEM寄存器写入到田梗上(共享区,Share Memory),以此提醒(通知)牛郎(Host),要给庄稼浇水或者施肥了。
HSM和Host的通信示意如下所示:
3、HSM与HOST通信前提
如上,只是知道了HSM与HOST如何通信,但是,在两者能有效通信之前,需要提前对好"暗号",也就是俗说的"握手"(Handshake)。为什么需要握手呢?如上信息可以看出,HSM和HOST对应不同的Core,在一些芯片中,HSM和HOST的CPU架构也可能不同。既然是不同的Core,意味着:芯片加电以后,两者启动的先后顺序存在不确定性。如果HOST端要使用HSM提供的功能,就必须等到HSM完成初始化动作,确保HSM进入了程序稳定阶段,否则,HSM无法执行Host的请求。
Host端启动以后,Host端先进入Host Boot。在Host Boot中,可能需要对Host App程序进行完整性和兼容性检查、获取随机种子等操作,此期间需要使用HSM端的接口进行计算。所以,在Host Boot中需要等待HSM进入HSM App,且HSM App进入稳定阶段。
当Host程序由Host Boot进入Host App时,也需要和HSM完成握手,才能调用HSM提供的功能。
所以,在Host Boot、Host App中均需要完成与HSM的握手,才能进行两者之间的通信。这也是为什么使用Secure Boot以后,放宽启动时间的原因。
码上报名
谈思实验室AutoSec智能汽车安全攻防实训课程,10月,上海
原文始发于微信公众号(谈思实验室):信息安全基础:Host与HSM通信科普
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论