于昕
1引言
社會保障卡是應用頻次和普及程度最高的證卡之一,其嚴格的密鑰控制體系保證了安全性。如果在讀寫校驗過程中出現非法程序,卡內操作系統將啟動保護機制,通過鎖卡來保護卡內信息,但是卡密鑰的永久性鎖定,會直接影響群眾用卡體驗。因此,社保卡讀寫卡過程中的安全控制問題是一項需要深入研究的課題。
2社會保障卡安全機制簡介
社會保障卡(社保卡)是應用頻次和普及程度最高的證卡之一。社保卡采用單一CPU芯片多應用COS架構設計,新一代金融社保卡的人社應用支持國密對稱性算法(SM4算法),金融應用支持國際(RSA非對稱性算法)國密算法(SM2非對稱性算法)。不同的功能應用由不同的密鑰控制體系管理,相互獨立。其中,金融應用和非對稱認證應用遵循國際統一的標準,應用場景較為成熟,讀寫卡過程較為簡單。社保應用的讀寫卡控制也有全國統一的技術規范,但由于歷史原因及各地統籌層次的原因,各地在社保領域應用的介質憑證種類較多,出于便利操作角度考慮,社保卡讀寫終端兼容多種卡讀寫的“一體化”是近年來常見的終端部署模式。在醫院藥店等應用場所最為普及,以某省會城市定點醫院為例,讀寫卡終端同時兼容省本級社保卡、省會城市社保卡、非標老醫保卡、鐵路醫保卡、居民健康卡及院內就診卡等多種卡片,在此過程中,社保卡讀寫卡安全控制問題較為突出。社保卡的密鑰控制體系最為嚴格,也最為安全,具有密鑰保護和鎖定功能,一旦認定收到密鑰攻擊,達到一定次數發生密鑰鎖定,卡片將永久性無法使用,直接影響群眾用卡體驗。
3關于“多合一”讀寫卡動態庫的管理控制
各種卡片的讀寫過程差別不是很大,很多“師出同門”,但因為密鑰體系不同,如果不能對多種卡的讀寫卡動態庫合并及調用過程進行合理的控制管理,輕則影響讀卡速度,重則造成密鑰讀取錯誤,形成“密鑰攻擊”假象,社保卡啟動自我保護造成密鑰鎖定。針對“多合一”讀寫卡動態庫的管控,應該保證3個原則:一是基礎函數的準確封裝,對不同的卡種建立相互獨立的動態庫,并對社保卡的讀基本信息、通用讀卡、通用寫卡及PIN校驗等相關函數進行規范封裝;二是對卡類型的精準判斷,在入口進行封閉式判斷,將卡類型與動態庫通道精準映射;三是密鑰訪問控制模塊的精準對應,防止出現密鑰對應錯誤,影響解析和提示。

4對PSAM卡及加密機的“內外部認證”過程控制
卡上電后,會通過卡內部認證及外部認證驗證卡的合法性和用卡環境的安全性,這一過程是社保卡安全控制的核心環節,同時也是容易發生“意外鎖定”的環節。在此過程中,對PSAM卡驗證密鑰和加密機驗證密鑰的調用順序和銜接要保持準確,同時對于隨機數的抽取以及執行內部認證和外部認證計算結果的過程,必須保證真實,保證各自按照合法的密鑰和統一的算法進行隨機數運轉,密鑰及算法選擇務必精準控制;獲取卡片返回的內部認證鑒別數據比對異常時,需及時退出函數,并提示錯誤信息。
5函數關閉功能控制
上層業務系統在使用社保卡過程中,各項操作過程出現異常時,均應確保先調用SSSE32.DLL動態庫中的關閉設備函數關閉設備、釋放端口,然后退出函數,返回錯誤代碼和錯誤信息描述。早期的一些讀卡動態為了提高效率,通常不會執行關閉設備操作,這樣做法風險很大,因為一些指令可能被賦予循環執行的屬性,當連續發出錯誤指令時,容易對密鑰進行持續錯誤驗證,形成持續密碼攻擊假象,造成社保卡COS啟動“密鑰鎖定”程序。
6錯誤提示信息等級精準控制
要建立完整清晰的“常見錯誤信息表”,對不同卡種的不同問題進行差異化提示,便于精準定位問題。例如:在“PIN重置”等業務中,“PIN校驗失敗”和“外部認證失敗”的錯誤信息提示很容易被混淆,“PIN校驗失敗”屬于“淺表性”錯誤信息,產生原因是“密碼輸入錯誤”;而“外部認證失敗”屬于“危險性”錯誤,是內部控制程序出現了問題,必須立即終止操作并核查原因,否則極容易造成“密鑰鎖定”。
7結束語
社會保障卡已經建立的全國統一的管理服務和管理終端接口規范,各類業務系統在調用時都須執行規范標準,對讀寫卡動態庫進行規范性檢測,對應用程序調用動態庫過程進行充分測試,在確保規范性、安全性的基礎上體現便捷性。