TUI设计概要

TUI是TEE的一个重要基础模块。最初人们认识了解TEE最直观的展示就是TUI,早在指纹识别成为手机的标配之前,TEE的主要应用是围绕着TUI进行,但由于普适性不好需要适配工作、界面显示不友好,对丰富的界面和字体需求定制化等等一些原因,最后却由指纹芯片应用成为带动TEE技术普及的一个重要触发点。最近随着华为手机盾产品的强势问世,TUI重新成为了一个不可缺少的存在!当然除了手机盾,TUI在安全二维码中的应用也是一个重要方向,安智客认为TUI归根结底是在TEE中一个基于触摸和显示器件的一个应用软件安全模块,同样也涉及到驱动、服务、TEE功能模块、TA等等,本文安智客将TUI设计做一个简要总结。如有不对,欢迎指正。

1,TUI保护对象是什么?

安全的显示和安全的输入,首先必须保证屏幕上显示的画面内容必须在TEE的安全内存中,然后Linux驱动所获取到触摸器件的像素坐标,这时数据送往TEE处理解析,保证了输入数据的安全性,为了完成上述安全目标,Linux触摸驱动和显示驱动必须修改。同时TEE端增加TA、TUI驱动。

从应用层面来说,通过TUI保护PIN或Password等敏感信息的安全输入及保护输出显示敏感信息,如交易关键信息由用户确认后签名,抵御按键记录,屏幕获取,钓鱼等攻击方式,为用户建立安全通道。

2,TUI架构说明。

一个完整的TUI系统架构如下图所示:

TUI client applicant:客户端程序,运行在非安全端,处理业务命令逻辑,监控touch事件。

RSEE touch driver:触摸中断linux驱动。

TUI trusted application tee:端应用程序,运行在tee安全环境中。主要是显示和触摸两大模块,包括界面逻辑、字体库、图像处理和对外接口等。

TUI drivers:tee安全tui驱动提供安全内容显示及触摸坐标的安全硬件访问。

kernel driver:接收来自CA发送过来的事件消息, 通过smc操作,进行非安全与安全显示切换,在进入TEE之前, kernel driver负责打开i2c时钟。在退出安全世界进行REE测UI访问时, kernel driver负责关闭i2c时钟及将显示切换为非安全显示。

具体说来,TUI包含对触摸屏, 键盘外设和显示外设的应用。TUI显示时,REE端不能读写访问触摸,键盘和显示外设, TUI里面的事件也不能被REE铺获。TUI显示完毕, 由TEE切换到REE中,由REE控制触摸显示及其它外设。TrustZone 可保护安全区域的框架缓冲区 (frame-buffer)及其内容,因为该框架缓冲区无法被拦截、修改或隐藏。

3,完整的TUI执行流程是什么?

一个TUI工作流程同样包含APP、服务、CA、驱动、TA等部分,其运行流程和其他的TEE应用流程基本一致,首先应用发起调用CA,CA通过系统调用完成SMC中断进入EL3,然后在ATF完成执行级别切换到EL1,进入到TEE,TEE完成对TA的加载,TA运行。另外,服务主要是处理android端的异常事件,比如来电等。对于异常事件处理流程,GP规范有详细的介绍。

4,与指纹芯片相比软件差异在哪里?

安智客前面介绍过一次指纹软件流程,详见Android8.0中对指纹的新要求。比如指纹只是单向性的数据采集,手指接触到指纹模组、芯片产生中断,中断发起CA调用指纹TA流程,数据的采集、模版存储、对比工作,这一切都在TEE中完成,android端只提供界面框架和标准接口方法。而TUI则涉及到触摸输入和显示输出,在TUI中与指纹类似的部分是输入模块,触摸输入模块通过I2C总线接受TEEOS管理,如同指纹模组通过安全SPI总线接入TEEOS,也就是说android端驱动由于无法获知屏幕的用户点击的像素值而无法得知显示的是什么,且送往屏幕显示的数据内存已经被TEE保护了,是安全的内存。

随着相关规范的明确,未来手机盾+指纹的应用,指纹的全部流程都将在TUI中完成,详见Global Platform最新TUI规范与央行TEE规范。这些规范为TUI的产品应用指明了方向。

原文发布于微信公众号 - 安智客(china_safer)

原文发表时间:2018-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏何俊林

仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)

本文是由奇虎360公司高磊关于使用百度地图仿摩拜单车APP,原文地址:http://blog.csdn.net/gaolei1201/article/detai...

32790
来自专栏前端儿

基于Node.js实现一个小小的爬虫

从拉钩招聘网站中找出“前端开发”这一类岗位的信息,并作相应页面分析,提取出特定的几个部分如岗位名称、岗位薪资、岗位所属公司、岗位发布日期等。并将抓取到的这些信息...

19020
来自专栏macOS 开发学习

macOS 开发 - 小基础拾遗

通过熟悉一个App的启动过程,有利于我们理解开发时代码的执行过程,以及帮助我们修复一些系统Bug都是非常有意义的.一个macOS的App启动与iOS App启动...

9820
来自专栏数据和云

千奇百怪的数据库故障

总有很多情形,你无法想象,数据库的故障遭遇也是如此。 分享几则我们遇到过的客户恢复故障,与大家共为警醒: 服务器找不到了 某次客户找我们恢复数据库,说某个数据库...

37190
来自专栏wblearn

我的Web开发实战总结(一)写在前面截图快速查询与快递单号我的待办事物办理与信息查询公告通知销售业绩与新客户业绩工作看板排行榜写在最后

最近一直在做项目,感觉没什么分享的所以一直没写。 今天不上班,就把最近做的一个demo做个简单的总结。

10110
来自专栏Flutter入门到实战

全面总结国内BATH等大厂开源的安卓有关的库(持续更新中...)

UltraViewPager 是阿里开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。

42520
来自专栏快乐八哥

Progressive Web Apps入门

PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web。 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未...

256100
来自专栏求索之路

适用于键盘流、懒人、强迫症患者以及码农的究极Mac使用指南

再次声明:本文是给一些喜欢折腾提升效率的、希望成为键盘流选手的、懒惰得不愿意多移动手指的、有严重的强迫症的人提供一些经验和帮助的。所以意义党、不分青红皂白党、键...

35130
来自专栏程序员宝库

爬虫抓取的门道——来看这篇

本文首发于我的个人博客,同步发布于SegmentFault专栏,非商业转载请注明出处,商业转载请阅读原文链接里的法律声明。 web是一个开放的平台,这也奠定了w...

46690
来自专栏FreeBuf

提升安全性,主流浏览器将迎来新的Web认证标准

谷歌,微软和Mozilla的网络浏览器很快将为用户提供由FIDO联盟和万维网联盟(W3C)构建的新的无密码认证标准,目前正处于最终审批阶段。 W3C已将新的认证...

38550

扫码关注云+社区

领取腾讯云代金券