安全

重温安全基础知识第2部分:完整性

Revisiting-Security-Fundamentals-Integrity

史蒂夫·戈林
尊敬的技术专家,安全

2019年10月24日

让我们重温一下基本原理安全今年保安意识月第2部分:的完整性。

正如我在本系列的第1部分中所讨论的,网络安全是复杂的。安全工程师依靠基本原则的应用来保持他们的工作易于管理。第一篇博客关注的是机密性。第二部分将讨论完整性。严肃的第三部分也是最后一部分将审查可用性。这三个原则的一致应用对于确保宽带上的优秀用户体验至关重要。

几乎每个使用宽带的人都有一些保密意识,尽管大多数人可能认为只有加密才能实现保密。这并不神秘——我们的浏览器甚至会告诉我们会话何时是“安全的”(这意味着他们在给定服务器上发起的会话至少使用了HTTPS加密)。诚信则更为隐晦和鲜为人知。它的实施也不那么广泛,而且并不总是很好。

定义完整性

在他们的特别出版物“信息安全导论”中,NIST将完整性定义为“数据自创建、传输或存储以来未以未经授权的方式被更改的属性”。这个定义是一个很好的起点,但它可以在今天的网络安全背景下扩展。完整性不仅需要应用于数据,还需要应用于存储和处理数据的硬件和软件系统以及连接这些系统的网络。最终,诚信是要证明事情是它们应该是这样的,它们没有被故意或无意或意外地(像魔法一样)以意想不到或未经授权的方式改变。

这是怎么做到的?好吧,这个答案取决于您将完整性控制应用于什么。(再次强调,这篇博文并不是关于细节的深入教程,而是一个简单的更新和概述。)确保完整性的最简单和最广为人知的方法是使用签名。大多数人在签署文件或写支票时都很熟悉这个。大多数人都知道银行,或者我们为其签署文件的任何人,都知道签名并不完美,所以你经常必须出示身份证件(护照、驾照等),以证明你是在文件或支票上签名的一方。

我们也可以在信息系统中实现类似的步骤,尽管过程略有不同。我们用数学方法生成数据的签名;事实上,完整性是密码学的一个领域,是加密的补充。签名由两个部分或步骤组成。首先,数据通过一个称为哈希的数学函数运行。哈希只是一个单向过程,它将大量数据减少到几个位(典型的是128-256位),在计算上很难逆转,并且不太可能使用不同的数据进行复制。这通常被称为摘要,并且该摘要不太可能使用不同的源数据进行复制(我们称之为冲突)。仅这一点就很有用,并在信息系统中以多种方式使用。但它不能证明数据的来源或数据的真实性。它只是显示它是否被改变了。 If we encrypt the digest, perhaps using asymmetric cryptography supported by a public key infrastructure, we produce a signature. That signature can now be validated through a cryptographic challenge and response. This is largely equivalent to being asked to show your ID when you sign a check.

需要注意的一件事是加密并不能确保完整性。尽管拦截加密消息的对手可能无法读取该消息,但他们可能能够修改加密文本并将其发送给预期的收件人。该更改可以被解密为有效。在实践中,这是很困难的,因为如果不了解原始消息,任何更改都可能只是胡言乱语。然而,有些攻击中原始消息的结构是已知的。一些密码也包含完整性保证,但不是所有的。因此,实现者需要考虑什么对给定的解决方案是最好的。

正直的方法

