Kerberos认证原理

Kerberos 深入详解:原理、认证流程与应用场景 Kerberos认证协议在企业大数据平台中的应用 Kerberos是一种基于对称密钥加密的网络身份认证协议,通过可信第三方KDC实现安全认证而不传输明文密码。其核心流程包含三个阶段:用户认证获取TGT票据、获取服务票据以及服务端验证。在企业Hadoop集群中,Kerberos被用于实现统一认证,所有客户端访问HDFS前必须经过完整认证流程,包括NameNode和DataNode在内的服务节点都需要配置专属服务主体和keytab文件。该机制通过KDC作为根信任中心,构建了完整的认证信任链,确保只有获得有效票据 阅读详情

参考博文 官方文档 参考博文2

前言

本文是在参考了两篇博文和官方文档基础上写成的,更多的是想通过自己学完复述一遍的方式加深理解。

Kerberos在希腊神话中是守护地狱之门的三头犬。在使用Kerberos中涉及到KDC(有些资料可能会叫做AS,即认证服务器)、客户端、服务器三方的身份认证问题,因此用Kerberos来进行命名还是十分贴切的。
微信公众号:大数据报文

概念学习

在开始正式的Kerberos学习之前,我们需要明白下面几个概念:

  • Long-term Key/Master Key:在安全认证领域中,有些Key(密码、秘钥)可以长期保持不变,比如你的QQ密码。这样的Key,以及由此派生的Key都被称为Long-term Key 。对于这样的Key在使用的时候有这样的原则:被加密的数据不能在网络中传输。原因很简单,只要有足够长的时间,任何密码都有可能被破译。

    对于一个账户而言,密码应该仅仅被自己知道,甚至对于这个Domain中的管理员都应该是保密的。但是这个密码又是验证自身身份的信息。在这种情况下,一般的做法就是对密码进行Hash处理。一般把Hash后的密码叫做Master Key。Hash算法是不可逆的,这样既保证了密码的保密性同时又保证了Master Key和密码在证明身份的时候具有相同的效力。

  • Short-term Key/Session Key:由于被Long-term Key加密的数据包不能用于网络传送,所以我们使用另一种Short-term Key来加密需要进行网络传输的数据。由于这种Key只在一段时间内有效,即使被加密的数据包被黑客截获,等他把Key计算出来的时候,这个Key早就已经过期了。

另外下面为了阐述方便,小C和客户端混用,小S和服务器混用。

需求

既然说使用Kerberos是为了进行安全认证。那么这里有必要重新阐述一下我们的需求。

如,Kafka消费者客户端(C)需要从服务器(S)中消费数据。为了安全的考虑,服务器需要Kafka消费者证明它就是它。这就出现了一个经典问题,如何证明我是我。如果是现实世界,你尚可以吐槽:我一个大活人在这站着了,还要证明什么?你能说出这句话是你出于对对方的信任。你觉得对方可以通过体貌特征,声线甚至是气味辨别你确实是你。但是计算机不可以。而且就算对方真的知道你就是你,但是由于制度的原因,大部分情况下你仍然需要提供一份你就是你的证明。比如去公安局开一张身份证,然后拿着身份证再回来说,看到了吧。我和身份证上的人一模一样,我就是我!

通过上面的例子我们可以看出,在复杂的网络环境中,要想证明自己就是自己,必须找一到双方都信任的第三方机构进行公证,证明我就是我的问题。而这个第三方就有Kerberos提供。

简化版Kerberos认证过程

为了方便理解。我们把Kerberos认证过程做一下简化。

通过上面的需求分析,我们可以看到。客户端是需要一个第三方来进行辅助证明。而这个第三方在Kerberos中叫做KDC(Kerberos Distribution Center),即秘钥分发中心,它维护着客户端与服务器的Master Key,并提供“公证服务”。

漏洞版

