基于PAM架构的强身份认证系统及方法与流程

文档序号:16062548发布日期:2018-11-24 12:20阅读:1166来源:国知局

本发明属于linux身份认证及信息传输安全技术领域,具体涉及一种基于pam架构的强身份认证系统及方法。

背景技术

linux系统在科学计算环境中应用越来越多、越来越广。特别是为了便于计算,远程登录linux系统成为了主要手段。目前绝大多数linux应用程序采用用户口令作为身份认证方式,这种方式安全性不高,容易被猜测。但由于网络的开放性,使用传统用户名口令和telnet、ftp协议远程登录linux容易被窃取信息,且在访问资源时无法确认访问者的真实身份,不能做到有效的责任认定。因此在linux身份认证及信息传输时的安全性是至关重要的。目前已经提出一些方案来解决这类问题。归纳如下:1)改变用户凭证。通常使用ic卡或usbkey作为认证凭据,但目前大多数应用只是将用户名口令或者身份id放入ic卡或usbkey中,在身份认证时最终使用的还是用户名口令或比对id,安全性仍然较低。2)用户终端与linux服务器使用一些通用安全协议进行通信。如安全套接协议(ssl)建立连接,可以使用证书进行双向的身份认证,但不用于远程系统控制的应用中。



技术实现要素:

针对目前绝大多数linux应用程序采用用户口令作为身份认证方式,这种方式安全性不高,容易被猜测的现状,本发明提出了一种基于pam架构实现不同方式的系统登录身份认证机制,用以提高身份认证及信息传输的安全性。

所采用的技术方案:一种基于pam架构的强身份认证方法,采用linux-pam框架,基于数字证书的usbkey认证方式,远程登录使用ssh(secureshell)安全协议。包括以下步骤:

(1)用户启动pam应用程序;

(2)pam应用程序调用pam库请求认证;

(3)pam库在/etc/pam.d目录(etc目录下包括pam.d目录)中查找应用程序的配置文件,获得该程序的认证方式;

(4)pam库装载所需的认证模块,启动会话函数;

(5)会话函数向用户要求有关信息;(有关信息即为口令认证输入信息)

(6)用户对这些要求做出回应,提供所需信息;

(7)pam认证模块完成认证,通过pam库将认证结果提供给应用程序;

(8)pam应用程序根据认证结果做出选择,或者将权限赋予用户,或者通知用户认证失败。

(9)认证模块向用户请求输入用户名和pin码,而后读入usbkey中pin码,并进行对比。

(10)比对通过后,读取usbkey中的数字证书,取得用户的公钥;发送一个动态产生的随机数给usbkey并要求签名。

(11)获得签名结果后,利用从数字证书获得的用户公钥进行验证,如果与产生的随机数一致,表示此次的身份认证成功。

usbkey身份认证是采用基于数字证书的ssh安全协议进行认证。ssh协议中用户的客户端为自己创建一对密钥,并把公用密钥放在需要访问的服务器上,用户的客户端软件向服务器发出请求,服务器查找客户在本地保存的公用密钥,然后把它和客户发过来的公共密钥进行对比;如果两者一致,服务器就用公共密钥加密“挑战”并把它发送给客户端软件;客户端软件收到“挑战”之后用客户的私有密钥解密后返回给服务器,以达到认证的目的。

一种基于pam架构的强身份认证系统,包括pam应用程序和用户客户端,还包括pam认证模块和usbkey身份认证模块。所述pam认证模块:用户客户端启动pam应用程序,pam应用程序调用pam库请求认证,pam库在目录中查找应用程序的配置文件,获得该程序的认证方式;pam库装载所需的认证模块,启动会话函数,会话函数向用户客户端要求有关信息,用户客户端对这些要求做出回应,提供所需信息;pam认证模块完成认证,通过pam库将认证结果提供给应用程序,pam应用程序根据认证结果做出选择,或者将权限赋予用户客户端,或者通知用户客户端认证失败。usbkey身份认证模块:采用基于数字证书的ssh安全协议进行认证,pam认证模块向用户客户端请求输入用户名和pin码,而后读入usbkey中pin码,并进行对比;比对通过后,读取usbkey中的数字证书,取得用户客户端的公钥;发送一个动态产生的随机数给usbkey并要求签名;获得签名结果后,利用从数字证书获得的用户客户端公钥进行验证,如果与产生的随机数一致,表示此次的身份认证成功。

