今天,咱们继续谈《网络安全知识体系》1.1简介第4部分。
回归内容正题,书接上文。
4、原则
安全方面的合理思考和良好实践已被许多作者编纂成法典。他们描述的原则涉及许多不同的方面KAs,并结合起来有助于发展一个整体的设计、开发和部署安全系统的方法。
4.1Saltzer和Schroeder原则
Saltzer和Schroeder于年列举了最早收集的工程安全控制设计原则。这些建议是在工程安全的多用户操作系统的背景下提出的,支持在*府和*事组织中使用的保密属性。这种动机确实在某些方面使他们产生偏见,但是他们也经受住了时间的考验,能够更广泛地适用于安全控制的设计。
八项原则如下:
机制的经济性。安全控制的设计应尽可能简单,以确保高保证。更简单的设计更容易进行正式或非正式的推理,更容易论证正确性。此外,更简单的设计具有更简单的实现,更易于手动审计或验证以获得高保证。这一原则构成了可信计算基(TCB)—即安全机制或策略所依赖的所有软件和硬件组件的集合。这意味着TCB系统的安全属性应保持较小,以确保其保持预期的安全属性。
故障保护默认值。安全控制需要定义并启用可被确定为符合安全策略的操作,并拒绝所有其他操作。特别是,Saltzer和Schroeder警告不要使用通过试图识别和拒绝恶意行为来确定访问的机制。恶意行为,因为它是在对手的控制下,因此将适应,很难列举和确定详尽。因此,基于排除检测到的违规行为而不是包含已知良好行为的控制很容易出错。值得注意的是,一些现代安全控制违反了这一原则,包括基于签名的防病*软件和入侵检测。
完全调解。应检查系统中所有对象上的所有操作,以确保它们符合安全策略。此类检查通常包括确保启动操作的主体被授权执行该操作,并假定有可靠的身份验证机制。然而,现代安全控制检查的基础可能不是此类主体的身份,而是其他考虑因素,如持有“能力”。
开放式设计。控件的安全性不得依赖于其运行方式的保密性,而只能依赖于明确指定的机密或密码。这一原则巩固了网络安全作为一个开放研究领域的基础:它允许学者、工程师、审计师和监管机构检查安全控制如何运作,以确保其正确性,或在不破坏其安全的情况下识别缺陷。相反的方法,通常被称为“默默无闻的安全”,是脆弱的,因为它限制了谁可以审计安全控制,并且对内部威胁或可以逆向工程的控制无效。
特权分离。依赖多个主体授权操作的安全控制比依赖单个主体的安全控制提供更高的保证。这一原则体现在传统银行系统中,并延续到网络安全控制中。然而,虽然通常情况下,增加授权操作所涉及的机构数量会增加对完整性属性的保证,但通常也会降低对可用性属性的保证。这一原则也有其局限性,涉及过度稀释责任,导致“安全公地悲剧”,在这场悲剧中,任何当局都没有动机在其他机构愿意的情况下投资于安全。
最小特权。主题及其在系统中执行的操作应使用尽可能少的权限进行格式化。例如,如果操作只需要读取某些信息,则不应授予其写入或删除此信息的权限。授予最小权限集可确保,如果主体已损坏或软件不正确,则可减少其对系统安全属性的损害。定义安全体系结构在很大程度上依赖于这一原则,包括将大型系统划分为组件,每个组件具有尽可能少的权限,以确保部分妥协不会影响或对整个系统的整体安全属性产生最小影响。
最不常见的机制。最好尽量减少不同各方之间的资源共享和系统机制。这一原则受到工程安全多用户系统环境的严重影响。在这些系统中,常见的机制(如共享内存、磁盘、CPU等等)是一个用户向另一个用户泄露机密信息的潜在载体,以及一个用户对另一个用户操作的潜在干扰。它的极端认识是,不能相互干扰的系统是“网闸”的。然而,这一原则在使用共享基础设施(如互联网)或共享计算资源(如自然共享的多用户操作系统)时存在局限性CPUs和其他资源).
心理可接受性。安全控制应该是自然可用的,以便用户“例行地、自动地”应用保护。Saltzer和Schroeder特别指出,“只要用户对其保护目标的心理形象与他必须使用的机制相匹配,错误就会最小化”。这一原则是人为因素CyBOK知识域的基础。
Saltzer和Schroeder还提供了两个进一步的原则,但警告说,这些原则仅不完全适用于网络安全控制:
工作因素。良好的安全控制需要比对手更多的资源来规避。在某些情况下,例如强制执行密钥的成本,可以计算出工作系数,并且可以向设计师保证,对手没有足够的能力来全部尝试。但是,对于其他控件,此工作因素为更难精确计算。例如,很难估计腐败内幕人士的成本,或者在软件中发现缺陷的成本。
折衷记录。有时有人建议,可以使用可靠的记录或日志来检测危害,而不是使用防止危害的控制。大多数系统都会记录安全事件,安全操作严重依赖于此类可靠的日志来检测入侵。这两种方法的相对优点和成本高度依赖于环境。
这些原则反过来又借鉴了更为古老的先例,如柯克霍夫关于密码系统的原则。柯克霍夫强调,密码系统必须实际上是安全的,而不需要对其操作方式保密(开放式设计)。他还强调,钥匙应该短而容易记忆,设备必须易于使用,并且适用于电信——所有这些都与用户的心理接受度有关设计。
4.2NIST原则
系统设计中更现代的原则列举如下:NIST附录F。他们合并并扩展了Saltzer和Schroeder的原则。它们分为三大类,涉及:“安全架构和设计(即组织、结构和接口)”;安全能力和内在行为(即保护的内容);和“生命周期安全”(即与流程和管理相关的安全)。因此,这些原则具体涉及安全体系结构、特定控制以及工程过程管理。
一些NIST原则直接映射到Saltzer和Schroeder的原则,例如最不常见的机制、有效的中介访问、最小化共享、最小化安全元素、降低复杂性、最小化特权、安全默认值和谓词权限,以及可接受的安全性。
值得注意的是,新原则处理了现代计算系统日益增加的复杂性,并强调干净的模块化设计,即具有清晰的抽象、模块化和分层、部分有序的依赖性、安全的可进化性。其他原则承认,并非安全系统中的所有组件都可以在相同的保证级别上运行,并要求这些组件从分层信任结构中受益,在这种结构中,某些组件的安全故障不会危及系统中的所有属性。反向修改阈值原则规定,对安全性最为关键的组件也应受到最有效的保护,以防止未经授权的修改或篡改。分层保护表明,最不关键的安全组件不需要受到更关键组件的保护。
NIST该框架还认识到现代系统是相互关联的,并提供了如何保护它们的原则。应使用受信任的通信通道将其联网。它们应该享受安全的分布式组合,这意味着如果两个执行相同策略的系统被组合,那么它们的组合至少也应该执行相同的策略。最后,自力更生的可信原则指出,即使与其他远程组件断开连接,安全系统也应保持安全。
NIST原则扩展了什么类型的安全机制是现实世界系统可以接受的。特别是经济安全、性能安全、人为因素安全和可接受安全原则规定,安全控制不应过于昂贵、性能过度降低、不可用或用户无法接受。
这是一种认识,即安全控制支持系统的功能属性,而不是其本身的目标。
除了原则之外,NIST还概述了三个关键的安全体系结构策略。引用监视器概念是一个抽象控件,足以强制执行系统的安全属性。深度防御描述了由多个重叠控件组成的安全体系结构。隔离是一种策略,通过这种策略,不同的组件在物理上或逻辑上分离,以最大限度地减少干扰或信息泄漏。
NIST,以及Saltzer和Schroeder,二者强调原则仅提供指导,需要熟练地应用于手头的特定问题,以设计安全的体系结构和控制。偏离原则不会自动导致任何问题,但需要确定此类偏离,以确保可能出现的任何问题得到缓解适当地。
1.3潜在设计条件
随着越来越多的网络物理系统连接到其他系统和互联网,这种大规模连接所产生的固有复杂性以及一些网络物理系统的安全关键性意味着其他原则也变得非常相关。其中一个原则是JamesReason在安全关键系统领域研究的潜在设计条件。在网络安全的背景下,潜在的设计条件产生于过去关于一个(或多个)系统的决策。它们通常是隐藏的(或未经考虑的),只有在某些事件或设置一致时才会出现——在网络物理系统连接到其他系统或互联网时暴露安全漏洞的情况下。JamesReason将其称为瑞士奶酪模型,其中切片上的不同孔对齐。这些问题将在认为因素知识域进一步讨论。要注意的关键是,我们不能再仅仅考虑信息丢失作为网络安全违规的潜在后果,还必须考虑安全隐患。此外,设计的安全性并不总是可能的,并且当遗留系统连接到其他网络环境时,必须考虑潜在的(不安全的)设计条件,以及可能如何减轻它们。
4.4预防原则
随着参与式数据经济带来了一系列创新产品和服务,人们也越来越担心隐私和潜在的数据滥用,最近发生的干预民主进程的案例突出了这一点。因此,预防原则在技术创新投入大规模部署之前反思设计选择的潜在有害影响也变得重要。设计者必须考虑他们的选择的安全性和隐私的影响,从概念,到建模,实施,维护,进化,以及退役的大型连接系统和基础设施,社会越来越依赖。作为系统的函数还必须考虑到它在其生命周期中的演变及其对整个社会的影响。