• 01: kerberos认证原理


    1.1 kerberos认证浅析

      1、kerberos定义

          1. Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。

          2. Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

          3. Kerberos也能达到单点登录的效果,即当Client通过了Kerberos server的认证后,便可以访问多个Real Server。

      2、kerberos几个重要组件

          1. KDC:负责分发密钥的密钥分配中心

          2. Client:需要使用kerbores服务的客户端

          3. Service:提供具体服务的服务端

      3、kerberos中几个重要概念

          1. Client master key: KDC中存储的Client的密钥

          2. Server master key: KDC中存储的Server的密钥

          3. Sclient-Server:Client与Server之间的会话密钥

          4. Client Info:记录了Client本身的Ip等基本信息

      4、kerberos认证交互过程

        1)client从KDC获取Sclient-Server

            1. 用client公钥加密Sclient-Server发送给client【Sclient-Server + Client-master-key(加密)】

            2. 用server公钥加密Sclient-Server+ ClientInfo发送给client【Sclient-Server + ClientInfo + Server-master-key(加密)】

        2)client用Sclient-Server加密发送数据

            1. Client用自己的mClient-master-key解密KDC传过来的第一个包获得会话密钥Sclient-Server

            2. 并用Sclient-Server加密自己的的信息和时间戳打包后传送给Server,此时Client开始和Server交互

        3)server用私钥获取Sclient-Server,并用Sclient-Server解密client信息

            1. Server会收到两个数据包,一个用会话密钥(Sclient-Server)加密,一个用自己的(Server-master-key)加密。

            2. Server先用自己的Server-master-key解密获取会话密钥(Sclient-Server)和一份关于Client的信息。

            3. 然后Server拿到解密后获取到的会话密钥(Sclient-Server)再解开另外一个数据包,获得另一份关于Client的信息和时间戳。

      5、kerberos认证图解

          

      6、kerberos细节

        1)上面有个数据包是KDC经Client转发给Server的,为什么不直接发给Server?

            1. 因为Server可能给多个Client提供服务,这样Server需要维护一个Client和会话密钥的对应表,这对Server是一个负担。

        2)为什么要发两份关于Client的信息给Server?

            1. 通过这两份数据的对比,Server就能判断出是不是对的Client在访问服务。

        3)Client是如何判断自己在访问对的Server呢?

          1. 因为Client给Server的一个数据包是用Server的master key来加密的所以只有对的Server才能解密。

        4)为什么要用会话密钥

            1. 通信方的master key是长期有效的,如果在网络上传输,一旦被截取,理论上来说只要有足够的时间是可以破解的。

            2. 所以我们才用临时的会话密钥来通信,一段时间后会话密钥会过期,同时时间戳也防止了,恶意用户重复使用同一个数据包。

        5)为什么要用时间戳?

            1. 如果Client向Server传送的数据包被其他的Client截取,然后自己拿来向Server请求服务这,这样就会出问题

            2. Server收到请求后将从解密后的数据包中获得的时间戳和当前时间对比,一旦超过一定范围将直接拒绝请求

     1.2 kerberos常用命令

      https://www.cnblogs.com/chwilliam85/p/9679845.html

      https://www.cnblogs.com/kisf/p/7494203.html

    1111111111111111111111111111

  • 相关阅读:
    无法直接启动带有类库输出类型的项目
    2个页面传值方法
    vs2005 无法附加 绑定句柄无效 解决办法
    认识serializable,序列化
    jsp 连接sql 2008
    有进步,嘎嘎....
    找不到存储过程'dbo.aspnet_CheckSchemaVersion'
    BackOffice Common中实现的相关功能
    MVC中Action相关方法的建议
    mysql的数据库相关维护操作:重启、修改连接数、删除连接
  • 原文地址:https://www.cnblogs.com/xiaonq/p/10598280.html
Copyright © 2020-2023  润新知