社??╟os如何安全加密
由于社??ǖ膽?yīng)用范圍比較廣,涉及到一個城市乃至全國參加養(yǎng)老保險、醫(yī)療保險的人員,而且使用過程中還具有帳戶金額劃入、醫(yī)療消費等功能,所以社??ㄏ到y(tǒng)的安全可靠性尤為重要。為了保證社保卡的防偽性、操作的安全性以及數(shù)據(jù)的保密完整性,在社保卡COS開發(fā)過程中,需要采取一系列的加密措施來保證卡片應(yīng)用的安全性。
一、密鑰管理體系
密鑰控制著卡內(nèi)所有文件的訪問,與各種運算密切相關(guān),是保證社??ǖ陌矔缘年P(guān)鍵要素。社??▋?nèi)使用的密鑰有幾十個,按功能可以劃分為應(yīng)用維護、鎮(zhèn)定控制、應(yīng)用數(shù)據(jù)更新、交易和應(yīng)用數(shù)據(jù)讀取等類型。對卡片的很多操作都需要對密鑰進行認證,取得相應(yīng)權(quán)限后才能進行。
每個卡片所使用的卡內(nèi)密鑰,都是通過三級分散來確定的,這樣既保證了密鑰的相對獨立性,又為卡片的安全應(yīng)用提供了強有力的保障。根據(jù)發(fā)卡過程的要求,卡片在發(fā)行中需要實行主管機構(gòu)與卡片發(fā)行中心兩級密鑰管理體制.對密鑰進行三級分散。社??ǖ闹鞴軝C構(gòu)作為社保卡的密鑰管理中心,它產(chǎn)生發(fā)行單位的根密鑰(包括發(fā)卡授權(quán)密鑰等),把根街鑰傳遞給二級密鑰管理中心,即社??ǖ陌l(fā)行中心。由發(fā)行中心進行下一步的工作??òl(fā)行中心從主管機構(gòu)得到根密鑰后,進行二次分散,得到各種密鑰的母密鑰,然后把相應(yīng)的母密鑰裝載到SAM(Secure Access Module。安全存取模塊)卡及發(fā)卡母卡上。在卡片發(fā)行的時候,由發(fā)卡母卡上的各個母密鑰根據(jù)每個社保卡的卡號,分散出每個杜??╰所使用的子密鑰。
每個杜??ǖ淖用荑€是用長片ATR(AJunver To Reset。復(fù)位應(yīng)答)的T8-TD字節(jié)(卡號),加上“0000”作為分散因子,對母密鑰分敢得到的。
為了增強與應(yīng)用終蠟的認證程度和增加文件加密的安全性,社??ㄒ笤趫笪牡陌踩珎魉秃徒灰椎倪^程巾使用過程密鑰。過程密鑰是使用對應(yīng)的子密鑰進行DES或3DES(原密鑰長度為16字節(jié)時)加密運算產(chǎn)生的。
在報文的安全傳送過程中,無論是對MAC (MessageAuthentication Code。報文鑒別代碼)的計算還是數(shù)據(jù)的加密,都使用了過程密鑰。在這里使用的過程密鑰是通過以下方法產(chǎn)生的:通過IC卡獲取8字節(jié)的隨機數(shù)作為輸入數(shù)據(jù),與原密鑰進行加密運算,得到8字節(jié)的過程密鑰。
二、操作權(quán)限的控制機制
在對社??ㄟM行操作之前,應(yīng)用終端必須對卡片進行有效性檢查,檢查卡片是否有效或者說確認卡片是否可以在杜保應(yīng)用環(huán)境中使用。這個檢測過程通過進行內(nèi)部認證來實現(xiàn)。內(nèi)部認證是杜??–OS系統(tǒng)的一個命令,其具體實現(xiàn)過程如下:
1、終端產(chǎn)生每組為8字節(jié)的兩組隨機數(shù)。隨機數(shù)可以通過軟件生成,也可以通過SAM卡或社??ǖ娜‰S機數(shù)功能來獲得;
2、終端對卡片發(fā)出內(nèi)部認證命令,兩組隨機數(shù)放在散據(jù)域中發(fā)給卡片;
3、卡片接收到內(nèi)部認證命令后,通過命令中的密鑰標識符找到相應(yīng)的密鑰,與第一組隨機散產(chǎn)生過程密鑰,然后對第二組隨機敦進行加密運算,把結(jié)果作為鑒別信息回送給終端;
4、終端在發(fā)出命令后,進行與卡片同樣的運算過程,在接收返回信息后,對鑒別信息進行比較驗證。
只有在內(nèi)部認證通過的情況下,終端才會對卡片進行后續(xù)操作。驗證通過后,終端可以讀取片片的相關(guān)信息,檢查卡片的有效性。
內(nèi)部認證可以實現(xiàn)終端對社保卡的鑒別。而IC卡中的應(yīng)用驗證終端的有效性以及讓終端獲得某種操作的權(quán)限,則需要通過外部認證來實現(xiàn)。
當驗證通過后,卡片記住該密鑰成功鑒別的結(jié)果,直到斷電或選擇別的應(yīng)用。終端則通過對密鑰的外部認證獲得了該密鑰所控制的權(quán)限,可以進行相應(yīng)的操作。
三、如何加密傳輸重要報文
在卡片與應(yīng)用終端進行信息交換過程中,有持卡人的PIN、保險金額等重要的信息。這些信息如果被竊取或篡改,后果是相當嚴重的。
社??ú扇◎炞CMAC來保證報文的完整性,通過對交換信息的加密來保證信息的安全保密性。
當命令數(shù)據(jù)采用安全報文傳送時,要求對方進行MAC認證或加密傳送。MAC要進行驗證的數(shù)據(jù)是COS的命令頭和命令數(shù)據(jù)域中的數(shù)據(jù)元。MAC認證碼是通過過程密鑰對數(shù)據(jù)進行DES運算得到的長度為4個字節(jié)的數(shù)據(jù)元,它在通信過程中附加在命令數(shù)據(jù)域的最后,發(fā)送到對方。當接收方接收完命令的所有數(shù)據(jù)后,需要對數(shù)據(jù)進行相應(yīng)的運算,也計算出一個MAC碼,與發(fā)送方的MAC碼比較,進行比較后二者相同時才認為接收的命令是完整的、正確的。
計算MAC認證碼的過程如下:
1、用COS命令頭及命令數(shù)據(jù)域中的明文或密文數(shù)據(jù)組合成要認證的原始數(shù)據(jù)塊;
2、將原始認證數(shù)據(jù)分為以8個字節(jié)為單位的散據(jù)塊,記作D1,D2….Di。最后的數(shù)據(jù)塊可能是1-8字節(jié);
3、如果最后的數(shù)據(jù)塊長度不足8個字節(jié),則在其后加上十六進制數(shù)“80”和若干個“O”,直到滿足長度為8個字節(jié);如果最后的數(shù)據(jù)塊長度剛好8個字節(jié),則在其后加上十六進制數(shù)“80 00 00 00 00 _00 00 00”;
4、數(shù)據(jù)塊D1作為明文M1與MAC過程密鑰KMA進行DES加密運算,得到密文CI;CI與D2異或后作為明文M2,再與KMA進行DES加密運算;重復(fù)以上步驟,直到對Ci-1與Di的異或結(jié)果加密完成,得到Ci;
5、在Ci中,左起取4個字節(jié)作為MAC認證碼。
4、防止操作的異常中斷
保持所操作數(shù)據(jù)的完整性是杜保卡安全的一個重要部分。在某個操作(特別是交易)過程中.可能會由于掉咆等原岡造成操作的異常中斷。這時,對卡片操作的結(jié)果是不可預(yù)料的,對卡內(nèi)敷據(jù)的更改可能完成了。也可能只完成了一部分。如果只完成了一部分,就會造成卡內(nèi)數(shù)據(jù)不正確、不完整。
社??ㄍㄟ^檢驗交易認證碼來檢驗交易是否完成。社??ㄔ谕瓿山灰赘陆痤~之前,必須計算與當前交易數(shù)據(jù)密切相關(guān)的MAC和TAC (交易驗證碼)碼(帳戶劃入交易只有TAC碼),并保存下來。當交易數(shù)據(jù)更新成功后,必須保證通過“取交易認證碼”命令可以獲得與交易相應(yīng)的MAC和TAC碼。如果在交易操作結(jié)束后未能收到響應(yīng),卡片就被拔出,終端可以通過。取交易認證碼4來檢查卡內(nèi)數(shù)據(jù)是否已經(jīng)被更新。
防拔機制的引入是為了防止在操作過程中只更新了卡內(nèi)數(shù)據(jù)的一部分。如果操作突然中斷了,卡片有可能正在執(zhí)行一個命令,這樣會導(dǎo)致命令沒有執(zhí)行完,而命令中需更新的數(shù)據(jù)也只更新了一部分。要防止這種情況的出現(xiàn),就需要在每次更新數(shù)據(jù)蒔對原數(shù)據(jù)進行備份,以備在異常情況出現(xiàn)后進行數(shù)據(jù)恢復(fù)使用。
在確認命令處理過程正確完成,并且需要更新的數(shù)據(jù)已經(jīng)寫到相應(yīng)的位置,卡片丟棄備份數(shù)據(jù)。如果出現(xiàn)異常情況,則在卡片重新上電后,卡片檢測更新數(shù)據(jù)的標志位,如果數(shù)據(jù)更新沒有完成,就需要把執(zhí)行命令前的原效據(jù)恢復(fù)到相應(yīng)的位置,以保證數(shù)據(jù)的完整性和正確性。
在越來越重視信息化管理的今天,方便、安全的杜保卡將會得到更廣泛的應(yīng)用。社保卡所采取的一系列加密保障措施,是社??ǖ靡栽诟蠓秶鷥?nèi)推廣應(yīng)用的堅強基石。如果這些安全手段與接口終端以及應(yīng)用系統(tǒng)的安全措施相結(jié)合,就能更好地防范對卡片的非法操作,更好地保護社保效據(jù)的安全。
小知識之密鑰
密鑰是一種參數(shù),它是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù)。








