微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > Linux平台下智能卡整体支持方案

Linux平台下智能卡整体支持方案

时间:03-26 来源:互联网 点击:
3.身份认证的实现

在Linux下使用智能卡进行身份认证,需要自己编写相应的PAM模块。

3.1身份验证PAM模块的编写

编程位于PAM的应用接口层,最重要的是编写pam—authenticate()函数。这些API接口将被Linux系统
的login模块调用,为Linux系统提供登录认证[7]。图1是需要编写的pam authenticate 0的函数流程:



从图中可以看出,本函数首先对读卡器进行初始化工作,如果成功就调用自己的身份验证程序,当身份验
证失败后,就调用远程报警程序。远程报警程序简单可以调用简单的邮件命令mail发出邮件进行实现,也可以通过其它方法实现,甚至可以使用复杂的防盗追踪技术[9]。

3.2 PAM模块的配置

配置文件也放在了在应用接口层中,它与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的
目的。它的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模块的行为。

1 认证模块

认证模块编译后为pam一木.S0文件,放在/1ib/security目录下。本系统编写的智能卡登录部分的PAM模块名为pam_login.so。

2 配置文件

在redhat Linux下配置文件放在/etc/pam.d下。在pam.d目录下文件名即为服务名,文件的格式为:

module-type control-flag modulel-path args

修改gdm-autologin文件,在文件首行添加:

auth sufficient pam_login.so

本部分配置完成之后,就完成了身份验证工作。

4.智能卡移除策略的实现

如果要实现智能卡的移除策略工作,需要解决两方面的问题:首先要编写新的智能卡守护进程,实时监控
智能卡的状态;第二是实现屏幕锁定和解锁的问题。下面分别讨论。

4.1智能卡守护进程的编写

智能卡守护进程实时查询智能卡的状态,当智能卡状态发生变化的时候向相应的程序发出信号。图2是智能
卡守护进程的流程图:



程序使用阻塞的方法,监控者智能卡是否移除[5]。如果移除,程序首先断开卡的连接,进入屏幕锁定状态。此时,程序通过启动经过改写的屏幕保护程序,从而锁定屏幕。

在屏幕锁定状态下,程序继续进行阻塞,一直到卡插入,如果身份验证成功,则解除锁定。

4.2屏幕解锁的实现

可以通过改写屏幕保护程序实现。研究一下屏幕保护程序解锁的程序lock.C[10],注意有以下代码:

while(si->pw_data && si->pw_data->state==pw_read)

意思是当X windows检测到事件类型等于键盘(event.xany.type==KeyPres s)的时候,就启动
handle_passwd_key (si, &event.xkey)口令验证程序。在这里添加事件类型为:event.xany.t yp e==
KeyPress|| event.xany.type==PointerMotion,那么鼠标进行移动时也触发相应的检测事件。

注意以下语句:



passwd_valid_p函数是身份的验证函数,它是采用PAM模块的方式定义的,定义在passwd-pam.c文件中。

把上面的语句改为:



此时,我们就可以实现简单的解锁工作。

5.结束语

按照以上的办法,实现了Linux系统下智能卡平台的整体支持方案。电子商务和电子政务单位在开源的
Linux平台下使用智能卡,就像windows平台一样方便。试验表明,运行稳定、可靠,可以满足热线彩票机等电子商务领域和电子政务的需要。经过改进之后,甚至可以在超市收银、电信收费终端设备上使用。

参考文献

   1. 莫林莫托.杜大鹏 Windows Server 2003深层解决方案 2005
   2. 赵建超 基于Linux下智能卡登陆操作系统的实现方法 [期刊论文] -西安航空技术高等专科学校学报2006(5)
   3. Mario Strasser and Martin Saegesser,smartcard-login DocumentatiOn.2001 2007
   4. ISO SmartCard standard.2003 2007
   5. pcscworkgroup PC/SC Specifications 2.01.4 2007
   6. Mario Strasser Smart Card Login HOWTO 2007
   7. Ludovic Rousseau pcsc-lite 1.5.1 2009
   8. Andrew G Morgan The Linux-PAM Module Writers'Guide.2001 2008
   9. 李曙光.张琼声.李文琳 嵌入式 Linux系统智能手机防盗追踪功能的实现 [期刊论文] -微计算机应用2007(11)
  10. RedHat Linux9 源代码 2003

作者:王东升  赵建超 (河南工业职业技术学院计算机工程系,河南省南阳市,473009)
来源:电子技术 2009 36(8)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top