了解安全三元组以及常见的安全模型和原则。
任务1:介绍
安全已成为一个流行词;每家公司都想声称其产品或服务是安全的。但事实真的如此吗?
在我们开始讨论不同的安全原则之前,了解我们正在保护资产的对手至关重要。您是否试图阻止蹒跚学步的孩子访问您的笔记本电脑?或者您是否正在尝试保护包含价值数百万美元的技术设计的笔记本电脑?对幼儿和工业间谍行为者使用精确的保护机制将是荒谬的。因此,了解我们的对手是必须的,这样我们才能了解他们的攻击并开始实施适当的安全控制。
不可能实现完美的安全性;没有解决方案是 100% 安全的。因此,我们尝试改善我们的安全态势,使我们的对手更难获得访问权限。
这个房间的目标是:
- 解释安全功能:机密性、完整性和可用性 (CIA)。
- 提出安全三元组的对立面,CIA:披露、更改和销毁/否认 (DAD)。
- 介绍安全模型的基本概念,例如 Bell-LaPadula 模型。
- 解释安全原则,例如深度防御、零信任和信任但验证。
- 引入 ISO/IEC 19249。
- 解释 Vulnerability(脆弱性)、Threat (威胁) 和 Risk(风险)之间的区别。
回答以下问题
想想你如何描述某物是安全的。
任务2:中央情报局
在我们描述安全之前,我们需要更好地考虑构成安全性的要素。当您想判断系统的安全性时,您需要从安全三元组的角度来考虑:机密性、完整性和可用性 (CIA)。
- 机密性确保只有预期的人员或接收者才能访问数据。
- 完整性旨在确保数据无法更改;此外,如果发生任何更改,我们可以检测到它。
- 可用性 旨在确保系统或服务在需要时可用。
让我们考虑一下 CIA 安全三元组在下在线购物的情况下:
- 保密性: 在网上购物期间,您希望您的信用卡号仅披露给处理付款的实体。如果您怀疑您的信用卡信息会被泄露给不受信任的一方,您很可能会避免继续进行交易。此外,如果数据泄露导致个人身份信息(包括信用卡)泄露,公司将在多个层面上蒙受巨大损失。
- 完整性:填写订单后,如果入侵者可以更改您提交的送货地址,包裹将被发送给其他人。如果没有数据完整性,您可能非常不愿意向该卖家下订单。
- 可用性: 要下在线订单,您将浏览商店的网站或使用其官方应用程序。如果该服务不可用,您将无法浏览产品或下订单。如果您继续面临此类技术问题,您最终可能会放弃并开始寻找不同的在线商店。
让我们考虑一下与患者记录和相关系统相关的 CIA:
- 保密性:根据现代国家的各种法律,医疗保健提供者必须确保和维护医疗记录的机密性。因此,如果医疗保健提供者非法披露患者的医疗记录,他们可能会被追究法律责任。
- 完整性:如果患者记录被意外或恶意更改,可能会导致错误的治疗,进而导致危及生命的情况。因此,如果不确保医疗记录的完整性,该系统将毫无用处且可能有害。
- 可用性:当患者前往诊所跟进他们的医疗状况时,系统必须可用。不可用的系统意味着医生无法访问患者的记录,因此无法知道任何当前症状是否与患者的病史有关。这种情况会使医学诊断更具挑战性和容易出错。
所有三个安全功能的重点不需要相同。一个例子是大学公告;虽然它通常不是机密的,但文档的完整性至关重要。
超越 CIA
在 CIA 安全三元组之外再向前迈进一步,我们可以考虑:
- 真实性: 正品意味着没有欺诈或假冒。真实性是关于确保文档/文件/数据来自声明的来源。
- 不可否认性:否认意味着拒绝承认某物的有效性。不可否认性确保原始源无法否认它们是特定文档/文件/数据的源。这一特性对于购物、患者诊断和银行业务等各个领域都是必不可少的。
这两个要求密切相关。区分真实文件或订单和虚假文件或订单的需求是必不可少的。此外,确保另一方不能否认是源头对于许多系统可用至关重要。
在网上购物时,根据您的业务,您可能会容忍尝试以货到付款的方式交付 T 恤,但后来得知收件人从未下过此类订单。但是,没有公司可以容忍运送 1000 辆汽车来发现订单是假的。在购物订单示例中,您想要确认所述客户确实下了此订单;这就是真实性。此外,您要确保他们无法否认下达此订单;这就是不可否认。
作为公司,如果您收到 1000 辆汽车的发货订单,您需要确保此订单的真实性;此外,消息来源不应否认下达此类订单。没有真实性和不可否认性,业务就无法开展。
帕克六边形
1998 年,Donn Parker 提出了 Parkerian Hexad,这是一组 6 个安全元件。他们是:
- 可用性
- 效用
- 正直
- 真实性
- 保密性
- 占有
我们已经介绍了上述六个要素中的四个。让我们讨论剩下的两个元素:
- 效用: 效用侧重于信息的有用性。例如,用户可能丢失了访问具有加密存储的笔记本电脑的解密密钥。尽管用户仍然拥有磁盘完好无损的便携式计算机,但他们无法访问它们。换句话说,尽管仍然可用,但信息的形式是无用的,即没有用处。
- 占有:此安全要素要求我们保护信息免遭未经授权的获取、复制或控制。例如,对手可能会占用备份驱动器,这意味着只要他们拥有该驱动器,我们就会失去对信息的所有权。或者,攻击者可能会使用勒索软件成功加密我们的数据;这也会导致失去对数据的所有权。
单击“查看站点”并回答五个问题。你最后得到的旗帜是什么?
任务3:DAD
系统的安全性通过多种方式之一受到攻击。它可以通过披露秘密数据、更改数据或销毁数据来实现。
- Disclosure披露与保密相反。换句话说,泄露机密数据就是对机密性的攻击。
- Alteration 是 Integrity 的对立面。例如,支票的完整性是必不可少的。
- Destruction/Denial销毁/否认是可用性的对立面。
与 CIA 三元组相反的是 DAD 三元组:披露、更改和销毁。
考虑前面的患者记录和相关系统示例:
- 披露:与大多数现代国家/地区一样,医疗保健提供者必须对医疗记录保密。因此,如果攻击者成功窃取了其中一些医疗记录并将其转储到网上以供公开查看,医疗保健提供商将因这种数据泄露攻击而蒙受损失。
- 更改:如果攻击者设法修改了患者的医疗记录,请考虑情况的严重性。这种更改攻击可能会导致错误的治疗,因此,这种更改攻击可能会危及生命。
- 销毁/否认:考虑医疗设施完全无纸化的情况。如果攻击者设法使数据库系统不可用,则该设施将无法正常运行。他们可以暂时回到纸上;但是,患者记录将不可用。这种否认攻击将使整个设施停滞不前。
防止披露、更改和破坏/否认具有绝对的重要性。这种保护相当于努力维护机密性、完整性和可用性。
将机密性和完整性保护到极致可能会限制可用性,而将可用性提高到极致可能会导致失去机密性和完整性。良好的安全原则实施需要在这三者之间取得平衡。
任务4:安全模型的基本概念
我们了解到,安全三元组以机密性、完整性和可用性 (CIA) 为代表。有人可能会问,我们如何创建一个确保一个或多个安全功能的系统?答案是使用安全模型。在本任务中,我们将介绍三个基本安全模型:
- Bell-LaPadula 模型
- Biba 诚信模型
- 克拉克-威尔逊模型
Bell-LaPadula 模型
Bell-LaPadula 模型旨在通过指定三条规则来实现机密性:
- 简单安全属性:此属性称为“无读取”;它指出,较低安全级别的主体无法读取较高安全级别的对象。此规则阻止访问超过授权级别的敏感信息。
- Star Security Property:此属性称为“no write down”;它指出,较高安全级别的 Subject 无法写入较低安全级别的 Object。此规则可防止将敏感信息泄露给安全级别较低的主体。
- Discretionary-Security 属性:此属性使用访问矩阵来允许读取和写入操作。下表显示了一个示例访问矩阵,并与前两个属性结合使用。
科目 | 对象 A | 对象 B |
---|---|---|
实验体 1 | 写 | 无访问权限 |
实验体 2 | 读/写 | 读 |
前两个属性可以概括为 “write up, read down”。您可以与安全许可较高的人员共享机密信息(书面记录),也可以从安全许可较低的人员那里接收机密信息(向下阅读)。
Bell-LaPadula 模型存在一定的限制。例如,它不是为处理文件共享而设计的。
Biba 模型
Biba 模型旨在通过指定两个主要规则来实现完整性:
- Simple Integrity Property:此属性称为 “no read down”;不应从较低完整性的对象读取较高完整性的主题。
- Star Integrity 属性:此属性称为“无写入”;较低完整性的主体不应写入较高完整性的对象。
这两个属性可以概括为 “read up, write down”。这条规则与 Bell-LaPadula 模型形成鲜明对比,这并不奇怪,因为一个关注机密性,而另一个关注完整性。
Biba Model 存在各种限制。一个例子是它不处理内部威胁 (内部威胁)。
Clark-Wilson 模型
Clark-Wilson 模型还旨在通过使用以下概念来实现完整性:
- 受约束数据项 (CDI):这是指我们要保留其完整性的数据类型。
- 不受约束的数据项 (UDI):这是指 CDI 之外的所有数据类型,例如用户和系统输入。
- 转换过程 (TP):这些过程是编程操作,例如读取和写入,应保持 CDI 的完整性。
- 完整性验证程序 (IVP):这些程序检查并确保 CDI 的有效性。
我们只介绍了三种安全模型。读者可以探索许多其他安全模型。示例包括:
- Brewer 和 Nash 模型
- Goguen-Meseguer 模型
- 萨瑟兰模型
- Graham-Denning 模型
- Harrison-Ruzzo-Ullman 模型
任务5:深度防御
Defence-in-Depth 是指创建多级安全系统;因此它也被称为多级安全性。
考虑下面的类比:你有一个上锁的抽屉,用来存放重要的文件和昂贵的东西。抽屉已锁上;但是,您是否希望这个抽屉锁成为小偷和您的昂贵物品之间唯一的东西?如果我们考虑多级安全性,我们更希望锁上抽屉,锁上相关房间,锁上公寓的正门,锁上大楼的大门,您甚至可能想在途中加入一些安全摄像头。尽管这些多级安全无法阻止每个小偷,但它们会阻止其中的大部分小偷并减慢其他小偷的速度。
任务6:国际标准化组织(ISO)/IEC 19249
国际标准化组织 (ISO) 和国际电工委员会 (IEC) 制定了 ISO/IEC 19249。在本任务中,我们将简要介绍 ISO/IEC 19249:2017 信息技术 - 安全技术 - 安全产品、系统和应用程序的架构和设计原则目录。目的是更好地了解国际组织将教授哪些安全原则。
ISO/IEC 19249 列出了五项架构原则:
- Domain Separation:每组相关组件都分组为单个实体;组件可以是应用程序、数据或其他资源。每个实体都将具有自己的域,并被分配一组通用的安全属性。例如,考虑 x86 处理器权限级别:操作系统内核可以在环 0(最高权限级别)中运行。相比之下,用户模式应用程序可以在环 3 (最低权限级别) 中运行。域分离包含在 Goguen-Meseguer 模型中。
- 分层:当系统被构建成许多抽象级别或层时,可以在不同级别实施安全策略;此外,验证操作也是可行的。让我们考虑一下 OSI(开放系统互连)模型,它有七层网络。OSI 模型中的每个层都为其上方的层提供特定服务。这种分层使得实施安全策略并轻松验证系统是否按预期工作成为可能。编程世界的另一个示例是磁盘操作;程序员通常使用所选高级编程语言提供的 Disk Read 和 Write 函数。编程语言隐藏了低级系统调用,并将它们呈现为更用户友好的方法。分层与 Defense in Depth 有关。
- 封装:在面向对象编程 (OOP) 中,我们隐藏了低级实现,并通过为此目的提供特定方法来防止直接操作对象中的数据。例如,如果你有一个 clock 对象,你将提供一个方法,而不是让用户直接访问该变量。目的是防止变量的值无效。同样,在较大的系统中,您将使用(甚至设计)适当的应用程序编程接口 (API) 来访问数据库。
increment()
seconds
- 冗余:此原则可确保可用性和完整性。有许多与冗余相关的示例。考虑具有两个内置电源的硬件服务器的情况:如果一个电源发生故障,系统将继续运行。考虑具有三个驱动器的 RAID 5 配置:如果一个驱动器发生故障,则使用其余两个驱动器的数据仍然可用。此外,如果其中一个磁盘上的数据被错误地更改,它将通过奇偶校验检测到它,从而确保数据的完整性。
- 虚拟化:随着云服务的出现,虚拟化变得越来越普遍和流行。虚拟化的概念是在多个操作系统之间共享一组硬件。虚拟化提供沙盒功能,可改进安全边界、安全引爆和对恶意程序的观察。
ISO/IEC 19249 教授了五项设计原则:
- 最低权限:在回答“谁可以访问什么”这个问题时,您也可以非正式地将其表述为“需要基础”或“需要知道基础”。最小权限原则告诉我们,您应该为某人提供最少的权限来执行他们的任务,仅此而已。例如,如果用户需要能够查看文档,则应授予他们读取权限,而不授予其写入权限。
- 攻击面最小化:每个系统都有攻击者可能用来破坏系统的漏洞。一些漏洞是已知的,而另一些漏洞尚未被发现。这些脆弱性代表了我们应该努力降低的风险。例如,在强化 Linux 系统的步骤之一中,我们将禁用任何我们不需要的服务。
- 集中式参数验证:许多威胁是由于系统接收了输入,尤其是来自用户的输入。无效的输入可用于利用系统中的漏洞,例如拒绝服务和远程代码执行。因此,参数验证是确保系统状态正确的必要步骤。考虑到系统处理的参数数量,参数的验证应集中在一个库或系统中。
- 集中式一般安全服务:作为一项安全原则,我们应该致力于集中所有安全服务。例如,我们将创建一个用于身份验证的集中式服务器。当然,您可以采取适当的措施来确保可用性并防止创建单一故障点。
- 为错误和异常处理做准备:每当我们构建一个系统时,我们应该考虑到错误和异常已经发生和将要发生。例如,在购物应用程序中,客户可能会尝试为缺货商品下订单。数据库可能会过载并停止响应 Web 应用程序。该原则教导系统应设计为故障安全;例如,如果防火墙崩溃,它应该阻止所有流量,而不是允许所有流量。此外,我们应该注意确保错误消息不会泄露我们认为机密的信息,例如转储包含与其他客户相关的信息的内存内容。
在以下问题中,请参考上述 ISO/IEC 19249 五项设计原则。用 1 到 5 之间的数字回答,具体取决于设计原则的数字。
任务7:零信任与信任,但要验证
信任是一个非常复杂的话题;实际上,没有信任,我们就无法运作。如果有人认为笔记本电脑供应商在笔记本电脑上安装了间谍软件,他们很可能最终会重建系统。如果有人不信任硬件供应商,他们就会完全停止使用它。如果我们在商业层面上考虑信任,事情只会变得更加复杂;但是,我们需要一些指导性安全原则。我们感兴趣的关于信任的两个安全原则:
- 信任但验证
- 零信任
信任但验证:该原则告诉我们,即使我们信任一个实体及其行为,我们也应该始终进行验证。实体可以是用户或系统。验证通常需要设置适当的日志记录机制;验证表示检查日志以确保一切正常。实际上,验证所有内容是不可行的;试想一下,审查单个实体执行的所有操作(例如单个用户浏览的 Internet 页面)所需的工作。这需要自动化的安全机制,例如代理、入侵检测和入侵防御系统。
零信任:该原则将信任视为一种漏洞,因此,它迎合了与内部相关的威胁。在将信任视为漏洞后,零信任试图消除它。它是间接地教导,“永远不要相信,永远验证”。换句话说,每个实体都被认为是对抗性的,除非证明不是这样。Zero Trust 不会根据设备的位置或所有权向设备授予信任。这种方法与信任内部网络或企业拥有的设备的旧模型形成鲜明对比。在访问任何资源之前,都需要进行身份验证和授权。因此,如果发生任何违规行为,如果实施了 Zero Trust 架构,损害将得到更严格的控制。
微分段是用于 Zero Trust 的实施之一。它是指网段可以小到单个主机的设计。此外,段之间的通信需要身份验证、访问控制列表检查和其他安全要求。
在不对业务产生负面影响的情况下,我们可以应用 Zero Trust 的程度是有限的;然而,这并不意味着只要可行,我们就不应该应用它。
任务8:威胁与风险
我们需要注意三个术语以避免任何混淆。
- 脆弱性:易受攻击是指容易受到攻击或损害。在信息安全中,漏洞是一种弱点。
- 威胁:威胁是与此弱点或漏洞相关的潜在危险。
- 风险:风险与威胁行为者利用漏洞的可能性以及由此对业务产生的影响有关。
由于玻璃的性质,带有标准玻璃制成的门窗的展厅会受到弱点或脆弱性的影响。因此,玻璃门窗有被打破的威胁。陈列室业主应考虑风险,即玻璃门或窗被打破的可能性以及由此对业务的影响。
考虑另一个与信息系统直接相关的示例。您在一家医院工作,该医院使用特定的数据库系统来存储所有医疗记录。有一天,您正在关注最新的安全新闻,您了解到使用的数据库系统不仅容易受到攻击,而且已经发布了概念验证工作漏洞利用代码;发布的漏洞利用代码表明威胁是真实的。有了这些知识,您必须考虑由此产生的风险并决定下一步。
我们将在单独的房间里详细介绍威胁和风险。
任务9:结论
这个房间涵盖了与安全相关的各种原则和概念。到目前为止,您应该非常熟悉 CIA 和 DAD 以及其他术语,例如真实性、否认性、脆弱性、威胁和风险。我们参观了三种安全模型和 ISO/IEC 19249。我们介绍了不同的安全原则,例如深度防御、信任但验证和 Zero Trust。
最后,责任共担模型值得一提,尤其是在对云服务的依赖日益增加的情况下。需要各个方面来确保适当的安全性。它们包括硬件、网络基础设施、操作系统、应用程序等。但是,使用云服务的客户具有不同的访问级别,具体取决于他们使用的云服务。例如,基础架构即服务 (IaaS) 用户对操作系统具有完全控制权(和责任)。
另一方面,软件即服务 (SaaS) 用户无法直接访问底层操作系统。因此,在云环境中实现安全性需要云服务提供商和用户都做好自己的工作。责任共担模型是一个云安全框架,用于确保各方都了解其责任。
完成安全原则室后,您可以进入密码学入门室。