zoukankan      html  css  js  c++  java
  • Kerberos协议

    kerberos的相关概念

    KDC:密钥分发中心。域内认证不再是两台机器之间互相请求的认证,而是通过第三方可信机构KDC来实现整个认证体系。从物理层面看,KDC的角色实际为域控制器,包括AD数据库、AS身份认证中心、TGS票据分发中心

    AD:活动目录数据库。存放者域控的NTDS.dit文件,存储域中所有用户名和对应的NTLM Hash,KDC可以从AD中提取域中所有用户的NTLM Hash,这是kerbberos协议能够成功的基础。

    AS:身份认证服务。负责对client的身份验证,像client发放TGT票据

    TGS:票据授予服务。负责向client发放ticket,ticket允许client像server发起请求

    kerberos认证流程

    1、client像KDC发起访问请求,希望获取到server的访问权限,KDC中的AS得到消息后,会从AD数据库中寻找该用户是否可以访问,如果可以访问则放回TGT给Client。

    2、client收到AS给的TGT之后,再次像KDC发起请求,希望想访问到server,KDC中的TGS收到请求之后,判断Client拥有访问权限,于是发放Ticket给Client

    3、Client收到TGS发放的Ticket之后,便可以访问到Server,但是这个Ticket只能用于申请访问的Server,别的Server不可以,如果需要访问,则需要重新请求

    kerberos认证具体过程

    image-20211203101841489

    1、A用明文(包括登记的身份)向鉴别服务器AS表明自己的身份。AS掌握了各实体登记的身份和口令。AS对A进行身份验证,如果验证通过,允许A和票据授予服务器TGS进行联系。

    2、鉴别服务器AS向A发送用A的对称密钥Ka加密的报文,这个报文包含A和TGS通信的会话密钥Ks以及AS要发送给TGS的票据(用TGS的对称密钥Ktg加密的)。A不保存密钥Ka报文到达A之后,A就键入口令,配合算法一起就能生成密钥Ka,随机口令被销毁。密钥Ka用来对AS发送过来的报文进行解密,这样就能提取出会话密钥Ks(这个是A和TGS通信用的)以及要转发给TGS的票据(密钥Ktg加密的)

    3、 A向TGS发送三项内容: a、转发AS发的票据 b、服务器B的名字,这表示A请求B的服务。注意到现在A向TGS证明自己的身份 不再是键入口令(因为入侵者能够从网上截取口令),而是通过转发AS发出的 票 据(只有A才能提取)。票据是加密的,入侵者无法伪造 c、用Ks加密的时间戳T,防止入侵者的重放攻击

    4、TGS发送两个票据,每一个都包含A和B通信的会话密钥Kab,给A的票据用Ks加密,给B的票据用B的密钥Kb加密,请注意,现在入侵者无法提取Kab,因为不知道Ks和 Kb,入侵者也无法重放步骤3。

    5、A用ks解密之后可以得到kab,也就是获得了和B通信的资格,然后A向B转发TGS发来的票据,同时发送用Kab加密的时间戳T

    6、B把时间戳T加1来证实收到票据,B向A发送的报文用密钥Kab加密。

    以后,A和B就使用TGS给出的会话密钥Kab进行通信。

  • 相关阅读:
    2018最新程序员必备技术类微信公众号
    Navicat Premium for Mac 11.1.8 免费中文破解版下载
    尚硅谷Spring4视频教程免费下载
    业余草www.xttblog.com的最新文章推荐
    AdBlock — 最佳广告拦截工具(Chrome插件安利)
    Leetcode 705. 设计哈希集合【哈希表模板】
    Luogu P3370 【模板】字符串哈希
    POJ3737 UmBasketella
    POJ2456 Aggressive cows
    docker 离线安装
  • 原文地址:https://www.cnblogs.com/HelloCTF/p/15748372.html
Copyright © 2011-2022 走看看