从硬件背景上看TZ是在ARMv6的架构上产生的,在ARMv7上重新设计了,TZ的目的是提供一个软硬件都安全的环境,安全的环境是单独的运行在一个硬件空间,和非安全的进行了硬件上的隔离。
QSEE主要负责加载APP,以及安全APP的堆栈管理,提供安全的API接口,安全的字符操作和LOG功能
QSAPPS是高通开发的APP,运行在QSEE之上
用户空间通过加载并调用QSEEAPP来是实现一些安全数据或敏感操作的加密
QSEEComAPIlib是暴露给HLOS的API,HLOS客户端和监听端利用QSEEComdriver通过这些API来和QSEE进行数据的收和发。
QSEEComclient是需要调用QSEECom_start_app来得到一个句柄指向QSEECom字符设备,并且可以用这个句柄来进行数据的首发
QSEEComlistener需要用QSEECom_register_listener来注册,可以注册多个listener,每个listener所在的线程将会被挂起,直到接收到包含到该listener的信息。
QSEEComdriver是一个字符型设备,通过IOCTL来和QSEECom进行通讯,这些IOCTL都应该被QSEEComAPI进行调用
因为qsee不开源 tz部分只能看到少量符号
所以主要从用户和开发角度观察tz
开发需要开发相应的qsapp来实现安全的一些数据操作
用户态中需要加载相应的qsapp,并且利用qsapplib提供的API来和qsapp进行通讯
而qsapp如何与qsee进行通讯的呢
qsapp则调用scm来将数据保存到安全空间
为什么tz能实现安全呢
从硬件上 就区分了两个世界,安全世界用一根总线,非安全世界用一根总线
非安全世界的操作无法访问到安全世界
必须通过qsee中的scm调用来访问
而用户操作只能访问qsapp
所以达到了安全保护的作用