完整性应用于运动和静止的数据,以及应用于系统、软件,甚至供应链,都有些不同。下面是每个领域的工具和方法的简要总结:

  • 运动中的信息:上述签名方案如何应用于数据传输?最常见的方法使用的过程与上面描述的非常相似。基于哈希的消息认证码是一种协议,它创建数据包的摘要,然后用密钥对该摘要进行加密。公钥用于证明摘要是由授权来源生成的。一个旧的但仍然相关的HMAC描述是IETF提供的RFC 2104在这里
  • 静止信息:在许多方面,保证存储服务器或工作站上文件的完整性比传输信息的完整性更具挑战性。通常,存储由许多组织或部门共享。应该使用哪些密钥来生成这些文件的签名?有时候,事情被简化了。访问控制可用于确保只有授权方才能访问文件。当访问控制有效时,可能只有对数据文件进行哈希处理才能证明完整性。同样,一些加密方案可以包含完整性保护。上述关键问题仍然是一个挑战。大多数存储解决方案,无论是专有的还是开源的,都提供了广泛的完整性保护选项,对于安全工程师来说,为给定的应用程序设计最佳解决方案可能具有挑战性。
  • 软件软件当然是一种特殊类型的信息。因此,如何将完整性保护应用于静止信息的想法也适用于保护软件。然而,如何在带有实时构建的现代系统中使用软件增加了额外的需求。也就是说,这意味着在给定的系统使用软件之前,该软件应该被验证为来自授权来源,并且自该来源提供后没有被更改过。生成摘要然后加密摘要以形成签名的相同概念也适用,但是在加载和使用软件之前需要验证该签名。在实践中,这在一些生态系统中做得很好,而在其他系统中做得很差或根本没有。在电缆系统中,我们使用一个称为安全软件下载的过程来确保下载到电缆调制解调器的固件的完整性。(见第14节数据线上业务接口规范亚博苹果版怎么下载
  • 系统系统由硬件和软件组成,但硬件的整体操作往往由存储在文件和软件中的配置和设置控制。如果修改了文件和软件,会影响系统的正常运行。因此,系统的完整性应该被跟踪和定期评估。系统的完整性可以通过认证来跟踪——基本上生成整个系统的摘要,然后将其存储在受保护的硬件中,并将其报告给安全的认证服务器。可以检查对系统的任何更改,以确保它们是经过授权的。的文档详细记录了此操作的过程可信计算组.由可信计算组精心编写的另一个进程是可信引导。可信引导使用硬件中包含的安全模块,使用认证执行操作系统或虚拟环境的经过验证的启动。
  • 供应链完整性控制最近的一个重点领域是供应链。您如何知道您的硬件或软件来自哪里?你订购的系统是你收到的系统吗?供应链管理可以使用广泛的工具来证明,分布式账本或区块链技术的应用是一种流行的方法。

诚信的威胁

诚信面临哪些威胁?反复影响网络运营商及其用户的一个例子是改变网关上的DNS设置。如果攻击者可以将网关上的DNS服务器更改为他们控制的服务器(结合强大的访问控制将这种风险降至最低),那么他们可以有选择性地将DNS查询重定向到看起来像真实方的欺骗主机(例如,银行、信用卡公司、慈善网站),并获得客户的凭据。然后,攻击者可以使用这些凭据访问合法网站,并做任何允许的事情(例如,清空银行账户)。这也可以通过更改查询遍历的受损路由器或其他服务器上正在运行的DNS查询来实现(HMAC或具有完整性保护的加密将防止这种情况发生)。软件攻击甚至可以发生在源头,也可以发生在供应链的中间点。被篡改的软件是一种将恶意软件引入终端的普遍方式,而且由于该软件看起来是合法的,因此很难检测到。(想想《连线》杂志的文章,供应链黑客将恶意软件潜入视频游戏”)。

诚信的未来

电缆技术已经解决了许多完整性威胁。如上所述,DOCSIS技术已经包括了对安全软件下载的支持,以提供固件的完整性验证。这解决了软件供应链和篡改固件的问题。HMAC也支持我们的许多管理协议。未来的控制将包括可信引导和加强保护我们的加密密钥(也用于签名)。我们正在为虚拟服务交付设计解决方案,完整性控制广泛地包含在正在开发的容器和虚拟机体系结构中。

为我们的工具添加完整性控制,以确保机密性,提供深度防御。它是一个基本的安全组件,应该包含在任何安全设计策略中。你可以点击下面阅读更多关于安全的信息。


了解更多关于10G

隐私偏好中心

    严格的必要

    网站正常运行所必需的cookie。

    PHPSESSID, __cfduid hubspotutk

    性能

    它们用于跟踪用户交互并检测潜在的问题。这些数据有助于我们通过提供用户如何使用本网站的分析数据来改善我们的服务。

    BizoID, wooTracker, GPS, _ga, _gat, _gid, _hjIncludedInSample, mailmunch_second_pageview

    针对

    这些cookies用于(1)发送与您和您的兴趣更相关的广告;(2)限制你看广告的次数;(3)帮助衡量广告活动的效果;(4)了解人们在观看广告后的行为。

    __hssc, __hssrc, __hstc,