首页> 中国专利> 基于安全命令解释协议的用户认证方法

基于安全命令解释协议的用户认证方法

摘要

本发明属于计算机网络安全技术领域,涉及基于安全命令解释协议的用户认证方法。包括:在服务器中配置一个公共密钥链表,一个客户端的用户名和公共密钥名的对应表;当客户端用户登录时,客户端按照安全命令解释协议选择本用户使用的公共密钥数据;服务器根据该用户名通过公共密钥链表及对应表查找并检查公共密钥数据与客户端按照协议所选择的公共密钥数据是否相同,如果不同则认证失败;如果公共密钥数据相同,则服务器端产生一个随机数,用该公共密钥数据对随机数加密后发送给客户端,客户端用对应的私有密钥解密,解密正确则认证通过,不正确则认证不通过。本发明增强了对用户的管理,提高了安全性。

著录项

  • 公开/公告号CN1533084A

    专利类型发明专利

  • 公开/公告日2004-09-29

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN03120392.2

  • 申请日2003-03-18

  • 分类号H04L9/00;H04L9/32;

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 15:30:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-11

    未缴年费专利权终止 IPC(主分类):H04L9/00 授权公告日:20071114 终止日期:20150318 申请日:20030318

    专利权的终止

  • 2007-11-14

    授权

    授权

  • 2005-03-16

    实质审查的生效

    实质审查的生效

  • 2004-09-29

    公开

    公开

说明书

技术领域

本发明属于计算机网络安全技术领域,特别涉及基于SSH协议的用户认证技术。

背景技术

安全命令解释(SSH,Secure Shell)协议是一个计算机网络通信协议,遵守该协议的程序可以登录到另外一台计算机或网络设备上去,并可以向远端机器发送命令,远端机器执行该命令并将执行结果发回。所有向网络上发送的内容都被加密,从而在不安全的网络上提供了安全的通信。

目前常用的计算机之间通信的程序都采用客户端/服务器方式,服务器上运行的程序按某种协议规定的方式等待客户端发来连接请求,在收到客户端发来的连接请求之后,双方按协议规定进行协商和通信。双方的通信是可以被其他计算机监听到的,因此在不加密的情况下很容易泄密。

为了解决通信安全问题,SSH协议采用了严格的加密技术。在SSH协议开始建立连接和进行用户认证的时候,使用RSA加密算法。RSA算法是一种非对称密钥加密算法。在RSA算法中,每一对密钥分为公共密钥和私有密钥,用公共密钥加密的数据必须用私有密钥才能进行解密;同样,用私有密钥加密的数据也必须用公共密钥进行解密。公共密钥是可以公开,让对端知道的;私有密钥是私自保存,不能公开的。在SSH协议中,服务器拥有合法客户端用户的公共密钥,而客户端用户则拥有自己的私有密钥。

SSH协议规定用户登录过程中双方的协商分为四个步骤:

1)版本协商;

2)密钥交换;

4)会话阶段。

在版本协商阶段,双方通过相互发送版本信息,确定所使用的SSH协议的版本。

在密钥交换阶段,服务器将自己所使用的公共密钥发送给客户端,以便客户端用该公共密钥对服务器发送的数据进行解密。

在认证阶段,双方建立起信任关系。

在会话阶段,双方进行数据的传送,直到有一方退出通信。

在认证阶段,现有的SSH协议共提供以下四种方法对用户进行认证:

1、主机认证方法;

2、纯RSA认证方法;

3、密码认证方法;

4、主机与RSA结合方法。

现有的采用主机认证方法是基于客户端主机名和IP地址的一种认证方法,这种方法由Unix系统的命令rlogin和rsh采用,用户必须满足下面两个条件才能访问远端主机。一是本地主机必须被登记在远端主机的/etc/hosts.equiv文件中,二是本地主机和用户名必须包含在远端用户帐号$HOME/.rhosts文件中。当上述两个条件满足时,用户登录时不需口令。

