Kerberos 重新认识 From Oracle安全

参考

https://docs.oracle.com/cd/E24847_01/html/819-7061/seamtm-1.html#scrolltoc

Kerberos服务

Kerberos服务是一种网络身份认证协议,由麻省理工学院(MIT)开发。它提供了强大的身份验证功能,用于在计算机网络中验证用户和服务之间的身份。Kerberos采用了一种基于密钥的认证机制,通过使用加密票证来证实用户或服务的身份。

Kerberos的运作过程如下:

  1. 客户端向Kerberos提供服务器的身份证明请求,并发送给Kerberos Ticket Granting Service(TGS)服务器。
  2. TGS服务器根据客户端的信息,生成一个票证,该票证(TGT)包含客户端的身份信息和一个用于加密的会话密钥。
  3. 客户端收到TGT后,使用自己的密码来解密TGT中的会话密钥。
  4. 客户端使用会话密钥向TGS服务器发送另一个请求,请求访问特定的服务。
  5. TGS服务器使用客户端的会话密钥解密请求,并验证客户端的身份。如果验证成功,则生成一个用于访问特定服务的票证,称为服务票证。
  6. 客户端收到服务票证后,将其发送给目标服务。
  7. 目标服务使用自己的密钥解密服务票证,确认客户端的身份,并向客户端提供所请求的服务。

Kerberos的优势包括:安全性高,使用了加密技术和严格的身份验证流程;可水平扩展,支持分布式环境;并且在网络中减少了对密码的传输次数。

Kerberos服务通常用于企业和组织的内部网络,以确保用户和服务之间的安全通信。

组成实体

在Kerberos服务中,有以下几个主要实体:

  1. 客户端(Client):客户端是网络中的用户或应用程序,需要访问某个服务。客户端向Kerberos服务进行身份验证,并获取访问服务的票证。
  2. Kerberos服务器(KDC):Kerberos服务器是整个Kerberos系统的核心组件,包含两个主要组件:认证服务(AS)和票证授予服务(TGS)。认证服务负责对客户端的身份进行验证,而票证授予服务负责颁发和验证票证。
  3. 认证服务(AS):认证服务是Kerberos中的一个组件,负责对客户端的身份进行验证。当客户端请求访问Kerberos服务时,AS会生成一个称为票证授予票证(Ticket Granting Ticket,TGT)的票证,其中包含客户端的身份信息和一个会话密钥。
  4. 票证授予服务(TGS):票证授予服务是Kerberos中的另一个组件,负责颁发和验证票证。一旦客户端获得TGT,它可以向TGS请求访问特定的服务。TGS会生成一个称为服务票证(Service Ticket)的票证,其中包含客户端的身份信息和用于访问服务的会话密钥。
  5. 服务:服务是Kerberos中的被访问资源或服务。它在Kerberos系统中注册,并使用自己的密钥进行身份验证。当客户端通过TGS获得服务票证后,它可以使用服务票证与服务进行通信。

这些实体共同协作,使用Kerberos流程进行身份验证和访问控制,以确保网络中的安全通信。

设计思想

Kerberos服务的主要设计思想是基于客户-服务器模型的,其核心理念是使得客户端和服务之间的通信经过认证和加密,确保安全性和保密性。

Kerberos采用了一种基于票证的认证机制,其中包含了以下几个主要设计思想:

  1. 颁发票证:Kerberos通过颁发票证的方式对客户端进行身份验证和授权。在认证服务(AS)阶段,客户端通过提供用户名和密码来获取票证授予票证(TGT),并使用此票证在票证授予服务(TGS)阶段来获取服务票证。票证中包含了客户端的身份信息和用于加密通信的会话密钥。
  2. 单点登录:Kerberos实现了单点登录(Single Sign-On)的功能,即客户端在一次身份认证后,可以持续地使用获得的票证来访问多个服务,而不需要重复进行身份验证。
  3. 会话密钥:Kerberos使用会话密钥来进行加密通信。在获得TGT和服务票证后,客户端和服务之间使用会话密钥进行加密和解密,确保通信的机密性。
  4. 分布式环境支持:Kerberos的设计考虑了网络中分布式环境的需求。它提供了可扩展性和灵活性,允许在分布式环境中部署多个Kerberos服务器,以满足大量用户和服务的需求。

总体上,Kerberos基于票证的设计思想旨在提供安全的身份验证和访问控制机制,保护网络中的通信安全性。它使得客户端可以安全地连接到被授权的服务,而不用直接传递密码或其他敏感信息。