为了进一步简化,这里先提出一个有漏洞的版本,帮助理解。

  1. 首先,客户端(C)会请求KDC,说我需要向服务器(S)请求资源,请您给我们做一下公证。
  2. KDC会查询自己的数据库,发现确实有一个名为C的客户端,也确实存在一个名为S的服务器。KDC说,那好,我给你们一对相同的秘钥(Session Key)。你的那份秘钥用你的Master Key进行加密。服务器的那份用他的秘钥加密,他的除了Session Key还有你的基本信息(Client Info)。你的那份解密拿到Session Key,对你的数据进行加密发给服务器。我会帮你解释你就是你的。
  3. 客户端(C)很高兴,拿到加密过的秘钥以后用自己的Master Key进行解密,得到Session Key。然后将自己的信息(Client Info)加密发送给了服务器(S)。
  4. 服务器那边听Kerberos说一会有个小C要来跟我取数据。没想到这么快就真的来了。然年后他先用自己的Master Key对KDC发送的秘钥包进行解密,得到了Session Key和Cilent Info。然后用这个Session Key去解密小C发来的数据,还真的解开了发现了Client Info,经过对比这两份Client Info完全一致。于是小S相信了小C的说辞,小C通过此种方式向小S证明了小C就是小C。

修复版

梦想总是美好的,但是天灾人祸不断的在发生,现实要比上面骨感的多。上面有两个很大的漏洞:

  • 由于网络等原因。如果KDC发送给小C的Session Key已经到了,但是服务器这边的Session Key迟迟没到势必会导致客户端向服务端发起认证的时候,服务端说我没有收到KDC的证明信息(Session Key和Client Info的加密包)啊。而且如果服务器为每一个客户端维护一份Session Key势必会造成服务器的压力。
  • 另外,在上面第三步客户端发送验证信息的时候,如果被M截获,并声称这是我M和你S的Session Key和Client Info,S是不是就被轻易的骗过了呢?

为了解决上面的两个问题提出了下面的修复版本

  1. 第一个步骤保持不变。
  2. 考虑到漏洞版中的漏洞。KDC说,小C啊,小S那边压力挺大的,为了分担他的压力,也为了避免网络问题,造成你们之间无法认证,我现在把两份Session Key都给你,然后你在向小S发起认证的时候把他的这一份加密包也一起发给他就好了。
  3. 小C欣然答应了KDC的话。并用自己的Master Key解密了KDC的数据包,得到了Session Key。同时小C为了防止数据包被小M截获,这次长了一个心眼儿,给自己生成了一个Authenticator,其中包含Client Info和Timestamp。客户端将这个Authenticator使用刚获得的Session Key 进行加密,与KDC给小S的加密包一起发送给了小S。
  4. 小S不是第一次跟KDC打交道了,一看这种情况就是KDC又做公证人了。于是轻车熟路的用自己的Master Key解密了KDC给自己的数据包。获得了Session Key和Client Info。并用Session Key解密了小C加密的Authenticator,但是小S却没有着急比较两个Client Info是否一致。他先比较了其中的Timestamp与自己的当前时间,如果这个时间相差超出一个可接受范围(一般是五分钟)。小S会直接决绝小C的请求。但是好在并没有超过五分钟。一丝不苟的小S查看了最近一次与小C通信的记录。只有当当前的这个时间戳晚于最近的一次小C认证通过的时间的时候,小S才会对两个Client Info进行比较。

在这里插入图片描述

上面的过程基本符合了Kerberos的认证原理,但是距离真正的认证过程还是差一点。

完整版Kerberos认证过程

为什么上面的流程还是不是Kerberos的完整过程呢?很明显,其中还是存在一个比较严重的漏洞。我们在概念学习章节中已经提到了,Long-term Key是不能够用于网络传输的,因为只要时间足够长,就可能会被破译。但是上面在介绍认证过程的时候还是打脸的使用了使用了客户端的Master Key进行加密。为了解决这个问题,Kerberos又引入了TGS(Ticket Granting Service)的概念。TGS和KDC都是Kerberos的一部分,位于同一台服务器上。

完整的认证过程由上面的四步,扩充到了安全的六步。

  1. 小C向KDC请求做与小S的公证。
  2. 但是这次KDC说,我跟你通信只能用你的Master Key加密,这样不安全。这样吧,你去联系TGS,有问题你跟他讲就好了。至于你怎么跟他联系我会给你一个你跟他联系的Session Key。同时我会把这份Session Key连同你的身份信息用他的Master Key进行加密,到时候你一并发给他他就明白了。
  3. 于是小C用自己的Master Key解密了属于自己的数据包,同时为了安全起见,小C创建了Authenticator(Timestamp+Client Info)用Session Key 加密同KDC给TGS的那一份加密包一起发给了TGS。(类似修复版中的步骤3)
  4. TGS也是轻车熟路的用自己的Master Key(TGS和KDS是同一个“人”,master key也是一样的)解密了数据包,获得了Session Key。然后用Session Key解密了小C的数据包,然后一顿验证操作(与修复版第四个步骤一致)证明了C确实是C。于是找出了小S的密码,用小S的密码加密了TGS为小S和小C生成的Session Key。同时小C也有一份。并把两份都发给了小C,告诉它你用我(TGS)和你(小C)的session Key解密这份Session Key(小C和小S的),然后用它加密你的信息发给小S,他会懂的(这与步骤2几乎相同,不同的是加密小C和小S Session Key用的不再是小C的MasterKey,而是TGS和小C之间的Session Key)
  5. 然后小C轻车熟路的用C-TGS Session Key解开了加密包得到了C-S Session Key。然后对Authenticator(Client info +Timestamp)使用C-S Session Key进行加密。发送给了小S
  6. 小S得到这两份数据包以后先用自己的Master Key(小S的Master Key一直没有在网络上使用,仅仅在这里做了本地验证)进行了界面,得到与小C的Session Key和Authenticator。然后又是一顿验证操作。最后证实小C确实是小C。

