zoukankan      html  css  js  c++  java
  • 身份与访问控制之Kerberos认证过程和SESAME

    Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
    在kerberos认证过程中,会有以下几个角色:
    • KAS(Kerberos Authentication Server)= 认证服务器
    • KDC(Key Distribution Center)= 密钥分发中心
    • TGT(Ticket Granting Ticket)= 票据授权票据,票据的票据
    • TGS(Ticket Granting Server)= 票据授权服务器
    • SS(Service Server)= 特定服务提供端
    第一步:用户向KAS发送 用户名和用户加密的请求信息的Request消息
     
    1.5 KAS查找对应用户的密码,后生成一个hash,生成一个秘钥(用密码生成hash )对Authenticator进行解密。如果解密后的内容和已知的内容一致,则证明请求者提供的密码正确,即确定了登录者的真实身份。注意,仅仅是验证是否存在,不会验证对错。
    TGT的有效时间,有的地方叫Timestamp ,KAS同当前的时间进行比较,如果他们之间的偏差超出一个可以接受的时间范围(一般是5mins),AS 会直接拒绝该 Client 的请求。当AS Request中的 Timestamp 早于上次认证时间点,也是直接拒绝。
     
    第二步:提供给合法请求用户TGT和使用用户加密的TGS session key
    如果你的密码是正确的,你就能解密第二部分信息,获取到TGS session key。如果,密码不正确,无法解密,则认证失败。
    第一部分信息TGT,你是无法解密的,但需要暂时缓存起来。
    注:有的地方会将TGS session key定义为Logon Session Key
    TGT的生命周期一般为10-8小时
    第三步:用户向TGS发送HTTP请求和KAS给的TGT和使用TGS session key加密的用户信息
     
     
    TGS检查过程:
    1)检查数据库中是否包含有你请求的Http服务名。如果无,直接返回错误信息。
    2)通过KDC的密码解密TGT,获打开TGT取到TGS Session key。
    3)通过TGS Session key解密你传输的第一部分认证器,获取到你的用户名和时间戳。
    4)验证加密认证器中的信息是否正确。
    • 对比TGT中的用户名与认证器中的用户名
    • 比较时间戳,不能超过一定范围
    • 检查是否过期
    • 检查IP地址是否一致
    • 检查认证器是否已在TGS缓存中(避免应答攻击)
    • 可以在这部分添加权限认证服务
     
    第四步:TGS向用户发送ST和TGS session key加密的Http Service Session Key信息
    你收到信息后,通过TGS Session Key解密,获取到了Http Service Session Key,但是你无法解密ST。
    第五步:用户发送请求到具体要访问的应用
     
    Http服务端通过自己的密码解压ST(KDC是用Http服务的密码加密的),这样就能够获取到Http Service Session Key,解密第一部分。
    使用Http Service Session Key服务端解密好ST,对比如下信息:
    • ST中的用户名(KDC给的)与认证器中的用户名
    • 比较时间戳,不能超过一定范围
    • 检查是否过期
    • 检查IP地址是否一致
    • 检查认证器是否已在HTTP服务端的缓存中(避免应答攻击)
    第六步:访问的应用返回值,用户验证服务是否合法
    你在通过缓存的Http Service Session Key解密这部分信息,然后验证是否是你想要的服务器发送给你的信息。完成你的服务器的验证。
    至此,整个过程全部完成。全过程利用的对称加密技术。时间戳是为了解决重放攻击的问题
    缺点
    • KDC可能成为单一故障
    • 秘密密钥存储在用户的工作站上
    • 会话密钥存储在用户的缓存或密钥表中
    • 所有客户端必须时间同步
    SESAME(多厂商环境下欧洲安全应用系统)被开发解决kerberos中的一些弱点,使用公钥密码学进行密钥分配,并提供额外的访问控制支持
    SESAME解决了时隙重放的问题,kerberos和SESAME存在一个共同的问题是对静态空口令猜测
    使用PAS和PAC的身份验证协议,基于对称和非对称密码
    Kerberos使用票证来验证用户身份,SESAME使用特权属性证书(PAC)验证,PAC包括主体的身份、访问的客体的功能、访问时限和PAC的生命周期
    PAC使用数字签名技术,因此客体可以验证它是否来自可信任的验证服务器,即特权服务器(PAS)
    PAS和kerberos内的密钥分发中心(KDC)承担相似的角色。在用户验证服务处成功验证了身份后,他便被授予一个令牌再发送给PAS
    PAS创建一个PAC以供用户出示给他访问的资源
    SESAME验证过程:
    1)用户发起请求到AS(认证服务器)
    2)AS发送一个token给用户,用于与PAS通信
    3)用户发起访问请求,并将token发送给PAS
    4)PAS创建会话,并发送PAC给用户
    5)用户发送PAC去认证访问资源
     
    特别声明:
    1.以上所有描述内容部分参考链接/文献未逐一列出,若有侵权,请及时告知,有则改之无则加勉。
    2.以上仅是学习过程的总结,相信有很多理解偏差的地方,特别希望指出,给予帮助,更新知识体系,共同进步。
    参考链接:
    https://blog.csdn.net/wy_97/article/details/87649262  windows 域认证 Kerberos详解
    https://www.cnblogs.com/artech/archive/2011/01/24/kerberos.html  Windows安全认证是如何进行的?[Kerberos篇]
    https://www.cnblogs.com/luxianghao/p/5269739.html 浅析Kerberos原理,及其应用和管理
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    应用程序中的服务器错误,怎么解决
    日期格式
    怎样破解网页禁用鼠标右键
    web.config中配置页面出错后跳转指定错误页面
    无法复制文件
    jquery 上传图片即时预览功能
    jquery若干问题
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
    使用jquery 对 radio 和 select 的各种操作.
    零散技术整理
  • 原文地址:https://www.cnblogs.com/worter991/p/13345676.html
Copyright © 2011-2022 走看看