通过网络提供事务处理

Kerberos服务被称为一种通过网络提供安全事务处理的客户机/服务器体系结构

  1. 客户机/服务器模型:Kerberos的设计基于客户机/服务器模型,其中客户端是通过网络连接到服务端进行身份认证和访问控制的。客户端发送请求,服务端提供响应,这种模型使得网络中的通信可以进行安全的身份验证和授权。
  2. 安全事务处理:Kerberos提供了安全的事务处理机制,确保网络中的通信是可信和机密的。通过使用加密技术,Kerberos保护了传输的数据的机密性,防止恶意方窃取或篡改数据。
  3. 认证和授权:Kerberos通过颁发票证和使用会话密钥来实现身份认证和授权。客户端在与认证服务(AS)交互时进行身份验证,并获取票证授予票证(TGT)。然后,通过与票证授予服务(TGS)交互,客户端获取服务票证。这些票证被用于证明客户端的身份和授权客户端访问特定服务。
  4. 网络安全性:通过采用加密技术和严格的身份验证流程,Kerberos提供了高度的网络安全性。它能够防止未经授权的访问和欺骗攻击,并减少了敏感数据在网络中传输的风险。

综上所述,Kerberos服务被认为是一种通过网络提供安全事务处理的客户机/服务器体系结构,因为它在网络中提供了可靠的身份认证和授权机制,保护了通信的安全性。

keytab文件

Kerberos是一种网络身份验证协议,用于在计算机网络中验证用户和服务之间的身份。而keytab文件是Kerberos环境中用于存储用户或服务的凭据信息的文件。它包含了用户或服务的principal(身份标识)和对应的加密密钥。

Kerberos和keytab文件之间存在密切的交互关系。当用户或服务需要与Kerberos进行身份验证时,它们会使用keytab文件中存储的凭据信息与Kerberos进行交互。

具体的交互过程如下:

  1. 配置keytab文件:在Kerberos环境中,管理员会使用适当的工具来创建和配置keytab文件。这包括指定用户或服务的principal以及相应的加密密钥。
  2. 导入keytab文件:在需要与Kerberos进行身份验证的客户端或服务端上,会导入相应的keytab文件。导入keytab文件的过程可能因所使用的编程语言和工具而有所不同。
  3. 使用keytab文件进行认证:在进行身份验证时,客户端或服务端会从导入的keytab文件中提取自己的principal和对应的密钥。
  4. 客户端身份验证:客户端使用提取的密钥向Kerberos认证服务(AS)发送身份验证请求。这可能涉及到提供用户的用户名和密码来获取票证授予票证(TGT)。
  5. 服务身份验证:服务使用提取的密钥来解析和验证由客户端发送的票证,并确认客户端的身份和授权访问。
  6. 密钥维护和更新:在一些情况下,keytab文件中的密钥可能需要更新或更改,例如当用户更改密码时。管理员可以使用相应的工具来更新和管理keytab文件中的密钥信息。

keytab文件对于Kerberos环境的安全性至关重要。因为keytab文件中包含了敏感的凭据信息,应确保只有授权访问和使用这些凭据的实体才能够访问keytab文件。同时,进行合理的密钥管理和更新非常重要,以确保凭据的安全性和保密性。

总结而言,keytab文件是Kerberos环境中存储用户或服务的凭据信息的文件,用于与Kerberos进行身份验证交互。它与Kerberos之间的交互关系是通过提供凭据信息,验证用户或服务的身份,并获取访问授权。

一般流程

在Kerberos中,keytab文件是用于储存服务主体(Service Principal)以及对应密钥的文件。它在Kerberos协议中扮演着至关重要的角色,并且与Kerberos系统中的其他组件进行交互。

