0.引言 由于智能卡在身份認證領域的獨特優勢,實際上已經成為符合法律意義上的電子商務和電子政務領域首選 的合法載體。在Windows Server及其以后的版本中,提供了對的智能卡整體支持,包括智能卡的驅動、身份認證、移除策略等[1]。由于擔,r‘,windows安全方面存在的諸多問題,還有愈演愈烈的版權問題。因此不少電子商務和電子政務單位準備采用開源的Linux操作系統作為關鍵平臺首選的操作系統。然而遺憾的是,在開源的Linux領域,智能卡的發展比較緩慢,目前沒有提供對智能卡的整體支持[2]。但是所幸的是,由于開發源代碼的優勢,在世界的開源組織中,出現了不少支持智能卡的軟件和相應的實現方案[3]。但是現有的方案和軟件存在不少問題:有些軟件雖然能夠使智能卡在Linux環境下工作,但是僅限于本地認證;而另外有砦軟件,則由于對智能卡的型號或智能卡中信息存儲的格式有特殊要求,因而限制了其通用性。這些限制不能滿足日益發展的電子商務與電子政務的需要。 本文通過對原有技術研究,提出了一個整體方案,可以滿足常見的電子商務和電子政務安全需要,如熱線彩票機等。 本文首先研究了與智能卡相關的協議,通過編寫守護進程實現Linux對智能卡的支持;通過編寫身份認證模塊,實現相應的智能卡身份認證工作,如果認證失敗,還能發出相應的遠程報警;通過改寫屏幕保護程序,實現智能卡的移除策略。 本文的操作系統選擇Linux的redhat9版本;智能卡采用符合PC/SC規范的智能卡,這種智能卡銷售廣泛,國內有很多公司在生產,如握奇公司的TimeCOS/PK卡。 1.智能卡的技術標準 智能卡很多的技術標準。下面我們主要介紹兩個標準:IS07816和PC/SC。 1.1 IS07816標準[4】 智能卡技術是ISO國際標準組織定義的智能卡標準。定義了智能卡的各個方面,包括物理特征、物理接觸界 面、電子信號和傳輸協議、命令、安全體系、應用程序標識符和公用數據元素等。我國目前已經采用了IS07816系列標準中的前三部分作為中國標準。 1.2 PC/SC標準[5] PC/SC即個人計算機(Personal computer)/智能卡(Smart Card),它原來是為智能卡訪問Windows平臺( Windows2000以上支持)而定義的一種標準結構,其實它實質上是一個與平臺無關的技術。PC/SC分為以下四層: 1、應用程序層(Smart Card Aware Application) 是根據自己需要編寫的應用程序。在我們的應用中,它是使用C語言編寫的程序,直接調用讀卡器封裝好的API。 2、智能卡服務提供者(Smart Card ServiceProvider) 它通常是由智能卡生產商提供的。 3、智能卡資源管理器(Smard Card Resource Manager) 智能卡資源管理器是PC/SC體系結構的核心部分。智能卡資源管理器整合了一些智能卡讀卡器驅動程序和應用程序的通用部分,然后到一套可重用的組件之中。操作系統供戍商提供智能卡資源管理器。 遺憾的足,在redhat9系統中,操作系統沒有提供相應資源管理器。所以只有靠自己編寫或者改寫部分廠家 不太完善的組件。 4、智能卡讀寫器驅動程序(Smart Card Reader Driver) 由生產廠商提供的智能卡讀寫器驅動程序負責把資源管理器語言轉化為讀卡器語言。 雖然在Linux平臺下,智能卡的應用發展比較緩慢,沒有相應的操作系統進行整體性支持。所幸的是,由于 Linux的開放源代碼的優勢,世界開源組織中,也有了免費的PC/SC智能卡框架,如pcsc-1ite[3]。這樣如果我們采用的智能卡和Pc/SC兼容,就能很方便進行應用程序的開發。 2.Redhat9對智能卡支持的實現 要想完成redhat9對智能卡的支持,需要完成以下工作:(1)智能卡與讀卡器通信的智能卡驅動程序的安裝; (2)計算機與讀卡器通信的PC/SC中間件的安裝;(3)PC/SC系統服務的設計;(4)把設計好的PC/SC服務加入系統守護進程,成為真正的系統服務。 2.1讀卡器驅動程序的安裝 讀卡器驅動程序一般由智能卡生產廠商提供,它提供了智能卡和讀卡器的通信。負責把智能卡底層符合 IS07816標準的協議數據轉換為符合PC/SC規范的數據。從而實現和高層協議的通信。 2.2 PC/SC中間件的安裝 首先下載PC/SC的安裝包,以成熟的pcsc-lite-1.2.9為例。然后以ROOT用戶登錄系統。執行下列命令: //允許作為守護進程運行。在這個系統中,由于我們要實現使用智能卡來做身份認證工作,所以必須做為守護進程來運行 bash# make bash# make instal l 有關PC/SC其它問題請參考[6],參考[7]中介紹了最新的版本pcsc-1 ite 1.5.1。 安裝完成后。運行程序PCSCD一一stdout&。然后用PSTREE查看是否存在pcscd守護進程。如果存在,表明pcsc中間件的安裝已經完成。 2.3 PC/SC系統服務的設定 為了提供操作系統對智能卡的良好支持,一般要求PC/SC中間件作為系統服務來運行。在參考[3]中,提供了類似的服務,經過簡單修改,即可使用。注意如果有多個智能卡,必須進行配置[5]。 2.4 pcscd)J1]入系統守護進程,隨系統啟動首先將剛剛編寫的PC/SC系統服務PC SCd放入/ete/init.d目錄下,然后在指定的rc.d目錄下作連接,執行命令:ln-sf/etc/init.d/pcscd/etc/rc.d/ rc5.d/S94pcscdf即可完成。 重新啟動系統,運行命令pstree,如果見到pcscd守護進程隨系統啟動,就完成了操作系統對智能卡的支持 工作。 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) |