Prochlo

Posted by Maxul's Technical Notes on June 4, 2018

题目: Prochlo: Strong Privacy for Analytics in the Crowd

作者: Andrea Bittau, Úlfar Erlingsson, Petros Maniatis, Ilya Mironov, Ananth Raghunathan, David Lie, Mitch Rudominer, Ushasree Kode, Julien Tinnés, Bernhard Seefeld

单位: Google Brain & University of Toronto

出版: SOSP 2017

综述

  • 在云上,对用户软件行为的大规模监督已成为常规手段。如程序测量(用于计费)、错误报告、统计剖析等。(笔者注:在这个模型下,人们把云上的程序视为人口一样去建模分析)。
  • 本文提出一种系统设计 Encode, Shuffle, Analyze (ESA),不但提供高可用性的监督能力,同时保护用户隐私。
  • 首先数据会在用户要求的控制范围、粒度和随机程度上被编码;然后被随机化的方式重排,保证单个数据对象迷失在云中而不易追踪;最后这些匿名且随机化的数据使用一种特殊分析引擎,该引擎有效避免对分析结果的统计学攻击。

解决问题:

  1. 现代软件设计大量应用对客户端的在线监视,包括对设备信息的数据收集、用户信息采集以及运行程序信息采集。好处之一如系统软件的安全更新,只有知道运行程序的具体情况才能提供更新推荐。
  2. 但这项机制严重威胁用户个人的隐私,特别是信息自动化收集机制。Google之前利用ESA实现了RAPPOR(privacy-preserving monitoring system for the Chrome Web browser),在无需用户信任情况下处理了大量Chrome客户端的报告信息。但这个架构有局限,不易被现代标准软件工程实践所使用。

Motivation:

  1. 长期以来,系统社区意识到软件监督带来的隐私问题,一般应对的策略是授权与访问控制。对于报告和日志,采用的是脱敏的方法。
  2. 但是呢,软件监督可用于分析程序行为,找出bug原因,了解运行时性能和资源使用情况,用于新的版本改进。
  3. 本文意识到二者并不冲突,因为收集这些信息依赖的是常用的统计学和相关度知识,对用户的个体数据并不关心。
  4. 本文认为ESA架构很好地保证了对观测数据的分析能力,同时对敏感数据做了截取、放大、清洗、匿名,在收集和存储阶段都做了保护,同时在分析阶段做了严格访问控制。
  5. 考虑程序的版本,其依赖的系统API可能不同。通过观察程序使用过时、不推荐的API可以知道程序版本老旧,需要更新。但是API反应了程序行为,进而透露出用户的使用意图。因此收集信息最好要避免API usage patterns的泄露。

贡献:

  1. ESA架构,有助于在保护用户隐私情况下,帮助服务提供商分析用户行为。使用嵌套加密增强信任假设(explicit trust assumptions captured by nested encryption),使用shuffler保证匿名性和不确定性,使用管道设计保证各阶段独立运作。
  2. PROCHLO,在SGX上使用ESA,实现高性能、可扩展性和小TCB的几个目标。其中Stash Shuffle是一种针对SGX的数据遗忘算法,另外引入一种加密方式来减小对用户信任的需求。
  3. 使用协同过滤任务和深度学习任务来说明其高可用性和强隐私保证性。

体会:

  1. Google大脑出的点子颇具天马行空的意味。
  2. 本文居然没有相关工作,和OSDI 16的Ryoan的隐私保护工作非常类似。
  3. 本文的工程实现使用了不可信的系统时间:https://github.com/google/prochlo/blob/master/prochlo_stash_shuffler/sgx_stash_shuffler/Enclave.edl