这种认证方法在一般情况下是不建议使用的,因为通过IP地址欺骗是很容易攻击服务端的,而且该技术主要应用于UNIX系统,非UNIX系统由于没有/etc/hosts.equiv和$HOME/.rhosts文件,不易实现。

现有的采用纯RSA认证方法是基于RSA非对称加密算法的。服务器端拥有客户端所提供的公共密钥。在登录时,客户端首先指定它所使用的公共密钥;服务器找到该密钥,并产生一个随机数,用这个公共密钥加密后发送给客户端,客户端要用对应的私有密钥解密,解密正确则认证通过,不正确则认证不通过。

该方法的认证流程如图1所示,包括以下步骤:

1)客户端登录,选择本用户使用的公共密钥数据并通知服务器;

1)客户端登录,选择本用户使用的公共密钥数据并通知服务器;

2)服务器判断该公共密钥数据是否存在,若不存在,则认证失败;若存在,则转第3)步;

3)服务器产生随机数,用客户端用户的公共密钥数据加密,并发送给客户端进行解密。

4)客户端用自己的私有密钥解密,并将结果发送给服务器。

5)服务器检查是否正确,如果正确则认证通过。不正确则认证不通过。

这种认证方法是应用RSA的基本的认证方法,它的缺点在于没有规定客户端采用唯一的密钥,客户端可以使用服务器所记录的任何密钥登录服务器。这样的用户管理是很松散的,不利于对用户实行严格的管理。

例如进行用户的分级别管理时,不同级别的用户使用相同的密钥将使用户的级别形同虚设,因为用户名并不是保密的,是可以被其他人得到的。混用密钥会使得严格的用户管理不能实现,存在安全漏洞。

现有采用密码认证方法为:客户端将加密的密码字符串发送给服务器端,服务器检查密码是否正确,如果正确则认证通过,不正确就不通过。这种认证方法比较简单,密码设置不当容易被破解和猜测。

现有的采用主机与RSA结合方法是现有的主机认证方法与纯RSA认证方法的结合,服务器先对客户端进行主机认证。通过后再产生随机数,进行RSA认证。这种认证方法在非UNIX系统中不易实现。

发明内容

本发明的目的是为克服已有技术对用户不能实行严格的管理的不足之处,提出一种基于安全命令解释(SSH)协议的用户认证方法,可增强对用户的管理,对公共密钥的管理更加容易实现,且可提高通信安全性。

本发明提出的基于安全命令解释(SSH)协议的用户认证方法,其特征在于,包括以下步骤:

1)在服务器中配置一个公共密钥名及其数据的公共密钥链表,且配置并维护一个客户端的用户名和公共密钥名的对应表;

2)当客户端用户登录时,客户端按照安全命令解释协议选择本用户使用的公共密钥数据;

3)服务器根据该用户名通过所述的公共密钥链表及对应表查找并检查公共密钥数据与客户端按照协议所选择的公共密钥数据是否相同,如果不同则认证失败;

4)如果公共密钥数据相同,则服务器端产生一个随机数,用该公共密钥数据对随机数加密后发送给客户端,客户端用对应的私有密钥解密,解密正确则认证通过,不正确则认证不通过。

所述的用户名与密钥名的对应表采用的形式可以包括但不限于数组、链表、哈希表、数据库表等之中的一种。

本发明的特点及有益效果:

本发明对SSH协议中的纯RSA认证方法进行了改进,在服务器端增加了限制,服务器为每个公共密钥配置一个名字,并维护一张用户名和该密钥名对应的表格。客户端必须输入与它的用户名相对应的公共密钥。当客户端登录时,服务器通过这个表格查找客户端的公共密钥,与客户端所输入的公共密钥吻合才能继续认证流程,增强了对用户的管理。

本发明与现有的采用纯RSA认证方式相比,服务器增加了查表和比较的操作。每一个用户仅有一个对应的公共密钥,必须使用该密钥才可登录。由于服务器采用了更加严格的检查措施,使得认证方法更加安全可靠。

