本發明涉及智能卡技術領域,具體的,涉及一種智能ic卡數據檢測方法,以及應用該方法的裝置。
背景技術:
對于在智能ic卡(intelligentcard)個人化時,寫卡終端與芯片的通信過程中,特別是非接觸方式的通信過程中,可能會受到靜電或其他因素干擾,從而導致實際存儲到ic卡的數據與原數據不一致。例如:數據在終端程序發送到芯片的過程中被篡改或因芯片內部個別存儲磁道損壞等使得數據與原數據不一致。
而現在的cos(chipoperatingsystem,卡內操作系統或智能卡系統)廠商,以金融應用為例,芯片cos接收到數據后存儲到卡片,然后返回一個狀態碼,例如:sw=9000表示寫入成功,沒有對芯片cos存儲后的數據跟終端的原數據做一致性驗證。目前生產上比較通用做法是在智能ic卡個人化完成后做檢測,即從芯片讀取數據與客戶提供的數據進行一致性比較。但是,對于批量生產的智能ic卡而言,很難做到全檢,特別是一些敏感數據,客戶提供的是密文,寫卡時通過轉加密寫卡,個人化后再去檢測,難以驗證,更有數據在個人化后無法讀取出來校驗,如果在一批卡片中有個別卡出現問題,很難被抽檢出來,即使抽檢到問題卡,對非芯片廠商的專業技術人員很難分析此類問題,直接影響整批卡的質量評估。
技術實現要素:
本發明的主要目的是提供一種防止智能ic卡在個人化階段實際接收和存儲的數據與客戶提供的原數據不一致,且能夠及時發現問題卡的智能ic卡數據檢測方法。
本發明的另一目的是提供一種防止智能ic卡在個人化階段實際接收和存儲的數據與客戶提供的原數據不一致,且能夠及時發現問題卡的智能ic卡數據檢測裝置。
為了實現上述主要目的,本發明提供的智能ic卡數據檢測方法應用于寫卡終端,該方法包括:將個人化數據轉換成個人化apdu指令;通過安全通道向智能ic卡發送個人化apdu指令,獲取智能ic卡的反饋信息;對反饋信息進行一致性比較,獲得比較信息;根據比較信息中止或結束個人化進程。
由上述方案可見,本發明的智能ic卡數據檢測方法通過將個人化數據發送智能ic卡后,獲取智能ic卡的反饋信息進行一致性的比較,保證卡片個人化時每條數據的正確性,防止個人化時,數據被干擾或由于芯片內部存儲區域不穩定導致數據不一致性,從而能夠及時發現問題卡。
進一步的方案中,反饋信息包括智能ic卡所生成的第一mac數據和狀態碼;對反饋信息進行一致性比較,包括:利用在打開安全通道時生成的mac過程密鑰對個人化數據和狀態碼進行mac計算,獲得第二mac數據;對第一mac數據與第二mac數據進行比較。
由此可見,由于智能ic卡返回的第一mac數據中為了信息的安全保密,對卡片中存儲的個人化數據和需要返回的狀態碼進行了mac計算,因此,在對反饋信息進行一致性比較時,需對原個人化數據進行mac計算,利用打開安全通道時產生的mac過程密鑰對個人化數據和狀態碼進行計算,從而得到第二mac數據。通過第一mac數據與第二mac數據的一致性對比,保證比較信息的正確性。
進一步的方案中,獲得比較信息,包括:若第一mac數據與第二mac數據一致且狀態碼為預設字段,則獲得數據成功寫入的結果信息。
由此可見,為了確保個人化數據成功寫入智能ic卡中,僅當第一mac數據與第二mac數據一致且狀態碼為預設字段時才認為數據成功寫入,從而可以判斷個人化apdu指令的成功執行。
進一步的方案中,利用在打開安全通道時產生的mac過程密鑰對個人化數據進行mac計算,獲得第二mac數據,包括:利用智能ic卡中預設的算法進行mac計算。
由此可見,為了保障第一mac數據與第二mac數據計算過程一致,避免數據誤差,在進行第二mac數據計算時,使用與第一mac數據相同的算法,減少驗證誤差。
進一步的方案中,根據比較信息中止或結束個人化進程,包括:根據比較信息生成提示信息。
由此可見,為了操作人員獲知當前智能ic卡個人化的結果,在個人化進行中止或結束時,生成提示信息,以便操作人員發現問題卡片。
為了實現上述另一目的,本發明提供的智能ic卡數據檢測裝置,應用于寫卡終端,該裝置包括:指令生成模塊,用于將個人化數據轉換成個人化apdu指令;數據交互模塊,用于通過安全通道向智能ic卡發送個人化apdu指令,獲取智能ic卡的反饋信息;驗證模塊,用于對反饋信息進行一致性比較,獲得比較信息;執行模塊,用于根據比較信息中止或結束個人化進程。
由上述方案可見,本發明的智能ic卡數據檢測裝置通過將個人化數據發送智能ic卡后,獲取智能ic卡的反饋信息進行一致性的比較,保證卡片個人化時每條數據的正確性,防止個人化時,數據被干擾或由于芯片內部存儲區域不穩定導致數據不一致性,從而能夠及時發現問題卡。
附圖說明
圖1是本發明智能ic卡數據檢測方法實施例的流程圖。
圖2是本發明智能ic卡數據檢測裝置實施例的結構框圖。
以下結合附圖及實施例對本發明作進一步說明。
具體實施方式
本發明的智能ic卡數據檢測方法應用于寫卡終端,實現對寫入智能ic卡的個人化數據進行檢測,保證存儲的數據與客戶提供的原數據一致,及時發現問題卡。其中,寫卡終端是可以實現與智能ic卡數據交互的終端設備。本發明智能ic卡數據檢測裝置用于實現本發明智能ic卡數據檢測方法。
智能ic卡數據檢測方法實施例:
如圖1所示,本發明的智能ic卡數據檢測方法在進行智能ic卡數據檢測時,首先執行步驟s1,將個人化數據轉換成個人化apdu(applicationprotocoldataunit,應用協議數據單元)指令。個人化數據可在寫卡終端直接輸入或通過外接設備輸入,個人化數據包括個人信息數據及安全密鑰等個人數據。在向智能ic卡發送數據時,通常采用報文的形式進行數據的傳輸,因此,在進行數據傳輸前,需將個人化數據轉換成個人化apdu指令,以待向智能ic卡發送。在轉化個人化數據時,根據個人化數據的條數進行轉換成個人化apdu指令序列,每條個人化數據轉換成對應的一條個人化apdu指令。
將個人化數據轉換成個人化apdu指令后,執行步驟s2,通過安全通道向智能ic卡發送個人化apdu指令,獲取智能ic卡的反饋信息。在進行個人化apdu指令前需判斷與智能ic卡的通信通道是否已經打開安全通道,若安全通道已經打開,則發送個人化apdu指令,若安全通道沒有打開,則執行打開安全通道的操作,同時,在打開安全通道時產生mac過程密鑰,產生的mac過程秘鑰分別存儲在寫卡終端和智能ic卡中。在向智能ic卡發送個人化apdu指令時,將個人化apdu指令逐條發送至智能ic卡。
智能ic卡接收到個人化apdu指令后,對接收到的個人化數據進行持久化存入智能ic卡芯片的存儲區,在進行數據存儲時,生成狀態碼。完成數據存儲后,智能ic卡對存儲后的數據進行獲取,然后使用mac過程密鑰對存儲的個人化數據與狀態碼進行mac計算,得到第一mac數據。在進行mac計算時,使用智能ic卡中預設的算法進行計算,預設的算法可以是現有公知的任意加密算法。得到第一mac數據后,智能ic卡向寫卡終端發送反饋信息。本實施例中,反饋信息包括第一mac數據以及狀態碼等數據。
獲取到智能ic卡的反饋信息后,執行步驟s3,對反饋信息進行一致性比較,獲得比較信息。對反饋信息進行一致性比較時包括:利用在打開安全通道時生成的mac過程密鑰對個人化數據和狀態碼進行mac計算,獲得第二mac數據;對第一mac數據與第二mac數據進行比較。其中,利用在打開安全通道時產生mac過程密鑰對個人化數據進行mac計算,獲得第二mac數據的步驟包括:利用智能ic卡中預設的算法進行mac計算。在獲得第二mac數據時,利用智能ic卡中預設的算法進行mac計算,使第一mac數據與第二mac數據計算過程一致,避免數據誤差。
獲得比較信息的步驟包括:若第一mac數據與第二mac數據一致且狀態碼為預設字段,則獲得數據成功寫入的結果信息。智能ic卡響應個人化apdu指令而返回的狀態碼中,狀態碼使用不同的字段代表不同的含義,例如,狀態碼為“9000”表示寫入成功;狀態碼為“6700”表示數據長度錯誤;狀態碼為“6982”表示不滿足安全狀態等。本實施例中,預設字段為“9000”,狀態碼為“9000”表示寫入成功,即,數據成功寫入智能ic卡中。在判斷第一mac數據與第二mac數據一致,且狀態碼表示數據成功寫入智能ic卡時,才認為個人化apdu指令的成功執行。
在獲得比較信息,執行步驟s4,根據比較信息中止或結束個人化進程。其中,在根據比較信息中止或結束個人化進程時包括:根據比較信息生成提示信息。若比較信息判斷為數據成功寫入智能ic卡,則可結束該個人化apdu指令的執行,并生成數據成功寫入的提示信息。若比較信息判斷為數據寫入智能ic卡時出現錯誤,則可中止該個人化apdu指令的執行,并生成數據寫入錯誤的提示信息。生成的提示信息可通過顯示裝置(未示出)進行顯示或者被發送至外接設備進行提示,以便用戶獲知當前個人化apdu指令的執行情況,從而采取相應的措施。當前個人化apdu指令正常結束時,則可自動檢測是否還有下一條個人化apdu指令需要執行,若有,則進行下一條apdu指令執行步驟,若無,則結束個人化的進程。當個人化apdu指令出現中止時,則對中止的原因進行檢測,排除指令執行錯誤的原因,從而確定當前智能ic卡是否出現損壞。
智能ic卡數據檢測裝置實施例:
如圖2所示,本發明的智能ic卡數據檢測裝置包括指令生成模塊1、數據交互模塊2、驗證模塊3以及執行模塊4。
指令生成模塊1用于將個人化數據轉換成個人化apdu指令。個人化數據可在寫卡終端直接輸入或通過外接設備輸入,個人化數據包括個人信息數據及安全密鑰等個人數據。在向智能ic卡發送數據時,通常采用報文的形式進行數據的傳輸,因此,在進行數據傳輸前,需將個人化數據轉換成個人化apdu指令,以待向智能ic卡發送。在轉化個人化數據時,根據個人化數據的條數進行轉換成個人化apdu指令序列,每條個人化數據轉換成對應的一條個人化apdu指令。
數據交互模塊2用于通過安全通道向智能ic卡發送個人化apdu指令,獲取智能ic卡的反饋信息。在進行個人化apdu指令前需判斷與智能ic卡的通信通道是否已經打開安全通道,若安全通道已經打開,則發送個人化apdu指令,若安全通道沒有打開,則執行打開安全通道的操作,同時,在打開安全通道時產生mac過程密鑰,產生的mac過程秘鑰分別存儲在寫卡終端和智能ic卡中。在向智能ic卡發送個人化apdu指令時,將個人化apdu指令逐條發送至智能ic卡。
智能ic卡接收到個人化apdu指令后,對接收到的個人化數據進行持久化存入智能ic卡芯片的存儲區,在進行數據存儲時,生成狀態碼。完成數據存儲后,智能ic卡對存儲后的數據進行獲取,然后使用mac過程密鑰對存儲的個人化數據與狀態碼進行mac計算,得到第一mac數據。在進行mac計算時,使用智能ic卡中預設的算法進行計算,預設的算法可以是現有公知的任意加密算法。得到第一mac數據后,智能ic卡向寫卡終端發送反饋信息。本實施例中,反饋信息包括第一mac數據以及狀態碼等數據。
驗證模塊3用于對反饋信息進行一致性比較,獲得比較信息。驗證模塊3對反饋信息進行一致性比較包括:利用在打開安全通道時生成的mac過程密鑰對個人化數據和狀態碼進行mac計算,獲得第二mac數據;對第一mac數據與第二mac數據進行比較。其中,驗證模塊3利用在打開安全通道時產生mac過程密鑰對個人化數據進行mac計算,獲得第二mac數據包括:利用智能ic卡中預設的算法進行mac計算。在獲得第二mac數據時,利用智能ic卡中預設的算法進行mac計算,使第一mac數據與第二mac數據計算過程一致,避免數據誤差。
驗證模塊3獲得比較信息包括:若第一mac數據與第二mac數據一致且狀態碼為預設字段,則獲得數據成功寫入的結果信息。智能ic卡響應個人化apdu指令而返回的狀態碼中,狀態碼使用不同的字段代表不同的含義,例如,狀態碼為“9000”表示寫入成功;狀態碼為“6700”表示數據長度錯誤;狀態碼為“6982”表示不滿足安全狀態等。本實施例中,預設字段為“9000”,狀態碼為“9000”表示寫入成功,即,數據成功寫入智能ic卡中。在判斷第一mac數據與第二mac數據一致,且狀態碼表示數據成功寫入智能ic卡時,才認為個人化apdu指令的成功執行。
執行模塊4用于根據比較信息中止或結束個人化進程。其中,執行模塊4在根據比較信息中止或結束個人化進程時包括:根據比較信息生成提示信息。若比較信息判斷為數據成功寫入智能ic卡,則執行模塊4可結束該個人化apdu指令的執行,并生成數據成功寫入的提示信息。若比較信息判斷為數據寫入智能ic卡時出現錯誤,則執行模塊4可中止該個人化apdu指令的執行,并生成數據寫入錯誤的提示信息。生成的提示信息可通過顯示裝置(未示出)進行顯示或者被發送至外接設備進行提示,以便用戶獲知當前個人化apdu指令的執行情況,從而采取相應的措施。當前個人化apdu指令正常結束時,則可自動檢測是否還有下一條個人化apdu指令需要執行,若有,則進行下一條apdu指令執行步驟,若無,則結束個人化的進程。當個人化apdu指令出現中止時,則對中止的原因進行檢測,排除指令執行錯誤的原因,從而確定當前智能ic卡是否出現損壞。
由上述可知,本發明通過將個人化數據發送智能ic卡后,獲取智能ic卡的反饋信息進行一致性的比較,保證卡片個人化時每條數據的正確性,防止個人化時,數據被干擾或由于芯片內部存儲區域不穩定導致數據不一致性,從而能夠及時發現問題卡。此外,由于智能ic卡返回的第一mac數據中為了信息的安全保密,對卡片中存儲的個人化數據進行了mac計算,因此,在對反饋信息進行一致性比較時,需對原個人化數據進行mac計算,利用在打開安全通道時產生的mac過程密鑰對個人化數據進行計算,從而得到第二mac數據。通過第一mac數據與第二mac數據的一致性對比,保證比較信息的正確性。
需要說明的是,以上僅為本發明的優選實施例,但發明的設計構思并不局限于此,凡利用此構思對本發明做出的非實質性修改,也均落入本發明的保護范圍之內。