身份验证与授权

信息安全 验证 访问控制 授权
2021-08-28 19:39:21

我已经提到了这个链接,我知道

身份验证 = 登录名 + 密码(你是谁)

授权=权限(你可以做什么)

我的问题是:假设A获得了 B 的登录 ID 和密码,B的权限比 A 更高,这会损害授权,因为一旦 A 被错误地认证为 B,A 就获得了 B 的所有访问权限。

那么授权的重点是什么?

它是依赖于还是独立于身份验证?

4个回答

一旦A被错误地认证为B......

在任何最低限度安全的系统上,都不是这样。从系统的角度来看,用户 B正在验证自己,而不是用户A。它没有被错误地验证,它使用的是真实的登录名和密码。这是凭证盗窃的简单案例。您可以使用任何形式的 2FA 来强化系统,但系统会按预期工作。

如您所说,如果用户 A使用他自己的凭据并以某种方式以用户 B的个人资料结束,它将被错误地验证在这种情况下,攻击可能是身份验证绕过或特权升级,并且必须对系统进行修补。

那么授权的重点是什么?

根据您的身份划分特权。如果有人可以使用您的凭据,那么本质上就是您,因此授权仍然有效。

它是依赖于还是独立于身份验证?

它是独立的(尽管许多授权系统选择依赖于身份验证信息)。身份验证是关于你是谁。授权是您拥有的特权。例如,单点登录系统用于强制执行身份,而必须使用另一个系统来强制执行权限。

授权和身份验证是同一枚硬币的两个方面,授权有时依赖于身份验证,但并非总是如此。如何?

  1. 即使没有登录,Stack Exchange 的访问者也可以查看问题和答案。在这里,访问者有权查看答案,但肯定不需要为此进行身份验证,因此这里的授权与身份验证无关。

  2. 登录用户有权发布任何问题或回答问题,但为此他们需要提供正确的登录,因此这里的授权取决于身份验证。

简而言之,当然,如果身份验证受到损害,那么它也会妨碍授权。

一般来说,考虑所有四个 As(身份验证、授权/访问控制、会计、审计)而不是只考虑两个是一个好主意。

尽管有一些方法(例如密码+1)可以可靠地对抗 5 美元扳手方法(如网络漫画 XKCD 所述,即您用 5 美元扳手击打某人,直到他们为您登录),但没有任何一种身份验证方法可以可靠地应对可以提醒系统正在使用 5 美元扳手。这是一个邪恶的世界。

身份验证是唯一不依赖于其他步骤的步骤。这意味着它必须首先出现。身份验证可以是显式的(告诉我您是谁)或隐式的(我从您的硬件证书中看到您已从掩体内部登录)。您可以作为个人(顾问 Rin)或作为“角色”(任何谋杀机器人)进行身份验证。受法律监管的企业几乎总是需要使用明确的个人身份验证,以便审计有机会发挥作用。如果一个组或角色帐户似乎是必要的,那么您对问题的理解可能有问题,因为会有另一个您根本看不到的解决方案。

授权(通常称为访问控制,因为说话时很容易混淆身份验证和授权)是基于身份验证授予进程权限(从处理器的角度来看,登录用户只是另一个进程)。例如,如果您是 J. Random Lusr,您可能只有权在您的主文件夹中创建文件。但是,如果您是企业贵族 Biff Snidely,您也可能有权在共享部门文件夹中创建文件。您可能会受到磁盘空间或其他资源的限制,也可能不受限制。

记帐基本上是记录登录进程使用了​​哪些资源 - 它可以非常简单(Joe 今天使用了 1000 个处理器周期并使用了 1G 存储空间)或非常复杂(Biff 正是在这些时间按此顺序发出了这些命令)。它是审计的基础。非常好的会计会将数据发送到系统外,因此如果被黑客入侵,它就无法从本地系统中删除。

审计的定义更宽松;这可以是一个自动过程,它会寻找执行用户不允许执行的操作的尝试,或者它可以是一个被锁在地下室的侏儒团队,仔细研究当天的命令日志,或者你能想到的任何其他事情。审计的重点是身份验证可以被 5 美元的扳手打败,所以你不能仅仅假设因为你的用户有硬密码,所以没有人破坏你的安全性。您甚至不能假设您的用户不会意外找到破坏访问控制的方法,实际上,这种情况一直都在发生。

还要考虑的另一件事是 OP 所做的假设:“一旦 A 被错误地认证为 B,A 就获得了 B 的所有访问权限。” 不一定在所有系统和用例中都是正确的。

例如,在具有双重控制工作流的系统中,我必须先进行身份验证,然后还要从其所有者那里获得对特定资源的权限。除了我经过身份验证之外,所有者可能会也可能不会根据许多其他因素授予我该授权,例如某些资源只能在一天中的特定时间访问。

我用来思考这个主题的一个很好的类比是:

  1. 身份验证就像拥有一栋建筑物的钥匙卡。

  2. 授权是我进入后可以进入建筑物中的哪些房间,特别是如果我的建筑卡被盗并且我接近一个由不认识我的人看守的房间,我可能不被允许进入:)