SSH与Kerberos原理、关系和区别

SSH和Kerberos是用来进行安全认证和安全通讯的,它们之间的关系是什么,区别是什么?

 

SSH是安全认证的安全通讯的方法,Kerberos是安全认证和安全通讯的一套架构体系。SSh采用简单的方法 client <--> Server 之间进行安全认证和安全通讯。 Kerberos的认证架构系统中包括KDC,Service Server和Service Client。简单地说,SSH用在clients和一台Server之间进行安全认证,而Kerberos用在clients和多台Service Servers之间进行安全认证。Kerberos的出现就是为了解决在一个系统中每台Server都独立认证的繁琐问题,而采用集中认证。

 

SSh的安全认证方法有4种:Host-Based authentication、Public-key authentication、Challenge-response authentication和Password authentication。我们通常使用Public-key authentication和Password authentication。

 

Public-key安全认证方法是user调用ssh-keygen命令产生public-keys和private-key pairs,user把private-key和public-key存储在本地 ~/.ssh/identity (protocol 1), ~/.ssh/id_dsa (protocol 2 DSA), 或者 ~/.ssh/id_rsa (protocol 2 RSA) ,把 public-key存储在本地 ~/.ssh/identity.pub (protocol 1), ~/.ssh/id_dsa.pub (protocol 2 DSA), 或者 ~/.ssh/id_rsa.pub (protocol 2 RSA)。接着user把public-key拷贝到远程要访问的Server的user的home目录下的~/.ssh/authorized_keys。

 

public/private-key pairs是如何进行安全认证的呢。public/private-key是非对称的加密/解密方法。即用public-key加密的信息,只能用private-key揭开;用private-key加密的信息,只能用public-key解开。这与传统的对称加密/解密方法是完全不同的。对称的加密/加密方法是用encrypted-key加密,只能用这个 encrypted-key解密,所以加密/解密双方必先约定一个encrypted-key。但是对称的加密/解密方法有更好的效率,所以一般使用非对称加密/解密方法认证和约定传输信息的对称加密/解密的encrypted-key,而使用对称加密/解密的方法开保证传输线程的安全。SSh/TLS正是使用了这样的方式。

 

public-key的安全认证过程:

                                  login(user-name)

           user(client)------------------------------------->  server

                     public-key(host-key,message, transfer encrypted-key)

          server  --------------------------------------------> user

                      encrypted-key(message)

          user  --------------------------------->  server

                       encrypted-key(ok)

          server -------------------------------->  user    // establish the connection

 

 

SSh的Password安全认证过程:

 

                                  login(user-name)

           user(client)------------------------------------->  server

 

                      password(host-key,message, transfer encrypted-key)

           server  --------------------------------------------> user

                        encrypted-key(message)

          user   --------------------------------->  server

                        encrypted-key(ok)

          server -------------------------------->  user    // establish the connection

 

从SSH的两种安全认证的方法看到,Public-Key和Passord的认证交互过程是基本一样的,区别就是Password认证user要把自己的password公开给server,而public-key认证user只需要把public-key公布给server,从而增加了更多的安全性。

 

上面的认证只涉及Server对User的安全认证,那User如何对Server进行安全认证呢。SSH中使用host-key来帮助User对Server进行认证。Server的host-key存储在User本地的~/.ssh/known_hosts中,如果Server的host-key发生变化,SSH则会通知User,这样可以避免假Server的欺骗和man-in-the-middle攻击。

 

Kerberos是如何进行安全认证的呢。

 

Kerberos的设计目标是在一个系统中,用户只需一次集中安全口令认证从而可以访问系统中的Service Servers。因此在认证系统中要有一个独立的Authentication Server(AS)。

 

AS如果让通过安全口令认证的用户访问系统中的Service Servers呢。在日常生活中,简单的做法是AS给通过口令认证的用户一个Service Server的ticket,用户拿着ticket去访问Service Server。为了防止伪ticket的危害,ticket必须要经过加密,所以AS和Service Server之间有约定的加密密钥,即AS知道Server key,记为K_server。

 

