加密与访问控制比较

信息安全 加密 访问控制 授权 rbac
2021-08-30 19:49:19

关于两个安全概念,我有一个非常基本和简单的问题。

加密和访问控制都用于保护隐私并防止未经授权的用户访问某些对象(例如文件、进程等)。

实际环境有什么不同?我们何时使用加密以及何时使用访问控制(例如 ACL、RBAC 等)?

例如,我可以加密一个文件以防止未经授权的访问,但我也可以为此使用 ACL 方法。

4个回答

加密用于为不受信任的实体可能要访问的数据提供机密性。访问控制用于限制或以其他方式控制实体对对象的访问。问“我们什么时候使用它们”是一个悬而未决的问题。

访问控制可以是任何东西,从门上的挂锁到文件系统上的权限集。它们可以简单也可以复杂,可以独立控制不同的操作类型(读取、写入、删除等),可能涉及审计日志,但通常是人为强制执行的限制。我的意思是,如果您可以访问所有内容,则没有什么可以从物理上阻止您绕过它们。例如,可以通过直接读取磁盘或将其加载到忽略访问控制的系统(例如 Linux NTFS 驱动程序)来绕过 Windows 上的文件系统 DACL。在物理领域,你可以用螺栓剪断挂锁或链条,或者在墙上挖一个洞,或者用炸药炸毁大门。

加密旨在基于授权用户(即拥有正确密钥的人)和未授权用户(即没有正确密钥的人)之间的计算复杂性差异提供某种程度的机密性。拥有正确密钥的用户可以花费少量资源来解密数据并获取消息。没有该密钥的用户必须花费大量的计算资源才能解密消息 - 通常如此之多以至于它变得不可行。这里的关键区别在于,强加密提供了一个真实的、不可避免的访问边界。您不能简单地通过直接读取磁盘或实现不同的访问器来绕过它 - 或者为此用炸药炸毁数据存储。

这两个概念的目标和用途是不同的。加密可以提供对数据机密性的非常强大的控制,但很难做到正确,计算成本可能很高,并且当大量用户需要访问相同的数据时变得难以大规模管理。加密也不适用于复杂模型,其中一些用户需要能够读取但不能写入,或写入但不能读取(例如写入日志文件但不能查看其他日志条目)。访问控制更加灵活并且更容易实现,尤其是在用户和数据之间存在复杂关系的情况下,但它仅由系统上运行的代码强制执行。因此,在本地/物理访问是潜在的威胁模型中,访问控制要弱得多(甚至毫无价值)(例如

您问题的真正答案是,只要它们适合您特定场景中的业务逻辑和威胁模型,就会使用它们。

加密机制可用于实现特定结果:

  • 使某些数据难以辨认,特定个人能够稍后将其重新转换为清晰的格式:这可用于在某些技术限制内实现机密性
  • 提供与特定数据块相关的真实签名:这可用于在某些架构中提供不可否认性(例如,文件上传服务可能在上传时需要签名,以识别上传数据的人)
  • 可以围绕公钥密码学和零知识密码学构建复杂的架构,以实现各种应用,例如电子投票、安全 IM、网站身份验证,但这与访问控制无关

安全性密码学的主要兴趣之一是,您可以使用密码原语对数据强制执行某些属性,而不管数据存储在何处。一个人需要访问密钥或需要能够执行非常复杂的(据称,太复杂而无法足够快地执行)数学以操纵加密对象。


访问控制机制主要实现对数据完整性机密性的保护。访问控制需要一个受信任的引用监视器,该监视器将策略强制执行到数据对象上。策略可以是任意的,在这种情况下,每个数据项的所有者(由参考监视器确定)决定谁可以访问他们的数据;强制 在这种情况下,参考监视器的管理员决定谁可以访问什么;或两者的混合物。

重要的是引用监视器会根据策略检查对对象的所有访问因此,访问控制仅适用于您控制的系统。

访问控制需要身份验证授权身份验证允许您提供问责制,这意味着您知道哪个主体访问了哪个资源;如果您加密数据并在两个以上的人之间共享密钥,这将是不可能的。


总之,加密和访问控制有不同的应用,执行不同的属性,具有不同的适用范围。它们是如此不同,以至于将它们进行比较是没有意义的...

尽管加密和访问控制都可以强制保密,但只有在您使用的加密密钥没有被盗时,加密才会这样做,而访问控制只会在数据在参考边界内存储和访问时才会这样做监视器。

将这两种方法结合起来进行文件存储是很常见的。驱动器将被加密以避免通过硬件进行未经授权的访问(可能没有参考监视器可用),并且操作系统充当参考监视器以执行访问控制检查,以确保软件访问遵守所需的策略。

TL-DR:加密产生的数据表示体现了这些数据存储在哪里的属性;而访问控制强制执行任意复杂的属性和策略,但仅限于一个人控制的系统。

这是两个独立的概念,我将尝试进行类比。

想象一下访问控制机制就像锁定房子里的门窗。您必须确保所有这些都被锁定以创建一个安全的房子,但仍然可以打破它们进入。对于房子里的某些东西,这种级别的安全性就是您所需要的。但是,假设您有钱、护照、家庭珠宝或任何您想要保持安全的东西,无论门被闯入。

这就是加密的用武之地。想象一下加密是一个保险箱。有许多具有不同安全级别(DES、3DES、AES128、AES256 等)的不同保险箱(加密类型)。现在甚至通过了用户需要闯入更安全的东西的访问控制。加密保护的内容取决于您认为哪些数据需要这种额外的保密性。像保险箱一样,可扩展性可能很困难。当然,银行可以负担得起存放大量贵重物品的大型保险箱(谷歌),但大多数家庭使用的人只需要更小的东西(类似于安全的网页浏览、GPG 等)。

如果您想在整个企业中使用加密,您需要投资于基础设施,这实际上取决于您的系统;你想保护什么,它需要多少保护。

同意它们是不同的,但一些答案更多的是关于典型实现而不是基本差异。

在我看来,加密信息(算法、密钥等)是数据的属性,清除数据只是一个特例。访问控制关注谁可以对某些数据及其属性执行什么操作。访问控制应该说“用户 A 可以将其作为明文数据读取”,而“用户 B 只能访问相同数据的加密版本”;或“此用户可以重新加密此数据”。