安全外壳协议应用中的用户认证方法及装置的制作方法

文档序号:7655332阅读:154来源:国知局
专利名称:安全外壳协议应用中的用户认证方法及装置的制作方法
技术领域
本发明涉及用户认证技术,特别涉及一种安全外壳协议应用中的用户认证方法及装置,属于通信领域。
背景技术
安全外壳协议(简称SSH)作为一种安全的远程登录方式,可以有效地保护登录用户私有信息以及交互信息的机密性,防止非法用户的窃听。在保护用户的数据机密性的同时,SSH也提供一套机制,供服务器完成对登录用户进行严格的身份认证,从而保证服务器的安全,这套机制就是服务器对用户的密钥认证方式。
现有技术中,在使用SSH进行远程登录时,通常采用公钥认证这种较为安全的认证方法,服务器端存放公钥,客户端存放私钥,用户从客户端登录时,使用私钥产生数字签名,发往服务器认证,服务器使用本端保存的公钥对用户身份进行验证。
现有技术中,对私钥的使用有如下方法第一种方法用户可直接选择或尝试客户端预先储存的私钥以向服务器进行认证,也可使用客户端储存的默认的私钥向服务器进行认证。
上述方法的缺陷在于可能因客户端遭受攻击而使得入侵者能够使用客户端的私钥与服务器进行认证和通信,当某个客户端设备上保存了一条合法的私钥(这条私钥对应的公钥在远端服务器上存在),这时候任何能够登录上这台设备的用户,只要知道服务器端相应的用户名,就能从该客户端设备登录上远端服务器。由于客户端设备的用户登录方式不一定是安全的,这就间接威胁到了远端服务器的安全。
如图1所示,用户登录SSH客户端可能使用的是不安全的连接,比如telnet。这种连接很容易被非法的用户攻击(比如可以窃听合法用户登录时的用户名和密码),当这个非法用户登录上SSH客户端设备之后,如果其获得了远端服务器上的SSH用户信息(可通过查看客户端的一些调试消息或者日志信息等来得到),就可以使用获取的用户名,并利用该客户端保存的私钥登录上远端服务器。这时候虽然远端服务器采用了SSH这种安全连接方式,且使用公钥认证这种安全级别较高的认证方式,但是由于SSH客户端的安全性隐患,导致这种安全机制“形同虚设”。
同时,上述方法还存在一个问题,即对使用同一个私钥的用户不能进行权限的细分。虽然可以通过在SSH服务器端配置不同的SSH用户,进行权限的划分。但是对于某些应用环境,这种仅仅依赖用户名的用户权限划分是远远不够的。比如下面这种情况如图2所示,用户A、用户B、用户C都通过同一个SSH客户端登录远端的SSH服务器,三者使用同一条公钥。可能对于用户A而言,我们希望赋予其管理员的权限,A可以对远端的SSH服务器进行任何配置,而对用户B而言,我们只希望其能进行部分配置,而对于用户C我们可能希望它只能访问,不能进行任何配置。
A、B、C可能是在同一个实验室的网络管理员,都使用串口等方式登录上设备,也可能是远程用户。不管是何种用户,A,B,C三者互相知道对方在远程SSH服务器上的用户名是很有可能的。如果仅仅是依靠在远端SSH服务器上使用不同SSH用户名来区分三个用户,用户C完全可以使用用户A在远端服务器上的用户名进行登录,从而获取更高的权限。
第二种方法在客户端生成密钥对的同时生成与密钥对一一对应的用户口令并保存在客户端,用户在使用私钥时必须输入对应的口令才能通过认证。
该方法的缺陷在于由于这种认证方式对口令的验证是在客户端进行的,而不是在服务器端,这种安全是基于某条公钥对应一条特殊的口令的,攻击者完全可能自己构建环境,对这条口令进行猜测,而不通过服务器端(也就没有认证次数限制),一旦口令被猜测成功,攻击者就可以成功登录上服务器。。而且私钥的口令是在创建的时候由创建者产生的,除非有专门的工具软件,否则是不能修改该私钥的口令的。当某条私钥的口令由于某种原因泄密,或者被破解,这条私钥就必须被更新(同时需要更新SSH服务器上的公钥),造成使用不便。此外该方法由于一条私钥对应一个passphrase,使得不同的用户必须使用不同的私钥。对于有些只可能存在一条私钥的终端,就不可以允许多个用户使用该终端进行登录了。即使有的终端可以存储多条私钥,一个用户就需要存储一个公钥的方式也是相当浪费的。对客户端和服务器端的存储空间占用比较大。

