在数位时代,个人和企业面临着越来越多的资料泄漏风险。资讯流在资讯理论的背景下是指某一变量 x
到另一变量 y
的资料传递过程。没有任何一个系统希望泄露机密资料,这不仅涉及到个人的隐私,也可能导致企业重大损失。
许多方法可以限制资讯的披露,例如存取控制清单、防火墙和加密技术。然而,这些方法虽然在一定程度上限制了资讯的释放,但并无法保证资讯的传播不被泄漏。
随着科技的进步,保障数据安全的方法也发生了很大的变化。例如,存取控制清单能防止未经授权的文件存取,但不能控制数据使用后的行为。同样,加密技术虽然能在不安全的通道中私密地传递资讯,但一旦解密,资料的保密性便会受到威胁。因此,了解资讯流的控制变得尤为重要。
资讯流可大致分为两类:显式流和旁路流。显式流是指某个秘密资料明确地泄漏到可被公众观察的变量中,例如:
var l, h; l := h;
另一方面,旁路流则利用某些特征如执行的时间或功耗来泄漏资讯。例如,在某个条件中,如果h
为真,则会执行某些耗时的工作,进而使得攻击者可以根据程序所耗时间来推测h
的值。
隐性资讯流也属于旁路流的一部分。当程式的控制流基于私密资料时,公众变量能暗示某些秘密资讯。
不干扰是一种政策,强调攻击者不应该能够根据输出的结果来区分两个计算过程,前提是它们仅在秘密输入上有所不同。尽管如此,这一政策过于严格,难以应用于实际程序。
例如,一个密码检查程序在必要时需要透露一些秘密资讯:即输入的密码是否正确。这使得攻击者即使在程序拒绝密码时也能获得有用的资讯,如所输入的尝试密码不是有效的。
资讯流控制机制旨在强制执行资讯流政策。为了实现这一目标,已有数种方法被提出,以实施资讯流策略。运行时机制能在操作系统和编程语言层面对数据进行标签标记,而静态程序分析则确保程序中的资讯流遵循相应的政策。
然而,动态分析技术无法观察所有执行路径,因此不能既保证稳健又具精确性。为了保证不干扰政策的实施,这些技术经常需要终止潜在泄漏敏感资讯的执行,或者忽略可能泄漏资讯的更新。
安全类型系统为编程语言增添了一个重要的元素,使每个表达式除了拥有类型(例如布林或整数),还携带安全标签。这样做的好处在于,通过类型检查,若程式通过检查,则可确保流政策得到遵循,从而避免不当的资讯流动。
例如,若一个变量被标记为高安全类型,则该变量不应改变低安全类型的变量,从而保护机密资料不被泄漏。
在现实应用中,不干扰政策的严格性使其无法完全适用。因此,许多许可释放资讯的方案被提出以实现控制释放的目的。这些方案又称为资讯去分类化。强健的去分类化必须确保主动攻击者无法通过操纵系统来获取超过被动攻击者所知的秘密。
资讯流控制在现代程式设计与数据保护中愈显重要。然而,如何在实际应用中有效保障资料安全,仍然是一个亟待解决的挑战。你准备好如何去应对这些潜在威胁了吗?