Service Servers有责任和义务保护用户的数据安全,即Service Servers必须要保证用户的数据不能被其他人获取和修改。所以Service Servers也要通过安全认证来保证试图访问的用户就是用户本人。现在没有了口令认证,如何保证呢。是否可以通过用户的身份信息来验证呢,即用户的name,location(ip-addr);但是这些身份信息任何人都可以获取的,所以用户很容易被被他人仿冒。明的信息不可靠,那就用暗号吧!就像电影中描述的,秘密组织间使用暗号联络。Kerberos正是使用了“暗号”来确保Service Servers对用户的身份认证,“暗号”称为Session key,记为K_session。

用户通过口令安全认证后,向AS请求要访问Service Server A,AS验证用户是否有权限,若有,就分配“暗号号” K_session给用户和Server A。“暗号”K_session放在Server的ticket中,同时返回给用户。“暗号”K_session返回给用户是否会被窃取呢,不会的!因为AS和用户之间的通讯是经过加密的,安全的。

 

为了系统架构的更加清晰,Kerberos把用户口令认证的模块AS和分配Service Server ticket的模块分开,分配Service Server ticket的模块成为Ticket Granting Server,即TGS。AS验证用户口令安全后,把TGS的ticket发给用户,用户拿着TGS的ticket访问TGS,请求Service Servers的tickets。

 

 

Kerberos的认证流程:

                             user-name, ip-addr

      User  ------------------------------------------------------------------>  AS

 

              user_password(K_session_tgs),

              K_tgs(user-name, ip-addr, tgs-name, ticket_life, K_session_tgs)

      AS   ---------------------------------------------------------------------> User

 

              K_session_tgs(user-name,ip-addr),

              K_tgs(user-name, ip-addr, tgs-name, ticket_life, K_session_tgs)

      User ---------------------------------------------------------------------> TGS

 

              K_session_tgs(K_session_server),

              K_server(user-name, ip-addr, server-name, ticket_life, K_session_server)

      TGS --------------------------------------------------------------------------> User

 

              K_session_server(user-name,ip-addr),

              K_server(user-name, ip-addr, server-name, ticket_life, K_session_server)

      User --------------------------------------------------------------------------> Server

 

                                           ok--connection established

      Server ------------------------------------------------------------------------> User

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kerberos是一个密钥分配协议和鉴别协议,同时也是一个密钥分配中心(KDC)。它采用AES进行加密,因此具有更高的安全性。Kerberos的工作原理如下: 1. 客户端向KDC发送身份验证请求。这个请求包括客户端的身份信息和时间戳。 2. KDC验证客户端的身份,并生成一个票据授予票据(TGT),其中包含客户端的身份信息和一个会话密钥。 3. KDC将TGT发送给客户端。 4. 客户端使用自己的密码解密TGT,并获得会话密钥。 5. 客户端向KDC发送服务票据请求,其中包括服务的标识符和会话密钥。 6. KDC验证客户端的会话密钥,并生成一个服务票据(ST),其中包含服务的标识符和一个服务会话密钥。 7. KDC将ST发送给客户端。 8. 客户端将ST发送给服务。 9. 服务使用自己的密钥解密ST,并验证客户端的身份。 10. 一旦验证成功,服务和客户端可以使用会话密钥进行加密和解密通信。 Kerberos原理是通过共享密钥和票据来实现安全的身份验证和访问控制。客户端只需要进行一次身份验证,就可以使用获得的票据访问多个服务,实现单点登录(SSO)。由于消息无法穿透防火墙,Kerberos通常用于组织内部的应用场景。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Kerberos 原理简介](https://blog.csdn.net/qq_34902437/article/details/106380629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Kerberos协议工作原理](https://blog.csdn.net/qq_32005671/article/details/54862678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值