在这里插入图片描述

小C露出了欣慰的笑容。

总结

上面验证过程中出现了两对Session Key 是不一样的。TGS和小C间的Session Key有效时间相对比较长。小C在第一次验证结束以后在一定时间内就不需要再进行步骤1/2了,而是直接从3开始。

小C仅需要使用与TGS的Session Key获取与小S的Session Key 就好了。所以完整版的整个过程在一个周期内基本还是只需要四步,但是与简化版不同的是,获取与小S通信的Session Key的时候使用的是Short-term Key来获取的,而不是简化版中的小C的Master Key。这样进一步提高了安全性。

完整版中的前两步完成了生成ticket操作。这个ticket的生命周期由两个参数控制ticket_lifetime/renew_lifetime。分别表示票据(ticket)的有效时间,默认1天,和允许更新现有ticket的时长,默认七天。即当前票据可以允许七天以后才重新生成。

ESP32C6+ESP-IDF5.2实战:基于RS485的ModbusRTU从站开发与调试 本文详细介绍了基于ESP32C6和ESP-IDF5.2开发ModbusRTU从站的实战指南。涵盖硬件连接、协议实现、ESP-Modbus库移植、寄存器映射及调试技巧,帮助开发者快速构建稳定可靠的工业级RS485通信节点,并解决常见通信故障。 阅读详情

相关推荐

KBS投稿全流程拆解:从模板准备到条件接收的实战指南

本文详细拆解了KBS期刊投稿的全流程,从模板准备、投稿系统操作到返修策略和条件接收。重点介绍了Cover Letter撰写技巧、Latex模板选择、审稿周期管理以及返修文件的系统准备方法,帮助研究者高效完成KBS投稿并提升接收概率。

weixin_26938645的博客 702

什么是主密钥、工作密钥、会话密钥、PIN密钥?

什么是主密钥? 主秘钥,即(Terminal Master Key) TMK,主要作用是用来验证工作秘钥是否合法,以及加密TPK(终端PIN密钥),保证TPK在传输线路上的安全性。一般情况下是人工在POS设置或者通过IC卡导入,TMK被写入密钥保护芯片,也就是我们说的SE,其具有开机程序自毁功能,能很好的保护TMK的安全性,主秘钥是和每一台POS相关联的,即主秘钥和Pos设备是一一对应的,如我们现...

KJFantasy的博客 2万+

支付宝支付(三):周期扣款实现注意细节

一、周期扣款实现说明 1、官方文档入口:https://opendocs.alipay.com/open/20190319114403226822/intro 2、根据官方文档说明,周期扣款有两种方式:先签约后代扣场景和支付后签约场景 3、周期扣款接入问题文档: a>https://opendocs.alipay.com/support/01rg24 b>https://opensupport.alipay.com/support/knowledge/50249/20160248753

新鲜雾霾的博客 5692

Kerberos 认证、黄金票据、白银票据

在实际环境中,有各种各样的服务都需要进行认证,需要频繁输入密码进行认证,不仅繁琐,而且频繁传输密码加大了出现中间人劫持等安全风险。服务器持有 TGS 颁发的票据后,携带票据访问相应的服务可获取响应的服务权限。AS(Authentication Service)所在的服务器存储了用户凭证,用户输入账户密码进行认证成功后,AS 向用户颁发。(身份票据),用户获取 TGT 后,凭借 TGT 即可向 TGS 申请各种服务票据(ST),用来获取各种服务的权限。白银票据就是伪造了 Kerberos 中的服务票据。

weixin_51559599的博客 1011

WinForm制作文件传输助手,Tcp局域网传输文件,传输速度受限于宽带和硬盘速度上限

文件传输助手为什么会出现,是因为项目上有些特殊的地方限制太多了,连插硬盘都需要关软件,联网又要开很不方便,网络限制一般软件只能局域网通信,还要开特定的端口等,你才能在电脑上通信,这样和机房的服务器远程的时候文件就不好拿过去,又不可能每次都去开机房的门。现在这个功能比较简单,只能单文件发送,但是其实比U盘硬盘方便,一般的六类网线传输压缩包在50M/s以上,U盘硬盘复制就不行了,特别如果是像我们学校这种网络结构,一个学校都在一个局域网,那真的方便!普通的局域网用特定IP和端口,通信也是很方便的。

m0_69233031的博客 1670

Xilinx IP库在Modelsim/Questasim中的高效仿真实践

本文详细介绍了在Modelsim/Questasim中高效仿真Xilinx FPGA设计的核心方法。针对仿真时常见的IP核缺失错误,重点解析了两种主流解决方案:使用Vivado的compile_simlib命令自动编译完整仿真库,以及利用export_simulation命令为特定工程生成仿真脚本。文章还提供了手动配置库的深入理解、实战排错步骤及高级避坑指南,帮助用户构建稳定、高效的独立仿真环境。

sony5的博客 1229

Kerberos认证

Kerberos 是一种网络认证协议,其流程主要分为三个部分,Authentication Service Exchange,Ticket Granting Service Exchange,Client/Server Exchange

星落的博客 5356

《通信工程施工与管理》

制作馈线接头必须使用专用的工具,专用工具包括:馈线切割刀、馈线安全刀、小金属丝毛刷、固定尺寸或大号活动扳手、小号扁锉刀、细齿小手锯、接头扩孔器、3M防水胶或防水接头盒;如图所示,详情如表所示。

2302_78710464的博客 1653

Kerberos安全体系详解---Kerberos的简单实现

文章目录1. Kerberos简介1.1. 功能1.2. 概念2. 3次通信2.1. 你和验证服务2.2. 你和TGS2.3. 你和Http服务reference 1. Kerberos简介 1.1. 功能 一个安全认证协议 用tickets验证 避免本地保存密码和在互联网上传输密码 包含一个可信任的第三方 使用对称加密 客户端与服务器(非KDC)之间能够相互验证 Kerberos只提供一种功能——在网络上安全的完成用户的身份验证。它并不提供授权功能或者审计功能。 1.2. 概念 首次请求,三次通

欢迎来到打不死的小强的专栏 1071

告别官方WebRTC的30G编译:我用libdatachannel给USB摄像头做了个轻量级网页监控

本文介绍了一种基于libdatachannel的轻量级WebRTC监控方案,通过USB摄像头实现实时视频推流。相比官方WebRTC库30GB的庞大编译体积,libdatachannel仅需几十MB,大幅简化了开发流程。文章详细讲解了从视频采集、FFmpeg编码到WebRTC传输的全过程,并提供了性能优化和部署方案,帮助开发者快速构建高效的网页监控系统。

weixin_29207533的博客 533

嵌入式工程师成长之路(0)----认识元件

在电子设计与维修中,认识元件是成功的关键!面对琳琅满目的电阻、电容、电感与二极管,样子形式千奇百怪,你是否也曾陷入困难? 本文基于行业权威分类标准,结合十年工程师实战经验,深度解析4大类、30+子类电子元件的核心特性、应用场景与避坑指南,助你从“小白”秒变“电子高手”!

云轩阁 11万+

kerberos认证协议浅析

1 引言 在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分。这个定名是贴切的,因为Kerberos认证是一个三路处理过程,依赖称为密钥分发中心(KDC)的第三方服务来验证计算机相互的身份,并建立密钥以保证计算机间安全连接。本质上每台计算机分享KDC一个秘钥,而K

萧萧的专栏 8023

Modbus RTU/TCP协议栈手写实现:主从站设计、功能码、CRC、异常响应

本文从协议栈架构、帧结构、功能码、CRC校验、异常响应、主从站设计等多个维度,完整阐述了Modbus RTU/TCP协议栈的手写实现方案。帧间隔机制是RTU的核心,T3.5超时检测决定了帧边界识别CRC16查表法以512字节ROM换取8倍性能提升,适合嵌入式功能码路由表实现可扩展的代码架构,便于新增功能异常响应机制保障协议健壮性,每个错误都有明确反馈Modbus TCP在RTU基础上增加MBAP头,实现以太网扩展多核RTOS环境下的并发访问与线程安全RS-485总线的电气隔离与浪涌保护。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

