kerberos简单介绍
重要术语
1. KDC
全称:key distributed center
作用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS
2. AS
全称:authentication service
作用:为client生成TGT的服务
3. TGS
全称:ticket granting service
作用:为client生成某个服务的ticket
4. AD
全称:account database
作用:存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
5. TGT
全称:ticket-granting ticket
作用:用于获取ticket的票据
6.client
想访问某个server的客户端
7. server
提供某种业务的服务
认证流程
概述
图1 kerberos认证流程
图1展示了kerberos的认证流程,总体分为3步。
- client与AS交互
- client与TGS交互
- client与server交互
详细分析
kerberos为什么要采用3步交互的形式来完成安全认证,那就要从kerberos的使用场景说起。
相比kerberos,https可能更为熟悉一点,通过证书和非对称加密的方式,让客户端可以安全的访问服务端,但这仅仅是客户端安全,通过校验,客户端可以保证服务端是安全可靠的,而服务端却无法得知客户端是不是安全可靠的。这也是互联网的一种特性。而kerberos可以支持双向认证,就是说,可以保证客户端访问的服务端是安全可靠的,服务端回复的客户端也是安全可靠的。
想证明client和server都是可靠的,必然要引入第三方公证平台,这里就是AS和TGS两个服务。
- client向kerberos服务请求,希望获取访问server的权限。kerberos得到了这个消息,首先得判断client是否是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回AS返回TGT给client。
- client得到了TGT后,继续向kerberos请求,希望获取访问server的权限。kerberos又得到了这个消息,这时候通过client消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。
- client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其他server需要像TGS申请。
通过这3步,一次请求就完成了。当然这里会有个问题,这样也没比https快啊。解释一下
1. 整个过程TGT的获取只需要一次,其中有超时的概念,时间范围内TGT都是有效的,也就是说一般情况访问server只需要直接拿到ticket即可
2. 整个过程采用的是对称加密,相对于非对称加密会有性能上的优势
3. kerberos的用户管理很方便,只需要更新AD中的名单即可
当然整个过程的通信都是加密的,这里设计到两层加密,因为所有的认证都是通过client,也就是说kerberos没有和server直接交互,这样的原因是kerberos并不知道server的状态,也无法保证同时和server,client之间通信的顺序,由client转发可以让client保证流程顺序。
第一层加密,kerberos对发给server数据的加密,防止client得到这些信息篡改。
第二层加密,kerberos对发给client数据的加密,防止其他网络监听者得到这些信息。
client和server的通信也是如此。
转自:https://www.cnblogs.com/ulysses-you/p/8107862.html
kerberos简单介绍的更多相关文章
- LDAP服务器的概念和原理简单介绍
LDAP服务器的概念和原理简单介绍 1. 目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不 ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- angular1.x的简单介绍(二)
首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- iOS-iOS开发简单介绍
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
随机推荐
- 转换流InputStreamReader & OutputStreamWriter
转换流InputStreamReader & OutputStreamWriter 比如当使用FileReader读取文件时,可以读取IDE默认的UTF-8编码的文件,但是当有一个文件是GBK ...
- 【转载】C# 泛型详解
https://www.cnblogs.com/yueyue184/p/5032156.html
- springboot(十四):springboot整合mybatis
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;bounda ...
- udp_server函数
#include <netdb.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...
- Listener 快速开始
[SessionListener] @WebListenerpublic class SessionListener implements HttpSessionListener,HttpSessio ...
- springboot06-swagger2 自动化api文档
1.springboot 项目中添加swagger2依赖: <dependency> <groupId>org.springframework.boot</groupId ...
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...
- fail2ban 防爆破,防止CC 攻击
fail2ban fail2ban监视检测日志文件,根据匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作. 可用来放置爆破 和 CC 攻击. 安装: yum install fail2ban -y ...
- matplotlib-2D绘图库学习目录
matplotlib的安装和 允许中文及几种字体 散点图 直线和点 子图 点的形状 条形图 堆叠条形图 直方图 颜色和样式字符串 饼状图 画多个图 画网格 线的形状 图例 坐标轴 画注释 ...
- [C++]数值与字符串转换问题
#include <stdio.h>//sprintf #include <stdlib.h>//atof,atol,strtod,strtol using namespace ...