Kerberos认证系统

news2024/11/26 17:41:56

文章目录

  • 前提知识
  • 原理
    • 第一次对话
    • 第二次对话
    • 第三次对话
  • 总结发现

前提知识

  • KDC:由AS、TGS,还有一个Kerberos Database组成。
    Kerberos Database用来存储用户的密码或者其他所有信息,请求的时候需要到数据库中查找。
    • AS为客户端提供TGT票据,同时进行信息验证。
      • TGT(Ticket Granting Tickets):一个信息票据,可以看做是一种入场票
    • TGS(Ticket Granting Server) : 一个服务器,验证 TGTAuthenticator(密码证明信息),为客户端提供 Service Tickets(票证服务)。
    • Kerberos Database:是一个数据库,当我们请求的时候会发送自己的用户ID/NAME,会来到数据库中查找是否存在…

Session表示会话,在kerberos中KDC会随机生成两种重要的会话钥匙:

  • TGS Session Key
  • 请求的服务 Server Session Key

原理

在这里插入图片描述

第一次对话


Client 发送信息包到AS中:(明文发送)

  • 自身的 ID/NAME(用户名)
  • 自身 IP地址
  • 当前时间戳
    上述信息发过去的时候全是明文,即我们发出去之前不进行信息加密

AS 收到后,首先去到数据库中查看是否有改用户名,存在才继续响应答复以下信息两种,在这个时候KDC随机生成了一个TGS Session Key一并发送过去

  • 第一份信息包(用客户端密钥加密发送)
    • 当前时间戳
    • 客户端即将访问的 TGS 服务器的 NAME
    • TGS 的有效时间(一般是八小时)
    • TGS Session Key

上述↑↑↑第一份信息包使用客户端对应的密钥进行加密然后传输
(非明文传输,同时KDC拥有密码表,使用密码表与客户端进行身份认证)

  • 第二份信息包(TGT票据):这一份就是 TGT(用TGS密钥加密发送)
    • 客户端 NAME
    • 客户端 IP
    • 当前时间戳
    • 客户端即将访问的 TGS 服务器的 NAME
    • TGT 的有效时间(一般是八小时)
    • TGS Session Key

上述↑↑↑第二份信息包使用TGS的个人密钥进行加密后传输
(这一份发过去后客户端无法解密,因为他不拥有TGS的密钥,所以这也说明了为什么后面客户端需要原封不断的将TGT发回来再次验证)

第二次对话

客户端收到了来自KDC发来的信息
首先客户端能够解密的信息包就只有第一份,因为是用客户端自己的密钥加密发过来的,所以解开后就能够获得里面的信息,其实主要是要获得TGS Session Key,客户端在第二次对话中需要通过该Key进行加密发送过去信息包


Client发送在本次发送的信息有三种

  • 第一份信息包(明文发送)
    • 发送客户端要访问的Service服务NAME/ID
  • 第二份信息包(用我们解出来拿到的TGS Session Key 密钥加密发送)
    • 客户端 NAME
    • 客户端 IP
    • 当前时间戳
  • 第三份信息包(TGT原本就加密了)
    • 原封不动的发送TGT票据回去

