【网络安全技术】实体认证技术Kerberos

一、什么是Kerberos

Kerberos解决的是客户端与服务器通信场景中,确保客户端服务器双方的身份可信,并提供对称密钥的分发来加密传输。是一个应用层的协议。

二、一个简单的模型

1.看这个基础的模型,客户端要和服务器通信,他先将自己的名称、密码和要访问的服务器的名称发给Authentication Server。AS里面存了可信用户的名称和密码。

2.AS验证没问题后,回给客户端一个票据,这个票据是用服务器和AS的对称密钥加密的(客户端名称,客户端ip地址,服务器名称)。

3.客户端收到后,把自己的名称和拿到的票据发给服务器,开始通信。

几个问题:

1.只认证了客户端,保护了服务器不会被非授权的用户访问,但没有保护客户端。

2.在第一条中,客户端的密钥明文传输。

三、进一步

1.这次不传口令,只传客户端id,服务器id。

2.基于“能正确解密的人就是合法用户”的思想,AS向客户端回一个用客户端密钥加密的ticket,如果客户端能正确解密出ticket,那就说明客户端是合法的,他就能接下来和服务器通信。

3.还是一样,把ticket和客户端id发给服务器,开始通信。

几个问题:

1.每访问一次服务器,就需要认证一次,客户端密钥被频繁使用,样本多了容易吃唯密文攻击。而且这个过程确实是多余的,认证一次就行了。这个可以将AS一分为二来解决。

2.票会被无限次使用,因为没有过期时间限制。

3.还存在单向认证问题,没有保护客户端。

四、再进一步

这次将AS一分为二,一个负责认证客户端,一个负责分发票据。

1.跟刚才类似,不过这次是要向tgs服务器要票,所以是IDtgs。

2.AS用客户端的对称密钥加密ticket tgs,这个用来向tgs服务器要票。这个ticket使用tgs服务器加密的(客户端id,客户端ip,tgs服务器id,时间戳1,寿命)。这样一分为二,解决了多次认证,重复使用密钥的问题。

3.客户端向tgs服务器要某一服务器的票,附上刚拿到的ticket tgs。

4.tgs服务器收到后会用自己和AS的对称密钥解密,然后取出里面的信息,这里面加了时间戳,避免了这个ticket tgs被无限次使用的问题。然后去自己的数据库里查服务器的信息,给客户端会服务器的票据。这个票据使用服务器的对称密钥加密,加密了(客户端id,客户端ip,服务器id,时间戳2,寿命),想想这些都有什么用,客户端id是为了指定只有这个客户端能用,ip是给服务器核对用的,服务器id不知道有什么用。这里加了时间戳解决了上一个方案的票据无限次使用问题。

5.客户端收到之后,把自己的id和这个票据发给服务器,开始通信。

几个问题:

1.第二张ticketv被别人捡到,就直接冒充这个客户端去用了,会被重放。

2.还是单向认证问题。

五、Kerberos V4

1.这次还给第一条加上了时间戳,这是为了什么?

2.AS用客户端的密钥加密(客户端和tgs之间的对称密钥,tgs id,时间戳2,寿命,ticket tgs)

ticket tgs是用tgs的密钥加密的(客户端和tgs之间的对称密钥,客户端id,客户端ip,tgs id,时间戳2,寿命)

3.客户端收到之后,解密,解出来ticket tgs,并使用他和tgs之间的对称密钥加密(客户端id,客户端ip,时间戳3)作为Authenticator,(这个是为了证明这条消息是认证的客户端发的,因为这条消息是明文传,所以ticket tgs会被别人拿去重放,有了authenticator,里面有用session key加密的时间戳,就能证明是客户端了,因为别人是没有这个session key的);附上ticket tgs,要访问的服务器id,发给tgs。所以这个客户端和tgs之间的session key的作用,就是防止ticket tgs被别人拿走重放。哪如果别人直接把ticket tgs和authenticator一块拦截然后重放,不就成功了?其实是不会的,因为就算你拦截然后重放了,接下来tgs发给你的包也是用session key加密的,你解不开,就没有后续了。

