AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 805869
Accepted
Tomer Schweid
Tomer Schweid
Asked: 2016-09-29 05:57:14 +0800 CST2016-09-29 05:57:14 +0800 CST 2016-09-29 05:57:14 +0800 CST

kerberos 身份验证如何工作?

  • 772

我试图弄清楚 kerberos 身份验证是如何工作的,我发现的信息总是缺少一些东西,好像它的一部分被认为是理所当然的。我一般都知道这个过程,但缺少一些细节。

获得 TGT:

  1. 首先,用户应该从 KDC 获得 TGT(Ticket Granting Tickets) - 用户发送的请求仅包含其用户名 (UPN) 而没有密码。提供了一些额外信息以防止重新发送请求,例如 IP 地址和时间戳。如果需要预认证,则使用用户密码对时间进行哈希处理。

  2. KDC 向用户发送以下信息: A. TGT - 带有时间戳、用户名、IP 地址和会话密钥 - TGT 使用只有 KDC 知道的秘密加密,因此任何人都无法更改。
    B. 用户和KDC在以后的通信中使用的会话密钥。这些东西是使用用户密码(KDC 和用户之间的基本共享秘密)加密的。如果使用了预身份验证,服务器将在发回信息之前检查时间戳是否有效。

  3. 用户接收信息并使用其密码对其进行解密 - 然后将其存储在其内存(kerberos 托盘)中。

获取 TGS:

  1. 当用户被要求从服务中验证自己时,他向 KDC 发送 TGS(票证授予服务)请求,该请求包含 TGT、UPN 和 SPN(服务主体名称 - 例如网页的 URI) .

  2. 然后 KDC 解密 TGT 并验证它的真实性,它与 UPN 对应,来自相同的 IP 地址并且仍然有效(票证具有有效时间段)。

  3. KDC 向使用服务密码加密的用户发送 TGS。

  4. 用户将 TGS 提供给服务 - 它使用自己的密码对其进行解密。

  5. 身份验证已完成,因为服务依赖于它的密码仅在它和 KDC 之间共享这一事实,因此它相信 KDC 较早地对用户进行了身份验证。

几个问题:

  1. 我错过了什么还是仅此而已?

  2. 用户和 KDC 何时使用过会话密钥?在什么时候?为什么有必要?为什么用户密码不够?

  3. 用户和服务之间还应该有一个会话密钥(据我所知) - 何时以及为什么使用它(与最后一个问题相同)?

  4. Kerberos 在各方之间有 5 分钟的间隔限制 - 我理解为什么保持时间同步很重要,因为它被用作我们加密和解密的东西,那么为什么任何间隔都可以?为什么是 5 分钟?

如果您有任何更正,我会很高兴。

提前致谢, 托默

kerberos
  • 1 1 个回答
  • 581 Views

1 个回答

  • Voted
  1. Best Answer
    dlakelan
    2016-10-13T10:27:00+08:002016-10-13T10:27:00+08:00

    1)这似乎很彻底,我不确定所有细节。

    2)用户的密码是不够的,因为它必须在两方之间共享,而共享它的只有两方是 KDC 和客户端。如果你要通过网络发送一些东西,即使是加密的,如果它没有很长的使用寿命会更好。所以客户端使用会话密钥来请求服务票证(我认为)。而且,KDC 使用会话密钥生成服务票证,因此当客户端获得 LDAP 或 HTTP 服务的票证时,KDC 会生成一个会话密钥。该会话密钥在服务票证中,并且服务票证还包含发送给服务提供代理(LDAP 或 HTTP 服务器)的加密消息,该消息还包括会话密钥。因此,现在客户端和服务器都共享一个 KDC 告诉他们双方的临时秘密。当有使用它的协议时使用此密钥。因此,例如,如果启用了 kerberos,则可能会说 telnet 服务器可以通过线路加密流量。

    4)包括时间,5分钟的余地是确保时钟不必精确同步到毫秒的一种方式,您可以容忍任何正常水平的网络延迟或短暂的中断,但您不能稍后重播请求。去拿票是不好的,让国家安全局窥探电线,然后几天/几周/几年后,在暴力破解你的密码或使用后来发现的花哨的数学攻击解密后,他们去使用票再次。确保票是最近的可以防止这种问题。

    会话密钥并非一直使用。例如,如果您使用 kerberos 身份验证连接到 https 网站,通常您会使用 kerberos 进行身份验证,但会话密钥是使用标准 https 方法(即 SSL/TLS)协商的

    • 0

相关问题

  • 为 WSS Reporting Services 设置 Kerberos 身份验证所涉及的风险

  • 针对 Active Directory 对 OpenBSD 进行身份验证

  • MAC 10.4.11 & Win2k8

  • 有没有办法让 Kerberos 凭证委托两次?为什么不?

  • Windows 可以与 LDAP 集成吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve