Kerberos原理
目录
一、 Kerberos原理 2
1. 相关概念 2
2. 认证过程 2
2.1 用户使用客户端(用户自己的机器)登录: 3
2.2 客户端认证(客户端(Client)从认证服务器(AS)获取票据的票据(TGT)) 3
2.3 服务授权(client从TGS获取票据(client-to-server ticket)) 4
2.4 服务请求(client从SS获取服务): 4
二、 Kerberos具体认证实现 5
1. 认证 5
2. 使用认证身份申请服务 5
3. 管理 6
- Kerberos原理
- 相关概念
AS:Authentication Server
KDC:key distribution center
TGS:Ticket Granting Server
SS:Service Server
TGT:Ticket Granting Ticket
principal: represent a unique identity,eg.hive/testdiy0.example.com@EXAMPLE.COM
primary: the operating system username of the user or the name of a service
instance: an optional section, are used by users in special roles or to define the host on which a service runs
realm: similar to a domain in DNS ,defines a group of principals
keytab:principal+passwd
- 认证过程
- 用户使用客户端(用户自己的机器)登录:
- 用户输入用户ID和密码到客户端。
- 客户端程序运行一个单向加密把密码转换成密钥,这个就是客户端(用户)的“用户密钥”(user's secret key)。
- 客户端认证(客户端(Client)从认证服务器(AS)获取票据的票据(TGT))
- Client向AS发送1条明文消息,申请基于该用户所应享有的服务,例如“用户Sunny想请求服务”(Sunny是用户ID)。(注意:用户不向AS发送“用户密钥”(user's secret key),也不发送密码)该AS能够从本地数据库中查询到该申请用户的密码,并通过相同途径转换成相同的“用户密钥”(user's secret key)。
- AS检查该用户ID是否在于本地数据库中,如果用户存在则返回2条消息:
- 消息A:Client/TGS会话密钥(Client/TGS Session Key)(该Session Key用在将来Client与TGS的通信(会话)上),通过用户密钥(user's secret key)进行加密
- 消息B:票据授权票据(TGT)(TGT包括:消息A中的“Client/TGS会话密钥”(Client/TGS Session Key),用户ID,用户网址,TGT有效期),通过TGS密钥(TGS's secret key)进行加密
- 一旦Client收到消息A和消息B,Client首先尝试用自己的“用户密钥”(user's secret key)解密消息A,如果用户输入的密码与AS数据库中的密码不符,则不能成功解密消息A。输入正确的密码并通过随之生成的"user's secret key"才能解密消息A,从而得到“Client/TGS会话密钥”(Client/TGS Session Key)。(注意:Client不能解密消息B,因为B是用TGS密钥(TGS's secret key)加密的)。拥有了“Client/TGS会话密钥”(Client/TGS Session Key),Client就足以通过TGS进行认证了。
- 服务授权(client从TGS获取票据(client-to-server ticket))
- 当client需要申请特定服务时,其向TGS发送以下2条消息:
- 消息c:即消息B的内容(TGS's secret key加密后的TGT),和想获取的服务的服务ID(注意:不是用户ID)
- 消息d:认证符(Authenticator)(Authenticator包括:用户ID,时间戳),通过Client/TGS会话密钥(Client/TGS Session Key)进行加密
- 收到消息c和消息d后,TGS首先检查KDC数据库中是否存在所需的服务,查找到之后,TGS用自己的“TGS密钥”(TGS's secret key)解密消息c中的消息B(也就是TGT),从而得到之前生成的“Client/TGS会话密钥”(Client/TGS Session Key)。TGS再用这个Session Key解密消息d得到包含用户ID和时间戳的Authenticator,并对TGT和Authenticator进行验证,验证通过之后返回2条消息:
- 消息E:client-server票据(client-to-server ticket)(该ticket包括:Client/SS会话密钥 (Client/Server Session Key),用户ID,用户网址,有效期),通过提供该服务的服务器密钥(service's secret key)进行加密
- 消息F:Client/SS会话密钥( Client/Server Session Key)(该Session Key用在将来Client与Server Service的通信(会话)上),通过Client/TGS会话密钥(Client/TGS Session Key)进行加密
- Client收到这些消息后,用“Client/TGS会话密钥”(Client/TGS Session Key)解密消息F,得到“Client/SS会话密钥”(Client/Server Session Key)。(注意:Client不能解密消息E,因为E是用“服务器密钥”(service's secret key)加密的)。
- 服务请求(client从SS获取服务):
- 当获得“Client/SS会话密钥”(Client/Server Session Key)之后,Client就能够使用服务器提供的服务了。Client向指定服务器SS发出2条消息:
- 服务请求(client从SS获取服务):
- 消息e:即上一步中的消息E“client-server票据”(client-to-server ticket)
- 消息g:新的Authenticator(包括:用户ID,时间戳),通过Client/SS会话密钥(Client/Server Session Key)进行加密
- SS用自己的密钥(service's secret key)解密消息E从而得到TGS提供的Client/SS会话密钥(Client/Server Session Key)。再用这个会话密钥解密消息g得到Authenticator,(同TGS一样)对Ticket和Authenticator进行验证,验证通过则返回1条消息(确认函:确证身份真实,乐于提供服务):
- 消息H:新时间戳(新时间戳是:Client发送的时间戳加1,v5已经取消这一做法),通过Client/SS会话密钥(Client/Server Session Key)进行加密
- Client通过Client/SS会话密钥(Client/Server Session Key)解密消息H,得到新时间戳并验证其是否正确。验证通过的话则客户端可以信赖服务器,并向服务器(SS)发送服务请求。
- 服务器(SS)向客户端提供相应的服务。
- Kerberos具体认证实现
- 认证
- 用户身份认证的两种方式
kinit example1@EXAMPLE.COM
kinit -kt example3.keytab example3
- 列出keytab文件中的principal
klist -kt example3.keytab
- 使用认证身份申请服务
beeline -u
“jdbc:hive2://testdiy0.example.com:10000/;principal=hive/testdiy0.example.com@EXAMPLE.COM
- 管理
- 两种管理员登录方式:
1)只有在kdc中拥有root或者sudo权限的用户可以执行:
kadmin.local
admin>addprinc example2@EXAMPLE.COM
kadmin.local -q “addprinc example3@EXAMPLE.COM”
2) 通过kinit 获取admin账号的principal
kinit admin/admin
kadmin
>addprinc example5@EXAMPLE.COM
3)将principal生成keytab文件:
ktadd -kt example5.keytab example5@EXAMPLE.COM
Kerberos原理相关推荐
- 浅析Kerberos原理,及其应用和管理
文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/5269739.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...
- Kerberos 原理的经典对话故事
Kerberos 原理的经典对话故事 前言 Kerberos是一个重要的认证协议,它为互不相识的通信双方做安全的认证工作.Kerberos的原义是希腊神话中守卫冥王大门的长有三个头的看门狗. 这是MI ...
- Kerberos原理--经典对话
" 读完这篇文章,大概会对Kerberos原理更了解一些吧" 这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerbero ...
- Kerberos 原理简述
Kerberos 是非常出名的密钥分配协议,同时也兼具了鉴别协议的功能,也是一个 KDC(Key Distribution Center,密钥分配中心).Kerberos 采用 AES 进行加密,所以 ...
- 【转载】Kerberos原理--经典对话
这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话集.里面有两个虚构的人物:Athena和Euripides, ...
- 【转】雅典娜与宙斯的对话.(kerberos原理)
1 八月 2010 22:07:51 关于Kerberos的对话(MIT) 雅典娜与宙斯 雅典娜与宙斯关于地狱之门守护者的对话 Kerberos: Network Authentication Pro ...
- [Kerberos原理]-- 趣味故事讲解Kerberos认证原理过程
文章转自:http://blog.sina.com.cn/s/blog_5384e78b0100fhdt.html &关于TGT,见到一段很有意思的描述,文章写的时间挺早,不过貌似核心的东西到 ...
- docker本地构建kerberos单机环境
kerberos简介 众所周知,kerberos是大数据环境下最常用的安全通信的保障机制,是一种网络协议 本文不涉及kerberos原理,只涉及docker搭建kerberos环境 打包docker镜 ...
- 集成OpenLDAP与Kerberos实现统一认证(三):基于SASL/GSSAPI深度集成
文章目录 1. 写作背景 2. 既定目标 3. 重要概念 3.1 SASL 3.2 GSSAPI 3.3 SASL与GSSAPI的关系 3.4 saslauthd 3.5 Kerberos化 4. 核 ...
最新文章
- python官网下载步骤64位-电脑64位怎么下载python
- 腾讯音乐娱乐集团Q3财报亮眼,营收与付费用户规模增速领跑全球
- 多路复用IO: select、sys_select、do_select源码分析
- 11.05T2 线段树+卡特兰数
- 京东下拉词框推广是什么?
- php bt种子转换电驴地址,bt转换ed2k_BT文件转磁力链接工具 BT种子文件转换成ed2k链接...
- 单相智能电表(Modbus协议)
- 最帅气最有魅力的win7系统下载哦!!!
- 用matlab实现灰色预测gm11模型,用MATLAB实现灰色预测GM11模型
- 拼多多不补单有什么后果?怎么避免补单风险?
- 【知识】快乐物质:多巴胺和内啡肽(内酚酞)的区别
- 操作系统C语言模拟内存分配算法的模拟实现
- 如何安装内存条(图文教程)
- 多态练习题(通过UML建模语言来实现饲养员喂养动物)
- 【数值计算】期末综合大作业
- 04 Android Activity生命周期
- 叔本华系列之(一)论独立的思考
- PHP中in_array 效率及其优化
- 电力拖动与控制系统 第二讲笔记
- 邮箱验证-正则表达式
热门文章
- 阅读 |《算法图解》读书打卡
- [ZT]千兆光纤 GBIC和SFP接口规格介绍
- GBD数据库相关文献中的EAPC怎么算?
- 初学js---动态生成表格
- IAR程序下载起始地址以及加入BOOTLOAD
- 计算机启动蓝屏,电脑开机蓝屏详细解决方案
- 八篇深度学习的开山巨作
- 在dev-c或者cb上建立 Consol Application project\collect2.exe [Error] ld returned 1 exit status
- Problem K: 三角形数
- AMD是什么?CMD是什么?他们之间有哪些区别