发明内容
本发明的目的是提供一种安全外壳协议应用中的用户认证方法及装置,能够有效地克服上述现有技术的缺陷,大大增强安全外壳协议应用的安全性,有效地保护SSH连接不受终端安全性的影响。
为实现上述发明目的,本发明提供了一种安全外壳协议应用中的用户认证方法,包括服务器收到客户端发送的私钥并验证通过后,向客户端发起密码认证的挑战;客户端向服务器返回用户输入的密码;服务器对客户端返回的密码进行验证,当该密码通过验证时,对该用户的认证通过。
在上述技术方案中,通过在服务器验证客户端发送的私钥之后,还向客户端发起密码认证的挑战,并对客户端返回的密码进行验证,由于客户端返回的密码是用户在客户端收到服务器发送的密码认证挑战之后输入的密码,而非储存在客户端中的口令,因此能够有效地避免现有技术中因为客户端被攻击者入侵而导致私钥和口令被盗用的缺陷,大大提高安全外壳协议应用的安全性,有效地保护SSH连接不受终端安全性的影响。
为实现上述发明目的,本发明还提供了一种安全外壳协议应用中的用户认证装置,包括用于在收到客户端发送的私钥并验证通过后向客户端发起密码认证的挑战的第一模块;以及用于对客户端返回的密码进行验证、当该密码通过验证时对该用户的认证通过的第二模块。
上述技术方案中,所述安全外壳协议应用中的用户认证装置可设于服务器中,也可独立设置在客户端与服务器之间。通过该装置在服务器验证客户端发送的私钥之后,还向客户端发起密码认证的挑战,并通过该装置对客户端返回的密码进行验证。由于客户端返回的密码是用户在客户端收到服务器发送的密码认证挑战之后输入的密码,而非储存在客户端中的口令,因此采用该装置能够有效地避免现有技术中因为客户端被攻击者入侵而导致私钥和口令被盗用的缺陷,大大提高安全外壳协议应用的安全性,有效地保护SSH连接不受终端安全性的影响。