本发明的有益效果:本发明安全性高、减小软件复杂度、有效防止了用户信息泄漏、杜绝了密码被破解的可能性、减少了应用程序开发工作量。

1、通过采用绑定ssh和用户usbkey设备实现硬件增强的多因子认证方式,比传统单纯采用用户名和密码进行软件认证的方式相比大大调高了安全性;

2、认证过程不给用户设置密码,不在硬盘中存储密码,用户只需要输入用户名和pin码验证,pin码验证过程在usbkey内部计算完成,计算细节不外泄,杜绝了密码被破解的可能性;

3、身份认证模块与用户应用程序分开,更改应用程序认证机制时只需要更改linuxpam配置文件,不需要更改应用程序源程序,减少了应用程序开发工作量。

附图说明:

图1是本地认证模块与usbkey认证方式流程图。

图2是服务器端与客户端认证方式流程图。

具体实施方式:

实施例1:基于pam架构的强身份认证方法采用linux-pam框架,基于数字证书的usbkey认证方式,远程登录使用ssh(secureshell)安全协议。为了能够让系统使用usbkey进行身份认证,需要编写pam认证模块,完成基于usbkey身份认证。

usbkey中有一定的安全数据存储空间,用以存储数字证书、用户秘钥等秘密数据,对该存储空间的读写操作必须通过特定程序实现,用户无法直接读取。usbkey内置cpu可以实现pki体系中使用的数据摘要、数据加解密和签名的各种算法操作,加解密运算在usbkey内进行。

pam认证模块包括以下步骤:

(1)用户启动某个pam应用程序,如login.

(2)pam应用程序调用pam库请求认证。

(3)pam库在/etc/pam.d目录(etc目录下包括pam.d目录)中查找应用程序的配置文件,获得该程序的认证方式。

(4)pam库装载所需的认证模块,启动会话函数。

(5)会话函数向用户要求有关信息。

(6)用户对这些要求做出回应,提供所需信息。

(7)pam认证模块完成认证,通过pam库将认证结果提供给应用程序。

(8)pam应用程序根据认证结果做出选择,或者将权限赋予用户,或者通知用户认证失败。

usbkey身份认证是采用基于数字证书的ssh安全协议进行认证,如图1所示,包括以下步骤:

(1)pam认证模块向用户请求输入用户名和pin码,而后读入usbkey中pin码,并进行对比。

(2)比对通过后,读取usbkey中的数字证书,取得用户的公钥;发送一个动态产生的随机数给usbkey并要求签名。

(3)获得签名结果后,利用从数字证书获得的用户公钥进行验证,如果与产生的随机数一致,表示此次的身份认证成功。

ssh协议中客户必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果客户端软件向服务器发出请求,服务器查找客户在本地保存的公用密钥,然后把它和客户发过来的公共密钥进行对比。如果两者一致,服务器就用公共密钥加密“挑战”并把它发送给客户端软件。客户端软件收到“挑战”之后用客户的私有密钥解密后返回给服务器,以达到认证的目的。认证的流程如图2。

实施例2:一种基于pam架构的强身份认证系统,包括pam认证模块和usbkey认证方式,usbkey认证是将登陆所需的数字证书及其对应的私钥存放在usbkey中,在登陆时必须拥有usbkey和pin码才可以登录。同时usbkey中的数字证书和私钥是由ca证书授权中心(certificateauthority)统一颁发的,达到了统一管理的目的。具体包括验证模块、账户管理模块、会话管理模块、密码管理模块。验证模块用于验证用户或设置/销毁凭证。帐户管理模块将执行与访问、帐户及凭证有效期、密码限制/规则等有关的操作。会话管理模块用于初始化和终止会话。密码管理模块将执行与密码更改/更新有关的操作。

pam认证模块向用户请求输入用户名和pin码,而后读入usbkey中pin码,并进行对比;比对通过后,读取usbkey中的数字证书,取得用户的公钥;发送一个动态产生的随机数给usbkey并要求签名;获得签名结果后,利用从数字证书获得的用户公钥进行验证,如果与产生的随机数一致,表示此次的身份认证成功。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1