于昕
1引言
社會保障卡是應(yīng)用頻次和普及程度最高的證卡之一,其嚴(yán)格的密鑰控制體系保證了安全性。如果在讀寫校驗過程中出現(xiàn)非法程序,卡內(nèi)操作系統(tǒng)將啟動保護(hù)機制,通過鎖卡來保護(hù)卡內(nèi)信息,但是卡密鑰的永久性鎖定,會直接影響群眾用卡體驗。因此,社??ㄗx寫卡過程中的安全控制問題是一項需要深入研究的課題。
2社會保障卡安全機制簡介
社會保障卡(社??ǎ┦菓?yīng)用頻次和普及程度最高的證卡之一。社保卡采用單一CPU芯片多應(yīng)用COS架構(gòu)設(shè)計,新一代金融社??ǖ娜松鐟?yīng)用支持國密對稱性算法(SM4算法),金融應(yīng)用支持國際(RSA非對稱性算法)國密算法(SM2非對稱性算法)。不同的功能應(yīng)用由不同的密鑰控制體系管理,相互獨立。其中,金融應(yīng)用和非對稱認(rèn)證應(yīng)用遵循國際統(tǒng)一的標(biāo)準(zhǔn),應(yīng)用場景較為成熟,讀寫卡過程較為簡單。社保應(yīng)用的讀寫卡控制也有全國統(tǒng)一的技術(shù)規(guī)范,但由于歷史原因及各地統(tǒng)籌層次的原因,各地在社保領(lǐng)域應(yīng)用的介質(zhì)憑證種類較多,出于便利操作角度考慮,社??ㄗx寫終端兼容多種卡讀寫的“一體化”是近年來常見的終端部署模式。在醫(yī)院藥店等應(yīng)用場所最為普及,以某省會城市定點醫(yī)院為例,讀寫卡終端同時兼容省本級社保卡、省會城市社??ā⒎菢?biāo)老醫(yī)??ā㈣F路醫(yī)???、居民健康卡及院內(nèi)就診卡等多種卡片,在此過程中,社??ㄗx寫卡安全控制問題較為突出。社??ǖ拿荑€控制體系最為嚴(yán)格,也最為安全,具有密鑰保護(hù)和鎖定功能,一旦認(rèn)定收到密鑰攻擊,達(dá)到一定次數(shù)發(fā)生密鑰鎖定,卡片將永久性無法使用,直接影響群眾用卡體驗。
3關(guān)于“多合一”讀寫卡動態(tài)庫的管理控制
各種卡片的讀寫過程差別不是很大,很多“師出同門”,但因為密鑰體系不同,如果不能對多種卡的讀寫卡動態(tài)庫合并及調(diào)用過程進(jìn)行合理的控制管理,輕則影響讀卡速度,重則造成密鑰讀取錯誤,形成“密鑰攻擊”假象,社??▎幼晕冶Wo(hù)造成密鑰鎖定。針對“多合一”讀寫卡動態(tài)庫的管控,應(yīng)該保證3個原則:一是基礎(chǔ)函數(shù)的準(zhǔn)確封裝,對不同的卡種建立相互獨立的動態(tài)庫,并對社??ǖ淖x基本信息、通用讀卡、通用寫卡及PIN校驗等相關(guān)函數(shù)進(jìn)行規(guī)范封裝;二是對卡類型的精準(zhǔn)判斷,在入口進(jìn)行封閉式判斷,將卡類型與動態(tài)庫通道精準(zhǔn)映射;三是密鑰訪問控制模塊的精準(zhǔn)對應(yīng),防止出現(xiàn)密鑰對應(yīng)錯誤,影響解析和提示。
4對PSAM卡及加密機的“內(nèi)外部認(rèn)證”過程控制
卡上電后,會通過卡內(nèi)部認(rèn)證及外部認(rèn)證驗證卡的合法性和用卡環(huán)境的安全性,這一過程是社??ò踩刂频暮诵沫h(huán)節(jié),同時也是容易發(fā)生“意外鎖定”的環(huán)節(jié)。在此過程中,對PSAM卡驗證密鑰和加密機驗證密鑰的調(diào)用順序和銜接要保持準(zhǔn)確,同時對于隨機數(shù)的抽取以及執(zhí)行內(nèi)部認(rèn)證和外部認(rèn)證計算結(jié)果的過程,必須保證真實,保證各自按照合法的密鑰和統(tǒng)一的算法進(jìn)行隨機數(shù)運轉(zhuǎn),密鑰及算法選擇務(wù)必精準(zhǔn)控制;獲取卡片返回的內(nèi)部認(rèn)證鑒別數(shù)據(jù)比對異常時,需及時退出函數(shù),并提示錯誤信息。
5函數(shù)關(guān)閉功能控制
上層業(yè)務(wù)系統(tǒng)在使用社??ㄟ^程中,各項操作過程出現(xiàn)異常時,均應(yīng)確保先調(diào)用SSSE32.DLL動態(tài)庫中的關(guān)閉設(shè)備函數(shù)關(guān)閉設(shè)備、釋放端口,然后退出函數(shù),返回錯誤代碼和錯誤信息描述。早期的一些讀卡動態(tài)為了提高效率,通常不會執(zhí)行關(guān)閉設(shè)備操作,這樣做法風(fēng)險很大,因為一些指令可能被賦予循環(huán)執(zhí)行的屬性,當(dāng)連續(xù)發(fā)出錯誤指令時,容易對密鑰進(jìn)行持續(xù)錯誤驗證,形成持續(xù)密碼攻擊假象,造成社??–OS啟動“密鑰鎖定”程序。
6錯誤提示信息等級精準(zhǔn)控制
要建立完整清晰的“常見錯誤信息表”,對不同卡種的不同問題進(jìn)行差異化提示,便于精準(zhǔn)定位問題。例如:在“PIN重置”等業(yè)務(wù)中,“PIN校驗失敗”和“外部認(rèn)證失敗”的錯誤信息提示很容易被混淆,“PIN校驗失敗”屬于“淺表性”錯誤信息,產(chǎn)生原因是“密碼輸入錯誤”;而“外部認(rèn)證失敗”屬于“危險性”錯誤,是內(nèi)部控制程序出現(xiàn)了問題,必須立即終止操作并核查原因,否則極容易造成“密鑰鎖定”。
7結(jié)束語
社會保障卡已經(jīng)建立的全國統(tǒng)一的管理服務(wù)和管理終端接口規(guī)范,各類業(yè)務(wù)系統(tǒng)在調(diào)用時都須執(zhí)行規(guī)范標(biāo)準(zhǔn),對讀寫卡動態(tài)庫進(jìn)行規(guī)范性檢測,對應(yīng)用程序調(diào)用動態(tài)庫過程進(jìn)行充分測試,在確保規(guī)范性、安全性的基礎(chǔ)上體現(xiàn)便捷性。