4.tgs收到之后,先看ticket的时间戳过期没,然后从里面解出来他和客户端之间的对称密钥,再拿对称密钥解密authenticator,成功解密之后拿出时间戳,看时间对不对,因为这个authenticator也有可能被重放。这样下来,就成功验证客户端身份了。

然后他给客户端回信,用他和客户端之间的session key加密(客户端和服务器之间的session key,服务器id,时间戳4,ticket v)

ticket v是用服务器的对称密钥加密的(客户端服务器之间的session key,客户端id,客户端ip,服务器id,时间戳4,寿命)

5.客户端收到之后,用session key从里面接出来他和服务器的session key,还有用于登录服务器的票据。附上自己的Authenticator,发给服务器,这里需要authenticator的原因同理,是因为这里的ticket只能明文传,所以会被重放,需要认证。

6.服务器收到之后,跟刚才一样,先把ticket v拆开,拿出session key,然后对authenticator进行认证,确认是真的客户端,然后拆出authenticator里的时间戳5,加上1,然后再用session key加密回给客户端,这里是为了证明他是真的服务器,因为只有真的服务器能解开ticket v,取出客户端和服务器之间的session key,然后解开authenticator,取出时间戳5,并做运算,然后在加密还回去。

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

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

相关文章

《堆》的模拟实现

目录 前言: 模拟实现《堆》: 1.自定义数据类型 2.初始化“堆” 3.销毁“堆” 4.进“堆” 关于AdjustUp() 5.删除堆顶元素 关于AdjustDown() 6.判断“堆”是否为空 7.求“堆”中的数据个数 8.求“堆”顶元素 总结: 前言&#xf…

「LeetCode Hot 100 题」详解

前言 前言&#xff1a;LeetCode Hot 100 题详解 文章目录 前言1. 两数之和2. 字母异位词分组3. 最长连续序列4. 移动零 1. 两数之和 原题链接&#xff1a;两数之和 知识点&#xff1a;哈希表 题解 class Solution {public int[] twoSum(int[] nums, int target) {Map<Inte…

mysql原理--重新认识MySQL

1.MySQL请求处理 1.1.查询缓存 MySQL 服务器程序处理查询请求时&#xff0c;会把刚刚处理过的查询请求和结果缓存起来&#xff0c;如果下一次有一模一样的请求过来&#xff0c;直接从缓存中查找结果就好了&#xff0c;就不用再傻呵呵的去底层的表中查找了。这个查询缓存可以在不…

DOM 事件的传播机制

前端面试大全DOM 事件的传播机制 &#x1f31f;经典真题 &#x1f31f;事件与事件流 事件流 事件冒泡流 事件捕获流 标准 DOM 事件流 &#x1f31f;事件委托 &#x1f31f;真题解答 &#x1f31f;总结 &#x1f31f;经典真题 谈一谈事件委托以及冒泡原理 &#x1f3…

SmartSoftHelp8数据库连接字符串强优化,高并发配置

1.设置数据库是否异步连接 2.数据库连接是否复用 3.最大链接数 4.最小连接数 5.等待时间 6.生命周期 下载地址&#xff1a; 百度网盘 请输入提取码

24、蜂鸣器

蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0c;常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 有源蜂鸣器&#xff1a;内部自带振荡源&#xff0c;将正负极接上直流电压即可持续发声&#xff0c;频率固定 无源蜂…

【linux】信号——信号保存+信号处理

信号保存信号处理 1.信号保存1.1信号其他相关概念1.2信号在内核中的表示 2.信号处理2.1信号的捕捉流程2.2sigset_t2.3信号集操作函数2.4实操2.5捕捉信号的方法 3.可重入函数4.volatile5.SIGCHLD信号 自我名言&#xff1a;只有努力&#xff0c;才能追逐梦想&#xff0c;只有努力…

Vue2中响应式的原理

Vue2中实现响应式的原理 vue2实现原理Vue2响应式存在的问题 vue2实现原理 使用Object.defineProperty()的get()与set()来实现响应式 <script>let p {}let person {name: "张三",sex:"男",hobby: ["吃饭","睡觉"]}Object.def…

