Kerberos协议详解

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.mzph.cn/news/371.shtml

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

相关文章

Nacos (2.0版本之后)状态异常集群节点状态异常

在nacos 2.0 之后正常部署后节点状态仅有一个正常,其余均为DOWN 或者SUSPICIOUS 状态 查看日志后发现 ERROR Server check fail, please check server 192.168.172.104 ,port 9849 is available , error {} 其实是nacos 相互之间不能正常通信造成的,nacos客户端升级为2.x版…

apple pencil一代的平替有哪些品牌?苹果平板的触控笔

随着苹果Pencil系列的推出,平替电容笔在国内市场得到了较好的发展,随之的销量,也开始暴涨,苹果pencil因为价格太高,导致很多人买不起。目前市场上,有不少的平替电容笔,可以替代苹果的Pencil&…

MySQL 主从复制与读写分离

MySQL 主从复制与读写分离 一、mysql读写分离的概念1、什么是读写分离?2、为什么要读写分离呢?3、什么时候要读写分离?4、主从复制与读写分离5、mysql支持的复制类型 二、主从复制的工作过程三、MySQL 读写分离原理常见的 MySQL 读写分离分为…

【Distributed】分布式ELK日志文件分析系统(二)

文章目录 一、FilebeatELK 部署1. 环境部署2. 在 Filebeat 节点上操作2.1 安装 Filebeat2.2 设置 filebeat 的主配置文件 3. 在 Apache 节点上操作3.1 在 Logstash 组件所在节点上新建一个 Logstash 配置文件 3. 启动3.1 在Logstash 组件所在节点启动3.2 在 Filebeat 节点 启动…

Stable Diffusion 用2D图片制作3D动态壁纸

如果想让我们的2D图片动起来可以使用stable-diffusion-webui-depthmap-script插件在SD中进行加工让图片动起来。 这是一个可以从单个图像创建深度图,现在也可以生成3D立体图像对的插件,无论是并排还是浮雕。生成的结果可在3D或全息设备(如VR耳机或Looking Glass显示器)上查…

大模型加速学科升级,飞桨赋能北邮“X+大模型”特色小学期

在人工智能时代,设计师与产品经理比以往更加需要关注一个事实:那就是如何利用人工智能和数据分析技术,打造让用户心动的信息交互产品和用户体验,释放人-机协同共创的巨大潜能,是决定设计产能和竞争力的关键。 在产业的…

RabbitMQ ---- 消息队列

RabbitMQ ---- 消息队列 1. MQ 的相关概念1.1 什么是 MQ1.2 为什么要用 MQ1.3 MQ 的分类1.4 MQ 的选择 2. RabbitMQ2.1 RabbitMQ 的概念2.2 四大核心概念2.3 RabbitMQ 核心部分2.4 各个名词介绍2.5 安装 1. MQ 的相关概念 1.1 什么是 MQ MQ(message queue),从字面…

爬虫之Scrapy

一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域&#x…

什么是Docker

容器技术和虚拟机 虚拟机 和一个单纯的应用程序相比,操作系统是一个很重的程序,刚装好的系统还什么都没有部署,单纯的操作系统其磁盘占用至少几十G起步,内存要几个G起步。 在这台机器上开启三个虚拟机,每个虚拟机上…

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输(OT)的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

为了实现上网自由,我做了一个多功能串口服务器

项目作者:小华的物联网嵌入式之旅 介绍:从事电气自动化行业,多次获得物联网设计竞赛,爱好嵌入式设计开发,物联网开发。 设计方案思路的由来,是因为我们现在的开发板基本需要通过串口与WIFI模组或以太网模…

[Linux] 最基础简单的线程池 及其 单例模式的实现

本篇文章主要用到线程相关内容, 下面是博主关于线程相关内容的文章: [Linux] 线程同步分析:什么是条件变量?生产者消费者模型是什么?POSIX信号量怎么用?阻塞队列和环形队列模拟生产者消费者模型 [Linux] 线程互斥分析: 多线程的问…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …

华为发布大模型时代AI存储新品

7月14日,华为发布大模型时代AI存储新品,为基础模型训练、行业模型训练,细分场景模型训练推理提供存储最优解,释放AI新动能。 企业在开发及实施大模型应用过程中,面临四大挑战: 首先,数据准备时…

剑指offer刷题笔记--Num41-50

1--数据流中的中位数(41) 主要思路: 维护两个优先队列,Q1大数优先,存储比中位数小的数;Q2小数优先,存储比中位数大的数; 当存储的数为偶数时,Q1.size() Q2.size(), 中位…

解决github无法拉取submodule子模块的问题

引言 当使用git clone --recursive url 拉取一个配置了子模块的仓库后,会卡住。 同时在使用git clone 拉去https的url时,同样可能会出现一直卡在cloning int reposity...本文提供一个简单的脚本来解决该问题。 前置准备 需要配置好git的相关配置&…

快速配置 Rust 开发环境并编写一个小应用

安装: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 更新: Rust 的升级非常频繁. 如果安装 Rustup 后已有一段时间,那么很可能 Rust 版本已经过时, 运行 rustup update 获取最新版本的 Rust rustc:编译Rust程序 rustc只适合简单的Rust程序&#xf…

qt和vue的交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

记录--再也不用手动改package.json的版本号

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文的起因是有在代码仓库发包后,同事问我“为什么package.json 里的版本还是原来的,有没有更新?”,这个时候我意识到,我们完全没有必要在每…

阿里云无影云电脑具体价格_云桌面不同配置1元报价

阿里云无影云电脑配置费用,4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同费用不同,无影云电脑是由云桌面配置、云盘、互联网访问带宽、AD Connector、桌面组共用桌面session等费用组成,阿里云百科分享阿里云无影云电…