更新數(shù)據(jù)包,以此封裝成64條標準CCID通信指令依次下發(fā)給應(yīng)用處理器。
[0139]步驟512、安全處理器將安全處理器的外部flash中存儲的安全boot更新數(shù)據(jù)存儲到安全處理器的內(nèi)部flash的boot存儲地址,擦除安全處理器的外部flash中存儲的安全boot校驗和以及安全boot更新數(shù)據(jù),執(zhí)行步驟514 ;
[0140]本實施例中,安全處理器依序從安全處理器的外部flash中讀取預(yù)設(shè)長度的安全boot更新數(shù)據(jù),順序存儲到安全處理器的內(nèi)部flash的boot存儲地址。
[0141]例如,預(yù)設(shè)長度為2k字節(jié)。
[0142]步驟513、安全處理器擦除安全處理器的外部flash中存儲的安全boot校驗和以及安全boot更新數(shù)據(jù),執(zhí)行步驟514 ;
[0143]步驟514、安全處理器向應(yīng)用處理器返回安全boot下載結(jié)束指令應(yīng)答;
[0144]步驟515、應(yīng)用處理器根據(jù)安全處理器返回的安全boot下載結(jié)束指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID協(xié)議層數(shù)據(jù)后返回給上位機。
[0145]參見圖3,本實施例中,金融終端下載正式應(yīng)用固件,具體包括:
[0146]步驟601、應(yīng)用處理器接收到上位機下發(fā)的應(yīng)用固件下載更新指令后判斷應(yīng)用固件下載更新指令的類型,若為下載開始指令則執(zhí)行步驟602,若為下載指令則執(zhí)行步驟606,若為下載結(jié)束指令則執(zhí)行步驟610 ;
[0147]步驟602、應(yīng)用處理器向安全處理器發(fā)送應(yīng)用固件下載開始指令;
[0148]本實施例中,應(yīng)用處理器向安全處理器發(fā)送的應(yīng)用固件下載開始指令中包含應(yīng)用處理器從上位機下發(fā)的CCID通信指令中獲取的應(yīng)用固件下載更新頭文件。本實施例中,應(yīng)用固件下載更新頭文件中包含應(yīng)用固件下載更新文件的信息和簽名數(shù)據(jù),其中,應(yīng)用固件下載更新文件的信息包括應(yīng)用固件下載更新文件的名稱和/或版本號和/或加密模式和/或校驗?zāi)J胶?或更新地址空間和/或地址類型和/或文件存儲目的地址和/或文件長度等。
[0149]步驟603、安全處理器從應(yīng)用固件下載開始指令中獲取應(yīng)用固件下載更新頭文件,并將應(yīng)用固件下載更新頭文件存儲到安全處理器的外部flash ;
[0150]步驟604、安全處理器向應(yīng)用處理器返回應(yīng)用固件下載開始指令應(yīng)答;
[0151]步驟605、應(yīng)用處理器根據(jù)安全處理器返回的應(yīng)用固件下載開始指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID通信協(xié)議層數(shù)據(jù)后返回給上位機,返回步驟601 ;
[0152]步驟606、應(yīng)用處理器向安全處理器下發(fā)應(yīng)用固件下載指令;
[0153]本實施例中,應(yīng)用處理器向安全處理器下發(fā)的應(yīng)用固件下載指令中包含應(yīng)用處理器從上位機下發(fā)的CCID通信指令中獲取的應(yīng)用固件下載更新文件。
[0154]步驟607、安全處理器從應(yīng)用固件下載指令中獲取應(yīng)用固件下載更新文件,并將應(yīng)用固件下載更新文件存儲到安全處理器的外部flash ;
[0155]本實施例中,應(yīng)用固件下載更新文件中包含正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值,或者包含對正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值進行加密得到的密文。
[0156]步驟608、安全處理器向應(yīng)用處理器返回應(yīng)用固件下載指令應(yīng)答;
[0157]本實施例中,上位機將應(yīng)用固件下載更新文件分包后封裝成若干包含應(yīng)用固件下載更新文件數(shù)據(jù)包的標準CCID通信指令,依次下發(fā)給應(yīng)用處理器,相應(yīng)地,應(yīng)用處理器接收到每條包含應(yīng)用固件下載更新文件數(shù)據(jù)包的標準CCID通信指令時,向安全處理器下發(fā)一條包含相應(yīng)應(yīng)用固件下載更新文件數(shù)據(jù)包的應(yīng)用固件文件下載指令,安全處理器獲取應(yīng)用固件文件下載指令中的應(yīng)用固件下載更新文件數(shù)據(jù)包,將獲取到的應(yīng)用固件下載更新文件數(shù)據(jù)包順序存入安全處理器的外部flash,向應(yīng)用處理器返回應(yīng)用固件文件下載指令應(yīng)口 ο
[0158]步驟609、應(yīng)用處理器根據(jù)安全處理器返回的應(yīng)用固件下載指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID通信協(xié)議層數(shù)據(jù)后返回給上位機,返回步驟601 ;
[0159]步驟610、應(yīng)用處理器向安全處理器下發(fā)應(yīng)用固件下載結(jié)束指令;
[0160]步驟611、安全處理器對應(yīng)用固件下載更新文件進行校驗,若校驗通過則執(zhí)行步驟612,若校驗未通過則執(zhí)行步驟613 ;
[0161 ] 本實施例中,當應(yīng)用固件下載更新文件中包含正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值時,安全處理器對應(yīng)用固件下載更新文件進行校驗具體包括:安全處理器根據(jù)應(yīng)用固件下載更新頭文件包含的應(yīng)用固件下載更新文件的信息中的校驗?zāi)J叫畔⑦x擇相應(yīng)哈希算法(或者安全處理器直接選擇預(yù)設(shè)哈希算法),根據(jù)選擇的哈希算法對安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件進行哈希運算,使用根密鑰解密應(yīng)用固件更新密鑰密文,得到應(yīng)用固件更新密鑰明文,根據(jù)應(yīng)用固件更新密鑰明文對應(yīng)用固件下載更新頭文件包含的簽名數(shù)據(jù)進行驗簽,得到應(yīng)用固件下載更新文件摘要,判斷驗簽得到的應(yīng)用固件下載更新文件摘要與對安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件進行哈希運算得到的摘要是否一致,是則校驗通過,否則校驗未通過;
[0162]本實施例中,當應(yīng)用固件下載更新文件中包含對正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值加密得到的密文時,安全處理器對應(yīng)用固件下載更新文件進行校驗具體包括:安全處理器根據(jù)應(yīng)用固件下載更新頭文件包含的應(yīng)用固件下載更新文件的信息中的校驗?zāi)J叫畔⑦x擇相應(yīng)哈希算法(或者安全處理器直接選擇預(yù)設(shè)哈希算法),根據(jù)選擇的哈希算法對安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件進行哈希運算,使用根密鑰解密應(yīng)用固件更新密鑰密文,得到應(yīng)用固件更新密鑰明文,根據(jù)應(yīng)用固件更新密鑰明文對應(yīng)用固件下載更新頭文件包含的簽名數(shù)據(jù)進行驗簽,得到應(yīng)用固件下載更新文件摘要和應(yīng)用固件下載密鑰,判斷驗簽得到的應(yīng)用固件下載更新文件摘要與對安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件進行哈希運算得到的摘要是否一致,是則校驗通過,否則校驗未通過。
[0163]步驟612、安全處理器向安全處理器的外部flash中寫入應(yīng)用固件更新標志,執(zhí)行步驟614 ;
[0164]本實施例中,步驟612中還可以包括安全處理器控制IXD顯示重新開機提示。
[0165]步驟613、安全處理器擦除安全處理器的外部flash中存儲的應(yīng)用固件下載更新頭文件和應(yīng)用固件下載更新文件,執(zhí)行步驟614 ;
[0166]本實施例中,步驟613中還可以包括安全處理器控制IXD顯示相應(yīng)錯誤提示。
[0167]步驟614、安全處理器向應(yīng)用處理器返回應(yīng)用固件下載結(jié)束指令應(yīng)答;
[0168]步驟615、應(yīng)用處理器根據(jù)安全處理器返回的應(yīng)用固件下載結(jié)束指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID通信協(xié)議層數(shù)據(jù)后返回給上位機。
[0169]參見圖4,本實施例中,金融終端用正式應(yīng)用固件替換金融終端中的測試應(yīng)用固件,具體包括:
[0170]步驟701、應(yīng)用處理器擦除應(yīng)用處理器的內(nèi)部flash中的測試應(yīng)用固件;
[0171]具體地,應(yīng)用處理器擦除應(yīng)用處理器的內(nèi)部flash的固件存儲地址中的數(shù)據(jù)。
[0172]步驟702、應(yīng)用處理器向安全處理器發(fā)送獲取應(yīng)用固件下載更新頭文件指令;
[0173]步驟703、安全處理器讀取安全處理器的外部flash中存儲的應(yīng)用固件下載更新頭文件;
[0174]步驟704、安全處理器向應(yīng)用處理器返回應(yīng)用固件下載更新頭文件;
[0175]步驟705、應(yīng)用處理器根據(jù)應(yīng)用固件下載更新頭文件中的文件長度向安全處理器發(fā)送獲取正式應(yīng)用固件及其摘要的簽名值指令;
[0176]步驟706、安全處理器根據(jù)安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件獲取正式應(yīng)用固件及其摘要的簽名值;
[0177]本實施例中,當應(yīng)用固件下載更新文件中包含正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值時,步驟706具體包括:安全處理器讀取安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件得到正式應(yīng)用固件及其摘要的簽名值。
[0178]本實施例中,當應(yīng)用固件下載更新文件中包含對正式應(yīng)用固件和正式應(yīng)用固件摘要的簽名值加密得到的密文時,步驟706具體包括:安全處理器使用根密鑰解密應(yīng)用固件更新密鑰密文,得到應(yīng)用固件更新密鑰明文,使用應(yīng)用固件更新密鑰明文對應(yīng)用固件下載更新頭文件包含的簽名數(shù)據(jù)進行驗簽,從驗簽結(jié)果中獲取應(yīng)用固件下載密鑰,根據(jù)應(yīng)用固件下載更新頭文件包含的應(yīng)用固件下載更新文件的信息中的加密模式信息選擇相應(yīng)加解密算法(或者直接選擇預(yù)設(shè)加解密算法),根據(jù)選擇的加解密算法使用應(yīng)用固件下載密鑰對安全處理器的外部flash中存儲的應(yīng)用固件下載更新文件解密,得到正式應(yīng)用固件及其摘要的簽名值。
[0179]步驟707、安全處理器向應(yīng)用處理器返回正式應(yīng)用固件及其摘要的簽名值;
[0180]步驟708、應(yīng)用處理器將安全處理器返回的正式應(yīng)用固件及其摘要的簽名值寫入應(yīng)用處理器的內(nèi)部flash ;
[0181]具體地,應(yīng)用處理器將安全處理器返回的正式應(yīng)用固件及其摘要的簽名值寫入應(yīng)用處理器的內(nèi)部flash的固件存儲地址。
[0182]本實施例中,步驟705?步驟708具體包括:應(yīng)用處理器向安全處理器依次發(fā)送若干獲取更新數(shù)據(jù)指令,直至應(yīng)用處理器根據(jù)之前獲取到的應(yīng)用固件下載更新頭文件包含的應(yīng)用下載更新文件的信息中的文件長度判斷已獲取到全部更新數(shù)據(jù);相應(yīng)地,安全處理器接收到每條獲取更新數(shù)據(jù)指令時,順序獲取預(yù)設(shè)長度的更新數(shù)據(jù)返回給應(yīng)用處理器,應(yīng)用處理器將當前預(yù)設(shè)長度的更新數(shù)據(jù)順序?qū)懭霊?yīng)用處理器內(nèi)部flash的固件存儲地址。
[0183]步驟709、應(yīng)用處理器向安全處理器發(fā)送應(yīng)用固件更新完成指令;
[0184]步驟710、安全處理器擦除安全處理器的外部flash中存儲的應(yīng)用固件下載更新頭文件、應(yīng)用固件下載更新文件以及應(yīng)用固件更新標志;
[0185]步驟711、安全處理器向應(yīng)用處理器返回應(yīng)用固件更新完成指令應(yīng)答。
[0186]本實施例中,步驟711之后,應(yīng)用處理器接收到安全處理器返回的應(yīng)用固件更新完成指令應(yīng)答時還包括:應(yīng)用處理器對應(yīng)用處理器的內(nèi)部flash中存儲的正式應(yīng)用固件進行哈希運算,將應(yīng)用處理器的內(nèi)部flash中存儲的正式應(yīng)用固件摘要的簽名值發(fā)送給安全處理器進行驗簽;安全處理器對應(yīng)用處理器發(fā)送的正式應(yīng)用固件摘要的簽名值進行驗簽,將驗簽結(jié)果返回給應(yīng)用處理器;應(yīng)用處理器判斷哈希運算結(jié)果和安全處理器返回的驗簽結(jié)果是否一致,是則運行正式應(yīng)用固件,否則提示錯誤。
[0187]參見圖5,本實施例中,金融終端下載正式安全固件,具體包括:
[0188]步驟801、應(yīng)用處理器接收到上位機下發(fā)的安全固件下載更新指令后判斷安全固件下載更新指令的類型,若為下載開始指令則執(zhí)行步驟802,若為下載指令則執(zhí)行步驟806,若為下載結(jié)束指令則執(zhí)行步驟810 ;
[0189]步驟802、應(yīng)用處理器向安全處理器發(fā)送安全固件下載開始指令;
[0190]本實施例中,應(yīng)用處理器向安全處理器發(fā)送的安全固件下載開始指令中包含應(yīng)用處理器從上位機下發(fā)的CCID通信指令中獲取的安全固件下載更新頭文件。本實施例中,安全固件下載更新頭文件中包含安全固件下載更新文件的信息和簽名數(shù)據(jù),其中,安全固件下載更新文件的信息包括安全固件下載更新文件的名稱和/或版本號和/或加密模式和/或校驗?zāi)J胶?或更新地址空間和/或地址類型和/或文件存儲目的地址和/或文件長度等信息。
[0191]步驟803、安全處理器從安全固件下載開始指令中獲取安全固件下載更新頭文件,并將安全固件下載更新頭文件存儲到安全處理器的外部flash ;
[0192]步驟804、安全處理器向應(yīng)用處理器返回安全固件下載開始指令應(yīng)答;
[0193]步驟805、應(yīng)用處理器根據(jù)安全處理器返回的安全固件下載開始指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID通信協(xié)議層數(shù)據(jù)后返回給上位機,返回步驟801 ;
[0194]步驟806、應(yīng)用處理器向安全處理器下發(fā)安全固件下載指令;
[0195]本實施例中,應(yīng)用處理器向安全處理器下發(fā)的安全固件下載指令中包含應(yīng)用處理器從上位機下發(fā)的CCID通信指令中獲取的安全固件下載更新文件。
[0196]步驟807、安全處理器從安全固件下載指令中獲取安全固件下載更新文件,并將安全固件下載更新文件存儲到安全處理器的外部flash ;
[0197]本實施例中,安全固件下載更新文件中包含正式安全固件和正式安全固件摘要的簽名值,或者包含對正式安全固件和正式安全固件摘要的簽名值進行加密得到的密文。
[0198]步驟808、安全處理器向應(yīng)用處理器返回安全固件下載指令應(yīng)答;
[0199]本實施例中,上位機將安全固件下載更新文件分包后封裝成若干包含安全固件下載更新文件數(shù)據(jù)包的標準CCID通信指令,依次下發(fā)給應(yīng)用處理器,相應(yīng)地,應(yīng)用處理器接收到每條包含安全固件下載更新文件數(shù)據(jù)包的標準CCID通信指令時,向安全處理器下發(fā)一條包含相應(yīng)安全固件下載更新文件數(shù)據(jù)包的安全固件文件下載指令,安全處理器獲取安全固件文件下載指令中的安全固件下載更新文件數(shù)據(jù)包,將獲取到的安全固件下載更新文件數(shù)據(jù)包順序存入安全處理器的外部flash,向應(yīng)用處理器返回安全固件文件下載指令應(yīng)口 ο
[0200]步驟809、應(yīng)用處理器根據(jù)安全處理器返回的安全固件下載指令應(yīng)答組織應(yīng)答數(shù)據(jù),對應(yīng)答數(shù)據(jù)封裝CCID通信協(xié)議層數(shù)據(jù)后返回給上位機,返回步驟801 ;
[0201]步驟810、應(yīng)用處理器向安全處理器下發(fā)安全固件下載結(jié)束指令;
[0202]步驟811、安全處理器對安全固件下載更新文件進行校驗,若校驗通過則執(zhí)行步驟812,若校驗未通過則執(zhí)行步驟813 ;
[0203]本實施例中,當安全固件下載更新文件中包含正式安全固件和正式安全固件摘要的簽名值時,安全處理器對安全固件下載更新文件進行校驗具體包括:安全處理器根據(jù)安全固件下載更新頭文件包含的安全固件下載更新文件的信息中的校驗?zāi)J叫畔⑦x擇相應(yīng)哈希算法(或者安全處理器直接選