一種晶片密鑰的寫入方法及裝置與流程
2023-12-02 03:45:41 2

本發明涉及晶片安全技術領域,特別涉及一種晶片密鑰的寫入方法及裝置。
背景技術:
隨著科技的不斷進步,晶片已經廣泛應用到各個領域,如:電力、金融、交通、社保、環保等多個行業。無論應用於哪個行業,對晶片的安全、速度要求卻是共同的。如何保證晶片應用的安全性,這裡面有一整套的安全機制,其中涉及到的一部分即是晶片中密鑰的寫入,包括密鑰的裝載及更新。同時,在安全的情況下,如何快速的裝載密鑰、更新密鑰也是信息化社會提高用戶體驗的不得不解決的問題。
現有技術中一般晶片應用開發商,是直接在指令中給出密鑰值,沒有相關密鑰值是否完整性的保護,且在執行操作時每次僅能裝載、或更新一條密鑰。大大降低了密鑰裝載及更新的速度。不能廣泛應用於對密鑰安全性要求高、執行速度快的場合。
技術實現要素:
本發明提供一種晶片密鑰的寫入方法及裝置,用於解決現有技術中向晶片內寫入密鑰的方案無法保證裝載及更新密鑰的完整性和快速性的技術問題。
本發明實施例提供一種晶片密鑰的寫入方法,包括:
輸入晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;
根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;
根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性。
本發明實施例提供的方法中,通過採用輸入晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性的技術手段,解決了現有技術中向晶片中更新或裝載密鑰時,無法對密鑰值的完整性進行驗證,並且每次僅能寫入一條密鑰,效率較低的技術問題,進而實現了一方面保證了寫入密鑰的完整性,另一方面,加快了密鑰裝載及更新處理的數量,有效加快晶片的密鑰處理能力技術效果,並且是一種新型的密鑰信息基於MAC校驗方式的可同時裝載及更新多條密鑰的解決方案。
可選的,在確定寫入所述晶片的密鑰有完整性之後,該方法還包括:
根據所述指令中包含的解密參數,對所述N個密鑰密文解密得到相應的密鑰明文;
根據所述指令中包含的指示裝載或更新的參數,從所述密鑰明文中解析出需要寫入的密鑰內容;
根據所述指令中包含的密鑰個數參數確定N的數值;
將確定的N的數值個所述密鑰內容寫入所述晶片,進行密鑰裝載或更新。
可選的,所述N個密鑰密文和所述MAC值位於所述指令的數據域中。
可選的,每條密鑰密文包括密鑰明文,與裝載或更新參數相關的密文填充字節和密文參數;
每條密鑰明文包括:8位元組密鑰屬性和16位元組密鑰內容。
可選的,所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值,具體包括:
在所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文後填充校驗填充字節,並進行MAC計算,得到數據完整性校驗值;
所述根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性,具體包括:
比較所述數據完整性校驗值與所述MAC值是否一致,若一致,則確定寫入所述晶片的密鑰具有完整性;若不一致,則返回校驗出錯信息。
基於同樣的發明構思,本發明實施例繼續提供一種晶片密鑰的寫入裝置,包括:
接收模塊,用於接收輸入的晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;
校驗模塊,用於根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;
完整確定模塊,用於根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性。
本發明實施例提供的裝置,具有基於MAC校驗方式的可同時裝載及更新多條密鑰的功能。具有接收輸入的晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性的功能,解決了現有技術中向晶片中更新或裝載密鑰時,無法對密鑰值的完整性進行驗證,並且每次僅能寫入一條密鑰,效率較低的技術問題,進而實現了一方面保證了寫入密鑰的完整性,另一方面,加快了密鑰裝載及更新處理的數量,有效加快晶片的密鑰處理能力技術效果。
可選的,該裝置還包括:
解密模塊,用於在完整確定模塊確定寫入所述晶片的密鑰有完整性之後,根據所述指令中包含的解密參數,對所述N個密鑰密文解密得到相應的密鑰明文;
解析模塊,用於根據所述指令中包含的指示裝載或更新的參數,從所述密鑰明文中解析出需要寫入的密鑰內容;
數量確定模塊,用於根據所述指令中包含的密鑰個數參數確定N的數值;
寫入模塊,用於將確定的N的數值個所述密鑰內容寫入所述晶片,進行密鑰裝載或更新。
可選的,所述N個密鑰密文和所述MAC值位於所述指令的數據域中。
可選的,每條密鑰密文包括密鑰明文,與裝載或更新參數相關的密文填充字節和密文參數;
每條密鑰明文包括:8位元組密鑰屬性和16位元組密鑰內容。
可選的,所述校驗模塊,具體用於在所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文後填充校驗填充字節,並進行MAC計算,得到數據完整性校驗值;
所述完整確定模塊,具體用於比較所述數據完整性校驗值與所述MAC值是否一致,若一致,則確定寫入所述晶片的密鑰具有完整性;若不一致,則返回校驗出錯信息。
本發明的其它特徵和優點將在隨後的說明書中闡述,並且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發明的進一步理解,並且構成說明書的一部分,與本發明的實施例一起用於解釋本發明,並不構成對本發明的限制。在附圖中:
圖1為本發明實施例一中提供的一種晶片密鑰的寫入方法的流程圖;
圖2為本發明實施例二中提供的一種晶片密鑰的寫入方法的流程圖;
圖3為本發明實施例三中提供的一種晶片密鑰的寫入裝置的結構示意圖。
具體實施方式
以下結合附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用於說明和解釋本發明,並不用於限定本發明。
實施例一
本發明實施例提供一種晶片密鑰的寫入方法,該方法適合部署在對晶片更新或裝載密鑰的裝載或設備上。如圖1所示,該方法包括:
101,輸入晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;
其中,本實施例及下述實施例中提到的指令均是指晶片密鑰裝載及更新指令。提到的寫入密鑰包括更新密鑰或裝載密鑰。
其中,N代表可寫入一條密鑰,也可以同時寫入多條密鑰,即寫入多條密鑰內容。
102,根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;
可選的,102可具體包括:在所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文後填充校驗填充字節,並進行MAC計算,得到數據完整性校驗值。
其中,預設個數字節的命令頭可以為5位元組的命令頭。校驗填充字節可以為為800000。
可選的,每條密鑰密文包括密鑰明文,與裝載或更新參數相關的密文填充字節(8000000000000000或80000000000000000000000000000000)和密文參數L;
每條密鑰明文包括:8位元組密鑰屬性和16位元組密鑰內容。
103,根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性。
可選的,103可具體包括:比較所述數據完整性校驗值與所述MAC值是否一致,若一致,則確定寫入所述晶片的密鑰具有完整性;若不一致,則返回校驗出錯信息。
本發明實施例提供的方法中,通過採用輸入晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性的技術手段,解決了現有技術中向晶片中更新或裝載密鑰時,無法對密鑰值的完整性進行驗證,並且每次僅能寫入一條密鑰,效率較低的技術問題,進而實現了一方面保證了寫入密鑰的完整性,另一方面,加快了密鑰裝載及更新處理的數量,有效加快晶片的密鑰處理能力技術效果,並且是一種新型的密鑰信息基於MAC校驗方式的可同時裝載及更新多條密鑰的解決方案。
可選的,在確定寫入所述晶片的密鑰有完整性之後,該方法還包括:
根據所述指令中包含的解密參數(例如P2的數值KID),對所述N個密鑰密文解密得到相應的密鑰明文;
根據所述指令中包含的指示裝載或更新的參數(例如P1),從所述密鑰明文中解析出需要寫入的密鑰內容;
根據所述指令中包含的密鑰個數參數(例如Lc)確定N的具體數值;
將確定的N的數值個所述密鑰內容寫入所述晶片,進行密鑰裝載或更新。
可選的,所述N個密鑰密文和所述MAC值位於所述指令的數據域中。
根據上述內容,本實施例的密鑰裝載及更新指令的格式可具體如下表一所示:例如CLA INS P1 P2 Lc Data。其中,
表一
其中,CLA代表指令類別;INS代表指令碼;P1、P2為參數;Lc代表Data域的數據長度。
本發明實施例中的密鑰明文結構為:8位元組密鑰屬性+16位元組密鑰內容。
單條密鑰密文計算方式為:密鑰明文前加L,加填充字節進行加密,得到單條密鑰的密文內容。當P1=00時,L=18H,填充字節為8000000000000000;當P1=01時,L=13H,填充字節為80000000000000000000000000000000。
當有N條密鑰需要裝載或更新時,數據域內容中密鑰密文為:N個單條密鑰密文的結合。
實施例二
本發明實施例具體以表一所示的指令為例,提供一種晶片密鑰的寫入方法,如圖2所示,該方法包括:
200,輸入晶片密鑰裝載及更新指令,開始密鑰裝載及更新;
該指令格式可參照上表一,其中,包括4位元組MAC值。
201,在所述指令中的預設個數字節(如5位元組)的命令頭和所述N條密鑰的密鑰密文後填充校驗填充字節,並進行MAC計算,得到數據完整性校驗值。
例如:對指令中的「5位元組命令頭+密鑰密文」填充800000,進行MAC計算,得到數據完整性校驗值;5位元組命令頭是指CLA,INS,P 1,P2,Lc。
MAC計算的方式:5位元組命令頭+密鑰密文,後面填充800000,用填充後的數據整體進行MAC計算,得到數據完整性校驗值。
202,比較所述數據完整性校驗值與所述MAC值是否一致,若一致,則確定寫入所述晶片的密鑰具有完整性,執行204;若不一致,則執行203;
例如:比對202計算出來的MAC值與命令中傳輸的MAC值,如果一致,則繼續204。否則,執行203。
203,返回校驗出錯信息;
例如:返回「MAC校驗出錯」。
204,根據所述指令中包含的解密參數(例如P2的數值KID),對所述N個密鑰密文解密得到相應的密鑰明文;
例如:根據P2指定的解密參數KID對數據域中的密鑰密文進行解密,得到明文信息:L+密鑰內容+填充內容。
205,根據所述指令中包含的指示裝載或更新的參數(例如P1),判斷是要裝載密鑰還是更新密鑰;若是裝載密鑰,則執行206;若是更新密鑰,則執行207;
206,從密鑰明文中解析出需要裝載的密鑰內容,並執行208;
207,從密鑰明文中解析出需要更新的密鑰內容;
例如上述205-207:根據P1是否為00來判斷解密的密鑰內容是裝載還是更新。如果是裝載密鑰,去掉7位元組填充8000000000000000,剩下的為密鑰內容;如果是更新密鑰,去掉12位元組填充80000000000000000000000000,剩下的為密鑰內容。
可選的,還可以在得到密鑰內容後,確定密鑰格式是否正確,若正確,則執行下述208;否則可返回數據域錯誤信息。
208,根據所述指令中包含的密鑰個數參數(例如Lc)確定N的具體數值;
例如:計算出需要裝載、更新密鑰的條數N=(Lc-4)/32。
209,將確定的N的數值個所述密鑰內容寫入所述晶片,進行密鑰裝載或更新。
例如:將N條密鑰內容寫到相應的晶片中。
本發明實施例提供的方法在進行密鑰裝載、及更新時,可以同時對多條密鑰進行操作。並且在對命令進行完整性校驗時,採用密文+MAC校驗方式,而傳統方式僅採用密文方式,或明文MAC方式。此為,在計算MAC的過程中,將命令頭加到計算MAC的過程中,相對於現有僅對數據進行MAC計算的方式更加可靠;同時由於可操作的密鑰條數增加,所以可以有效提高密鑰的裝載、或更新的速度。
實施例三
為了便於上述實施例一、二中的方法實現,本發明實施例繼續提供一種晶片密鑰的寫入裝置,如圖3所示,包括:
接收模塊31,用於接收輸入的晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;
校驗模塊32,用於根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;
完整確定模塊33,用於根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性。
可選的,該裝置還包括:
解密模塊,用於在完整確定模塊確定寫入所述晶片的密鑰有完整性之後,根據所述指令中包含的解密參數,對所述N個密鑰密文解密得到相應的密鑰明文;
解析模塊,用於根據所述指令中包含的指示裝載或更新的參數,從所述密鑰明文中解析出需要寫入的密鑰內容;
數量確定模塊,用於根據所述指令中包含的密鑰個數參數確定N的數值;
寫入模塊,用於將確定的N的數值個所述密鑰內容寫入所述晶片,進行密鑰裝載或更新。
可選的,所述N個密鑰密文和所述MAC值位於所述指令的數據域中。
可選的,每條密鑰密文包括密鑰明文,與裝載或更新參數相關的密文填充字節和密文參數;
每條密鑰明文包括:8位元組密鑰屬性和16位元組密鑰內容。
可選的,所述校驗模塊,具體用於在所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文後填充校驗填充字節,並進行MAC計算,得到數據完整性校驗值;
所述完整確定模塊,具體用於比較所述數據完整性校驗值與所述MAC值是否一致,若一致,則確定寫入所述晶片的密鑰具有完整性;若不一致,則返回校驗出錯信息。
本發明實施例提供的裝置,具有基於MAC校驗方式的可同時裝載及更新多條密鑰的功能。具有接收輸入的晶片密鑰裝載及更新指令,所述指令中包含校驗碼MAC值,所述指令指示對所述晶片裝載或更新N條密鑰,所述N為大於等於1的整數;根據所述指令中的預設個數字節的命令頭和所述N條密鑰的密鑰密文獲取數據完整性校驗值;根據所述數據完整性校驗值和所述MAC值確定寫入所述晶片的密鑰的完整性的功能,解決了現有技術中向晶片中更新或裝載密鑰時,無法對密鑰值的完整性進行驗證,並且每次僅能寫入一條密鑰,效率較低的技術問題,進而實現了一方面保證了寫入密鑰的完整性,另一方面,加快了密鑰裝載及更新處理的數量,有效加快晶片的密鑰處理能力技術效果。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或電腦程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器和光學存儲器等)上實施的電腦程式產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。