We introduce Balboa, a link obfuscation framework for censorship circumvention. Balboa provides a general framework for tunneling data through existing applications. Balboa sits between an application and the operating system, intercepting outgoing network traffic and rewriting it to embed data. To avoid introducing any distinguishable divergence from the expected application behavior, Balboa only rewrites traffic that matches an externally specified \emph{traffic model} pre-shared between the communicating parties. The traffic model captures some subset of the network traffic (e.g., some subset of music an audio streaming server streams). The sender uses this model to replace outgoing data with a pointer to the associated location in the model and embed data in the freed up space. The receiver then extracts the data, replacing the pointer with the original data from the model before passing the data on to the application. When using TLS, this approach means that application behavior with Balboa is \emph{equivalent}, modulo small (protocol-dependent) timing differences, to if the application was running without Balboa. Balboa differs from prior approaches in that it (1) provides a framework for tunneling data through arbitrary (TLS-protected) protocols/applications, and (2) runs the unaltered application binaries on standard inputs, as opposed to most prior tunneling approaches which run the application on non-standard -- and thus potentially distinguishable -- inputs. We present two instantiations of Balboa -- one for audio streaming and one for web browsing -- and demonstrate the difficulty of identifying Balboa by a machine learning classifier.
翻译:我们引入了 Balboa, 是一个用于规避审查的连接模糊框架 。 Balboa 提供了一个通过现有应用程序进行隧道化数据的一般框架 。 Balboa 位于应用程序和操作系统之间, 拦截网络流出流量, 并重新写入数据 。 为了避免引入与预期应用行为有区别的差异, 我们引入 Balboa 只能重写与外部指定的 emph{traffic 模型} 通信方之间预共享的通信。 交通模式包含网络流量的某些子集( 例如, 音乐中的某个子集, 一个音频流服务器流流流流 ) 。 发送者使用此模式替换输出数据, 将数据插入到一个相关操作系统, 在将数据传输到应用程序之前, Balboa 仅重用原始数据替换 。 当使用 TLS 时, 这种方法意味着 Balboa 的应用程序是 emph { 等值 }, 使用一个可移动的音路路( ) 小( robol) 和 取决于时间差异), 如果应用程序运行在 Balboa 上没有 Balboa, 和 binLS 之前的两种操作操作操作 方法,,, 。 因此 和 运行 将 将 规则 显示 和 规则 上 的 的,, 使用 规则,, 使用,,, 使用 的 规则, 。