[论文解读] Very Static Enforcement of Dynamic Policies
本文将流敏感类型系统扩展为通过在每个程序点追踪数据依赖关系,静态强制执行动态信息流策略。它将依赖分析与策略强制分离,使得单一静态分析可验证多个动态策略,为具有动态访问控制的程序提供可复用、安全的策略无关的验证基础。
Security policies are naturally dynamic. Reflecting this, there has been a growing interest in studying information-flow properties which change during program execution, including concepts such as declassification, revocation, and role-change. A static verification of a dynamic information flow policy, from a semantic perspective, should only need to concern itself with two things: 1) the dependencies between data in a program, and 2) whether those dependencies are consistent with the intended flow policies as they change over time. In this paper we provide a formal ground for this intuition. We present a straightforward extension to the principal flow-sensitive type system introduced by Hunt and Sands (POPL '06, ESOP '11) to infer both end-to-end dependencies and dependencies at intermediate points in a program. This allows typings to be applied to verification of both static and dynamic policies. Our extension preserves the principal type system's distinguishing feature, that type inference is independent of the policy to be enforced: a single, generic dependency analysis (typing) can be used to verify many different dynamic policies of a given program, thus achieving a clean separation between (1) and (2). We also make contributions to the foundations of dynamic information flow. Arguably, the most compelling semantic definitions for dynamic security conditions in the literature are phrased in the so-called knowledge-based style. We contribute a new definition of knowledge-based termination insensitive security for dynamic policies. We show that the new definition avoids anomalies of previous definitions and enjoys a simple and useful characterisation as a two-run style property.
研究动机与目标
- 形式化定义数据依赖分析与策略强制之间的清晰分离,适用于动态信息流策略。
- 解决在程序执行过程中动态演化(如解密和撤销)的策略验证挑战。
- 提供一个通用的、策略无关的验证框架,复用静态依赖分析以支持多个策略。
- 为动态策略中的基于知识的安全性建立新的语义基础,避免先前定义中的异常问题。
提出的方法
- 扩展了Hunt和Sands(POPL '06, ESOP '11)的主流动敏感类型系统,以在每个程序点而非仅端点追踪依赖关系。
- 引入按通道、按程序点的依赖集,以捕捉哪些输入影响每个输出。
- 采用两轮风格的性质作为基于知识的安全性的表征,确保攻击者无法基于输出区分两个执行。
- 证明了该类型系统在语义性质上的正确性,该性质蕴含终止无关的基于知识的安全性。
- 使用一种推理独立于策略的类型系统,使得同一分析可复用于多个策略。
- 为动态策略定义了一种新的基于知识的安全条件,避免了异常现象,并支持组合式推理。
实验结果
研究问题
- RQ1是否可以复用单一静态依赖分析,以验证同一程序的多个动态信息流策略?
- RQ2如何为执行过程中演化的动态策略建立一个形式化、正确且可复用的基础?
- RQ3何种基于知识的安全性的语义定义适用于动态策略,可避免已知异常并支持组合式验证?
- RQ4两轮风格的性质是否可作为动态策略强制的充分且可表征的条件?
- RQ5在支持复杂策略行为(如撤销和解密)的同时,如何保持依赖分析与策略强制之间的分离?
主要发现
- 扩展的类型系统通过追踪中间程序点的依赖关系,支持动态策略的静态强制,实现无需为每种策略重新分析即可验证。
- 依赖分析与策略完全独立,使得一次分析可验证多个策略,体现了清晰的关注点分离。
- 正确性结果确保:只要程序类型正确,无论策略的具体形式如何,其均强制执行预期的动态策略。
- 新的基于知识的安全定义避免了先前形式中出现的异常,且由一个简洁的两轮性质表征。
- 该方法支持通用验证:同一程序可使用相同的底层依赖分析,针对不同动态策略进行检查。
- 该框架支持复杂的策略行为,如基于运行时条件的撤销,包括在撤销后条件输出仍可能泄露敏感信息的情形。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。