APP下载

信息安全成功的八 “定律”

2016-11-26

网络安全和信息化 2016年2期
关键词:可用性完整性定律

信息技术专业的学生往往把在学校学习的专业知识直接带到工作中。例如,新的编程和系统分析、设计技能可应用于新开发的项目,这是因为公司越来越喜欢访问其内部的云计算系统和移动基础架构。

安全问题却有点儿不同。虽然专业技能仍很重要,但最好的安全专家将其IT的实践经验与信息安全、技术、人性的一般理论相结合。而其中的一些概念是从其它领域(如军事防御)中借用的,这往往需要花费多年的专业体验才能学会(有时这是很痛苦的事情)。掌握信息安全的概念和原则,我们就可以分析适当环境或情形中的安全需要,因而就可以在允许访问的需要与相关风险之间实现平衡。没有两个完全相同的系统或环境,也没有哪本教科书可以规定如何解决某种安全问题。与之相反,我们必须依靠基于原则的分析和决策。

三大安全目标是机密性、完整性、可用性

所有的信息安全措施都必须努力满足至少如下三目标之一:保护数据的机密性、保留数据的完整性、有益于授权用户的可用性,这三个目标形成了机密性、完整性、可用性的“铁三角”,是所有安全项目的基础。在制定保护计算机系统的计划时,构建策略和过程的信息安全专家必须考虑每一个目标。

对于信息安全保护的机密性、完整性、可用性,我们无论如何强调都不过分。下面分析其实现模式:

完整性模式:完整性模式通过保护系统数据免受恶意或意外的变更而保持数据的纯净和可信。完整性模式有三个目标:一是防止未获得授权的用户对数据或程序的篡改,二是防止授权用户对数据或程序的不正确的修改,三是保持数据和程序的对内和对外的连续性。

可用性模式保持数据和资源对授权使用的可用性,在紧急情况或灾难期间,这尤其重要。信息安全专家通常要解决三个常见的困难:一是由于恶意攻击或在实施中有未被发现的漏洞而导致的拒绝服务(例如,程序设计员编写程序时,并没有意识到程序中的某个缺陷,在程序接收到意外的输入时会导致程序崩溃)。二是由于自然灾害(洪水、地震等)或人为活动(如人为爆炸等)而造成的信息系统功能的丧失。三是在正常使用期间,设备发生故障。

维持机密性、完整性、可用性的一些活动仅允许授权的人员访问,对通过互联网或存储在数字媒体上的信息实施加密,定期测试计算机的安全性以发现新漏洞,积极构建软件防御,制定灾难恢复计划确保在发生灾难或由于人员无法访问时企业能够继续运营。

将深度防御作为策略

银行从来都不会将其资产放置在没有任何保卫的保险箱中。一般而言,访问保险箱要求通过多层保护,其中可能包括保安、有专门访问控制的带锁的门。此外,保险箱所在的房间还有可能受到闭路电视、运动传感器的监控,以及能够快速检测异常活动的警告系统。警报的响声还可以使门自动上锁,并且可以通知警察,或是排放催泪瓦斯使其充满整个房间。

分层安全也被称为纵深防御。这种安全是在多个层中实施的,它提供保障资产安全的三个要素:防御、检测、响应。纵深防御还可以通过两层或多层的长处来抵消某一层的不足。

在信息安全领域中,纵深防御要求在多个层级中实施保护、检测和响应攻击的安全设备。例如,如果在设计时考虑到安全性,一个连接到互联网的典型网络必须包括路由器、防火墙、入侵检测系统(IDS)来保护网络免受潜在的入侵;并利用通信分析工具和实时的人员监视来查看异常,依靠自动化的机制来关闭访问,或为应对入侵者的检测而从网络中移除系统。

上述深度防御机制中每一层的安全性在部署之前都必须彻底地测试,以确保集成系统适合于正常操作。因为,一个链条的可靠和牢固程度是由其最薄弱的环节决定的。

计算机安全依靠两类需求:功能需求和保证需求

功能需求描述了一个系统应做什么,而保证需求描述了应当如何实施和测试功能需求。我们需要两种需求来回答如下问题:系统是否在正确地运行(如期望的那样)?系统是否在以适当的方式正确地运行?

验证是检验是否满足一个或多个预定的需求或规范的过程。而确认要确定用以满足需要的机制的正确性或质量。换言之,你可以开发解决某种需要的软件,但此软件有可能包含漏洞,恶意用户得到此软件后就有可能造成数据破坏。

在此,不妨以汽车的安全测试为例说明一下。验证座椅安全带的测试可能包括进行安全带的应力测试、测试锁扣装置、确保安全带满足所期望的应用。而确认测试可能包括用车内假人进行碰撞试验,以此证明座椅安全用于现实条件时是真正安全的,而且在恶劣条件下能仍能发挥作用。