图1为现有技术中客户端遭受的攻击模式的示意图;图2为现有技术中用户权限控制模式的示意图;图3为本发明安全外壳协议应用中的用户认证方法的实施例一的流程示意图;图4为本发明安全外壳协议应用中的用户认证方法的实施例二的示意图。
具体实施例方式
下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明的基本构思为针对现有技术中SSH连接的安全性容易受到客户端安全性的影响的缺陷,引入一种新的用户认证方式即密码-公钥方式,用户不仅需要拥有正确的私钥,还必须知道相应的密码才能成功登录上SSH服务器,而且该密码并非如现有技术中储存在客户端,而是由用户输入,由服务器对用户输入的密码进行验证,从而有效地避免了客户端受到入侵时对SSH连接安全性的影响,大大提高了SSH应用的安全性,并且也大大减少了对客户端存储资源的占用。
图3为本发明安全外壳协议应用中的用户认证方法的实施例一的流程示意图,本实施例一包括以下步骤在步骤1中,服务器收到客户端发送的私钥并验证通过后,向客户端发起密码认证的挑战;然后在步骤2中,客户端向服务器返回用户输入的密码;继而在步骤3中,服务器对客户端返回的密码进行验证,当该密码通过验证时,对该用户的认证通过。
在上述实施例一中,通过在服务器验证客户端发送的私钥之后,还向客户端发起密码认证的挑战,并对客户端返回的密码进行验证,由于客户端返回的密码是用户在客户端收到服务器发送的密码认证挑战之后输入的密码,而非储存在客户端中的口令,因此能够有效防止终端的私钥被非法用户使用并成功登录,也能够有效防止使用相同资源的不同用户使用其它用户的用户名获取不属于自身的权限,从而有效地避免现有技术中因为客户端被攻击者入侵而导致私钥和口令被盗用的缺陷,大大提高安全外壳协议应用的安全性,有效地保护SSH连接不受终端安全性的影响。
本发明安全外壳协议应用中的用户认证方法的实施例二与上述实施例一的区别在于在步骤1之前还包括服务器预先存储与客户端的每个用户一一对应的密码;步骤3中所述服务器对客户端返回的密码进行验证具体包括服务器将预先存储的、与该用户对应的密码与客户端返回的密码相比较,当二者相同时,客户端返回的密码通过验证。
上述实施例二中,针对现有技术中未能很好地划分使用同一个私钥的用户、并且私钥与口令一一对应导致大量占用储存资源并且维护更新复杂的缺陷,采取新的密码验证方式,通过为使用同一个私钥的不同用户分配与用户一一对应的密码,密码与私钥并不具有一一对应关系,从而避免了密钥和密码的非必要关连,能够使用同一个私钥配置多个用户而不占用客户端的存储资源,避免了对终端资源造成的浪费;同时在密码泄露时只需重新配置密码即可,而非现有技术中的重新生成密钥对以及对应的口令,从而大大提高了更新维护的方便性。
例如,可如图4所示,服务器端由管理员配置SSH用户,设置用户的认证方式为密码-公钥方式,并为用户关联一个与终端保存的私钥对应的公钥以及一串密码(如果是SSH服务器上采取远程认证,可以在远程认证服务器上创建相同名称的用户,并为其设置密码)。用户使用的密码与私钥没有必然关系,可以在服务器的管理员任意指定,这样就可以利用终端上的一个私钥安全地配置不同的用户,并且不受终端的规格限制。
更进一步地,为了避免非法用户侵入终端后使用合法用户的私钥进行登录,从而威胁到SSH服务器的安全,还可在服务器端为若干个密码-公钥认证方式的用户配置相同的公钥和不同的密码,并为用户配置不同的权限级别,使得这些用户能够从同一个终端使用相同的私钥进行登录,并获取不同的用户权限。
例如,在本发明安全外壳协议应用中的用户认证方法的实施例三中,与上述实施例二的区别在于所述服务器预先存储与客户端的每个用户一一对应的密码还包括服务器预先存储与使用同一私钥的不同的用户一一对应的用户权限信息;服务器在对用户认证通过后,根据该用户对应的用户权限信息对该用户的操作进行限制。
上述实施例三中,通过基于相同的密钥对配置不同的用户,以密码来区分不同的用户,既提高了安全性,又节省了终端资源;通过基于同一密钥对配置不同用户并区分用户权限,能够在多用户共享的环境中控制不同用户的权限。
更进一步地,所述服务器对客户端返回的密码进行验证还可包括在服务器上预先设置用户登录的上限次数,在用户登录失败的次数超过该上限次数后将该用户记入黑名单中,禁止该用户继续登录。通过在服务器端进行密码认证比现有在客户端进行的口令认证具有更高的安全性,并且通过在服务器端限制客户端进行认证的次数,从而可以有效地避免客户端进行强行猜测。
更进一步地,所述服务器对客户端返回的密码进行验证还可具体包括所述服务器将客户端返回的密码发送给远程的认证/授权/统计服务器(简称AAA服务器)进行验证。通过使用远程AAA服务器的AAA认证功能(如tacacs、radius等协议),从而能够很好地使SSH服务器的认证功能与远程AAA服务器的功能有机结合起来,在提供公钥认证的安全性的同时也提供了组网的易用性,便于在原有组网环境中很容易地引入公钥认证。
综上所述,本发明通过引入密码-公钥这种用户认证方式,在公钥认证的基础上引入密码认证,在私钥的使用上又另外加了一层“锁”,确保私钥的使用安全。同时这种认证方式并没有将密码认证使用的密码和私钥绑定,这样就可以允许管理员基于一组密钥对配置多个公钥认证的用户,在不影响安全性的基础上方便了服务器的配置并有利于节省终端资源。此外,通过基于同一密钥对配置不同用户并区分用户权限,从而能够在多用户共享的环境中控制不同用户的权限。同时,通过在服务器端进行密码认证比现有在客户端进行的口令认证具有更高的安全性,并且通过在服务器端限制客户端进行认证的次数,从而可以有效地避免客户端进行强行猜测。
基于上述发明构思,本发明还提供了一种安全外壳协议应用中的用户认证装置,本发明安全外壳协议应用中的用户认证装置的实施例一包括用于在收到客户端发送的私钥并验证通过后向客户端发起密码认证的挑战的第一模块;以及用于对客户端返回的密码进行验证、当该密码通过验证时对该用户的认证通过的第二模块。
上述本发明安全外壳协议应用中的用户认证装置的实施例一中,所述安全外壳协议应用中的用户认证装置可设于服务器中,也可独立设置在客户端与服务器之间。通过该装置在服务器验证客户端发送的私钥之后,还向客户端发起密码认证的挑战,并通过该装置对客户端返回的密码进行验证。由于客户端返回的密码是用户在客户端收到服务器发送的密码认证挑战之后输入的密码,而非储存在客户端中的口令,因此采用该装置能够有效地避免现有技术中因为客户端被攻击者入侵而导致私钥和口令被盗用的缺陷,大大提高安全外壳协议应用的安全性,有效地保护SSH连接不受终端安全性的影响。
进一步地,针对现有技术中未能很好地划分使用同一个私钥的用户、并且私钥与口令一一对应导致大量占用储存资源并且维护更新复杂的缺陷,上述本发明安全外壳协议应用中的用户认证装置的实施例一中,所述第二模块还可包括第一存储模块,用于预先存储与客户端的每个用户一一对应的密码;以及比较处理模块,用于将存储模块预先存储的、与该用户对应的密码与客户端返回的密码相比较,当二者相同时,客户端返回的密码通过验证。通过上述模块,为使用同一个私钥的不同用户分配与用户一一对应的密码,密码与私钥并不具有一一对应关系,从而避免了密钥和密码的非必要关连,能够使用同一个私钥配置多个用户而不占用客户端的存储资源,避免了对终端资源造成的浪费;同时在密码泄露时只需重新配置密码即可,而非现有技术中的重新生成密钥对以及对应的口令,从而大大提高了更新维护的方便性。
更进一步地,为了避免非法用户侵入终端后使用合法用户的私钥进行登录,从而威胁到SSH服务器的安全,上述本发明安全外壳协议应用中的用户认证装置的实施例一还可包括第二存储模块,用于预先存储与使用同一私钥的不同的用户一一对应的用户权限信息;以及权限控制模块,用于在第二模块对用户认证通过后、根据第二存储模块预先存储的与该用户对应的用户权限信息对该用户的操作进行限制。通过基于相同的密钥对配置不同的用户,以密码来区分不同的用户,既提高了安全性,又节省了终端资源;同时通过基于同一密钥对配置不同用户并区分用户权限,能够在多用户共享的环境中控制不同用户的权限。
更进一步地,上述本发明安全外壳协议应用中的用户认证装置的实施例一还可包括登录限制模块,用于在服务器上预先设置用户登录的上限次数,在用户登录失败的次数超过该上限次数后将该用户记入黑名单中,禁止该用户继续登录。通过在服务器端进行密码认证比现有在客户端进行的口令认证具有更高的安全性,并且通过在服务器端限制客户端进行认证的次数,从而可以有效地避免客户端进行强行猜测。
更进一步地,上述本发明安全外壳协议应用中的用户认证装置的实施例一中,所述第二模块还可包括远程通信模块,用于将客户端返回的密码发送给远程的认证/授权/统计服务器进行验证。通过远程通信模块来使用远程AAA服务器的AAA认证功能(如tacacs、radius等协议),从而能够很好地使SSH服务器的认证功能与远程AAA服务器的功能有机结合起来,在提供公钥认证的安全性的同时也提供了组网的易用性,便于在原有组网环境中很容易地引入公钥认证。
以上实施例仅用以说明本发明的技术方案,而非对本发明作限制性理解。尽管参照上述较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换,而这种修改或者等同替换并不脱离本发明技术方案的精神和范围。
权利要求
1.一种安全外壳协议应用中的用户认证方法,其特征在于,包括服务器收到客户端发送的私钥并验证通过后,向客户端发起密码认证的挑战;客户端向服务器返回用户输入的密码;服务器对客户端返回的密码进行验证,当该密码通过验证时,对该用户的认证通过。
2.根据权利要求1所述的方法,其特征在于在所述服务器收到客户端发送的私钥之前还包括服务器预先存储与客户端的每个用户一一对应的密码;所述服务器对客户端返回的密码进行验证具体包括服务器将预先存储的、与该用户对应的密码与客户端返回的密码相比较,当二者相同时,客户端返回的密码通过验证。
3.根据权利要求2所述的方法,其特征在于所述服务器预先存储与客户端的每个用户一一对应的密码还包括服务器预先存储与使用同一私钥的不同的用户一一对应的用户权限信息;服务器在对用户认证通过后,根据该用户对应的用户权限信息对该用户的操作进行限制。
4.根据权利要求1所述的方法,其特征在于,所述服务器对客户端返回的密码进行验证还包括在服务器上预先设置用户登录的上限次数,在用户登录失败的次数超过该上限次数后将该用户记入黑名单中,禁止该用户继续登录。
5.根据权利要求1所述的方法,其特征在于,所述服务器对客户端返回的密码进行验证具体包括所述服务器将客户端返回的密码发送给远程的认证/授权/统计服务器进行验证。
6.一种安全外壳协议应用中的用户认证装置,其特征在于,包括用于在收到客户端发送的私钥并验证通过后向客户端发起密码认证的挑战的第一模块;以及用于对客户端返回的密码进行验证、当该密码通过验证时对该用户的认证通过的第二模块。
7.根据权利要求6所述的装置,其特征在于,所述第二模块还包括第一存储模块,用于预先存储与客户端的每个用户一一对应的密码;比较处理模块,用于将存储模块预先存储的、与该用户对应的密码与客户端返回的密码相比较,当二者相同时,客户端返回的密码通过验证。
8.根据权利要求7所述的装置,其特征在于,还包括第二存储模块,用于预先存储与使用同一私钥的不同的用户一一对应的用户权限信息;权限控制模块,用于在第二模块对用户认证通过后、根据第二存储模块预先存储的与该用户对应的用户权限信息对该用户的操作进行限制。
9.根据权利要求6所述的装置,其特征在于还包括登录限制模块,与第二模块连接,用于在服务器上预先设置用户登录的上限次数,在第二模块对用户登录进行认证的失败次数超过该上限次数后将该用户记入黑名单中,禁止该用户继续登录。
10.根据权利要求6所述的装置,其特征在于,所述第二模块还包括远程通信模块,用于将客户端返回的密码发送给远程的认证/授权/统计服务器进行验证。
全文摘要
本发明公开了一种安全外壳协议应用中的用户认证方法,包括服务器收到客户端发送的私钥并验证通过后,向客户端发起密码认证的挑战;客户端向服务器返回用户输入的密码;服务器对客户端返回的密码进行验证,当该密码通过验证时,对该用户的认证通过。本发明还公开了一种安全外壳协议应用中的用户认证装置。本发明能够增强安全外壳协议应用的安全性,并减少对客户端存储资源的占用。
文档编号H04L9/32GK101068255SQ20071011890
公开日2007年11月7日 申请日期2007年6月14日 优先权日2007年6月14日
发明者甘长华 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1