C++:模板进阶

目录 1.非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板的特化 2.3 类模板的特化 2.3.1 全特化 2.3.2 偏特化 3. 模板的分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决方法 4. 模板总结 1.非类型模板参数 模板参数分类&#xff1a;类型形参与非类…

计算机毕业设计 基于SpringBoot的敬老院管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

数据结构与算法-静态查找表

&#x1f31e; “清醒 自律 知进退&#xff01;” 查找 &#x1f388;1.查找的相关概念&#x1f388;2.静态查找表&#x1f52d;2.1静态查找表的类定义&#x1f52d;2.2顺序查找&#x1f52d;2.3二分查找&#x1f50e;二分查找例题 &#x1f52d;2.4分块查找&#x1f52d;2.5三…

理解BatchNormalization层的作用

深度学习 文章目录 深度学习前言一、“Internal Covariate Shift”问题二、BatchNorm的本质思想三、训练阶段如何做BatchNorm四、BatchNorm的推理(Inference)过程五、BatchNorm的好处六、机器学习中mini-batch和batch有什么区别 前言 Batch Normalization作为最近一年来DL的重…

react 字轮播滚动

一、用计时器来实现 React 字符串滚动轮播&#xff0c;可以使用 setInterval 函数和 React 的生命周期方法来实现。以下是一个简单的示例&#xff1a; import React from "react";export default class TextScroll extends React.Component {constructor(props) {s…

logistic回归详解

为什么不直接统计标签数和预测结果数&#xff0c;计算精度&#xff1f; 因为 存在梯度为0的情况梯度不连续 为什么叫logistic回归 logistic是因为加了一个sigmoid函数&#xff0c;将输出预测值映射到【0&#xff0c;1】 有时候使用MSE损失函数&#xff0c;拟合 有时候使用c…

selenium三猛士

selenium包括三个项目&#xff0c;分别是&#xff1a;Selenium WebDriver,Selenium IDE&#xff0c;Selenium Grid。 Selenium WebDriver Selenium WebDriver是客户端API接口&#xff0c;测试人员通过调用这些接口&#xff0c;来访问浏览器驱动&#xff0c;浏览器再访问浏览器…

利用Python中的Manim进行数学绘画和创作

相信很多同学就算没听过3Blue1Brown&#xff0c;也一定曾看过他们出品的视频&#xff0c;其从独特的视觉角度解说各种数学概念&#xff0c;内容包括线性代数、微积分、神经网络、傅里叶变换以及四元数等晦涩难懂的知识点。例如最火的《线性代数本质》系列视频。 那么这些视频是…

【算法】动态规划中的路径问题

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;如果给算法的难度和复杂度排一个排名&#xff0c;那么动态规划算法一定名列前茅。今天&#xff0c;我们通过由简单到困难的两道题目带大家学会动…

CDN加速技术的发展与演进

随着互联网的迅猛发展&#xff0c;用户对于网页加载速度和内容交付的需求也不断增长。为了应对这一挑战&#xff0c;内容交付网络&#xff08;CDN&#xff09;技术应运而生。本文将从 CDN 加速技术的发展角度&#xff0c;探讨其演进历程以及对网络性能的积极影响。 CDN技术的起…

文字、图片免费生成视频和专属数字人,你不来试试吗?

查看生成的效果&#xff1a;AI产生的视频&#xff08;关注公众号&#xff0c;获取精彩内容&#xff09; 您是否想要制作一些令人惊叹的视频&#xff0c;但又没有视频编辑的技能或经验&#xff1f;您是否想要利用人工智能的力量&#xff0c;让您的图片和声音变成动态的视频&…

如何强制任何Android应用程序进入全屏沉浸式模式(无生根)

谷歌在2012年发布了Android版本的Chrome&#xff0c;并且从未费心给它一个全屏模式。如果您厌倦了等待自己喜欢的Android应用程序提供全屏&#xff0c;则可以使用沉浸式模式自行完成。 来吧&#xff0c;谷歌&#xff0c;我真的一直在乞求你多年&#xff01;没有理由不给我们一…