引言
由于智能卡在身份認(rèn)證領(lǐng)域的獨(dú)特優(yōu)勢(shì),實(shí)際上已經(jīng)成為符合法律意義上的電子商務(wù)和電子政務(wù)領(lǐng)域首選的合法載體。在Windows Server及其以后的版本中,提供了對(duì)的智能卡整體支持,包括智能卡的驅(qū)動(dòng)、身份認(rèn)證、移除策略等。由于擔(dān),r‘,windows安全方面存在的諸多問題,還有愈演愈烈的版權(quán)問題。因此不少電子商務(wù)和電子政務(wù)單位準(zhǔn)備采用開源的Linux操作系統(tǒng)作為關(guān)鍵平臺(tái)首選的操作系統(tǒng)。然而遺憾的是,在開源的Linux領(lǐng)域,智能卡的發(fā)展比較緩慢,目前沒有提供對(duì)智能卡的整體支持。但是所幸的是,由于開發(fā)源代碼的優(yōu)勢(shì),在世界的開源組織中,出現(xiàn)了不少支持智能卡的軟件和相應(yīng)的實(shí)現(xiàn)方案。但是現(xiàn)有的方案和軟件存在不少問題:有些軟件雖然能夠使智能卡在Linux環(huán)境下工作,但是僅限于本地認(rèn)證;而另外有砦軟件,則由于對(duì)智能卡的型號(hào)或智能卡中信息存儲(chǔ)的格式有特殊要求,因而限制了其通用性。這些限制不能滿足日益發(fā)展的電子商務(wù)與電子政務(wù)的需要。
本文通過(guò)對(duì)原有技術(shù)研究,提出了一個(gè)整體方案,可以滿足常見的電子商務(wù)和電子政務(wù)安全需要,如熱線彩票機(jī)等。
本文首先研究了與智能卡相關(guān)的協(xié)議,通過(guò)編寫守護(hù)進(jìn)程實(shí)現(xiàn)Linux對(duì)智能卡的支持;通過(guò)編寫身份認(rèn)證模塊,實(shí)現(xiàn)相應(yīng)的智能卡身份認(rèn)證工作,如果認(rèn)證失敗,還能發(fā)出相應(yīng)的遠(yuǎn)程報(bào)警;通過(guò)改寫屏幕保護(hù)程序,實(shí)現(xiàn)智能卡的移除策略。
本文的操作系統(tǒng)選擇Linux的redhat9版本;智能卡采用符合PC/SC規(guī)范的智能卡,這種智能卡銷售廣泛,國(guó)內(nèi)有很多公司在生產(chǎn),如握奇公司的TimeCOS/PK卡。
1.智能卡的技術(shù)標(biāo)準(zhǔn)
智能卡很多的技術(shù)標(biāo)準(zhǔn)。下面我們主要介紹兩個(gè)標(biāo)準(zhǔn):IS07816和PC/SC。
1.1 IS07816標(biāo)準(zhǔn)
智能卡技術(shù)是ISO國(guó)際標(biāo)準(zhǔn)組織定義的智能卡標(biāo)準(zhǔn)。定義了智能卡的各個(gè)方面,包括物理特征、物理接觸界面、電子信號(hào)和傳輸協(xié)議、命令、安全體系、應(yīng)用程序標(biāo)識(shí)符和公用數(shù)據(jù)元素等。我國(guó)目前已經(jīng)采用了IS07816系列標(biāo)準(zhǔn)中的前三部分作為中國(guó)標(biāo)準(zhǔn)。
1.2 PC/SC標(biāo)準(zhǔn)
PC/SC即個(gè)人計(jì)算機(jī)(Personal computer)/智能卡(Smart Card),它原來(lái)是為智能卡訪問Windows平臺(tái)(Windows2000以上支持)而定義的一種標(biāo)準(zhǔn)結(jié)構(gòu),其實(shí)它實(shí)質(zhì)上是一個(gè)與平臺(tái)無(wú)關(guān)的技術(shù)。PC/SC分為以下四層:
1、應(yīng)用程序?qū)樱⊿mart Card Aware Application)
是根據(jù)自己需要編寫的應(yīng)用程序。在我們的應(yīng)用中,它是使用C語(yǔ)言編寫的程序,直接調(diào)用讀卡器封裝好的API。
2、智能卡服務(wù)提供者(Smart Card ServiceProvider)
它通常是由智能卡生產(chǎn)商提供的。
3、智能卡資源管理器(Smard Card Resource Manager)
智能卡資源管理器是PC/SC體系結(jié)構(gòu)的核心部分。智能卡資源管理器整合了一些智能卡讀卡器驅(qū)動(dòng)程序和應(yīng)用程序的通用部分,然后到一套可重用的組件之中。操作系統(tǒng)供戍商提供智能卡資源管理器。遺憾的足,在redhat9系統(tǒng)中,操作系統(tǒng)沒有提供相應(yīng)資源管理器。所以只有靠自己編寫或者改寫部分廠家不太完善的組件。
4、智能卡讀寫器驅(qū)動(dòng)程序(Smart Card Reader Driver)
由生產(chǎn)廠商提供的智能卡讀寫器驅(qū)動(dòng)程序負(fù)責(zé)把資源管理器語(yǔ)言轉(zhuǎn)化為讀卡器語(yǔ)言。雖然在Linux平臺(tái)下,智能卡的應(yīng)用發(fā)展比較緩慢,沒有相應(yīng)的操作系統(tǒng)進(jìn)行整體性支持。所幸的是,由于Linux的開放源代碼的優(yōu)勢(shì),世界開源組織中,也有了免費(fèi)的PC/SC智能卡框架,如pcsc-1ite。這樣如果我們采用的智能卡和Pc/SC兼容,就能很方便進(jìn)行應(yīng)用程序的開發(fā)。
2.Redhat9對(duì)智能卡支持的實(shí)現(xiàn)
要想完成redhat9對(duì)智能卡的支持,需要完成以下工作:(1)智能卡與讀卡器通信的智能卡驅(qū)動(dòng)程序的安裝;(2)計(jì)算機(jī)與讀卡器通信的PC/SC中間件的安裝;(3)PC/SC系統(tǒng)服務(wù)的設(shè)計(jì);(4)把設(shè)計(jì)好的PC/SC服務(wù)加入系統(tǒng)守護(hù)進(jìn)程,成為真正的系統(tǒng)服務(wù)。
2.1讀卡器驅(qū)動(dòng)程序的安裝
讀卡器驅(qū)動(dòng)程序一般由智能卡生產(chǎn)廠商提供,它提供了智能卡和讀卡器的通信。負(fù)責(zé)把智能卡底層符合IS07816標(biāo)準(zhǔn)的協(xié)議數(shù)據(jù)轉(zhuǎn)換為符合PC/SC規(guī)范的數(shù)據(jù)。從而實(shí)現(xiàn)和高層協(xié)議的通信。
2.2 PC/SC中間件的安裝
首先下載PC/SC的安裝包,以成熟的pcsc-lite-1.2.9為例。然后以ROOT用戶登錄系統(tǒng)。執(zhí)行下列命令:
//允許作為守護(hù)進(jìn)程運(yùn)行。在這個(gè)系統(tǒng)中,由于我們要實(shí)現(xiàn)使用智能卡來(lái)做身份認(rèn)證工作,所以必須做為守護(hù)進(jìn)程來(lái)運(yùn)行
bash# make
bash# make instal l
有關(guān)PC/SC其它問題請(qǐng)參考介紹了最新的版本pcsc-1 ite 1.5.1。
安裝完成后。運(yùn)行程序PCSCD一一stdout&。然后用PSTREE查看是否存在pcscd守護(hù)進(jìn)程。如果存在,表明pcsc中間件的安裝已經(jīng)完成。
2.3 PC/SC系統(tǒng)服務(wù)的設(shè)定
為了提供操作系統(tǒng)對(duì)智能卡的良好支持,一般要求PC/SC中間件作為系統(tǒng)服務(wù)來(lái)運(yùn)行。提供了類似的服務(wù),經(jīng)過(guò)簡(jiǎn)單修改,即可使用。注意如果有多個(gè)智能卡,必須進(jìn)行配置。
2.4 pcscd)J1]入系統(tǒng)守護(hù)進(jìn)程,隨系統(tǒng)啟動(dòng)首先將剛剛編寫的PC/SC系統(tǒng)服務(wù)PC SCd放入/ete/init.d目錄下,然后在指定的rc.d目錄下作連接,執(zhí)行命令:ln-sf/etc/init.d/pcscd/etc/rc.d/rc5.d/S94pcscdf即可完成。重新啟動(dòng)系統(tǒng),運(yùn)行命令pstree,如果見到pcscd守護(hù)進(jìn)程隨系統(tǒng)啟動(dòng),就完成了操作系統(tǒng)對(duì)智能卡的支持工作。
3.身份認(rèn)證的實(shí)現(xiàn)
在Linux下使用智能卡進(jìn)行身份認(rèn)證,需要自己編寫相應(yīng)的PAM模塊。
3.1身份驗(yàn)證PAM模塊的編寫
編程位于PAM的應(yīng)用接口層,最重要的是編寫pam—authenticate()函數(shù)。這些API接口將被Linux系統(tǒng)的login模塊調(diào)用,為L(zhǎng)inux系統(tǒng)提供登錄認(rèn)證。圖1是需要編寫的pam authenticate 0的函數(shù)流程:
從圖中可以看出,本函數(shù)首先對(duì)讀卡器進(jìn)行初始化工作,如果成功就調(diào)用自己的身份驗(yàn)證程序,當(dāng)身份驗(yàn)證失敗后,就調(diào)用遠(yuǎn)程報(bào)警程序。遠(yuǎn)程報(bào)警程序簡(jiǎn)單可以調(diào)用簡(jiǎn)單的郵件命令mail發(fā)出郵件進(jìn)行實(shí)現(xiàn),也可以通過(guò)其它方法實(shí)現(xiàn),甚至可以使用復(fù)雜的防盜追蹤技術(shù)。
3.2 PAM模塊的配置
配置文件也放在了在應(yīng)用接口層中,它與PAM API配合使用,從而達(dá)到了在應(yīng)用中靈活插入所需鑒別模塊的目的。它的作用主要是為應(yīng)用選定具體的鑒別模塊,模塊間的組合以及規(guī)定模塊的行為。
1 認(rèn)證模塊
認(rèn)證模塊編譯后為pam一木.S0文件,放在/1ib/security目錄下。本系統(tǒng)編寫的智能卡登錄部分的PAM模塊名為pam_login.so。
2 配置文件
在redhat Linux下配置文件放在/etc/pam.d下。在pam.d目錄下文件名即為服務(wù)名,文件的格式為:
module-type control-flag modulel-path args
修改gdm-autologin文件,在文件首行添加:
auth sufficient pam_login.so
本部分配置完成之后,就完成了身份驗(yàn)證工作。
4.智能卡移除策略的實(shí)現(xiàn)
如果要實(shí)現(xiàn)智能卡的移除策略工作,需要解決兩方面的問題:首先要編寫新的智能卡守護(hù)進(jìn)程,實(shí)時(shí)監(jiān)控智能卡的狀態(tài);第二是實(shí)現(xiàn)屏幕鎖定和解鎖的問題。下面分別討論。
4.1智能卡守護(hù)進(jìn)程的編寫
智能卡守護(hù)進(jìn)程實(shí)時(shí)查詢智能卡的狀態(tài),當(dāng)智能卡狀態(tài)發(fā)生變化的時(shí)候向相應(yīng)的程序發(fā)出信號(hào)。圖2是智能卡守護(hù)進(jìn)程的流程圖:
程序使用阻塞的方法,監(jiān)控者智能卡是否移除。如果移除,程序首先斷開卡的連接,進(jìn)入屏幕鎖定狀態(tài)。此時(shí),程序通過(guò)啟動(dòng)經(jīng)過(guò)改寫的屏幕保護(hù)程序,從而鎖定屏幕。在屏幕鎖定狀態(tài)下,程序繼續(xù)進(jìn)行阻塞,一直到卡插入,如果身份驗(yàn)證成功,則解除鎖定。
4.2屏幕解鎖的實(shí)現(xiàn)
可以通過(guò)改寫屏幕保護(hù)程序?qū)崿F(xiàn)。研究一下屏幕保護(hù)程序解鎖的程序lock.C[10],注意有以下代碼:
while(si-》pw_data && si-》pw_data-》state==pw_read)
意思是當(dāng)X windows檢測(cè)到事件類型等于鍵盤(event.xany.type==KeyPres s)的時(shí)候,就啟動(dòng)handle_passwd_key (si, &event.xkey)口令驗(yàn)證程序。在這里添加事件類型為:event.xany.t yp e==KeyPress|| event.xany.type==PointerMotion,那么鼠標(biāo)進(jìn)行移動(dòng)時(shí)也觸發(fā)相應(yīng)的檢測(cè)事件。
注意以下語(yǔ)句:
passwd_valid_p函數(shù)是身份的驗(yàn)證函數(shù),它是采用PAM模塊的方式定義的,定義在passwd-pam.c文件中。
把上面的語(yǔ)句改為:
此時(shí),我們就可以實(shí)現(xiàn)簡(jiǎn)單的解鎖工作。
5.結(jié)束語(yǔ)
按照以上的辦法,實(shí)現(xiàn)了Linux系統(tǒng)下智能卡平臺(tái)的整體支持方案。電子商務(wù)和電子政務(wù)單位在開源的Linux平臺(tái)下使用智能卡,就像windows平臺(tái)一樣方便。試驗(yàn)表明,運(yùn)行穩(wěn)定、可靠,可以滿足熱線彩票機(jī)等電子商務(wù)領(lǐng)域和電子政務(wù)的需要。經(jīng)過(guò)改進(jìn)之后,甚至可以在超市收銀、電信收費(fèi)終端設(shè)備上使用。
責(zé)任編輯:gt
-
Linux
+關(guān)注
關(guān)注
87文章
11213瀏覽量
208736 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7383瀏覽量
87641 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6696瀏覽量
123147
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論