为什么要像这样在安全领域定义 CIA?

信息安全 术语 保密 中央情报局
2021-08-29 08:38:07

众所周知,中情局对安全的需求意味着:

  • 保密
  • 正直
  • 可用性

我不明白为什么要定义“完整性”和“可用性”,

  1. 如果我们做一个明文的Confidentiality,Integrity就是一个完整的明文,这是基本的,为什么还有镀金的百合?
  2. 如果定义了 Integrity,那么解密后的明文必须是可用的,所以 Availability 也是锦上添花。
4个回答

您在这里关注的范围非常狭窄。CIA 三元组是关于整个系统的安全性,而不仅仅是加密消息。

话虽如此,三合会的所有元素都适用于您的示例:

  • 机密性:正如您所提到的,加密的主要目的是强制保密。
  • 完整性:加密不会自动提供完整性。攻击者可以用以前看到的加密消息交换加密消息。攻击者可以滥用密文的延展性以便在不知道密钥的情况下修改明文,例如,如果在密文上没有真实性记录的情况下使用流密码。
  • 可用性:攻击者可能会删除或破坏加密消息,或利用拒绝服务 (DoS) 攻击对包含加密消息的系统进行攻击。

虽然多项式的答案很出色,但它可能有助于理解 CIA 原则,以添加如何破坏每个方面以及如何保护每个方面的示例。

保密

机密性的目的只是控制“谁阅读了什么?”。如果信息泄露给未经授权的一方,机密性可能会被破坏。什么的信息完全取决于威胁模型。我举几个例子:

  • 有组织的犯罪分子不希望刑事调查人员知道谁与谁交谈。无论内容如何,​​通信的唯一指标都是机密信息。
  • 试图叛逃到另一边的间谍不想被追查。消息的来源与内容一样机密。

如您所见,机密性不仅仅是消息的内容。元数据也很重要,而且很难加密。但总的来说,加密是获得机密性的好方法。然而,在这些具体示例中,需要采取进一步措施对所有泄露信息保密。

正直

完整性可以看作是消息不能被未经授权的一方修改的属性。由于这通常是一个不可行的目标,一个好的折衷方案是任何类型的未经授权的修改都需要是可识别的。

您将了解密码学的第一件事就是始终使用算法来完成它们的设计目的。加密被用来保证机密性,而不是完整性。

One-Time Pad就是一个很好的例子它是通过使用至少与消息一样长的随机密钥对消息进行异或运算来实现的。让我给你举个例子。作为消息,我们将使用

ATTACK AT 09:00

作为关键,我们将使用

jHiA015Ak4012Kf

这将导致十六进制消息

2b1c3d00737a15003f140008087b56

攻击者知道消息的粗略格式,但不知道内容,现在可以恶意将密文更改为:

2b1c3d00737a15003f140101087b56

使用相同的密钥,这将破译成

ATTACK AT 10:00

这可能被证明是一个致命的结果。攻击者仍然无法读取密文,因此仍然保持机密性,但是通过操纵密文并且接收者无法检测到这种操纵,攻击者得到了他们想要的东西。

可以通过向消息添加某种代码来验证消息是否已被修改来维护完整性。可以使用带有密钥的散列、散列上的加密签名等。重要的是,对消息的任何修改都会被注意到,并且攻击者自己无法伪造有效的身份验证代码。

可用性

可用性经常被那些对安全性较新的人看不起,作为一种“好有”的目标。但是让我问你:如果服务器一直处于离线状态,那么完全加密并且没有人可以写入的服务器有什么用?

可用性可以通过许多指标来判断,具体取决于每个单独的用例。有时是正常运行时间,有时是响应时间,有时是性能。如果企业受到重大影响,这些因素中的每一个都可能导致企业倒闭。

想象一下,如果 StackExchange 会在 90% 的时间里因“维护”而停机,因为 ████████████bringStackExchangeDown.sh中的一些小伙伴设置了一个 cronjob 以每 30 分钟运行一次。而网站在线的 10%,速度太慢了,相比之下 54k 拨号调制解调器似乎快得惊人。

