0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Linux的redhat9版本的智能卡軟件的實(shí)現(xiàn)方案

電子設(shè)計(jì) ? 來(lái)源:電子技術(shù) ? 作者:王東升;趙建超 ? 2020-10-22 10:25 ? 次閱讀

引言

由于智能卡在身份認(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í)行下列命令:

基于Linux的redhat9版本的智能卡軟件的實(shí)現(xiàn)方案

//允許作為守護(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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于FPGA的身份認(rèn)證智能卡設(shè)計(jì)

    基于FPGA的身份認(rèn)證智能卡的設(shè)計(jì)方案。在FPGA內(nèi)部實(shí)現(xiàn)身份認(rèn)證相關(guān)的數(shù)據(jù)加密運(yùn)算,加密算法采用128 bit Rijndael算法。相關(guān)的身份信息和加密運(yùn)算所需要的常量數(shù)據(jù)均存放在FLASH存儲(chǔ)器中,加密
    發(fā)表于 10-14 12:45

    智能卡技術(shù)

    智能卡技術(shù)
    發(fā)表于 08-18 10:32

    智能卡芯片是什么?

    芯片種類那么多,其他的都還好理解,可智能卡芯片是什么?
    發(fā)表于 01-29 11:01

    如何在redhat9中使用CGT編譯TMS320F28335

    目前需要把TMS320F28335 的編譯環(huán)境集成到redhat9的clearcase下,因?yàn)閏learcase版本原因,linux版本較低,kernel為2.4.20,如下問題:1
    發(fā)表于 11-02 14:17

    智能卡天線設(shè)計(jì)的注意要點(diǎn)

    【導(dǎo)讀】本文討論了在不同領(lǐng)域?qū)嵤┓墙佑|式項(xiàng)目過(guò)程中天線設(shè)計(jì)面臨的共同挑戰(zhàn)。為實(shí)現(xiàn)天線設(shè)計(jì)的最優(yōu)化,不同的應(yīng)用領(lǐng)域會(huì)有不同的解決方案。在同一張卡具有多個(gè)功能以及存在多種可能的天線尺寸
    發(fā)表于 07-17 08:20

    RFID射頻功能的手機(jī)智能卡怎么實(shí)現(xiàn)?

    目前國(guó)內(nèi)外主流手機(jī)RFID智能卡解決方案按照工作頻率可分為兩大類,即13.56MHz方案和2.4GHz方案。其中13.56MHz方案又可分為
    發(fā)表于 08-16 08:33

    HuiHAT是智能卡的基礎(chǔ)嗎?

    HuiHAT是智能卡的基礎(chǔ)嗎?
    發(fā)表于 03-26 10:36

    分享一種智能卡接口的設(shè)計(jì)方案

    分享一種智能卡接口的設(shè)計(jì)方案
    發(fā)表于 05-27 06:01

    基于ECC的遠(yuǎn)程用戶智能卡認(rèn)證方案

    針對(duì)對(duì)Hwang-Li 智能卡認(rèn)證方案的有效攻擊,提出一類基于橢圓曲線密碼的遠(yuǎn)程用戶智能卡認(rèn)證方案。利用橢圓曲線上的離散對(duì)數(shù)問題設(shè)計(jì)單向陷門函數(shù),使口令和身份不再是簡(jiǎn)單的
    發(fā)表于 03-20 15:30 ?14次下載

    基于可信計(jì)算的Java智能卡的設(shè)計(jì)與實(shí)現(xiàn)

    本文針對(duì)Java 智能卡的安全問題,提出了一種新的解決方案——將可信計(jì)算技術(shù)引入到Java 智能卡的設(shè)計(jì)與實(shí)現(xiàn)中,以可信計(jì)算在安全認(rèn)證方面的優(yōu)勢(shì)來(lái)解決
    發(fā)表于 01-07 12:26 ?23次下載

    智能卡操作系統(tǒng)研究和實(shí)例分析

    文章對(duì)智能卡智能卡操作系統(tǒng)作了簡(jiǎn)要概述,對(duì)智能卡操作系統(tǒng)的文件管理系統(tǒng)進(jìn)行了深入的分析,并通過(guò)一個(gè)具體設(shè)計(jì)實(shí)例提出一種智能卡文件系統(tǒng)的設(shè)計(jì)方案
    發(fā)表于 07-29 17:14 ?28次下載

    智能卡(CPU),什么是智能卡(CPU)

    智能卡(CPU),什么是智能卡(CPU) 智能卡又稱CPU。CPU
    發(fā)表于 04-02 13:36 ?3144次閱讀

    智能卡操作系統(tǒng)(COS),什么是智能卡操作系統(tǒng)(COS)

    智能卡操作系統(tǒng)(COS),什么是智能卡操作系統(tǒng)(COS) COS是駐留SIM內(nèi)的操作系統(tǒng)軟件,類似于PC上的DOS系統(tǒng),不過(guò)比DOS系統(tǒng)要簡(jiǎn)單的多。COS
    發(fā)表于 04-02 13:37 ?1700次閱讀

    DS8007和智能卡接口基礎(chǔ)

    DS8007是一款多協(xié)議、低成本、雙智能卡接口,支持所有ISO 7816、EMV?和GSM11-11要求。這個(gè)混合信號(hào)外設(shè)管理微控制器和兩個(gè)獨(dú)立智能卡之間接口的所有細(xì)節(jié)。本應(yīng)用筆記介紹了智能卡的一些基礎(chǔ)知識(shí)以及如何與
    的頭像 發(fā)表于 03-03 14:24 ?1269次閱讀
    DS8007和<b class='flag-5'>智能卡</b>接口基礎(chǔ)

    DS8007和智能卡接口基礎(chǔ)

    DS8007是一款多協(xié)議、低成本、雙智能卡接口,支持所有ISO 7816、EMV?和GSM11-11要求。這個(gè)混合信號(hào)外設(shè)管理微控制器和兩個(gè)獨(dú)立智能卡之間接口的所有細(xì)節(jié)。本應(yīng)用筆記介紹了智能卡的一些基礎(chǔ)知識(shí)以及如何與
    的頭像 發(fā)表于 04-03 11:12 ?973次閱讀
    DS8007和<b class='flag-5'>智能卡</b>接口基礎(chǔ)