同时,本发明为公共密钥配置名字使得对公共密钥的管理更加容易实现。由于在服务器端进行了更多的限制,因而提高了通信的安全性。

附图说明

图1为已有的纯RSA认证方法的流程框图。

图2为本发明认证方法的一种实施例流程框图。

图3为本发明两种实施例都用到的公共密钥链表示意图。

图4为本发明第二种实施例的密钥名-用户名对应链表示意图。

图5为本发明认证方法的第二种实施例流程框图。

具体实施方式

本发明提供的一种基于安全命令解释(SSH)协议的用户认证方法,结合实施例及附图进行详细说明。

本发明的实施例1,如图2所示,其具体实现方法包括以下步骤:

1)在服务器端为每一个公共密钥配置一个形成如图3所示的公共密钥链表,它保存了公共密钥的数据,并为每一个公共密钥配置了一个名字;为了方便查找和管理,将用户名与该密钥名称对应起来,采用数组方式形成如表1所示的用户名-密钥名对应表:

表1用户名-密钥名对应表

    用户名    密钥名    user1    key1    user2    key2    user3    key3    ......    ......

在上述表1中:用户名user1对应密钥名key1,用户名user2对应密钥名key2,以此类推。

在使用某用户的公共密钥数据时,就可以先通过用户名-密钥名对应表找到密钥名,然后在公共密钥链表中查找该密钥名所对应的公共密钥数据;

2)在客户端用户登录时,客户端按照SSH协议选择本用户使用的公共密钥数据;

3)服务器在如图3的公共密钥链表中查找是否存在上述公共密钥数据,若不存在,则认证失败;

4)若公共密钥数据存在,则服务器再在表1中搜索该用户名所对应的密钥名,然后通过密钥名在如图3的公共密钥链表中查找其对应的公共密钥数据,检查与客户端所选择的公共密钥数据是否相同,如果不同则认证失败;

5)如果公共密钥数据相同,则服务器端产生一个随机数,用该公共密钥数据对这个随机数加密,把加密后的随机数发送给客户端;

6)客户端接收到加密的随机数后,用自己所保存的私有密钥(该私钥密钥数据与第2步中所选择的公共密钥数据是对应的)对其解密,将结果发送给服务端。

7)服务端判断客户端对随机数的解密是否正确,正确则认证通过,不正确则认证不通过。

本发明的另外一个实施例,如图5所示,其具体实现方法包括以下步骤:

1)在服务器端为每一个公共密钥配置一个形成如图3所示的公共密钥链表,它保存了公共密钥的数据,并为每一个公共密钥配置了一个名字;为了方便查找和管理,建立用户名与密钥名对应表,形式是如图4所示的链表,图中:用户名user1对应密钥名key1,用户名user2对应密钥名key2,以此类推。

在使用某用户的公共密钥数据时,就可以先通过用户名-密钥名对应表找到密钥名,然后在公共密钥链表中查找该密钥名所对应的公共密钥数据;反之,通过公共密钥数据也可以查到有哪些用户名与之对应,本实施例用的是这种反向查找的方法。

2)在客户端用户登录时,客户端按照SSH协议选择本用户使用的公共密钥数据;

3)服务器在图3所示公共密钥链表中查找是否存在上述公共密钥数据,若不存在,则认证失败;

4)若公共密钥数据存在,则服务器在图3所示的公共密钥链表查找出所对应的所有密钥名;

5)查询图4所示的用户名-密钥名链表,找出每一个密钥名所对应的所有用户名;

6)判断上述找出的用户名中是否包含客户端用户名,如果不包含则认证失败;

7)如果包含,则服务器端产生一个随机数,用该公共密钥数据对其加密后发送给客户端进行解密;

8)客户端接收到加密的随机数后,用自己所保存的私有密钥(该私钥密钥数据与第2步中所选择的公共密钥数据是对应的)对其进行解密,然后将结果发送给服务端;

9)服务端判断客户端对随机数的解密是否正确,正确则认证通过,不正确则认证不通过。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号