Sgx For Games

Posted by Maxul's Sketch Notes on June 9, 2017

题目: 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,也就是说,攻击者虽然无法改变程序运行的状态,但能伪造输入来决定程序运行的轨迹。
  • 需要结合现有的加密技术和安全技术,来保证输入文件和网络流量不被篡改(保证数据来源的完整性)。