Kerberos认证原理及基于Kerberos认证的NFS文件共享

kerberos是用于身份认证并且能够提供双向认证的协议,使用kerberos,客户端只需要使用一个密码就可以对Kerberos域内所有的服务器进行访问,每个服务器也不需要单独实现自己的认证系统,而是使用他们共信任的Kerberos Distribution Center(KDC)来进行认证服务,因此Kerberos系统中至少包含KDC、Client、Server这三个角色Kerberos认证比较复杂比较绕,所以介意先了解认证过程,然后理解下Realm、principal等配置相关的术语,再开始配置。

allway2的博客 994

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

kerberos认证原理_kerberos 协议初探

kerberos原理一个客户端要访问某个服务时,先要到KDC去认证自己,并获得访问票据TGT 然后客户端再拿着这个访问票据到自己真实想要访问的服务去获得访问授权, 然后真实的进行访问在kerberos中,KDC有两部分组成:Authentication Server,用来认证用户,即验证用户存在,且密码正确Ticket-Granting Service,用来给客户端生成,可以访问客户端想...

weixin_39757212的博客 404

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Kerberos认证原理简介

Kerberos认证原理简介 1.1 What is Kerberos 1.1.1 简单介绍   Kerberos是一个用于鉴定身份(authentication)的协议, 它采取对称密钥加密(symmetric-key cryptography),这意味着密钥不会在网络上传输。在Kerberos中,未加密的密码(unencrypted password)不会在网络上传输,因此攻击者无法通过嗅...

zdy0_2004的专栏 1582

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

kerberos认证原理

前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题...

Sweet Baby,甜宝 559

kerberos 认证原理

这篇文章,尽量以由浅入深、层层深入的方式讲述我所理解的基于Kerberos的Windows Network Authentication,希望这篇文章能帮助那些对Kerberos不明就里的人带来一丝帮助。对于一些不对的地方,欢迎大家批评指正。 一、基本原理 Authentication解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。对于如何进行Authentication,我们采用这样的方法:如果一个秘密(secret)仅仅存在于A和B,那么有个人对B声称自己就是A,B通过让A...

yang灬仔 503

Kerberos认证原理与环境部署

官网:https://www.kerberos.org/ 官方文档:http://web.mit.edu/kerberos/krb5-current/doc/Kerberos中有以下一些概念需要了解:用户principal的形式:其中Instance是可选 的,通常用于更好地限定用户的类型。比如,一个管理员用户通常会有admin instance,即。下面是指代用户的 一些principal的例子: 2)服务principal 用户principal的形式:下面是指代服务principal的例子: 三、Ke

匠人精神,持之以恒! 4670

简洁易懂的kerberos的安全认证原理及搭建流程并集成到CDH中

一.Kerberos认证过程解析 Kerveros解决的是如何证明某个人就是他声称的那个人。 采用的方法:有一个仅存在A和B之间的秘密,如果有人对A声称自己就是B,那么A通过让B提供这个秘密来证明这个人就是B。 这样的验证过程中有几个问题需要解决: 1.秘密怎样表示 2.B如何向A提供这个秘密 3.A如何识别这个秘密 4.秘密是怎么生成,并且仅告知A和B 首先明白几个概念: Long-term k...

weixin_43255026的博客 1770

详解kerberos认证原理

前言Kerberos协议是一个专注于验证通信双方身份的网络协议,不同于其他网络安全协议的保证整个通信过程的传输安全,kerberos侧重于通信前双方身份的认定工作,帮助客户端和服务端解决“...

大数据星球-浪尖 8378

[转]kerberos认证原理

前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题...

lvhdbb的博客 383

内网渗透测试:Kerberos 协议& Kerberos 认证原理

Kerberos 认证并不是天衣无缝的,这其中也会有各种漏洞能够被我们利用,比如我们常说的MS14-068、黄金票据、白银票据等就是基于Kerberos协议进行攻击的。下面我们便来大致介绍一下Kerberos 认证中的相关安全问题。

dzqxwzoe的博客 519
上一篇: Kerberos认证的kafka常见错误记录
下一篇: Spark编程之深入理解DataSet
iFence
博客等级 码龄9年 8051粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值