KDC收到信息包后首先使用自身密钥对TGT进行解密,他需要拿到里面的TGS Session Key,拿出来后将客户端的第二份信息包进行解密,拿到里面的客户端信息与当前收到的第一份信息包里面的客户端信息是否一致。
其中时间戳不是比较,而是通过客户端发送过来的时间,与我生成TGT时间相差是否超过可容忍的时间段,超过了就表示可能存在别修改的风险,就会考虑是否废弃掉本次对话以及废弃票据(有内鬼终止交易

只有当所有信息都没有问题的时候才进行回应下一步操作:
在这个时候KDC又随机生成了一个客户端请求的服务 Server Session Key

  • 第一份信息包(使用TGS Session Key密钥加密发送)
    • 当前时间戳
    • ticket ST票据的有效时间
    • 请求的服务 Server Session Key
  • 第二份信息包(ST票据)(使用请求的服务 Server自身的密钥加密发送)
    • 客户端 NAME
    • 客户端 IP
    • 服务器的IP地址(认证服务器)
    • ticket ST票据的有效时间
    • 请求的服务 Server Session Key
      (重点是这一份数据要发过去)

第三次对话

这时候客户端收到了TGS发来的最后一条数据,客户端使用之前缓存的TGS Session Key 对第一份信息包进行解密,最重要的是解密后拿到里面的请求的服务 Server Session Key密码,但是第二份信息包无法解密,是因为这是我们请求的Server的密钥加密的,我们无法得知。

这时候我们检查时间戳是否超时,无误就开始想最终Server发起最后的请求:

  • 第一份信息包(使用请求的服务 Server Session Key密钥加密发送)
    • 客户端 NAME
    • 客户端 IP
    • 当前时间戳
    • ticket ST票据有效时间
  • 第二份信息包(ST票据)
    • 原封不动的发送我们无法解密的ST票据信息包

Server 收到客户端发来的信息包后,首先只能解密的只有用自己Server密钥对第二份信息包进行解密,主要是为了拿出ST票据里面的请求的服务Server Session Key,核对时间戳没有超时后,取出这一份密钥就可以解密第一份信息包,取出里面的客户端信息,然后再与我们解出来的ST票据里面的信息与之比较是否一致

信息核对没问题后开始确定身份了,服务端发送确认通信消息

  • 第一份信息包(使用请求的服务 Server Session Key密钥加密发送)
    • 请求的服务 NAME/ID
    • 当前时间戳

客户端接收到信息包后,使用缓存下来的请求的服务 Server Session Key进行解密,解密出来必须要包含请求的服务 NAME/ID 和 时间戳,通过检查时间戳没有超市和正确的服务就表示认证成功了。然后再有效时间内都是使用Server Session Key进行双方的通讯。

总结发现

  • 首先在其中生成的Session都是作下一次通话是否正确为目的,也就是为了保证认证过程双方身份都是正确的
  • 除了客户端不知道KDC的密钥之外,我们在本地使用密钥加密发送过去KDC是知道如何解密的,利用这个特性,KDC就可以使用他自己内部的密钥进行信息加密作为票据,我们无法解密,但是我们发过去响应的时候总是带有时间戳或者客户端信息,我们票据中也带有这些信息,然而这些信息都是KDC才能解密, 所以票据就代表了对方发过来的信息是否有误,可以知道是否疑似超时被截获信息了。
  • 在客户端主要是通过自身密钥获取会话的Session密钥,通过Session密钥就可以解密信息包了解到是否在传输过程中信息包被修改,或者发过来的信息包根本就不是KDC发来的。即使我们没有发现,那么黑客也也不会解密到我们的Session对话,即使解密了我们的Session密钥,时间也会超时,我们客户端很容易察觉该信息包不安全了。
  • 由于所有的信息传输都没有在传输我们双方各自的密钥,所以黑客没有机会获取到我们的密钥,只要暴力破解,但是由于暴力破解需要时间,即使破解出来我们时间戳超时了也会将其丢弃信息包。
  • 每一次的对话都是为下一次对话做准备,比如第二次KDC使用客户端请求的服务的那一个服务器的密钥进行加密发过去给客户端即:ST票据,客户端是无法解密的,需要他自己封装一份信息包,然后把ST也一起发过去给最后的Server,Server端用自己的密钥解密第二份信息包,然后与第一份客户端自己封装加密的信息包信息进行对比,确认无误就认证成功。
  • 很容易发现这个过程中,每一次对话都会使用不同的密钥进行加密,并且产生会话密钥,同时含有时间戳,即使密钥被暴力破解了,也会超过对应的忍受时间,即会话时间结束额。kerberos认证系统总体还是很安全的,主要是要选择信任的KDC,如果我们的KDC被攻陷了,那就没办法了,裤衩都被骗走了。

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

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

相关文章

不同类型的软件企业该如何有效的管理好你的软件测试团队?

最近在网上发现一篇记录了2012年《[视频]作为测试经理如何有效管理好你的软件测试团队》的文字内容,感谢记录的人,我也保存一下。顺便将演讲中的PPT重点截图也放上来,一并保存了!。由于是现场速记,过度的口语化&#x…

风景照片不够清晰锐利,四招帮你轻松解决

我们大家在拍摄风景照的时候都希望能够拍摄出清晰锐利的照片。可能会有人问:“什么是锐利?”我们可以从锐度来给大家简单解说下。锐度是反映图片平面清晰度和图像边缘对比度的一个参数。锐度较高的画面,微小的细节部分也会表现得很清晰&#…

springboot项目的可执行jar以后台本地服务的方式运行在Windows机器上

文章目录 先上一个效果图准备可执行文件注册及启动服务用到的工具 前段时间遇到一个项目,需要我们提供一个驱动控件,可以以后台服务的方式运行在Windows机器上。开始寻找各种解决办法。 最后发现一个不错的解决方式。分享给大家一下。 先上一个效果图 准…

ESP32/ESP8266基于Arduino框架下驱动1.8“tft_oled屏幕仿数码管时钟

ESP32/ESP8266基于Arduino框架下驱动1.8"tft_oled屏幕仿数码管时钟 📍相关篇《ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示》📺效果演示: 🌿屏幕显示部分,采用使用TFT_eSPI库驱动,利用该库自带的…

2021年03月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 花花幼儿园有三个班。根据下面三句话,请你猜一猜,哪个班级人数最多? (1)中班比小班少 (2)中班比大班少 (3)大班比小班多 A:小班 B:中班 C:大班 D:三个班级一样多 答案:C 根据(1)(2)可以知道中班人数最少,根…

Power Automate-创建一个power Apps使用的流

创建即时云端流,选择Power Apps

口袋参谋:99.99%的商家,都不知道这个选品神器!!!

​至少有99.99%的商家是不知道如何选品的?很多人都是看人家卖什么,自己就卖什么?就比如卖连衣裙的,试问咱们卖之前都不做一下调查吗? 现在同质化的商品太多了,随便搜一个,就有成千上万的竞争者…

EasyA正在帮助Sui为新一代Web3 App培养构建者

最近,我们采访了Phil和Dom Kwok,他们是兄弟也是Web3教育移动应用EasyA的共同创始人。这个教育app通过学习模块和编码挑战的形式,向开发人员教授有关不同区块链及其独特特性的知识。他们在十月初推出了他们的第一个Sui模块,并在随后…

(个人实测保熟)记录Tecnomatix Process Simulate 16.1.2官方安装包及授权许可配置教程(Win10环境)

Tecnomatix Process Simulate 16是一款由西门子公司推出的一款工艺仿真解决方案,是虚拟制造仿真领域的领先解决方案,可帮助您数字化制造以及将创新思想和原材料转变为变革性产品的过程。在网上找了一些盗版的安装包,就很离谱。直接提示本"无法打开此安装程序包…

数字化时代,企业如何增加产品销售额

2023作为提振消费年,国民宏观经济环境正在复苏,而数字化技术的进步也使消费者的购买方式发生了翻天覆地的变化,对于企业而言,应该如何顺势而上增加产品销售额,成为其成功的关键。 今天媒介盒子就来和大家聊聊企业如何…

多商家签到打卡奖励免单霸王餐小程序开发

多商家签到打卡奖励免单霸王餐小程序开发 用户注册和登录:提供用户注册和登录功能,以便用户能够参与签到打卡活动。 商家入驻:商家可申请入驻平台,提交相关资料并等待平台审核,审核通过后即可发布活动和奖励。 签到打…

python读取txt格式的点云文件,可视化显示,保存ply格式

在计算机视觉和三维几何处理中,点云是一种重要的数据表示形式。点云由许多离散的点组成,每个点都有三维坐标,通常还包括其他信息。 空格形式的点云文件 import open3d as o3ddef read_txt_space(txt_file):# 读取点云数据pcd o3d.io.read_p…

智慧隧道:TSINGSEE青犀远程视频AI智能监管平台保障隧道施工安全

一、背景与需求分析 随着我国交通运输量的增加以及新基建的不断规划和建设,公路建设工作也在持续开展中。高速公路隧道属于特殊构造段,因为隧道空间小,密闭性强,施工过程中一旦发生火灾、事故等,将带来重大人员伤亡和…

计算机毕业设计选题推荐-记录生活微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Pytorch自动混合精度的计算:torch.cuda.amp.autocast

1 autocast介绍 1.1 什么是AMP? 默认情况下,大多数深度学习框架都采用32位浮点算法进行训练。2017年,NVIDIA研究了一种用于混合精度训练的方法,该方法在训练网络时将单精度(FP32)与半精度(FP16)结合在一起&#xff…

致刘家窑中医院龚洪海医生:患者的感谢与敬意

你们好!我曾经是咱们这的一名患者,我叫李刚,今年45岁,不知道你们还有印象吗?我曾去过一些医院进行就诊,但都没有得到恰当的治疗,症状一直没有消失。得了这个病之后对我的生活以及工作打击都十分的大。经朋友介绍说刘家…

Realistic fault detection of li-ion battery via dynamical deep learning

昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。 思想步骤: 用正常电池的充电片段数据构造训练集,用如下的方式构造…

SwiftUI - 界面布局知识点

前言 SwiftUI采用的布局方式是和Flutter一样是弹性布局,而不是iOS之前的坐标轴的方式布局,不用准确的设置出位置大小,只需要设置当前视图大小及视图间排布的方式。灵活性增强,布局操作简便,SwiftUI与Flutter布局原理一…

基于SSM的供电所档案管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

交换机基础知识之安全配置

交换机在网络基础设施中扮演着重要角色,它促进了设备之间数据包的流动。正因此,采取适当的安全措施来保护网络免受未经授权的访问和潜在攻击至关重要。本文将全面解读交换机基础安全配置知识,并提供实践方案,以保证安全的网络环境…