动态软件更新中安全更新点检测的形式化验证
1. 引言
在许多关键系统中,如操作系统、自动化系统、嵌入式系统、面向服务的应用程序和实时系统等,需要连续运行且不能停止。为了在不关机的情况下添加新功能和修复漏洞,这些系统采用了动态软件更新(DSU)程序。然而,更新可能会引入错误,导致系统进入意外状态并引发安全漏洞,因此DSU的正确性成为一个重要问题。
DSU正确性的研究依赖于两类标准:一类是所有更新机制共有的通用属性,如类型安全、一致性和无崩溃;另一类是与更新程序语义相关的特定行为属性。近年来,形式化方法在确立DSU正确性标准方面受到了广泛关注,例如模型检查技术可以对系统行为进行推理,并形式化捕获复杂的行为属性。
在涉及安全问题的关键应用中,应用更新通常需要通过认证程序,如通用标准(Common Criteria)。该认证方案定义了七个评估保证级别(EAL),其中EAL 7级别最高。在EAL 6和7这两个最高级别进行评估时,需要使用形式化方法来确保系统满足安全要求。法国国家信息系统安全局(ANSSI)提出了一个专门的流程,用于认证可动态更改的产品,仅对更新代码和加载器进行认证。
本文的主要目标是运用形式化方法来保证DSU的行为属性,重点关注安全更新点(SUP),即系统可以在不引入不一致性或导致应用程序崩溃的情况下进行更新的静止状态。我们将聚焦于Java Card应用程序DSU的SUP检测,并使用模型检查方法来验证其满足三个要求:无死锁、活性安全和DSU活性。
2. Java Card的DSU系统
智能卡是嵌入高敏感数据和关键应用程序的小型设备,在其生命周期中容易成为攻击目标,因此需要进行升级以抵御威胁。例如,电子护照需要在