题目: A Case for Protecting Computer Games With SGX
作者: Erick Bauman, Zhiqiang Lin
单位: The University of Texas at Dallas
出版: SysTEX ‘16
解决问题:
- 多用户在线网游反作弊;
- 数字版权保护。
挑战:
- 当前SGX最大支持128MB内存区域的保护。针对现代大型游戏,需要手工找出需要保护的功能,即人工找到具体保护点。
- 一旦将游戏代码进行拆分,enclave内执行的代码应尽量不依赖外部不受保护的运行时库,以及不去处理C++对象的引用(攻击者可借此影响enclave内的控制流),同时在enclave内时无法直接进行系统调用。如果需要不断对对象进行序列化/反序列化将引入巨大开销,同时面临已有代码的重构。
保护什么:
- 游戏状态:本质是关键数据,决定了玩家当前拥有的资源。
- 完整性:操作状态的代码是否完整?
- 初始化文件:每次加载游戏时的配置文件的保密性。
- 游戏逻辑:游戏引擎,如Lua解释器。
贡献点:
- SGX被用于游戏软件的隔离。
- 提出游戏保护框架,一系列保护规则和具体模型。
- 设计和实现了一个POC。
未来工作:
- SGX并不能隔离I/O,也就是说,攻击者虽然无法改变程序运行的状态,但能伪造输入来决定程序运行的轨迹。
- 需要结合现有的加密技术和安全技术,来保证输入文件和网络流量不被篡改(保证数据来源的完整性)。