kerberos 认证流程-理解

2024-09-01 04:28
文章标签 流程 认证 理解 kerberos

本文主要是介绍kerberos 认证流程-理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

kerberos 认证理解

一、认证过程

在这里插入图片描述

1) AS-REQ(请求)

域内的用户向 KDC(域控服务器)发送请求包,告诉域控,我要获得访问服务的票据。

请求包: 用户名,主机名,认证因子 Authenticator(由客户端用户 hash 加密的时间戳等信息),其他信息

2)AS-REP(响应)

  1. KDC 接受到客户端的请求包。
  2. KDC 判断用户是不是有效的域用户 , 是就进行下一步校验
  3. KDC 在自己的 AD 库里查找该用户的 hash,解密 Authenticator, 完成认证,并校验时间戳是不是在 5 分钟以内。 都满足就进行响应
  4. KDC 请客户端发送两个票据
    • TGT:是由 krbtgt 用户的 hash 加密的 login session key 和客户端的信息等
    • 第二个就是 用户hash 加密的 login session key

3)TGS-REQ(请求)

  1. 客户端收到两个票据后,用 自己的hash 解密第二个票据,拿到 login session key,并缓存起来
  2. login session key 加密时间戳和一些其他信息生成认证因子 Authenticator
  3. 向 TGS 发送 Authenticator + TGT + SeverID(要访问服务的标识)

4)TGS-REP(响应)

  1. TGS 收到客户端发来的三个信息
  2. 用自己的 krbtgt 用户的 hash 解密 TGT 获得 login session key,再用 login session key 解密认证因子 Authenticator 认证客户端,并判断时间戳是不是在 5 分钟以内
  3. 在 AD 数据库里查找 ServerID 对应的 hash 值,并随机生成一个 server session key
  4. 向客户端发送两个票据
    • ST : 由 Server hash 加密的 server session key 和其他信息
    • login session key 加密的 server session key 等信息

5)AP-REQ(请求)

  1. 客户端收到两个票据
  2. 用缓存的 login session key 解密 server session key
  3. sever session key 加密时间戳等信息,再次生成认证因子 Authenticator
  4. ST + Authenticator 发送给要访问的服务器 Server

6)AP-REP(响应)

  1. 服务器 Server 收到 ST Authenticator
  2. 服务器用自己的 hash 解密 ST ,拿到 server session key 。
  3. 用 server session key 解密 Authenticator 完成认证,并校验时间戳是不是在 5 分钟以内
  4. 向客户端回复校验成功

二、简单理解两种票据

黄金票据:就是在攻击者获得了 krbtgt 用户的 hash 值,跳过前两步的认证,直接伪造第三步(TGS-REQ)的信息。发送给 TGS 之后合规的签发 ST 去访问服务 (可以访问域内任意服务)

白银票据:攻击者通过服务器的 server hash,伪造第五步(AP-REQ)的请求信息,发送给服务器,已获得访问服务的权限 (可以访问某一特定服务)

黄金票据和白银票据的区别在于访问的范围不同,而不是权限不同。

这篇关于kerberos 认证流程-理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125933

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.