540 likes | 1.07k Views
Kerberos 协议. 电子科技大学. 身份认证. 身份认证的定义: 声称者向验证者出示自己的身份; 证实客户的真实身份与其所声称的身份是否相符。 Windows 2003 的身份认证机制?. Kerberos. 在希腊神话中, Kerberos 是一只 三头犬 它是 地域之门 的守护者,看守并防止任何生物入侵地下世界. Kerberos 协议概述. MIT 开发 分布式网络环境的身份认证 对称密钥加密技术 Kerberos V4 ( 只采用 DES )和 V5 。 RFC1510. Kerberos 协议的动机. Kerberos 要解决的问题:
E N D
Kerberos协议 电子科技大学
身份认证 • 身份认证的定义: • 声称者向验证者出示自己的身份; • 证实客户的真实身份与其所声称的身份是否相符。 • Windows2003的身份认证机制?
Kerberos • 在希腊神话中,Kerberos是一只三头犬 • 它是地域之门的守护者,看守并防止任何生物入侵地下世界
Kerberos协议概述 • MIT开发 • 分布式网络环境的身份认证 • 对称密钥加密技术 • KerberosV4(只采用DES)和V5。 • RFC1510
Kerberos协议的动机 • Kerberos要解决的问题: • 假设在一个开放的分布式环境中 • 工作站的用户希望访问分布在网络各处的服务器上的服务 • 服务器能够认证用户身份,并授权。
Kerberos协议的基本概念 • 通讯的双方共享一个密钥, 并用它来验证对方的身份 • 一方通过用该密钥加密来证明他知道这个密钥 • 另一方通过用该密钥解密来证明他也知道该密钥
Kerberos协议的基本概念 • Kerberos是一只看管地下世界的三头犬 • Kerberos协议也由三部分组成: • 鉴别(authentication) • 簿记(accounting) • 审计(audit)
Kerberos协议设计思路 • 基本思路: • 使用认证服务器(AS),来为网络中的用户(C)提供身份认证服务; • 用户口令由 AS 保存在数据库中; • AS 与每个服务器(V)共享一个惟一保密密钥(Kv)(已被安全分发)。
(1) IDC , PC , IDv Ticket IDC , Ticket Kerberos协议设计思路 AS 搜索数据库看用户是否合法 如果合法,验证用户口令是否正确 如果口令正确,检查是否有权限访问服务器V • 会话过程: 认证服务器 V与AS共享密钥解密票据 检查票据中的用户标识与网络地址是否与用户发送的标识及其地址相同 如果相同,票据有效,认证通过 C V 用户 应用服务器 Ticket = EKv[IDC , ADC , IDv] IDC:用户C的标识 PC:用户口令 IDv:服务器标识 ADC:用户网络地址
你的电影票 我要买票 这是我的电影票 Kerberos协议设计思路 Kerberos设计思路 电影院售票处 电影院 观众
你的电影票 我要买票,这是我的信用卡密码 这是我的电影票 Kerberos协议设计思路 Kerberos设计思路 问题:如何买票 答案:出示信用卡卡号和密码 电影院售票处 问题之一:信用卡问题 观众 电影院
你的电影票 这是我的电影票 这是我的电影票 这是我的电影票 Kerberos协议设计思路 Kerberos设计思路 问题之二:票的有效期问题 电影院售票处 我要买票,这是我的信用卡密码 观众 电影院
电影院乙 你的电影票 我要买票,这是我的信用卡密码 这是我的电影票??? 这是我的电影票 Kerberos协议设计思路 Kerberos设计思路 电影院售票处 问题之三:多个电影院问题 观众 电影院甲
Kerberos协议设计思路 Kerberos设计思路 上述协议问题? 上述协议的问题: (1)口令明文传送 (2)票据的有效性(多次使用) (3)访问多个服务器则需多次申请票据(即口令多次使用) 如何解决
Kerberos协议设计思路 • 问题: • 用户希望输入口令的次数最少。 • 口令以明文传送会被窃听。 • 解决办法 • 票据重用。 • 引入票据许可服务器(TGS - ticket-granting server) • 用于向用户分发服务器的访问票据; • 认证服务器 AS 并不直接向客户发放访问应用服务器的票据,而是由 TGS 服务器来向客户发放。
购票许可证 我要买票,这是我的信用卡密码 这是我的购票许可证 你的电影票 这是我的电影票 Kerberos协议设计思路 Kerberos设计思路 许可证部门 电影院售票处 问题:解决了重复使用信用卡问题,但是其他两个问题没有解决 引入了许可证可信问题 观众 电影院乙
Kerberos协议设计思路 Kerberos的票据 • 两种票据 • 票据许可票据(Ticket granting ticket) • 客户访问 TGS 服务器需要提供的票据; • 票据许可票据由 AS 发放; • 用 Tickettgs 表示访问 TGS 服务器的票据; • Tickettgs 在用户登录时向 AS 申请一次,可多次重复使用; • 服务许可票据(Service granting ticket) • 客户访问应用服务器需要提供的票据; • 用 TicketV 表示访问应用服务器 V 的票据。
Kerberos协议设计思路 共享“购票许可证”信息:不用出示信用卡及密码 许可证部门 电影院售票处 共享“电影票” 信息:不用多次购买许可证 共享信用卡信息 购买电影票 电影院 出示电影票 观众 最后一个问题:票的有效期问题 电影院 电影院 解决方法:时间
共享对称密钥Ktgs 共享用户口令Kc 共享对称密钥Kv 购买具有有效期的Ticket 具有有效期的Ticket Kerberos协议设计思路 Kerberos设计思路 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V)
Ktgs Ktgs Kv Kc 共享对称密钥Ktgs EKc{Ektgs{购票许可证}} 共享用户口令Kc 共享对称密钥Kv 我想看电影 Ektgs{购票许可证} Ekv{票} Ekv{票} Kv Kc Kerberos协议设计思路 Kerberos设计思路 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V)
Ktgs Ktgs Kv Kc 共享对称密钥Ktgs EKc{EKtgs{购票许可证,时间限制}} 共享用户口令Kc 共享对称密钥Kv 我想看电影 EKtgs{购票许可证,时间限制} EKv{票,时间限制} EKv{票,时间限制} Kv Kc Kerberos协议设计思路 Kerberos设计思路 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V) 可能被盗用
共享对称密钥Ktgs EKc{Kc,tgs, Ektgs{含Kc,tgs的购票许可证,时间限制}} 共享用户口令Kc 共享对称密钥Kv 我想看电影 Ektgs{含Kc,tgs的购票许可证,时间限制} EKc,tgs{Ekv{票,时间限制}} Ekv{票,时间限制} Kerberos协议设计思路 Kerberos设计思路 Ktgs Ktgs Kv Kc 认证服务器(AS) 票据许可服务器(TGS) Kv 用户(C) 服务器(V) Kc Kc,tgs 问题:单向认证
共享对称密钥Ktgs EKc{Kc,tgs, Ektgs{含Kc,tgs的购票许可证,时间限制}} 共享用户口令Kc 共享对称密钥Kv 我想看电影 Ektgs{含Kc,tgs的购票许可证,时间限制} EKc,tgs{Kc,v,Ekv{含Kc,v的票,时间限制}} Ekv{含Kc,v的票,时间限制} Ekc,v{时间限制} Kerberos协议设计思路 Kerberos设计思路 Ktgs Ktgs Kv Kc 认证服务器(AS) 票据许可服务器(TGS) Kv 用户(C) 服务器(V) Kc Kc,tgs Kc,v
Ktgs Ktgs Kv Kc EKc{Kc,tgs,IDtgs,TS2, LT2, Tickettgs} IDC, IDtgs,TS1 Kv Kc Kerberos协议描述 Kerberos V4协议描述:第一阶段 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V) Tickettgs=EKtgs{KC,tgs, IDC, ADC, IDtgs, TS2, LT2} Kc,tgs
Ktgs Ktgs Kv Kc IDV,Tickettgs, AUC EKC,tgs{KC,V,IDV,TS4, TicketV} Kv Kc Kc,tgs Kerberos协议描述 Kerberos V4协议描述:第二阶段 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V) Tickettgs=EKtgs{KC,tgs, IDC, ADC, IDtgs, TS2, LT2} AUC=EKC,tgs{IDC, ADC, TS3} Kc,v TicketV=EKV{KC,V, IDC, ADC, IDV, TS4, LT4}
Ktgs Ktgs Kv Kc TicketV, AUC EKC,V{TS5+1} Kv Kc Kc,tgs Kc,v Kerberos协议描述 认证服务器(AS) 票据许可服务器(TGS) Kerberos V4协议描述:第三阶段 用户(C) 服务器(V) Tickettgs=EKtgs{KC,tgs, IDC, ADC, IDtgs, TS2, LT2} TicketV=EKV{KC,V, IDC, ADC, IDV, TS4, LT4} AUC=EKC,tgs{IDC, ADC, TS3}
Ktgs Ktgs Kv Kc Kv Kc Kc,tgs Kc,v 四、Kerberos协议描述 Kerberos V4协议描述:共享密钥及会话密钥 认证服务器(AS) 票据许可服务器(TGS) Kc Kc,tgs KC,V 用户(C) 服务器(V)
Ktgs Ktgs Kv Kc EKc{Kc,tgs,IDtgs,TS2, LT2, Tickettgs} IDV,Tickettgs, AUC IDC, IDtgs,TS1 EKc,tgs{Kc,V,IDV,TS4, TicketV} TicketV, AUC EKC,V{TS5+1} Kv Kc Kerberos协议描述 认证服务器(AS) 票据许可服务器(TGS) 用户(C) 服务器(V) Tickettgs=EKtgs{KC,tgs, IDC, ADC, IDtgs, TS2, LT2} AUC=EKC,tgs{IDC, ADC, TS3} Kc,tgs Kc,v TicketV=EKV{KC,V, IDC, ADC, IDV, TS4, LT4}
Kerberos协议描述 Kerberos(V4)协议交互过程
Kerberos 版本 4 一个简单的认证会话: C=客户端 Pc=客户端上用户的口令 AS=认证服务器 ADc=客户端的网络地址 V=服务器 Kv=认证服务器和服务器间共享的加密密钥 IDc=客户端上用户的身份标识 IDv=服务器的身份标识
一个更安全的认证对话 每次用户登录会话就执行一次: 每种类型的服务执行一次: 每个服务会话执行一次:
Kerberos版本4的认证对话 图(a) 用于获取访问TGS服务器的票证 Ekc,tgs 图(b) 用于获得访问应用服务器的票证
Kerberos版本4的认证对话 图(c)为获得服务而进行的客户端/服务器认证交换
Kerberos总览 2.AS在数据库中检查用户的访问权限,生成票据授权票据和会话密钥。用由用户口令派生出的密钥加密结果。 1.用户登陆工作站,并请求主机服务 4.TGS解密票据和认证符,验证请求,然后生成对应被请求服务器的票据。 3.工作站提示用户输入口令,并用口令解密到来的消息。然后将票据和包含用户名、网络地址和时间的认证符发给TGS. 6.服务器验证票据和认证符是否匹配,然后允许访问服务。如果需要双向认证,服务器就返回一个认证符。 5.工作站向服务器发送票据和认证符
Kerberos中的域 • 一个域指一个Kerberos 服务器所直接提供认证服务的有效范围。 • 在通常情况下,Kerberos系统使用领域来控制一个由认证服务器进行认证的区域,每个认证服务器建立和维护自己的区域。 • Kerberos协议是支持跨域认证的,即一个域中的客户端能够被另一个域的服务器认证。
1 2 3 4 7 5 6 Kerberos认证过程 图释: 1.请求本地TGS票据 2.本地TGS票据 3.请求远程TGS票据 4.远程TGS票据 5.请求远程服务器票据 6.远程服务器票据 7.请求远程服务
Kerberos 版本4 上页图交换过程细节解释如下:
基本概念 • WorkgroupvsDomain • ActiveDirectory • DomainCtroller
活动目录 • 包括目录和目录服务。 • 目录是存储各种对象的容器,基本对象是用户、计算机、文件以及打印机等。 • 目录服务是使目录中所有对象发挥作用的服务,如用户和资源管理、基于目录的网络服务等。 • 活动目录是Windows Server 2003网络体系结构中不可分割的重要组件。
Windows2003的活动目录 • 活动目录为每个域建立一个目录数据库的副本,这个副本只存储用于这个域的对象。 • 域、域树、树林构成的层次结构。 • 如果多个域之间有相互关系,它们可以构成一个域树。 • 多个域树构成了树林。 • 这种层次结构便于组织管理以及目录定位。
域 • 域是活动目录的核心单元,是计算机、用户等对象的容器,一个域的管理权限只限于该域。 • 每个域至少包括一个域控制器。域控制器为网络用户和计算机提供活动目录服务、存储目录数据并管理用户和域之间的交互。 • 域控制器就是运行Windows Server 2003服务器的计算机。
域中的用户账户和计算机账户 • 在域控制器中设置了账户的计算机,只要开机就会连接到域中 • 用户只有通过自己的用户账户登录这台计算机,才能通过这台计算机来访问域资源。
Windows 2003中的Kerberos • Kerberos是Windows2003唯一的身份认证机制,通过KDC(密钥分发中心)来体现 • KDC以域为其作用范围,使用活动目录进行账号管理,并向客户端提供两个服务: • 认证服务(AS) • 票证颁发服务(TGS)
概述 • 只要安装Active Directory和运行一个域控制器,Kerberos就会安装并运行 • 当一个用户尝试登录时,系统就使用Kerberos对用户进行身份验证。 • Windows 2003的Kerberos实现由以下组件组成: • KDC • 账户数据库 • Kerberos策略
KDC(密钥分发中心) • KDC服务运行于Active Directory中的每个域控制器 • 当域控制器启动时,KDC服务自动启动并运行在本地系统账户下,它是本地安全机制LSASS程序的一部分 • KDC实现了Kerberos协议定义的两个服务: • 认证服务(AS) • TGS
账户数据库 • 使用Kerberos进行身份验证的用户账户是安全主体 • 按RFC1510规定,有关安全主体的信息必须存储在一个账户数据库中 • Windows 2003不是定义一个单独的账户数据库;而是使用Active Directory存储域中有关安全主体的信息。
Kerberos策略 • Windows 2003的Kerberos策略可在域一级设置 • 强制用户登录限制:这个策略被默认启用. • 服务票证最长寿命:服务票证是提供给应用服务器的TGT。这个设置必须大于10分钟,小于用户票证最长寿命。它以分钟计量,默认值是600(10小时)。 • 用户票证最长寿命:用户票证是提供给TGS的TGT.这个设置按小时计量,默认值是10。 • 用户票证续订最长寿命:TGT被缓存在用户工作站中,但过一段指定的时间后,必须被更新.这个设置以天计量,默认值是7。 • 计算机时钟同步的最大容差: 默认设置是5分钟。
用户登录到windows 2003的过程 • (1)用户按Ctrl+Alt+Delete开始登录; • (2)用户提供用户名、密码和域名,winlogon服务将这些信息发送到LSA进行验证; • (3)LSA使用一个散列函数将用户的密码转换成一个加密的密钥; • (4)LSA执行一个DNS搜索,以获得域的KDC的IP地址,LSA联系KDC的AS服务以获得TGT票证。 • (5)LSA向KDC的TGS服务请求服务票证,服务票证传递给用户。 • (6)用户使用服务票证请求使用计算机上的本地系统服务