什么是kerberos,以及kerberos是如何工作的
时间:2020-03-21 11:48:44 来源:igfitidea点击:
Kerberos是作为MIT雅典娜项目的一部分开发的身份验证系统。
Kerberos使用受信任的第三方或者调用中间人服务器进行身份验证。
而kerberos是基于《 needham-schroeder-protocol》的。
从kerberos中可用的不同版本来看,版本1至3从未发布过供公众使用,因为它们主要是内部版本。
版本4和5已发布,并且由于版本4中的某些安全漏洞,这些天很少使用。
因此,在我们的教程/文档部分中,我们将讨论kerberos版本5.
到目前为止,最新版本的kerberos是版本5 Release 1.10.3.
Kerberos旨在缓解网络安全中的以下问题:
- 密码嗅探
- 密码数据库窃取。
密码和登录凭据集中在kerberos基础结构中,可防止客户端将密码存储在其计算机上。
借助kerberos,可以减少由于某些网络服务上未加密的数据传输而导致的协议弱点。
Kerberos的缺点:
- 如前所述,在kerberos基础结构中,用户登录凭据存储在中央服务器中。因此,将所有登录凭据从本地计算机/etc/passwd和/etc/shadow文件迁移到中央服务器是一件繁琐的工作。
- 如果某些攻击者可以访问中央服务器,则整个基础架构都将受到威胁。
- 可以使用kerberos保护的应用程序必须内置有kerberos功能。当前有许多不支持kerberos的应用程序。
让我们了解一下Kerberos基础结构中使用的一些常用术语。
- GSS-API:这是应用程序中必须存在的API,以便与Kerberos兼容。
- KDC:密钥分发中心,这将是我们称为中间人服务器或者中央服务器仲裁程序的服务器,由该服务器发布通信密钥。
- REALM:一个由名称标识的kerberos网络,大多数情况下,这是所有大写形式的域名。
- 主体:这是kerberos中央服务器用来调用用户的名称,服务名称等。
- TGS:票证授予服务器:这主要是同一台中央服务器(KDC服务器),它为服务授予票证。
- TGT:一种特殊的票证,其中包含用于在客户端计算机和中央KDC服务器之间进行通信的会话密钥。
这个怎么运作?
步骤1:当用户登录到他或者她的计算机时。
主体将发送到KDC服务器进行登录,KDC服务器将提供TGT作为回报(对KDC服务器的此请求可以通过登录程序发送,也可以使用kinit程序)。
步骤2:Kdc服务器在数据库中搜索主体名称,找到主体后,KDC会生成一个TGT,该TGT将通过用户密钥进行加密,然后发送回用户。
步骤3:当用户获得TGT时,用户将在KINIT(借助用户密钥的帮助)的帮助下解密TGT。
这里要注意的重要事实是,客户端计算机仅将其密钥存储在其自己的计算机上,并且永远不会通过有线方式进行传输。
步骤4:客户端从KDC服务器收到的TGT将存储在缓存中,以用于会话持续时间。
KDC服务器提供的TGT上始终设置有过期时间,因此攻击者永远无法使用过期的TGT。
步骤5:现在,客户已经掌握了TGT。
如果假定客户端需要与该网络上的某些服务进行通信,则客户端将在TGT的帮助下,向KDC服务器请求该特定服务的票证。