|||
Security和Safety的区别和统一(140224)
闵应骅
安全和爱情一样,是一个永恒的话题,也是一门大学问。英文里面的safety和security,中文里都翻成安全。它们有区别吗?有人说, safety是指人体健康和生产技术活动的安全问题,security则指社会政治性的安全问题。也有人说, safety主要是大坝结构、附属建筑、水库等能正常运行,security主要指防止发生意外事故,比如水污染、人为破坏、投毒、恐怖袭击等。安全问题的确很广泛,譬如,医院安全、药物安全、食品安全、公司欺诈、财务危机、水环境事故等等,简直无处不在。2012年开始,MIT开始举办 STAMP/STPA Workshop,领头的是ACM Fellow, Prof.Nancy Leveson。本月的CACM又发表“An Integrated Approach to Safety and Security Based on Systems Theory”,试图用统一的模型处理Safety和Security的问题。
一般地说,Safety是指由非恶意操作者由于非故意的动作所引起的系统预防的丢失;而Security则是由恶意的操作者由于故意的动作所引起的系统预防的丢失。关键是操作者是否故意。但是,就系统设计者来说,主要关心怎么预防事故的发生。譬如,核发电站就是要防止核辐射泄漏,不管是有意破坏,还是意外故障。
从系统工程的角度讲,是要整个社会技术系统达到安全,而不拘泥于低层硬件或操作员的行为,更有效地使用资源,和在开发过程中解决Safety和Security之间潜在的矛盾。
从战略层面考虑Security问题就不是局限于人家可能怎么攻击而去堵,而是去识别和控制系统脆弱之点。安全领域花很大力气研究军事作战的语言、隐喻和模型,把信息安全变成了聪明和临机应变的敌手和防御者之间的战斗。安全集中注意防御者怎么堵住网络中的漏洞,用最好的战术保护网络和信息资产。战略和战术的考虑不同。战略是增强和维持持续优势的艺术,而战术是完成特定动作的精明的方法,譬如监视网络和其他信息资产,注重实际的危险,而战略注重更高层次的结果。
在战术模型中,损失盯住由风险导致的特定事件。譬如,一次在验证个人信息时的数据泄漏是一个安全事故。个人验证信息过程中,个人验证信息只出现一次,而入侵者参与了一个事件链,通过了防火墙和密码。安全分析需要分析保护或防卫识别,从而使攻击失败。虽然利用脆弱性的威胁可能导致系统失败,战术模型把这种威胁视为失败的原因。预防失败完全决定于安全分析能够正确识别潜在攻击者,包括他们的动机、能力和目标。如果是这样,安全专家就可以按照攻击者的路线图,用资源有效防止失败了。威胁可以有很多,简单的需求差错或操作程序也许会由于大意或低级敌手完成不复杂的攻击。
与之不同的是自顶向下的战略途径。二次大战以后,系统理论对于系统工程提供了哲学和智能基础,一个所谓STAMP(系统理论事故模型和处理)被提上日程。传统的安全事故因果模型归咎于元件故障或者人为错误。过去的故障树分析是这么做的,电路的测试与诊断也是这么做的。当一个元件发生故障,通过一系列的元件传播到输出端输出差错,就可能引起系统失效。这个模型对不太复杂的系统是有效的。但是,对于今天复杂的软硬件系统,软硬件故障类型不知有多少,一个一个去注入检查几乎是不可能的,而且还出现了部件之间不安全的相互作用(即使所有部件都是好的),系统需求和设计的错误,间接交互和系统因素导致无法识别的防范和保护装置失效,都可能引起安全问题。基于线性因果模型和工具,无法分析这样的系统损失。STAMP把系统损失看作是人与现实系统部件交互和破坏安全约束的环境条件的结果。注意力从防止故障转到对系统行为的强制安全约束,可能是处理部件故障,也可能是控制某些有意的或无意的原因。系统行为的约束进行分级控制,上一级控制下一级行为约束的执行,并把信息反馈到上一级。在控制器里面,必须包含一个控制进程的模型。该模型确定什么控制行为是必须的。许多事故并不是软件或人为故障,而是由于控制进程与实际状态不一致。譬如说,把敌人的炮火误认为是友军飞机的误射炮火,不管这种误会是有意的还是无意的,结果都是一样,是一个不安全的控制行动。又如震网病毒,控制系统认为离心机(被控过程)在低速旋转,实际不是,因而给出加速命令,使离心机损坏。这种安全分析和设计已经有了理论基础。STPA(系统理论的进程分析)是一个基于STAMP的危害分析技术。譬如弹道导弹防御系统的功能控制结构,就包括几个安全控制命令,像允许点火和发射拦截等。控制结构建立起来以后,STPA的第一步就是去识别不安全的控制行为,包括
(1)导致危害的控制行为(譬如导弹射向友军飞机),
(2)未提供防止危害的控制行为(譬如导弹没有射到敌机),
(3)控制行动太早、太晚或打乱了次序(譬如导弹发射太早、太晚,未能有效防止损失),
(4)控制行动持续太长或太短。
安全控制行动如果执行不适当,也会导致损失。譬如,发射导弹指令执行不正确。在确认了不安全的控制行动以后,第二步就是考察系统控制闭环去查明引起该不安全控制行动的状况。
STPA-Sec是STPA的扩展,包括了Security分析。首先是标示要考虑的损失,指出系统危害或安全漏洞,画出系统功能控制结构图,识别不安全的控制动作。与对付safety仅有的不同是在产生因果关系场景时增加故意的动作。这是过程的最后一步。
STPA在工业界已经广泛被采用。评估比较表明,STPA不但可以发现传统方法(如故障树分析、失效模型、响应分析)可以发现的系统损失情况,而且可以发现许多传统方法发现不了的情况。而且,发现过程更快。STPA-Sec刚刚用于信息安全,于攻击树分析的比较将于2014年第一季度完成。
用基于系统理论的因果模型,建立Safety和Security统一的有效的途径是可能的。危害导致的Safety事故和脆弱性引起的Security事故是一样的。security分析的关键问题是如何去控制脆弱性,而不是如何防止威胁。自顶向下系统工程的途径是从系统脆弱性分析开始,它比可能的威胁要少得多。如果控制得好,可以防止许多类型的威胁和破坏。这种自顶向下的方式也使security的问题不拘泥于管理网络,而是保证企业全局功能的高档次问题了。
STAMP把safety问题重新构造为一个控制问题,而不是做失效分析。把系统理论途径用于security问题也需要构造security问题,成为一个战略,而不是战术。这种重新构造包括丢开攻击的监管,转向更广大的社会技术系统的设计。也就是说,不要把主要精力去分析敌意行动可能造成的威胁的分析,转向控制系统脆弱性分析。因为敌意的攻击,我们是无法控制的。控制脆弱性使得security分析不但能防止已知的威胁,而且能防止未知威胁可能造成的破坏,甚至是内部人员的破坏。我们不管破坏的根源何在,问题是我们要识别和控制脆弱性。这个途径省去在系统安全分析刚开始的时候的许多预测,而只要在系统运行中不断积累事故发生以后的经验教训。
对于当代复杂的由软件所控制的系统,security和safety都是要防止系统的损失,从战略高度看,一个破坏的实际原因并不重要,重要的是在控制破坏对整个系统的影响、保证任务的完成的战略效力。这是和过去非常不同的。这将有助于解决security的三个问题:数量、威胁的多样性和威胁的优先次序。当然,新办法也不是排斥传统的关于安全的思考,但是需要从战术性向有效的战略转移。我国安全和维稳的队伍如此膨大,经费如此之多,加强这方面比较基础一些的研究看来很有必要。
下图是核电站控制台
1-1-Beginners-Tutorial-part1.pdf
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 09:37
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社