一種系統(tǒng)盤的校驗(yàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能終端技術(shù)領(lǐng)域,尤其涉及一種終端的系統(tǒng)盤的校驗(yàn)方法和裝置。
【背景技術(shù)】
[0002]為了保證終端的安全性,確保終端系統(tǒng)盤數(shù)據(jù)的完整性,Android4.4及之后版本需要米用系統(tǒng)盤fe驗(yàn)(dm-verity)機(jī)制對(duì)系統(tǒng)盤進(jìn)彳丁完整性fe驗(yàn)。
[0003]在dm-verity機(jī)制中,用于校驗(yàn)系統(tǒng)盤的校驗(yàn)值包括哈希樹、系統(tǒng)盤校驗(yàn)表(dm-verity表)、對(duì)dm-verity表的簽名。其中,哈希樹由系統(tǒng)盤數(shù)據(jù)直接生成,是對(duì)系統(tǒng)盤數(shù)據(jù)的直接校驗(yàn)值;dm-Verity表記載了系統(tǒng)盤哈希樹生成過程的參數(shù)配置以及哈希樹的根哈希值;對(duì)dm-verity表的簽名用于校驗(yàn)dm-verity表。
[0004]然后,現(xiàn)有的dm-verity表的簽名運(yùn)算和公鑰加密運(yùn)算類似,需要大量的計(jì)算,屬于“重量級(jí)”的密碼學(xué)運(yùn)算過程。目前還沒有一種所需運(yùn)算量少、屬于“輕量級(jí)”的密碼學(xué)運(yùn)算過程。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種系統(tǒng)盤的校驗(yàn)方法和裝置,以對(duì)系統(tǒng)盤校驗(yàn)表提供所需運(yùn)算量少的簽名驗(yàn)證,提供系統(tǒng)盤的校驗(yàn)效率。
[0006]—方面,本發(fā)明提供的一種系統(tǒng)盤的校驗(yàn)方法,包括:
[0007]驗(yàn)證系統(tǒng)盤校驗(yàn)表的簽名是否通過,所述簽名是采用消息認(rèn)證碼生成算法生成的消息認(rèn)證碼;
[0008]若簽名驗(yàn)證通過,進(jìn)一步根據(jù)所述系統(tǒng)盤校驗(yàn)表,獲取所述系統(tǒng)盤的哈希樹,并驗(yàn)證所述哈希樹本身是否正確;
[0009]若所述哈希樹本身是正確的,進(jìn)一步驗(yàn)證所述哈希樹是否是根據(jù)所述系統(tǒng)盤的數(shù)據(jù)生成;
[0010]若進(jìn)一步驗(yàn)證的結(jié)果為是,所述系統(tǒng)盤的校驗(yàn)通過。
[0011]另一方面,本發(fā)明提供的一種系統(tǒng)盤的校驗(yàn)裝置,包括:
[0012]第一驗(yàn)證單元,用于驗(yàn)證系統(tǒng)盤校驗(yàn)表的簽名,所述簽名是采用消息認(rèn)證碼生成算法生成的消息認(rèn)證碼;
[0013]獲取單元,用于若簽名驗(yàn)證通過,進(jìn)一步根據(jù)所述系統(tǒng)盤校驗(yàn)表,獲取所述系統(tǒng)盤的哈希樹;
[0014]第二驗(yàn)證單元,用于驗(yàn)證所述哈希樹本身是否正確;
[0015]第三驗(yàn)證單元,用于若所述哈希樹本身是正確的,進(jìn)一步驗(yàn)證所述哈希樹是否是根據(jù)所述系統(tǒng)盤的數(shù)據(jù)生成,若進(jìn)一步驗(yàn)證的結(jié)果為是,所述系統(tǒng)盤的校驗(yàn)通過。
[0016]可見,根據(jù)本發(fā)明提供的一種系統(tǒng)盤的校驗(yàn)方法和裝置,對(duì)采用消息認(rèn)證碼作為系統(tǒng)盤校驗(yàn)表的簽名進(jìn)行驗(yàn)證,所需運(yùn)算量少,可以提高系統(tǒng)盤的校驗(yàn)效率。
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為本發(fā)明提供的一種系統(tǒng)盤的校驗(yàn)方法的流程示意圖;
[0019]圖2為本發(fā)明提供的另一種系統(tǒng)盤的校驗(yàn)方法的流程示意圖;
[0020]圖3為本發(fā)明提供的一種系統(tǒng)盤的校驗(yàn)裝置的結(jié)構(gòu)示意圖;
[0021]圖4為本發(fā)明提供的另一種系統(tǒng)盤的校驗(yàn)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0023]本發(fā)明涉及采用消息認(rèn)證碼(Message Authenticat1n Code,MAC)對(duì)終端的系統(tǒng)盤校驗(yàn)表進(jìn)行簽名。消息認(rèn)證碼是密碼學(xué)中通信實(shí)體雙方使用的一種驗(yàn)證機(jī)制,保證消息數(shù)據(jù)完整性的一種工具。安全性依賴于哈希(Hash)函數(shù),故也稱帶密鑰的Hash函數(shù)。消息認(rèn)證碼是基于密鑰和消息摘要所獲得的一個(gè)值,可用于數(shù)據(jù)源發(fā)認(rèn)證和完整性校驗(yàn)。本發(fā)明涉及的終端一般指移動(dòng)設(shè)備。為了保證終端的安全性,確保終端系統(tǒng)盤數(shù)據(jù)的完整性,Android4.4及之后版本需要采用dm-verity機(jī)制對(duì)系統(tǒng)盤進(jìn)行完整性校驗(yàn)。本發(fā)明通過采用消息認(rèn)證碼作為系統(tǒng)盤校驗(yàn)表的簽名進(jìn)行驗(yàn)證,所需運(yùn)算量少,可以提高系統(tǒng)盤的校驗(yàn)效率。
[0024]下面結(jié)合圖1-圖2,對(duì)本發(fā)明提供的系統(tǒng)盤的校驗(yàn)方法進(jìn)行詳細(xì)描述:
[0025]請(qǐng)參閱圖1,為根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)盤的校驗(yàn)方法的流程示意圖,該方法包括以下步驟:
[0026]步驟S101,驗(yàn)證系統(tǒng)盤校驗(yàn)表的簽名是否通過,所述簽名是采用消息認(rèn)證碼生成算法生成的消息認(rèn)證碼;若是,則進(jìn)行到步驟S102,否則,跳至步驟S106。
[0027]系統(tǒng)盤校驗(yàn)表的簽名是采用MAC碼生成算法生成的MAC碼,反過來,進(jìn)行驗(yàn)證的時(shí)候,具體是將系統(tǒng)密碼K、系統(tǒng)盤校驗(yàn)表輸入該MAC碼生成算法,將根據(jù)該算法生成的MAC碼與終端中存儲(chǔ)的MAC進(jìn)行對(duì)比,若對(duì)比的結(jié)果一致,則驗(yàn)證通過,進(jìn)行到下一步驗(yàn)證,否則,驗(yàn)證失敗,不必進(jìn)行下一步驗(yàn)證。系統(tǒng)密碼K是在終端中預(yù)先設(shè)定和存儲(chǔ)的。
[0028]對(duì)系統(tǒng)盤校驗(yàn)表進(jìn)行了簽名,簽名機(jī)制具有多重作用:校驗(yàn)信息、追溯信息來源等。而在系統(tǒng)盤校驗(yàn)表簽名中只利用了簽名機(jī)制的校驗(yàn)信息這個(gè)作用。如果該簽名采用數(shù)字簽名,需要大量的計(jì)算,屬于“重量級(jí)”的密碼學(xué)運(yùn)算過程,采用MAC碼進(jìn)行簽名驗(yàn)證,所需運(yùn)算量非常少,屬于“輕量級(jí)”的密碼學(xué)運(yùn)算過程。所以,如果僅要實(shí)現(xiàn)校驗(yàn)信息,更為合適的方法是米用MAC碼。
[0029]步驟S102,根據(jù)所述系統(tǒng)盤校驗(yàn)表,獲取所述系統(tǒng)盤的哈希樹。
[0030]系統(tǒng)盤校驗(yàn)表中包括系統(tǒng)盤數(shù)據(jù)的根哈希值和哈希樹的存儲(chǔ)信息,因此,根據(jù)哈希樹的存儲(chǔ)信息,可以在終端中獲取哈希樹。其中,根哈希值是對(duì)系統(tǒng)盤的數(shù)據(jù)生成哈希樹過程中的最后一個(gè)哈希值,哈希樹是指對(duì)系統(tǒng)盤的數(shù)據(jù)生成哈希樹過程中的所有哈希值組成的哈希樹。根哈希值和哈希樹都存儲(chǔ)在終端中。
[0031]步驟S103,驗(yàn)證所述哈希樹本身是否正確;若是,則進(jìn)行到步驟S104,否則,跳至步驟S106。
[0032]驗(yàn)證哈希樹本身是否正確,是指哈希樹的生成邏輯是否正確,可以采用現(xiàn)有密碼學(xué)技術(shù)驗(yàn)證哈希樹本身是否正確。若哈希樹本身是正確的,則進(jìn)行到下一步驗(yàn)證,否則,驗(yàn)證失敗,不必進(jìn)行下一步驗(yàn)證。
[0033]步驟S104,驗(yàn)證所述哈希樹是否是根據(jù)所述系統(tǒng)盤的數(shù)據(jù)生成;若是,則進(jìn)行到步驟S105,否則,跳至步驟S106。
[0034]前面描述了哈希樹是指對(duì)系統(tǒng)盤的數(shù)據(jù)生成哈希樹過程中的所有哈希值組成的哈希樹,本步驟需要驗(yàn)證該哈希樹是否是根據(jù)系統(tǒng)盤的數(shù)據(jù)生成,如果是,則驗(yàn)證通過,否貝IJ,驗(yàn)證失敗。
[0035]步驟S105,所述系統(tǒng)盤的校驗(yàn)通過。
[0036]通過以上三步驗(yàn)證,才算完成系統(tǒng)盤的整個(gè)校驗(yàn)過程。
[0037]步驟S106,驗(yàn)證失敗。
[0038]以上三步驗(yàn)證,哪一步驗(yàn)證失敗,整個(gè)系統(tǒng)盤的校驗(yàn)就失敗了。
[0039]可見,根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)盤的校驗(yàn)方法,通過采用消息認(rèn)證碼作為系統(tǒng)盤校驗(yàn)表的簽名進(jìn)行驗(yàn)證,所需運(yùn)算量少,可以提高系統(tǒng)盤的校驗(yàn)效率。
[0040]請(qǐng)參閱圖2,為根據(jù)本發(fā)明實(shí)施例提供的另一種系統(tǒng)盤的校驗(yàn)方法的流程示意圖,該方法包括以下步驟:
[0041]下面的步驟S201-S204為系統(tǒng)盤的校驗(yàn)值的生成過程,系統(tǒng)盤的校驗(yàn)值包括:哈希樹、系統(tǒng)盤校驗(yàn)表和系統(tǒng)盤校驗(yàn)表的簽名:
[0042]步驟S201,根據(jù)系統(tǒng)盤的數(shù)據(jù)生成哈希樹、根哈希值,并存儲(chǔ)所述哈希樹、根哈希值。
[0043]本步驟具體包括以下步驟:
[0044]步驟Al:將所述系統(tǒng)盤的數(shù)據(jù)按照4k字節(jié)為單位劃分為至少一個(gè)第一塊。
[0045]步驟A2:為每個(gè)所述第一塊計(jì)算一個(gè)長度為32字節(jié)的至少一個(gè)第一哈希值。
[0046]步驟A3:按照4k個(gè)字節(jié)為一個(gè)塊,將所得到的至少一個(gè)第一哈希值劃分為至少一個(gè)第二塊,并為每個(gè)所述第二塊計(jì)算長度為32字節(jié)的至少一個(gè)第二哈希值。
[0047]步驟A4:重復(fù)上述劃分和計(jì)算步驟,直到只有一個(gè)第