以下是Kerberos中keytab文件与其他组件的交互说明:

  1. Kerberos服务端(KDC):Kerberos认证服务(AS)和票证授予服务(TGS)是Kerberos服务端的组成部分。KDC使用keytab文件来验证服务主体的身份并分发票证。
  2. AS:当客户端请求进行认证时,AS会检查keytab文件来验证所提供的服务主体是否有效,是否具有相应的凭据。如果验证通过,AS会为客户端生成票证授予票证(TGT),以便后续与票证授予服务交互。
  3. TGS:在客户端使用TGT请求访问特定服务时,TGS会验证客户端的身份并检查keytab文件中的服务主体凭据。如果验证通过,TGS会为客户端生成服务票证,该票证用于安全通信前方保护会话密钥的传输。
  4. 客户端应用程序:客户端应用程序通过keytab文件与Kerberos进行交互以进行身份验证和获取服务票证。
  5. 导入keytab文件:客户端应用程序从keytab文件中提取服务主体的凭据信息。这些信息将在与Kerberos进行交互时使用,以证明身份和请求票证。
  6. 获取票证:客户端应用程序使用keytab文件中提取的凭据信息与Kerberos进行身份验证交互,以获取票证。这些票证用于证明访问特定服务的授权。
  7. 密钥管理和更新:Keytab文件还用于Kerberos环境中的密钥管理和更新。
  8. 密钥生成与更新:管理员可以使用相应的工具生成和更新keytab文件中的凭据信息,确保服务主体的凭据保持最新和有效的状态。
  9. 安全保护:由于keytab文件包含敏感的凭据信息,必须采取严格的安全措施来保护它们。对keytab文件的访问应受到严格的权限控制,并应通过加密等措施在储存和传输中进行保护。

综上所述,Kerberos中的keytab文件是与Kerberos系统中其他组件进行交互的关键部分。它用于验证服务主体的身份,获取票证,并进行密钥管理和更新。它在Kerberos中起到了保护和验证服务主体凭据的重要作用。

On the other hand

Kerberos is a computer network authentication protocol that provides a secure way for users to authenticate themselves to network services. It is commonly used in enterprise environments to ensure the confidentiality and integrity of communications.

The general steps involved in using the Kerberos service are as follows:

  1. User authentication: When a user wants to access a network service, they enter their credentials (username and password). These credentials are verified by the Kerberos Key Distribution Center (KDC), which is the central authentication server.
  2. Ticket issuance: If the user’s credentials are valid, the KDC generates a Ticket Granting Ticket (TGT) for the user. The TGT contains a session key that will be used to establish a secure channel between the user and the network services.
  3. Ticket granting process: The TGT is then sent to the user’s workstation, where it is stored securely. Whenever the user wants to access a network service, the TGT is presented to the KDC along with the name of the desired service.
  4. Service ticket issuance: Based on the TGT and the name of the service, the KDC generates a Service Ticket (ST). The ST contains the user’s identity, the session key, and other information needed by the service to authenticate the user.
  5. Service authentication: The user’s workstation presents the ST to the network service that the user wants to access. The service verifies the ST by decrypting it using the session key shared with the KDC.
  6. Secure communication: If the service successfully decrypts the ST, it knows that the user has been authenticated by the KDC. The service then establishes a secure communication channel with the user using the session key, ensuring the confidentiality and integrity of the communication.

Some important considerations while using Kerberos are:

  1. Time synchronization: Kerberos relies on synchronized clocks between the client, KDC, and network services. Any time drift between these entities can cause authentication failures. It is crucial to ensure time synchronization among them.
  2. Key management: The session key used for securing the communication is stored securely and changed periodically. Key management practices should be followed to prevent unauthorized access to the keys.
  3. Secure network infrastructure: Kerberos is vulnerable to attacks if the network infrastructure is compromised. Network security measures, such as secure protocols, firewalls, and intrusion detection systems, should be in place to protect the Kerberos service.
  4. Trust relationships: In complex enterprise environments, Kerberos may be used across multiple realms and domains. Establishing trust relationships between these entities is crucial to ensure seamless authentication and secure communication.

By following these steps and considerations, organizations can effectively utilize Kerberos to enhance the security of their network services and protect sensitive information from unauthorized access.

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

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

相关文章

买爱心气球(nim博弈)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 Alice 和 Bob 是一对竞技编程选手,他们路过了一家气球店,发现有 m 个大爱心气球和 n个小爱心气球。他们决定玩一个游戏,游戏规则如下: Alice先手拿…

Python Selenium 设置带账号密码的socks5代理,启动浏览器

selenium添加带有账密的socks5代理 我们都知道在使用selenium开发爬虫的时候不可避免的会使用socks5高匿名代理。一般情况下我们使用方法如下(开发语言为python): from selenium import webdriver chrome_options webdriver.ChromeOptions() chrome_options.add_…

Java并发之ReentrantLock

AQS AQS(AbstractQueuedSynchronizer):抽象队列同步器,是一种用来构建锁和同步器的框架。在是JUC下一个重要的并发类,例如:ReentrantLock、Semaphore、CountDownLatch、LimitLatch等并发都是由AQS衍生出来…

