Kerberos协议详解

news2024/12/22 19:45:35

0x01 kerberos协议的角色组成

Kerberos协议中存在三个角色:
  1. 客户端(Client):发送请求的一方

  2. 服务端(Server):接收请求的一方

  3. 密钥分发中心(Key distribution KDC)

密钥分发中心分为两个部分:
  1. AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)

  2. TGS(Ticket Granting ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(ticket)

Kerberos认证过程简化描述:

在这里插入图片描述

  1. 客户端向KDC请求获取想要访问的目标服务的服务授予票据(Ticket)。

  2. 客户端拿着从KDC获取的服务授予票据(Ticket)访问相应的网络服务。

kerberos认证的两步分别解决了以下两个问题:

  • KDC怎么知道客户端没有伪造身份。

  • 服务端怎么知道服务授予票据(ticket)就是没有伪造。

0x02 Kerberos认证流程

上面将认证流程简化成两步,实际上第一步包含了两件事。所以可以将整个Kerberos认证过程可以细化为三个阶段,也就是三次通信。

2.1 第一次通信

客户端需要获取用于访问服务器的票据,首先需要向KDC请求服务授予票据。由于KDC不确定客户端的身份,第一次通信的目的是对客户端进行身份认证,以确认其是可信的且拥有访问KDC的权限。

在这里插入图片描述

第一次通信过程:
  1. 客户端发送明文请求到KDC,包括用户名主机IP时间戳
  2. KDC中的AS(Authentication Server)接收请求并在Kerberos认证数据库中查找该用户名是否存在(不会判断身份的可靠性)。
  3. 如果存在该用户名,则AS返回认证成功的消息给客户端,否则认证失败,服务结束。
AS返回数据包内容:
  1. 第一部分是TGT(票据授予票据),客户端需要使用它去KDC中的TGS获取访问网络服务所需的Ticket。TGT包含客户端的用户名IP地址时间戳即将访问的TGS的名称TGT的有效时间以及用于客户端和TGS间通信的Session_key(CT_SK,client-TGS session key)。TGT使用TGS密钥加密,客户端无法解密,而且密钥从未在网络中传输,因此不存在密钥被劫持破解的情况。

  2. 第二部分内容使用客户端密钥加密,包括用于客户端和TGS间通信的Session_key(CT_SK)、即将访问的TGS的名称TGT的有效时间和一个当前时间戳。客户端可以使用自己的密钥解密该内容。如果是假客户端则没有真正客户端的密钥,无法解密该内容,因此认证不通过。这也同时认证了客户端的身份。

2.2 第二次通信

客户端用密钥解密第二部分内容,得到时间戳、将要访问的TGS信息和用于与TGS通信的密钥CT_SK。如果客户端检测到时间戳与请求发出时的时间差大于5分钟则认为AS是伪造的,认证失败。如果时间戳合理,客户端向TGS发起请求获取服务授予票据。

在这里插入图片描述

第二次通信过程:
  1. 客户端向KDC发送请求,请求包括以下数据:

    • 使用CT_SK加密客户端信息,包括客户端名IP时间戳

    • 明文形式的Server信息。

    • 原封不动的TGT。

  2. TGS收到客户端请求后,根据明文传输的ServerIP检查服务是否存在且是否可被用户访问,如果不行则认证失败,否则继续认证。

  3. TGS使用自己的密钥解密TGT,获取AS认证后记录的用户信息Session_Key时间戳信息。然后,TGS会根据时间戳判断通信是否可靠,以及是否超时。

  4. 如果时间戳未超时,TGS会使用CT_SK解密客户端的第一部分内容,获取用户信息TGT中的用户信息进行比对。如果完全相同,则认为客户端身份正确,可以继续认证流程。

TGS返回数据包内容:
  1. 第一部分是用Server密钥加密的ST(Server Ticket),包括客户端的NameIP、要访问的Server IPST的有效时间时间戳以及用于客户端和服务端之间通信的CS_SK(Session Key)

  2. 第二部分是使用CT_SK加密的内容,包括CS_SK时间戳ST的有效时间。由于AS已经通过客户端密码加密将CT_SK传递给了客户端,并且客户端解密并缓存了CT_SK,因此客户端可以自己解密第二部分内容。

2.3 第三次通信

客户端收到TGS的响应,使用本地缓存的CT_SK解密第二部分内容。由于第一部分的ST是由Server密码加密的,客户端无法解密它。客户端检查时间戳无误后,取出第二部分内容中的CS_SK,准备向服务端发起最后的请求。

在这里插入图片描述

第三次通信过程:
  1. 客户端收到TGS的响应后使用CK_SK将自己的主机信息时间戳等信息加密,作为交给服务端的第一部分内容,并将ST(服务授予票据)作为第二部分内容一起发送给服务端。

  2. 服务端用自己的密钥解密第二部分内容并验证时间戳,取出CS_SK。使用CS_SK解密第一部分内容,获取经过TGS认证过后的客户端信息。然后,服务器将这部分信息与第二部分内容中的服务器信息进行比对,确认是否为客户端身份。如果是则服务端使用CS_SK加密响应发送给客户端。客户端使用CS_ST解密响应,确认服务端身份。服务端还可以使用数字证书证明自己的身份,至此认证完成。

0x03 总结

Kerberos认证过程复杂,使用多个密钥,且密钥种类不断变换,以防止网络拦截。使用临时生成的Session key,只在当前会话中使用,保证安全性。即使密钥被劫持,也只能在当前会话中起作用。

0x04 参考文章

Kerberos协议详解_李火火的安全圈的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/754892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下JDK版本与安装版本不一致问题

目录 一. 🦁 前言二. 🦁 操作流程三. 🦁 总结四. 🦁 Happy Ending 一. 🦁 前言 最近重新安装了centos7.9,针对以前遇到的Java版本不一致的情况, 提出了另一种方法,该方法简单易行,容易理解。 二. 🦁 操作…

吴恩达机器学习2022-Jupyter1可选实验室: Python 和 Jupyter 笔记本简介

欢迎来到第一个可选实验室! 可供选择的实验室包括:提供信息-比如这个笔记本以实际例子加强课堂教材提供分级实验室常规的工作实例 1.1 目标 在本实验中,您将: 对Jupyter笔记本进行简要介绍,参观Jupyter笔记本,了解标记单元格和…

pytorch实现线性回归

转大佬笔记 代码: # -*- coding: utf-8 -*- # Time : 2023-07-14 14:57 # Author : yuer # FileName: exercise05.py # Software: PyCharm import matplotlib.pyplot as plt import torch# x,y是3行1列的矩阵,所以在[]中要分为3个[] x_data torch.…

人物专访 |时静:携手The Open Group,把握时代脉动,助力中国数字经济建设

​ 在由The Open Group主办的2023架构可持续未来峰会上,The Open Group与机械工业出版社进行了战略签约合作仪式,并就备受业界期待的TOGAF标准第10版中文图书发布,以及OPA标准2.1版的本地化工作展开具体合作。 对此,机械工业出版社…

Video Enhancement with Task-Oriented Flow

摘要 Many video enhancement algorithms rely on optical flow to register frames in a video sequence. Precise flow estimation is however intractable; and optical flow itself is often a sub-optimal representation for particular video processing tasks. In thi…

嵌入式linux驱动开发之移远4G模块EC800驱动移植指南

回顾下移远4G模块移植过程, 还是蛮简单的。一通百通,无论是其他4G模块都是一样的。这里记录下过程,分享给有需要的人。环境使用正点原子的imax6ul开发板,板子默认支持中兴和移远EC20的驱动,这里要移植使用的是移远4G模…

在Linux下做性能分析1:基本模型

介绍 本Blog开始介绍一下在Linux分析性能瓶颈的基本方法。主要围绕一个基本的分析模型,介绍perf和ftrace的使用技巧,然后东一扒子,西一扒子,逮到什么说什么,也不一定会严谨。主要是把这个领域的一些思路和技巧串起来。…

Electron + vue 搭建桌面客户端

下载Electron 压缩包,放到本地 Electron 压缩包下载地址 cd ~/Library/Caches/electron

Duilib 父窗口无效化和消息传递

文章目录 1、父窗口无效化和消息传递2、EnableWindow()和SetFocus()的含义和用法 1、父窗口无效化和消息传递 当使用duillib界面库时,我们往往需要建立多个窗口,子窗口和父窗口之间有一定的逻辑需要,比如当子窗口弹出时,让父窗口…

2022 Robocom CAIP 国赛 第二题

原题链接: PTA | 程序设计类实验辅助教学平台 题面: 副本是游戏里的一个特色玩法,主要为玩家带来装备、道具、游戏资源的产出,满足玩家的游戏进程。 在 MMORPG《最终幻想14》里,有一个攻略人数最大达到 48 人的副本“…

Office如何通过VSTO进行EXCEL插件开发?

文章目录 0.引言1.工具准备2.EXCEL外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…

SPEC CPU 2006 在 CentOS 5.0 x86_64 古老系统测试【3】静态编译 invalid run

上篇 SPEC CPU 2006 在 CentOS 5.0 x86_64 古老系统测试【2】_hkNaruto的博客-CSDN博客 修改gcc41.cfg,全部添加上-static 测试指令 runspec -c gcc41.cfg -T all -n 3 -r 1 -I -i ref all 结果:正常运行并生成报告 invalid run Invalid SPEC CFP2006…

【算法基础】2.1栈和队列(单调栈和单调队列)

文章目录 例题3302. 表达式求值(栈的应用)😭😭😭😭😭830. 单调栈知识点解法 154. 滑动窗口 (单调队列)知识点解法 相关链接 & 相关题目 例题 3302. 表达式求值&…

在进行自动化测试,遇到验证码的问题,怎么办?

1.找开发去掉验证码或者使用万能验证码 2.使用OCR自动识别 使用OCR自动化识别,一般识别率不是太高,处理一般简单验证码还是没问题 这里使用的是Tesseract-OCR,下载地址:https://github.com/A9T9/Free-Ocr-Windows-Desktop/releases 怎么使…

linux centos7 静默安装 oracle 11g,【亲测有效】,包含远程连接、提供安装包

Centos7 安装oracle11g 环境准备 操作系统 centos7 oracle版本 oracle11g 终端软件 MobaXterm 192.168.46.61 oracleMaster 安装包 网盘地址 一、安装前准备 1、关闭selinux [rootoracleMaster ~]# vim /etc/selinux/config修改 SELINUX 为 disabled # This file controls …

网络安全(黑客技术)自学

引言 ✈️网络安全,顾名思义,无安全,不网络。现如今,安全行业飞速发展,我们呼吁专业化的 就职人员 与 大学生 ,而你,认为自己有资格当黑客吗? ✒️本文面向所有信息安全领域的初学者…

希尔排序

希尔排序 排序步骤 1、分组,以任意长度进行分组(这个长度我们称作增量gap);通常以总长度的一半这个数为依据进行分组,每间隔 gap 个数即为一组 2、组内排序;组内使用插入排序法进行排序 3、重新设置间隔…

Wi-Fi 相关概念

Wi-Fi 相关概念 802.11 Wi-Fi 标准及其含义频宽 和 带宽 的概念20MHz与40MHz的区别2.4G 频段2.4G的频道编号和中心频率 5G WiFi 频段中国开放的的5G WiFi频段:5G的频道编号和中心频率: 802.11历史进程一、802.11重要发展二、802.11协议族 参考 802.11 Wi…

阿里云 OSS 静态网站托管

本文节选自我的博客:阿里云 OSS 静态网站托管 💖 作者简介:大家好,我是MilesChen,偏前端的全栈开发者。📝 CSDN主页:爱吃糖的猫🔥📣 我的博客:爱吃糖的猫&…

云计算的学习(六)

六、云计算的发展趋势 1.云计算相关领域介绍 1.1物联网 物联网来源于互联网,是万物互联的结果,是人和物、物和物之间产生通信和交互。 物联网主要技术: RFID技术(射频识别技术)传感器技术嵌入式系统技术 1.2大数据…