你不想使用那个网站,而攻击者得到了他们想要的东西。可悲的是,无法通过投入更多加密来提高可用性。只有通过扩大和扩大、增加冗余以及修复会降低可用性的错误,才能提高可用性。

正如其他答案所提到的,机密性、完整性、可用性意味着应用整个数据中心应用程序,而不是单个加密消息。

也就是说,确实适用的 CIA 定义略有不同:机密性、完整性、身份验证——例如,请参阅Python 中的实用密码学、Nieslon 和 Monson

保密

攻击者无法阅读您的消息。这是不言自明的。

正直

攻击者无法修改您的消息。

我会争辩说,这与保密性是正交的。考虑以下情况:

  • 数字签名提供完整性但不提供机密性;任何人都可以阅读您的消息,但没有人可以在不破坏签名的情况下修改它。
  • 分组密码(通常)提供机密性但不提供完整性。例如 AES_CBC 以密文延展性而闻名;即使攻击者无法阅读消息,延展性也让他们以可预测的方式修改明文,例如,翻转特定位可能足以将“是”变为“否”。
  • 带有附加数据的身份验证加密(AEAD 密码)解决了 CBC 模式的可混合性问题,从而提供了机密性和集成性。AES_GCM 或 ChaCha20_poly1305 是 AEAD 对称密码的示例。

验证

您可以通过加密方式确定发送消息的人。同样,这与其他两个是正交的,因为从本质上讲,它归结为确保只有一个人可以访问生成此消息的私钥,并且您有一种可靠的方式将该密钥映射到该人. 提供强身份验证的示例是由数字证书中的密钥生成的签名,或您为自己加密的 AES_GCM,即您知道您必须创建此消息,因为没有其他人拥有密钥的副本

我接受了培训,指定 CIA 不仅是三个词的助记符,而且是记住它们首选顺序的一种方式。也就是说,有一个既定的优先级:

  1. 保密
  2. 正直
  3. 可用性

以该顺序。

推理路线如下:

  • 如果你必须失去一些东西,保密是最糟糕的损失。失去可用性可能会带来不便,但一旦数据再次可用,可能不会造成长期损害。失去完整性可能很糟糕,但如果您知道这一点,您可以从备份中恢复并停止进一步的损坏。一旦失去机密性,未经授权离开组织的数据通常是您无法控制的,因此这个问题是无法解决的。
  • 虽然可用性很好,但最好是报告数据不可用,然后给出错误数据。假设我是卡车停靠站的卡车司机,正在等待找出从哪个方向开始开车。如果我不能得到这些信息,我就坐下来。如果我得到了我相信的错误信息,那么我就会开始向相反的方向投入资源(燃烧燃料),从而导致更多的工作试图消除一些损害(通过将我重新定位到我开始的地方附近,但损失的燃料已经消失)。
  • 当然,失去任何这些东西都是不好的。CIA 仅代表最重要优先级的顺序。

有些人可能不相信这是最好的。我确实认为人们可能出于某些明智的原因不同意上述某些观点,并为他们的不同观点提出一些令人信服的论据。

  • 一个人可能会建议,即使是错误的信息,这将失去完整性,例如如果只有上个月的一些过时的信息可用,有时可能比完全没有信息更有用,这将完全失去可用性。如果我意识到信息已经过时,那么潜在的危害可能会最小化,同时我可能会从我所看到的任何东西中获得一些好处。因此,可用性可能比完整性更重要。
  • 作为另一个例子,对某些信息保密可能是可取的,但被认为不如信息完整性错误那么重要。例如,我可能希望我的竞争对手在我下周公布计划之前不知道一些细节。但是,也许我宁愿拥有它,也不愿让我的计划变得完全不可用,因为数据损坏将错误引入了我的流程。因此,在某些情况下,完整性可能比机密性更重要。

我教给我的学生的是,上面的顺序很容易熟悉,以防它出现在行业考试中,并且很容易理解,因此您可以明智地考虑该标准优先级的好处,即使出现成为对某些方面存在分歧的正当理由。