Trustui

Posted by Maxul's Sketch Notes on July 17, 2017

题目: Building trusted path on untrusted device drivers for mobile devices

作者: Wenhao Li, Mingyang Ma, Jinchen Han, Yubin Xia, Binyu Zang, Cheng-Kang Chu, Tieyan Li

单位: Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University, China & Software School, Fudan University, China & Huawei Technologies Pte Ltd, Singapore

出版: APSys 2014

  • 可信路径/信道一直是现代安防的一个比较薄弱的部分。
  • SGXIO: Generic Trusted I/O Path for Intel SGX是目前唯一的一篇关于如何构建SGX的可信信道的工作。但凡涉及可信一般分为两类:同一核上的不同实体间对话(如IPC),不同核上的RPC(如互联网)。
  • 14年的这篇文章被顶会文章的引用次数逾14次。个人认为有如下几点:
    1. 较早地认识到硬件辅助安全的重要性,结合了TZ和移动安全;
    2. 对可信路径在移动端进行了探索。

该团队后续的几个工作也是在此篇基础上实现的。

解决问题:

  1. 移动安全涉及用户金融、个人隐私等敏感数据。
  2. 作者认为问题的关键是在用户和互联网服务提供商之间构建可信通道。
  3. 之前的工作要么TCB太大,要么借助特殊的设备实现(这一点缺乏引文作为论据),可移植性太差。

贡献点:

原文缺乏直接说明,笔者概括如下:

  1. TrustUI旨在复用现有驱动;
  2. 借助输入随机化和显示随机化保护用户隐私安全;
  3. 在安全世界和互联网服务商间构建安全信道。

目标:

  1. 保证数据和通信的保密性和完整性;
  2. TCB要小;
  3. 对现有的OS改造要尽量小。

威胁模型:

  1. 相信移动设备硬件自身,包含TZ扩展;
  2. 无法抵抗物理攻击;
  3. 安全世界内的软件可信,正常世界不可信;
  4. 不考虑DoS;
  5. 可信路径的性质为不变式。

设计:

  1. 用户输入涉及隐私,接管软件键盘输入,并使用随机化布局;
  2. 络通信依赖在安全世界中的SSL加密;一个脆弱点是TZ不保证安全存储,因此TrustUI将CA公钥存在安全世界的内核镜像中,用“安全启动”保证其完整性不被破坏。
  3. 威胁和防御措施见原文表2。(总结得很精彩)

未来工作:

  1. 支持简单沙盒机制;
  2. 对现实应用进行移植,对安全和性能进行评估;
  3. 支持多核。

(这些考量都值得借鉴。)

思考:

  1. 本文其实是工程论述类文章,描述了大体设计思路,安全抵御措施,象说明书一样,但缺乏实验和评估。
  2. 本文的工作依赖TZ对外设总线的绝对控制,借此完成安全I/O,这在SGX中是很难实现的。
  3. 本文对可信路径缺乏严密论述。对14年Iago攻击(恶意系统伪造返回值)将无法抵御。
  4. 对于可信信道,笔者认为有如下几个问题需要思考:
    1. 如何保证同一物理节点上不同可信组件的安全通信;
    2. 如何保证可信计算区域与外界交互数据的完整性;
    3. 如何保证不同计算节点的可信组件在传输时的完整性(流量劫持与流量注入)和身份认证(中间人攻击);
    4. 如何保证可信组件在物理迁移时的通信协议正确性。