React Native Expo项目,复制文本到剪切板

装包: npx expo install expo-clipboard import * as Clipboard from expo-clipboardconst handleCopy async (text) > {await Clipboard.setStringAsync(text)Toast.show(复制成功, {duration: 3000,position: Toast.positions.CENTER,})} 参考链接&#xff1a…

3.文件目录

第四章 文件管理 3.文件目录 ​   对于D盘这个根目录来说它对应的目录文件就是图中的样子,其实就是用一个所谓的目录表来表示这个目录下面存放了哪些东西。在D盘中的每一个文件,每一个文件夹都会对应这个目录表中的一个表项,所以其实这些一…

如何写简历?

写程序员简历时,可以从以下几个方面入手: 1. 个人信息:在简历的开头,包含个人基本信息如姓名、联系方式、地址等。 2. 求职目标/职业目标:明确自己希望得到的职位或行业,并简要描述为什么适合该职位。 3…

Autoware感知02—欧氏聚类(lidar_euclidean_cluster_detect)源码解析

文章目录 引言一、点云回调函数:二、预处理(1)裁剪距离雷达过于近的点云,消除车身的影响(2)点云降采样(体素滤波,默认也是不需要的)(3)裁剪雷达高…

【概念篇】文件概述

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! 文件概述 1,文件的概念 狭义上的文件是计算机系统中用于存储和组织数据的一种数据存…

React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】

摘要 经过之前的几篇文章,我们实现了基本的jsx,在页面渲染的过程。但是如果是通过函数组件写出来的组件,还是不能渲染到页面上的。 所以这一篇,主要是对之前写得方法进行修改,从而能够显示函数组件,所以现…

【深度学习】NLP中的对抗训练

在NLP中,对抗训练往往都是针对嵌入层(包括词嵌入,位置嵌入,segment嵌入等等)开展的,思想很简单,即针对嵌入层添加干扰,从而提高模型的鲁棒性和泛化能力,下面结合具体代码…

Spark 学习记录

基础 SparkContext是什么?有什么作用? https://blog.csdn.net/Shockang/article/details/118344357 SparkContext 是什么? SparkContext 是通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDDs 、累加和广播变量( Br…

【数据库基础】Mysql下载安装及配置

下载 下载地址:https://downloads.mysql.com/archives/community/ 当前最新版本为 8.0版本,可以在Product Version中选择指定版本,在Operating System中选择安装平台,如下 安装 MySQL安装文件分两种 .msi和.zip [外链图片转存失…

C++11时间日期库chrono的使用

chrono是C11中新加入的时间日期操作库,可以方便地进行时间日期操作,主要包含了:duration, time_point, clock。 时钟与时间点 chrono中用time_point模板类表示时间点,其支持基本算术操作;不同时钟clock分别返回其对应…

vue中router路由的原理?两种路由模式如何实现?(vue2) -(上)

平时我们编写路由时,通常直接下载插件使用,在main.js文件中引入直接通过引入vue-router中的Router通过Vue.use使用以后定义一个routeMap数组,里边是我们编写路由的地方,最后通过实例化一个 Router实例 将routes我们定义的routeMao…

Docker中部署Nginx

1.Nginx部署需求 2.操作教程 3.实际步骤 把配置粘过来。

客户端远程启动服务器脚本文件

目录 软件需求 实现 方法1 方法2 方法3 软件需求 有两台计算机,一台是linux客户端,另一台是linux服务器。要求操作员可以在客户端远程启动服务器上的脚本文件,控制服务器。 实现 方法1 客户端通过ssh登录服务器,然后通过…

Cookie、Session、Token的区别

有人或许还停留在它们只是验证身份信息的机制,但是它们之间的关系你真的弄懂了么? 发展史: Coolie: Netscape Communications 公司引入了 Cookie 概念,作为在客户端存储状态信息的一种方法。初始目的是为了解决 HTTP 的无状态性…

Python爬虫:单线程、多线程、多进程

前言 在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…

python爬虫数据解析xpath、jsonpath,bs4

数据的解析 解析数据的方式大概有三种 xpathJsonPathBeautifulSoup xpath 安装xpath插件 打开谷歌浏览器扩展程序,打开开发者模式,拖入插件,重启浏览器,ctrlshiftx,打开插件页面 安装lxml库 安装在python环境中的Scri…

剑指Offer61.扑克牌中的顺子 C++

1、题目描述 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。…