Information Flow Security
跟踪程序中的信息流,确保全部信息都妥帖处理了
更关注信息传递。
与指针分析的关系
它与指针分析有相似之处,所以有taint analysis方法
Security Level
明显,程序中的变量(信息)有不同的安全等级,比如two-level policy将单个变量划分为high security或者low security。
变量的安全等级(security level)也能建模为格。
Information Flow Policy
限制不同Security levels间信息的传递
Noninterference Policy
高安全变量不能干扰到低安全变量的值,实践上,观察低安全变量应该无法推测高安全变量的任何信息。也即X_low_security_level=y_high_security_level * 10这种都不行。
Confidentiality and Integrity
Confidentiality: 秘密不应该被泄露
Integrity: 关键信息不应该被篡改,如Command injection, SQL注入,XSS攻击
Explicit Flow and Covert Channels
explicit flow: 通过拷贝关系传递的信息
implicit flow: 被high security variable影响的信息,注意有时通过运行时间或者抛出异常(比如数组越界)也能泄漏一部分信息
课件将能够泄漏信息的渠道称之为channels
Channels that exploit a mechanism whose primary purpose is not information transfer are called covert channels
示例:
由于Explicit flow泄漏的信息更多,所以课件主要关注Explicit Flow
Taint Analysis
Taint Analysis将数据分为两种,一种是带标签的成为Tainted data,剩下的是untainted data。发送或者确定tainted data的方法或者程序通常被称为sources。而一些令人感兴趣的程序点被称为sinks。
tainted data通过追踪从sources到sinks路径上的标签/被explicit flow影响到tainted data对应的变量来确定信息是否泄漏。