至于软件,我们需要验证和确认两方面的回答,其目的是在将产品推向危机四伏的环境之前赢取对产品的信心。当今的多数商业性质的非定制软件都止步于验证,而没有测试最终产品中的明显的安全漏洞。软件的开发者往往缺乏必要的资金和动机去破解、攻击其自己的软件。更常见的是,测试软件的开发者在每个功能上可能满足规范,但通常不会努力去找到突破软件并使其失效的方法。

通过隐藏实现安全不靠谱

信息安全界的很多人相信,如果恶意攻击者不知道软件是如何实现安全的,安全性就会更好。虽然这看似符合逻辑,但并非事实。通过隐藏来实现安全意味着,通过隐藏安全机制的细节就足以保证系统的安全。模糊安全性会导致虚假的安全感,这往往比不解决安全问题更危险。

如果一个系统的安全性是由对系统的安全机制的实施进行保密来维持的,那么,在第一个人发现了安全机制如何工作后,整个系统就会崩溃(事实上,总有人在设法发现这些秘密)。更佳的方法是不仅仅用一种机制为整个系统的安全负责。这又一次涉及到与保护数据和资源有关的深度防御问题。

在开源代码中,任何人都可以访问程序的源代码,分析其安全问题,然后将其与网络社区人成员共享,从而削除漏洞,并通过简化来改进总体的安全性。

安全即风险管理

如果花在保障资产安全上的金钱超过了资产的固有价值,那就是一种资源的浪费。在保护电子资产时,也是同样道理。所有的安全工作是一个风险水平与花费的资源数量所带来的报酬之间的平衡。安全关心的不是清除一个系统或设施内部的所有威胁,而是在黑客成功利用一个漏洞之后,清除所有的已知威胁并且使损失最小化。风险分析和风险管理是保障信息系统安全的中心主题。

风险评估和风险分析关注的是判定资产的经济价值,决定保护这些资产防止损失的最适当的措施。决定风险程度的最简单形式涉及两方面的因素:损失的后果是什么?这种损失发生的可能性多大?

表1列示了一个矩阵,我们可以根据这些因素来决定风险程度。

在决定了风险评级后,我们需要采取如下某种行动:

对于极端风险:要立即采取行动;对于高风险,需要引起高级管理人员的注意;对于中等风险,必须指定管理人员的责任;对于低风险,要由例行的进程来处理。

在现实世界中,风险管理要比简单地根据直觉或以前对某种情况的经验做出人为判断更为复杂。每一个系统都有唯一的安全问题,所以理解系统要维护的数据的具体性质,理解使用什么软件和硬件来部署系统以及部署团队的安全技能是非常重要的。

复杂是安全的大敌

系统越复杂,就越难以保证其安全。在程序和其它系统之间有太多的“移动组件”或接口,系统或接口就难以既保证安全又能按照所期望的那样运行。

人员、过程、技术是保证充分安全的必要成分

企业内的任何个人都不应当有能力控制或关闭安全活动。这属于责任分离问题。

实施过程控制的目的是为了保证不同的人员能够每次以同样的方式执行同样的操作。在实施如何执行与安全有关的程序时,必须记录其过程。企业必须记录为保障安全操作而配置服务器操作系统的过程,安全管理人员可以使用此记录程序来验证操作的正确性。

正如信息安全专家会建立过程控制来保证任何个人都不能完全控制一个系统一样,我们绝对不应当完全信任技术。技术可能失效,如果没有人去通知并修复技术问题,安全系统就会永久地停止运转。

人员、过程、技术控制是信息技术安全实践领域(其中包括操作安全、应用开发安全、物理安全、加密)中的关键要素,或称为安全三大支柱。

披露漏洞有益于安全

在安全人员与软件开发人员中的争论往往涉及:在开发和发布补丁或修复之前,是否让用户们了解问题。如前所述,不让用户们了解漏洞只能带来虚假的安全感。用户们有权力知道其购买的产品中存在的缺陷,正如他们有权力知道因汽车存在缺陷而导致的召回一样。

表1 安全矩阵

结语

计算机安全专家不但要了解其工作的技术方面,还必须理解信息安全背后的原则。正因为没有两种完全相同的环境,所以就没有关于通用安全措施的秘诀。由于每种情况都要求一种独特的判断才能解决信息系统中所固有的特定风险,所以信息安全专家需要做出基于原则的决策。

猜你喜欢

可用性完整性定律
基于辐射传输模型的GOCI晨昏时段数据的可用性分析
石油化工企业设备完整性管理
多一盎司定律和多一圈定律
倒霉定律
莫断音动听 且惜意传情——论音乐作品“完整性欣赏”的意义
医疗器械的可用性工程浅析
可用性差距阻碍数字化转型
精子DNA完整性损伤的发生机制及诊断治疗
耐人寻味的定律
黔西南州烤烟化学成分可用性评价