一種版本信息的控制方法和控制裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及版本控制領(lǐng)域,尤其涉及一種版本信息的控制方法和版本信息的控制
目.ο
【背景技術(shù)】
[0002]通常軟件版本的控制都是將應(yīng)用程序的版本控制信息存儲于0TP(0neTimeProgra_able)中,同時在應(yīng)用程序的數(shù)據(jù)塊中也記錄了其版本信息,在加載或更新應(yīng)用程序時將二者進行比較來達到版本控制的目的。
[0003]當(dāng)應(yīng)用程序被加載時,會將數(shù)據(jù)塊中的版本信息與對應(yīng)的0ΤΡ中的版本信息進行比較,如果數(shù)據(jù)塊中的版本信息低于0ΤΡ中對應(yīng)的版本信息,則該數(shù)據(jù)塊將不被加載。當(dāng)應(yīng)用程序被更新時,同樣會判斷數(shù)據(jù)塊的版本信息是否高于0ΤΡ中對應(yīng)的版本信息,如果不是高于,則不更新當(dāng)前的數(shù)據(jù)塊;如果是高于,則更新當(dāng)前的數(shù)據(jù)塊并更新對應(yīng)在0ΤΡ中的版本控制信息。
[0004]然而因為0ΤΡ的編程特性,0ΤΡ中的版本控制信息升級次數(shù)很有限。如果應(yīng)用程序的更新頻度比較大,便會有很多的升級次數(shù),如此就需要更多的0ΤΡ空間來存儲版本信息。然而0ΤΡ空間畢竟有限,占用太多0ΤΡ空間,會使得成本大大增加。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的旨在至少解決上述技術(shù)缺陷之一,提供一種版本信息的控制方法和版本信息的控制裝置。
[0006]本發(fā)明提供一種版本信息的控制方法,所述控制方法包括以下步驟:
獲取一次性可編程器中的安全計數(shù)值,閃存中版本數(shù)據(jù)塊對應(yīng)的版本控制信息以及所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù);
根據(jù)所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù)對所述安全計數(shù)值和版本控制信息進行校驗;
當(dāng)校驗通過時,獲取應(yīng)用程序數(shù)據(jù)塊的版本控制信息;
判斷應(yīng)用程序數(shù)據(jù)塊的版本控制信息是否高于或等于版本數(shù)據(jù)塊對應(yīng)的版本控制信息;
如果是,加載應(yīng)用程序數(shù)據(jù)塊中的應(yīng)用程序。
[0007]從上述方法的方案可以看出,當(dāng)需要加載應(yīng)用程序時,需要先對跟所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù)對所述安全計數(shù)值和版本控制信息進行校驗之后,再進行版本控制,以保證加載應(yīng)用程序的安全性,另外,由于版本信息存儲在閃存中,可以大大提高了版本信息的升級次數(shù)。
[0008]本發(fā)明還提供版本信息的控制裝置,所述控制裝置包括:
一次性可編程器,用于存儲安全計數(shù)值;
閃存,用于存儲版本數(shù)據(jù)塊和應(yīng)用程序數(shù)據(jù)塊; 控制器,用于獲取一次性可編程器中的安全計數(shù)值,閃存中版本數(shù)據(jù)塊對應(yīng)的版本控制信息以及所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù);根據(jù)所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù)對所述安全計數(shù)值和版本控制信息進行校驗;當(dāng)校驗通過時,獲取閃存中應(yīng)用程序數(shù)據(jù)塊的版本控制信息;判斷應(yīng)用程序數(shù)據(jù)塊的版本控制信息是否高于或等于版本數(shù)據(jù)塊對應(yīng)的版本控制信息;如果是,加載應(yīng)用程序數(shù)據(jù)塊中的應(yīng)用程序。
[0009]從上述控制裝置的方案可以看出,當(dāng)需要加載應(yīng)用程序時,需要先對跟所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù)對所述安全計數(shù)值和版本控制信息進行校驗之后,再進行版本控制,以保證加載應(yīng)用程序的安全性,另外,由于版本信息存儲在閃存中,可以大大提高了版本信息的升級次數(shù)。
【附圖說明】
[0010]圖1為本發(fā)明的版本信息的控制方法一種實施例的流程圖;
圖2為本發(fā)明的數(shù)據(jù)傳輸?shù)目刂品椒ǖ谝粚嵤├牧鞒虉D;
圖3為本發(fā)明的微代碼結(jié)構(gòu)示意圖;
圖4為本發(fā)明的數(shù)據(jù)傳輸?shù)目刂品椒ǖ诙嵤├牧鞒虉D。
【具體實施方式】
[0011]為了使本發(fā)明所解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0012]本發(fā)明提供一種實施例的版本信息的控制方法,如圖1所示,所述控制方法包括以下步驟:
S01,獲取一次性可編程器中的安全計數(shù)值,閃存中版本數(shù)據(jù)塊對應(yīng)的版本控制信息以及所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù);
S02,根據(jù)所述安全計數(shù)值和版本控制信息的簽名數(shù)據(jù)對所述安全計數(shù)值和版本控制信息進行校驗;
S03,當(dāng)校驗通過時,獲取應(yīng)用程序數(shù)據(jù)塊的版本控制信息;
S04,判斷應(yīng)用程序數(shù)據(jù)塊的版本控制信息是否高于或等于版本數(shù)據(jù)塊對應(yīng)的版本控制信息;
S05,如果是,加載應(yīng)用程序數(shù)據(jù)塊中的應(yīng)用程序;
S06,如果否,加載程序結(jié)束。
[0013]由于應(yīng)用程序大部分的更新可能是與安全無關(guān)的,僅僅只是功能上的修改,但是會使得應(yīng)用程序更新的頻度比較大,如果將其版本控制信息存儲于0ΤΡ中,為保證能升級足夠次數(shù),則需要非常大的0ΤΡ空間。為避免占用太多0ΤΡ空間又確保版本信息安全可信,本發(fā)明采取以下方式:
第一,使用部分OTP空間,但不作為存儲版本控制信息用,而是作為計數(shù)應(yīng)用程序涉及安全的升級,即用于存儲安全計數(shù)值,用于記錄應(yīng)用程序的安全升級次數(shù),從而增加控制方法的安全性。另外,將安全計數(shù)值命名為VR-Count er。
[0014]第二,將版本控制信息存儲于版本數(shù)據(jù)塊(VRDB,Vers1n Data Block)中,而VRDB會被簽名并存儲于閃存(Flash)中;因為Flash沒有OTP的編程特性,部分的存儲空間用于存儲版本信息以便于數(shù)量較多次數(shù)的升級比如:4294967296次,可以大大提高了版本信息的升級次數(shù)。
[0015]也就是說,系統(tǒng)在啟動時首先會校驗安全計數(shù)值和版本控制信息形成的數(shù)據(jù)組,校驗通過后進行版本控制;如果應(yīng)用程序數(shù)據(jù)塊中的版本信息低于VRDB中對應(yīng)的版本信息,應(yīng)用程序?qū)⒉槐患虞d;版本控制通過后才加載應(yīng)用程序。
[0016]在多個應(yīng)用程序的情況下,現(xiàn)有技術(shù)將版本控制信息存儲在0ΤΡ中會繼續(xù)增加0ΤΡ空間的使用;而通過以上的版本控制方法,只需要增加一點Flash空間來存儲版本信息,不僅省去原本用來存儲版本信息的0ΤΡ空間,同時也不受限于0ΤΡ的編程特性使版本信息升級次數(shù)有限,真正實現(xiàn)了任意次版本控制。
[0017]在具體實施中,所述控制方法還包括以下步驟:
獲取應(yīng)用程序的更新信號;
獲取更新后應(yīng)用程序數(shù)據(jù)塊的版本控制信息,當(dāng)前版本數(shù)據(jù)塊對應(yīng)的版本控制信息和一次性可編程器中的安全計數(shù)值;
判斷更新后應(yīng)用程序數(shù)據(jù)塊的版本控制信息是否高于當(dāng)前版本數(shù)據(jù)塊對應(yīng)的版本控制信息;
如果是,對更新后的版本控制信息和安全計數(shù)值進行簽名,得到更新后的簽名數(shù)據(jù),即更新后的版本控制信息和安全計數(shù)值形成數(shù)據(jù)組,對所述數(shù)據(jù)組使用SHA(SeCUre HashAlgorithm,安全哈希算法)算法進行SHA運算,再進行加密,得到更新后的簽名數(shù)據(jù);
將更新后的版本控制信息和更新后的簽名數(shù)據(jù)更新到閃存的版本數(shù)據(jù)塊中。
[0018]如果應(yīng)用程序更新,則升級VRDB中對應(yīng)的版本信息,即更新VRDB;若應(yīng)用程序的更新與安全有關(guān),則同時還需要升級VR-Counter,然后重新簽名數(shù)據(jù)組;將升級后的VRDB、VR-Counter和重新簽名獲得的簽名數(shù)據(jù)更新至相對應(yīng)位置,復(fù)位后重新進入應(yīng)用程序加載流程,也就是說更新后的簽名數(shù)據(jù)作為下一次加載流程中的獲取到的簽名數(shù)據(jù)。
[0019]在具體實施中,所述版本控制信息包括安全版本號、主版本號和子版本號。
[0020]在具體實施中,當(dāng)更新后的版本控制信息的安全版本號進行更新時,對所述安全計數(shù)值進行升級。
[0021]在具體實施中,存儲在VRDB中的版本信息一般為一個32位4個字節(jié)的數(shù)據(jù),各個字節(jié)分別指示應(yīng)用程序數(shù)據(jù)塊的安全版本號、主版本號(2個字節(jié))、子版本號。