本公開(kāi)涉及嵌入式技術(shù)領(lǐng)域,特別涉及一種開(kāi)機(jī)校驗(yàn)方法及裝置。
背景技術(shù):
Android(安卓)系統(tǒng)是一種以Linux為基礎(chǔ)的開(kāi)放源代碼的操作系統(tǒng),Android系統(tǒng)的系統(tǒng)源碼可以被打包成為Rom image(ReadOnlyMemory image,只讀存儲(chǔ)器鏡像),Rom image也被稱為Rom包。當(dāng)Rom包被寫(xiě)入手機(jī)或者平板電腦等終端的Rom中時(shí),終端通過(guò)加載該Rom包運(yùn)行該Rom包中的系統(tǒng)源碼。
目前的Rom包主要分為官方版本和測(cè)試版本兩種,Rom中存儲(chǔ)有官方版本的Rom包的終端的文件系統(tǒng)通常不支持root(超級(jí)用戶)權(quán)限,Rom中存儲(chǔ)有測(cè)試版本的Rom包的終端的文件系統(tǒng)通常支持root權(quán)限,其中,root擁有系統(tǒng)的最高權(quán)限,因此當(dāng)用戶所使用的終端中的Rom中安裝有測(cè)試版本的Rom時(shí),終端中的任何一個(gè)應(yīng)用程序都可以獲取到root權(quán)限,并通過(guò)root權(quán)限來(lái)讀取終端中存儲(chǔ)的用戶的隱私數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
為了解決終端因?yàn)檫\(yùn)行測(cè)試版本的Rom導(dǎo)致安全性較低的問(wèn)題,本公開(kāi)提供一種開(kāi)機(jī)校驗(yàn)方法及裝置。所述技術(shù)方案如下:
根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種開(kāi)機(jī)校驗(yàn)方法,該方法用于終端中,該終端中至少包括硬件層、Kernel(內(nèi)核)層、Bootloader(啟動(dòng)裝載)層和文件系統(tǒng)層,Kernel層中存儲(chǔ)有公鑰,Bootloader層攜帶有簽名,該方法包括:
檢測(cè)終端是否為非測(cè)試用終端;
當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
可選的,檢測(cè)終端是否為非測(cè)試用終端,包括:
檢測(cè)終端中是否包含預(yù)設(shè)電路結(jié)構(gòu),預(yù)設(shè)電路結(jié)構(gòu)用于表示終端是測(cè)試用終端;
若終端中不包含預(yù)設(shè)電路結(jié)構(gòu),則確定終端為非測(cè)試用終端。
可選的,檢測(cè)終端中是否包含預(yù)設(shè)電路結(jié)構(gòu),包括:
檢測(cè)硬件層的可信區(qū)域中是否包含預(yù)設(shè)電路結(jié)構(gòu),可信區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
可選的,檢測(cè)終端是否為非測(cè)試用終端,包括:
檢測(cè)終端中是否包含預(yù)設(shè)標(biāo)識(shí),預(yù)設(shè)標(biāo)識(shí)為用于表示終端為測(cè)試用終端的標(biāo)識(shí);
若終端中不包含預(yù)設(shè)標(biāo)識(shí),則確定終端為非測(cè)試用終端。
可選的,檢測(cè)終端中是否包含預(yù)設(shè)標(biāo)識(shí),包括:
檢測(cè)硬件層的可信存儲(chǔ)區(qū)域中是否包含預(yù)設(shè)標(biāo)識(shí),可信存儲(chǔ)區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種開(kāi)機(jī)校驗(yàn)裝置,用于終端中,終端中至少包括硬件層、Kernel層、Bootloader層和文件系統(tǒng)層,Kernel層中存儲(chǔ)有公鑰,Bootloader層攜帶有簽名,該裝置包括:
檢測(cè)模塊,被配置為檢測(cè)終端是否為非測(cè)試用終端;
校驗(yàn)?zāi)K,被配置為在終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
可選的,檢測(cè)模塊包括:
第一檢測(cè)子模塊,被配置為檢測(cè)終端中是否包含預(yù)設(shè)電路結(jié)構(gòu),預(yù)設(shè)電路結(jié)構(gòu)用于表示終端是測(cè)試用終端;
第一確定子模塊,被配置為在不包含預(yù)設(shè)電路結(jié)構(gòu)時(shí),則確定終端為非測(cè)試用終端。
可選的,第一檢測(cè)子模塊,還被配置為檢測(cè)硬件層的可信區(qū)域中是否包含預(yù)設(shè)電路結(jié)構(gòu),可信區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
可選的,檢測(cè)模塊包括:
第二檢測(cè)子模塊,檢測(cè)終端中是否包含預(yù)設(shè)標(biāo)識(shí),預(yù)設(shè)標(biāo)識(shí)為用于表示終端為測(cè)試用終端的標(biāo)識(shí);
第二確定子模塊,若終端中不包含預(yù)設(shè)標(biāo)識(shí),則確定終端為非測(cè)試用終端。
可選的,第二檢測(cè)子模塊,還被配置為檢測(cè)硬件層的可信存儲(chǔ)區(qū)域中是否包含預(yù)設(shè)標(biāo)識(shí),可信存儲(chǔ)區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種開(kāi)機(jī)校驗(yàn)裝置,用于終端中,終端中至少包括硬件層、Kernel層、Bootloader層和文件系統(tǒng)層,Kernel層中存儲(chǔ)有公鑰,Bootloader層攜帶有簽名,該裝置包括:
處理器;
用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;
其中,處理器被配置為:
檢測(cè)終端是否為非測(cè)試用終端;
當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
本公開(kāi)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
通過(guò)檢測(cè)終端是否為非測(cè)試用終端,當(dāng)確定終端為非測(cè)試用終端時(shí),通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),由于簽名是根據(jù)私鑰生成的簽名,而私鑰與公鑰不匹配,因此終端校驗(yàn)失敗,無(wú)法開(kāi)啟;解決了終端因?yàn)檫\(yùn)行測(cè)試版本的Rom包導(dǎo)致安全性較低的問(wèn)題;通過(guò)在終端中設(shè)置一套匹配的密鑰和一套不匹配的密鑰,達(dá)到了非測(cè)試用終端由于校驗(yàn)失敗而無(wú)法成功啟動(dòng),保證了終端的安全性的效果。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本公開(kāi)。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本公開(kāi)的實(shí)施例,并于說(shuō)明書(shū)一起用于解釋本公開(kāi)的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種終端的結(jié)構(gòu)示意圖;
圖2是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖;
圖3是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖;
圖4是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖;
圖5是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖;
圖6是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖;
圖7A是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的示意圖;
圖7B是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的示意圖;
圖8是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖;
圖9A是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖;
圖9B是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖;
圖10是根據(jù)另一示例性實(shí)施例示出的一種終端的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
本公開(kāi)各個(gè)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,可以由采用Android操作系統(tǒng)的終端來(lái)實(shí)現(xiàn),該終端可以是諸如智能手機(jī)、智能電視和平板電腦之類的終端。
該終端的結(jié)構(gòu)示意圖可以如圖1所示,終端10中至少包括:硬件層110、Kernel層120、Bootloader層130和文件系統(tǒng)層140。Kernel層120位于硬件層110的上層,Bootloader層130位于Kernel層120的上層,文件系統(tǒng)層140位于Bootloader層130的上層。
其中,硬件層110中通常包括處理器、存儲(chǔ)器、寄存器、電容、二極管和三極管等硬件器件;終端10中的Kernel是基于Linux的內(nèi)核,Kernel層120通常用于管理存儲(chǔ)器、進(jìn)程、文件和系統(tǒng)資源等;Bootloader層130主要用于對(duì)處理器和相關(guān)硬件進(jìn)行初始化;文件系統(tǒng)用于對(duì)終端中的文件信息進(jìn)行管理和存儲(chǔ)。
在本公開(kāi)實(shí)施例中,Kernel層120中存儲(chǔ)的公鑰為第一公鑰,Bootloader層130攜帶的簽名為第一簽名,該第一簽名是根據(jù)第一私鑰生成的簽名。Bootloader層130中還存儲(chǔ)有第二公鑰,文件系統(tǒng)層140攜帶有第二簽名,該第二簽名是根據(jù)第二私鑰生成的簽名。
圖2是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)方法的流程圖,本實(shí)施例以該方法用于圖1所示的終端中為例進(jìn)行說(shuō)明,該方法可以包括如下幾個(gè)步驟:
在步驟201中,檢測(cè)終端是否為非測(cè)試用終端。
終端在加載終端中存儲(chǔ)的Rom包時(shí)執(zhí)行本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,該終端可以是測(cè)試用終端或非測(cè)試用終端,測(cè)試用終端是用于對(duì)Rom包進(jìn)行測(cè)試的終端,通常是Rom包的測(cè)試人員所使用的終端;非測(cè)試用終端是運(yùn)行Rom包的終端中除測(cè)試用終端之外的終端,通常是普通用戶所使用的終端。
在步驟202中,當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
在終端通過(guò)Kernel層使用公鑰對(duì)簽名校驗(yàn)失敗時(shí),終端指示校驗(yàn)結(jié)束,不啟動(dòng)Bootloader層且不再執(zhí)行開(kāi)機(jī)過(guò)程中的其他操作,保持處于關(guān)機(jī)狀態(tài)。
其中,簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配。公鑰和私鑰是由開(kāi)發(fā)Rom包的軟件開(kāi)發(fā)人員提前配置的,公鑰和私鑰攜帶在Rom包中,終端在安裝該Rom包時(shí),從Rom包中獲取公鑰和私鑰,并將公鑰存儲(chǔ)在Kernel層中以及使用私鑰對(duì)Bootloader層進(jìn)行簽名,對(duì)Bootloader層進(jìn)行簽名指的是對(duì)Bootloader層中的數(shù)據(jù)進(jìn)行簽名。
可選的,公鑰和私鑰均為字符串,該字符串包括數(shù)字、字母和符號(hào)中的至少一種,該字符串可以是16位的字符串、32位的字符串或者64位的字符串,本實(shí)施例對(duì)公鑰和私鑰的格式不作限定。
可選的,終端通過(guò)預(yù)定加密算法使用私鑰對(duì)Bootloader層的數(shù)據(jù)進(jìn)行加密處理得到簽名,預(yù)定加密算法是Schnorr簽名算法、橢圓曲線數(shù)字簽名算法和EIGamal簽名算法中的任意一種。
綜上所述,本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,通過(guò)檢測(cè)終端是否為非測(cè)試用終端,當(dāng)確定終端為非測(cè)試用終端時(shí),通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),由于簽名是根據(jù)私鑰生成的簽名,而私鑰與公鑰不匹配,因此終端校驗(yàn)失敗,無(wú)法開(kāi)啟;解決了終端因?yàn)檫\(yùn)行測(cè)試版本的Rom包導(dǎo)致安全性較低的問(wèn)題;通過(guò)在終端中設(shè)置一套匹配的密鑰和一套不匹配的密鑰,達(dá)到了非測(cè)試用終端由于校驗(yàn)失敗而無(wú)法成功啟動(dòng),保證了終端的安全性的效果。
以如圖1所示的終端為例,當(dāng)該終端為測(cè)試用終端時(shí),終端在加載Rom包之前通常包括如下幾個(gè)步驟,如圖3所示:
在步驟301中,接收生成指令。
其中,生成指令用于指示終端生成預(yù)設(shè)電路結(jié)構(gòu)或生成預(yù)設(shè)標(biāo)識(shí),通常只有測(cè)試人員才具有觸發(fā)該生成指令的權(quán)限。
可選的,生成指令用于指示終端通過(guò)調(diào)整電壓和電流等參數(shù)對(duì)原有電路結(jié)構(gòu)進(jìn)行不可逆的改變,生成預(yù)設(shè)電路結(jié)構(gòu)。預(yù)設(shè)電路結(jié)構(gòu)包括處于熔斷狀態(tài)的預(yù)定電容、處于熔斷狀態(tài)的預(yù)定二極管和處于熔斷狀態(tài)的預(yù)定三極管中的至少一種。可選的,生成指令用于指示終端在硬件層的可信區(qū)域中生成預(yù)設(shè)電路結(jié)構(gòu)。
通常來(lái)說(shuō),終端硬件層中包括一些預(yù)留的器件或者包括專門用于進(jìn)行測(cè)試的器件,比如預(yù)留的電容和預(yù)留的二極管,終端在對(duì)這些預(yù)留的器件進(jìn)行操作時(shí),對(duì)終端的正常工作沒(méi)有影響,因此,生成指令可以指示終端對(duì)這些預(yù)留的器件執(zhí)行不可逆的操作,形成預(yù)設(shè)電路結(jié)構(gòu),比如,指示終端調(diào)大電壓擊穿預(yù)定電容。可選的,生成指令用于指示終端在可信存儲(chǔ)區(qū)域中寫(xiě)入預(yù)設(shè)標(biāo)識(shí)??蛇x的,可信存儲(chǔ)區(qū)域是終端硬件層中的存儲(chǔ)器??蛇x的,預(yù)設(shè)標(biāo)識(shí)是預(yù)定的字段,比如,預(yù)設(shè)標(biāo)識(shí)是字段0或字段1,在一個(gè)實(shí)際的例子中,生成指令可以用于指示終端在存儲(chǔ)器的地址1對(duì)應(yīng)的存儲(chǔ)單元中寫(xiě)入字段1。
在步驟302中,根據(jù)生成指令生成預(yù)設(shè)電路結(jié)構(gòu)和/或預(yù)設(shè)標(biāo)識(shí)。
可選的,為了避免被偽造,終端根據(jù)生成指令在終端硬件層的可信區(qū)域生成預(yù)設(shè)電路結(jié)構(gòu),可信區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
可選的,終端根據(jù)生成指令在終端硬件層的可信存儲(chǔ)區(qū)域存儲(chǔ)預(yù)設(shè)標(biāo)識(shí),可信存儲(chǔ)區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
需要說(shuō)明的是,測(cè)試用終端可以是通過(guò)上述步驟形成該預(yù)設(shè)電路結(jié)構(gòu);或者,該測(cè)試用終端是專門用于對(duì)該測(cè)試版本的Rom包進(jìn)行測(cè)試的終端,生產(chǎn)該測(cè)試用終端時(shí)在測(cè)試用終端中形成有該預(yù)設(shè)電路結(jié)構(gòu)。
終端在進(jìn)行開(kāi)機(jī)校驗(yàn)時(shí)的流程圖可以如圖4所示,本實(shí)施例以該方法用于圖1所示的終端中為例進(jìn)行說(shuō)明,該方法可以包括如下幾個(gè)步驟:
在步驟401中,檢測(cè)終端中是否包含預(yù)設(shè)電路結(jié)構(gòu),預(yù)設(shè)電路結(jié)構(gòu)用于表示終端是測(cè)試用終端。
可選的,測(cè)試用終端通過(guò)上述步驟301和步驟302生成的預(yù)設(shè)電路結(jié)構(gòu)位于測(cè)試用終端硬件層的可信區(qū)域中,或者,測(cè)試用終端在生產(chǎn)時(shí)形成的預(yù)設(shè)電路結(jié)構(gòu)位于測(cè)試用終端硬件層的可信區(qū)域中,則該步驟可以實(shí)現(xiàn)成為檢測(cè)硬件層的可信區(qū)域中是否包含預(yù)設(shè)電路結(jié)構(gòu)。
在步驟402中,若不包含預(yù)設(shè)電路結(jié)構(gòu),則確定終端為非測(cè)試用終端。
在步驟403中,當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn),在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
其中,第一簽名是根據(jù)第一私鑰生成的簽名,第一私鑰與第一公鑰不匹配。
第一公鑰和第一私鑰是攜帶在Rom包中的,當(dāng)終端的Rom中寫(xiě)入某個(gè)Rom包時(shí),終端從Rom包中獲取第一公鑰和第一私鑰,將第一公鑰存儲(chǔ)在Kernel層中,并使用第一私鑰對(duì)Bootloader層進(jìn)行簽名生成第一簽名。其中,對(duì)Bootloader層簽名是指對(duì)Bootloader層中包括的文件和數(shù)據(jù)等進(jìn)行簽名。
對(duì)于一個(gè)測(cè)試版本的Rom包來(lái)說(shuō),軟件開(kāi)發(fā)人員在生成該測(cè)試版本的Rom包時(shí)在該Rom包中攜帶有不屬于同一個(gè)密鑰對(duì)的第一公鑰和第一私鑰,即第一公鑰與第一私鑰無(wú)法互相加解密,因此,對(duì)于不包含預(yù)設(shè)電路結(jié)構(gòu)的終端來(lái)說(shuō),終端在通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn)時(shí),校驗(yàn)會(huì)失敗,終端無(wú)法啟動(dòng)。
在步驟404中,若包含預(yù)設(shè)電路結(jié)構(gòu),則確定終端是測(cè)試用終端。
在步驟405中,當(dāng)確定終端為測(cè)試用終端時(shí),則通過(guò)Bootloader層使用第二公鑰對(duì)第二簽名進(jìn)行校驗(yàn),在校驗(yàn)成功時(shí),指示開(kāi)啟終端。
其中,第二簽名是根據(jù)第二私鑰生成的簽名,第二私鑰與第二公鑰相匹配。
第二公鑰和第二私鑰也是攜帶在Rom包中的,當(dāng)終端的Rom中寫(xiě)入某個(gè)Rom包時(shí),終端從Rom包中獲取第二公鑰和第二私鑰,將第二公鑰存儲(chǔ)在Bootloader層中,并使用第二私鑰對(duì)文系統(tǒng)層進(jìn)行簽名生成第二簽名。其中,對(duì)文件系統(tǒng)層簽名是指對(duì)文件系統(tǒng)層中包括的文件和數(shù)據(jù)等進(jìn)行簽名。
可選的,本公開(kāi)實(shí)施例中,終端的Rom中寫(xiě)入的是測(cè)試版本的Rom包。對(duì)于一個(gè)測(cè)試版本的Rom包來(lái)說(shuō),軟件開(kāi)發(fā)人員在生成該測(cè)試版本的Rom時(shí)在該Rom包中攜帶有屬于同一個(gè)密鑰對(duì)的第二公鑰和第二私鑰,即第二公鑰與第二私鑰可以互相加解密。對(duì)于包含預(yù)設(shè)電路結(jié)構(gòu)的測(cè)試用終端來(lái)說(shuō),測(cè)試用終端無(wú)需通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn),只需直接通過(guò)Bootloader層使用第二公鑰對(duì)第二簽名進(jìn)行校驗(yàn)時(shí),此時(shí)校驗(yàn)會(huì)成功,終端成功啟動(dòng)。
可選的,第一公鑰與第二公鑰相同。
可選的,同一個(gè)終端可以是用于測(cè)試多個(gè)不同測(cè)試版本的Rom包的測(cè)試用終端,則該終端中可以包括一個(gè)預(yù)設(shè)電路結(jié)構(gòu),不同測(cè)試版本的Rom包都對(duì)應(yīng)于同一個(gè)預(yù)設(shè)電路結(jié)構(gòu);或者,該終端中包括多個(gè)不同的預(yù)設(shè)電路結(jié)構(gòu),不同測(cè)試版本的Rom包對(duì)應(yīng)于不同的預(yù)設(shè)電路結(jié)構(gòu),當(dāng)終端中寫(xiě)入不同測(cè)試版本的Rom時(shí),則終端通過(guò)檢測(cè)是否包含與當(dāng)前加載的測(cè)試版本的Rom包對(duì)應(yīng)的預(yù)設(shè)電路結(jié)構(gòu)判斷該是否是用于測(cè)試該測(cè)試版本的Rom包的測(cè)試用終端。
比如,與Rom包1對(duì)應(yīng)的預(yù)設(shè)電路結(jié)構(gòu)是預(yù)設(shè)電路結(jié)構(gòu)1,與Rom包2對(duì)應(yīng)的預(yù)設(shè)電路結(jié)構(gòu)是預(yù)設(shè)電路結(jié)構(gòu)2,終端中包含有預(yù)設(shè)電路結(jié)構(gòu)1。當(dāng)終端的Rom中寫(xiě)入有Rom包1時(shí),終端進(jìn)行開(kāi)機(jī)校驗(yàn)時(shí)檢測(cè)到終端中包含預(yù)設(shè)電路結(jié)構(gòu)1,則確定終端為測(cè)試用終端。當(dāng)終端的Rom中寫(xiě)入有Rom包2時(shí),終端進(jìn)行開(kāi)機(jī)校驗(yàn)時(shí)檢測(cè)到終端中不包含預(yù)設(shè)電路結(jié)構(gòu)2,則此時(shí)確定終端為非測(cè)試用終端。
綜上所述,本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,通過(guò)檢測(cè)終端是否為非測(cè)試用終端,當(dāng)確定終端為非測(cè)試用終端時(shí),通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn),由于第一簽名是根據(jù)第一私鑰生成的簽名,而第一私鑰與第一公鑰不匹配,因此終端校驗(yàn)失敗,無(wú)法開(kāi)啟;而當(dāng)確定終端為測(cè)試用終端時(shí),直接通過(guò)Bootloader層使用第二公鑰對(duì)文件系統(tǒng)層攜帶的第二簽名進(jìn)行校驗(yàn),第二簽名由第二私鑰生成,此時(shí)由于第二公鑰與第二私鑰相匹配,因此測(cè)試用終端校驗(yàn)成功并成功開(kāi)啟;解決了終端因?yàn)檫\(yùn)行測(cè)試版本的Rom包導(dǎo)致安全性較低的問(wèn)題;通過(guò)在終端中設(shè)置一套匹配的密鑰和一套不匹配的密鑰,達(dá)到了非測(cè)試用終端由于校驗(yàn)失敗而無(wú)法成功啟動(dòng),因此也無(wú)法運(yùn)行測(cè)試版本的Rom包,保證了終端的安全性的效果。
本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,預(yù)設(shè)電路結(jié)構(gòu)設(shè)置在終端硬件層的可信區(qū)域,使用戶無(wú)法通過(guò)應(yīng)用程序直接訪問(wèn)該預(yù)設(shè)電路結(jié)構(gòu),避免了對(duì)預(yù)設(shè)電路結(jié)構(gòu)的偽造,提高了預(yù)設(shè)電路結(jié)構(gòu)的可靠性。
終端在進(jìn)行開(kāi)機(jī)校驗(yàn)時(shí)的流程圖還可以如圖5所示,本實(shí)施例以該方法用于圖1所示的終端中為例進(jìn)行說(shuō)明,該方法可以包括如下幾個(gè)步驟:
在步驟501中,檢測(cè)終端中是否包含預(yù)設(shè)標(biāo)識(shí),預(yù)設(shè)標(biāo)識(shí)為用于表示終端為測(cè)試用終端的標(biāo)識(shí)。
可選的,該步驟可以實(shí)現(xiàn)成為檢測(cè)硬件層的可信存儲(chǔ)區(qū)域中是否包含預(yù)設(shè)標(biāo)識(shí)。
在步驟502中,若終端中不包含預(yù)設(shè)標(biāo)識(shí),則確定終端為非測(cè)試用終端。
在步驟503中,當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn),在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
第一簽名是根據(jù)第一私鑰生成的簽名,第一私鑰與第一公鑰不匹配。
在步驟504中,若終端中包含預(yù)設(shè)標(biāo)識(shí),則確定終端是測(cè)試用終端。
在步驟505中,當(dāng)確定終端為測(cè)試用終端時(shí),則通過(guò)Bootloader層使用第二公鑰對(duì)第二簽名進(jìn)行校驗(yàn),在校驗(yàn)成功時(shí),指示開(kāi)啟終端。
其中,第二簽名是根據(jù)第二私鑰生成的簽名,第二私鑰與第二公鑰相匹配。
上述步驟501-步驟505的具體實(shí)現(xiàn)方式可以結(jié)合上述圖4所示的實(shí)施例,本實(shí)施例對(duì)此不再贅述。
本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,預(yù)設(shè)標(biāo)識(shí)設(shè)置在終端硬件層的可信存儲(chǔ)區(qū)域,使用戶無(wú)法通過(guò)應(yīng)用程序直接訪問(wèn)該預(yù)設(shè)標(biāo)識(shí),避免了對(duì)預(yù)設(shè)電路的偽造,提高了預(yù)設(shè)標(biāo)識(shí)的可靠性。
在實(shí)際實(shí)現(xiàn)時(shí),終端加載的Rom包可以是測(cè)試版本的Rom包,也可以是官方版本的Rom包,而對(duì)于官方版本的Rom包來(lái)說(shuō),由于所有加載官方版本的Rom包的終端都可以校驗(yàn)成功并運(yùn)行該Rom包,因此加載該Rom包的終端中并不會(huì)包括預(yù)設(shè)電路結(jié)構(gòu)或預(yù)設(shè)標(biāo)識(shí)。且對(duì)于官方版本的Rom包來(lái)說(shuō),Rom中攜帶的第一公鑰與第一私鑰相匹配,第二公鑰與第二私鑰也相匹配。
則當(dāng)終端在加載官方版本的Rom包時(shí),上述步驟403或步驟503可被替代實(shí)現(xiàn)為如下步驟,如圖6所示:
在步驟601中,當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用第一公鑰校驗(yàn)第一簽名,則終端通過(guò)Kernel層使用第一公鑰對(duì)第一簽名進(jìn)行校驗(yàn)。
其中,第一簽名為根據(jù)第一私鑰生成的簽名,第一私鑰與第一公鑰匹配。
在步驟602中,在校驗(yàn)成功時(shí),通過(guò)Bootloader層使用第二公鑰對(duì)第二簽名進(jìn)行校驗(yàn),在校驗(yàn)成功時(shí),指示開(kāi)啟終端。
其中,第二簽名是根據(jù)第二私鑰生成的簽名,第二私鑰與第二公鑰相匹配。
在本實(shí)施例中,第一公鑰與第二公鑰可以相同,第一私鑰與第二私鑰也可以相同。
綜上所述,本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)方法,對(duì)于官方版本的Rom包,Rom包中攜帶的第一公鑰和第一私鑰相匹配,攜帶的第二公鑰和第二私鑰也相匹配,保證了所有終端都能成功啟動(dòng)并正常運(yùn)行官方版本的Rom包。
在一個(gè)示例性的例子中,當(dāng)終端的Rom中寫(xiě)入的是測(cè)試版本的Rom包時(shí),假設(shè)終端從Rom包中獲取的第一公鑰與第二公鑰都是公鑰A,第一私鑰是私鑰B,根據(jù)私鑰B生成第一簽名,第二私鑰是私鑰A,根據(jù)私鑰A生成第二簽名,私鑰B與公鑰A不匹配,私鑰A與公鑰A相匹配。則當(dāng)終端是測(cè)試用終端時(shí),終端檢測(cè)到硬件區(qū)中包含預(yù)設(shè)標(biāo)識(shí),則終端的開(kāi)機(jī)校驗(yàn)的示意圖可以如圖7A中的(a)所示,終端不通過(guò)Kernel層使用公鑰A對(duì)第一簽名進(jìn)行校驗(yàn),直接通過(guò)Bootloader層使用公鑰A對(duì)第二簽名進(jìn)行校驗(yàn);當(dāng)終端是非測(cè)試用終端時(shí),終端檢測(cè)到硬件區(qū)中不包含預(yù)設(shè)標(biāo)識(shí),終端的開(kāi)機(jī)校驗(yàn)的示意圖可以如圖7A中的(b)所示,終端通過(guò)Kernel層使用公鑰A對(duì)第一簽名進(jìn)行校驗(yàn),校驗(yàn)失敗。
在另一個(gè)示例性的例子中,當(dāng)終端的Rom中寫(xiě)入的是官方版本的Rom包時(shí),假設(shè)終端從Rom包中獲取的第一公鑰與第二公鑰都是公鑰A,獲取到的第一私鑰和第二私鑰都是私鑰A,第一簽名和第二簽名都根據(jù)私鑰A生成,私鑰A與私鑰B相匹配。則對(duì)于加載該Rom包的任意一個(gè)終端來(lái)說(shuō),終端中都可以不包含預(yù)設(shè)標(biāo)識(shí)和預(yù)設(shè)電路結(jié)構(gòu),則終端在檢測(cè)到不包含預(yù)設(shè)標(biāo)識(shí)或預(yù)設(shè)電路結(jié)構(gòu)時(shí),終端的開(kāi)機(jī)校驗(yàn)的示意圖可以如圖7B所示,終端通過(guò)Kernel層使用公鑰A對(duì)第一簽名進(jìn)行校驗(yàn),校驗(yàn)成功時(shí),通過(guò)Bootloader層使用公鑰A對(duì)第二簽名進(jìn)行校驗(yàn)。
下述為本公開(kāi)裝置實(shí)施例,可以用于執(zhí)行本公開(kāi)方法實(shí)施例。對(duì)于本公開(kāi)裝置實(shí)施例中未披露的細(xì)節(jié),請(qǐng)參照本公開(kāi)方法實(shí)施例。
圖8是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖,如圖8所示,該裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為如圖1所示的終端,該裝置包括但不限于:檢測(cè)模塊810和校驗(yàn)?zāi)K820。
檢測(cè)模塊810,被配置為檢測(cè)終端是否為非測(cè)試用終端。
校驗(yàn)?zāi)K820,被配置為當(dāng)通過(guò)檢測(cè)模塊810檢測(cè)到確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
綜上所述,本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)裝置,通過(guò)檢測(cè)終端是否為非測(cè)試用終端,當(dāng)確定終端為非測(cè)試用終端時(shí),通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),由于簽名是根據(jù)私鑰生成的簽名,而私鑰與公鑰不匹配,因此終端校驗(yàn)失敗,無(wú)法開(kāi)啟;解決了終端因?yàn)檫\(yùn)行測(cè)試版本的Rom包導(dǎo)致安全性較低的問(wèn)題;通過(guò)在終端中設(shè)置一套匹配的密鑰和一套不匹配的密鑰,達(dá)到了非測(cè)試用終端由于校驗(yàn)失敗而無(wú)法成功啟動(dòng),保證了終端的安全性的效果。
圖9A和圖9B是根據(jù)另一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖,該裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為如圖1所示的終端,該裝置包括但不限于:
檢測(cè)模塊910,被配置為檢測(cè)終端是否為非測(cè)試用終端。
可選的,檢測(cè)模塊910包括如下幾個(gè)子模塊,如圖9A所示:
第一檢測(cè)子模塊911,被配置為檢測(cè)終端中是否包含預(yù)設(shè)電路結(jié)構(gòu),預(yù)設(shè)電路結(jié)構(gòu)用于表示終端是測(cè)試用終端。
第一檢測(cè)子模塊911,還被配置為檢測(cè)硬件層的可信區(qū)域中是否包含預(yù)設(shè)電路結(jié)構(gòu),可信區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
第一確定子模塊912,被配置為在通過(guò)第一檢測(cè)子模塊911檢測(cè)到終端中不包含預(yù)設(shè)電路結(jié)構(gòu)時(shí),則確定終端為非測(cè)試用終端。
或者,可選的,檢測(cè)模塊910包括如下幾個(gè)子模塊,如圖9B所示:
第二檢測(cè)子模塊913,被配置為檢測(cè)終端中是否包含預(yù)設(shè)標(biāo)識(shí),預(yù)設(shè)標(biāo)識(shí)為用于表示終端為測(cè)試用終端的標(biāo)識(shí)。
第二檢測(cè)子模塊913,還被配置為檢測(cè)硬件層的可信存儲(chǔ)區(qū)域中是否包含預(yù)設(shè)標(biāo)識(shí),可信存儲(chǔ)區(qū)域是硬件層中禁止被應(yīng)用程序直接訪問(wèn)的區(qū)域。
第二確定子模塊914,被配置為在通過(guò)第二檢測(cè)子模塊911檢測(cè)到終端中不包含預(yù)設(shè)標(biāo)識(shí)時(shí),則確定終端為非測(cè)試用終端。
校驗(yàn)?zāi)K920,被配置為在通過(guò)第一確定子模塊912或者通過(guò)第二確定子模塊914確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
綜上所述,本公開(kāi)實(shí)施例提供的開(kāi)機(jī)校驗(yàn)裝置,通過(guò)檢測(cè)終端是否為非測(cè)試用終端,當(dāng)確定終端為非測(cè)試用終端時(shí),通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),由于簽名是根據(jù)私鑰生成的簽名,而私鑰與公鑰不匹配,因此終端校驗(yàn)失敗,無(wú)法開(kāi)啟;解決了終端因?yàn)檫\(yùn)行測(cè)試版本的Rom包導(dǎo)致安全性較低的問(wèn)題;通過(guò)在終端中設(shè)置一套匹配的密鑰和一套不匹配的密鑰,達(dá)到了非測(cè)試用終端由于校驗(yàn)失敗而無(wú)法成功啟動(dòng),保證了終端的安全性的效果。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說(shuō)明。
本公開(kāi)一示例性實(shí)施例提供了一種開(kāi)機(jī)校驗(yàn)裝置,能夠?qū)崿F(xiàn)本公開(kāi)提供的。開(kāi)機(jī)校驗(yàn)方法,該裝置包括:處理器、用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;
其中,處理器被配置為:
檢測(cè)終端是否為非測(cè)試用終端;
當(dāng)確定終端為非測(cè)試用終端時(shí),則通過(guò)Kernel層使用公鑰對(duì)簽名進(jìn)行校驗(yàn),簽名是根據(jù)私鑰生成的簽名,私鑰與公鑰不匹配,在校驗(yàn)失敗時(shí),指示結(jié)束校驗(yàn)。
圖10是根據(jù)一示例性實(shí)施例示出的一種開(kāi)機(jī)校驗(yàn)裝置的框圖。例如,裝置1000可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺(tái),平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等。
參照?qǐng)D10,裝置1000可以包括以下一個(gè)或多個(gè)組件:處理組件1002,存儲(chǔ)器1004,電源組件1006,多媒體組件1008,音頻組件1010,輸入/輸出(I/O)接口1012,傳感器組件1014,以及通信組件1016。
處理組件1002通??刂蒲b置1000的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理組件1002可以包括一個(gè)或多個(gè)處理器1018來(lái)執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件1002可以包括一個(gè)或多個(gè)模塊,便于處理組件1002和其他組件之間的交互。例如,處理組件1002可以包括多媒體模塊,以方便多媒體組件1008和處理組件1002之間的交互。
存儲(chǔ)器1004被配置為存儲(chǔ)各種類型的數(shù)據(jù)以支持在裝置1000的操作。這些數(shù)據(jù)的示例包括用于在裝置1000上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲(chǔ)器1004可以由任何類型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),電可擦除可編程只讀存儲(chǔ)器(EEPROM),可擦除可編程只讀存儲(chǔ)器(EPROM),可編程只讀存儲(chǔ)器(PROM),只讀存儲(chǔ)器(ROM),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤或光盤。
電源組件1006為裝置1000的各種組件提供電力。電源組件1006可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為裝置1000生成、管理和分配電力相關(guān)聯(lián)的組件。
多媒體組件1008包括在裝置1000和用戶之間的提供一個(gè)輸出接口的屏幕。在一些實(shí)施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實(shí)現(xiàn)為觸摸屏,以接收來(lái)自用戶的輸入信號(hào)。觸摸面板包括一個(gè)或多個(gè)觸摸傳感器以感測(cè)觸摸、滑動(dòng)和觸摸面板上的手勢(shì)。觸摸傳感器可以不僅感測(cè)觸摸或滑動(dòng)動(dòng)作的邊界,而且還檢測(cè)與觸摸或滑動(dòng)操作相關(guān)的持續(xù)時(shí)間和壓力。在一些實(shí)施例中,多媒體組件1008包括一個(gè)前置攝像頭和/或后置攝像頭。當(dāng)裝置1000處于操作模式,如拍攝模式或視頻模式時(shí),前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個(gè)前置攝像頭和后置攝像頭可以是一個(gè)固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
音頻組件1010被配置為輸出和/或輸入音頻信號(hào)。例如,音頻組件1010包括一個(gè)麥克風(fēng)(MIC),當(dāng)裝置1000處于操作模式,如呼叫模式、記錄模式和語(yǔ)音識(shí)別模式時(shí),麥克風(fēng)被配置為接收外部音頻信號(hào)。所接收的音頻信號(hào)可以被進(jìn)一步存儲(chǔ)在存儲(chǔ)器1004或經(jīng)由通信組件1016發(fā)送。在一些實(shí)施例中,音頻組件1010還包括一個(gè)揚(yáng)聲器,用于輸出音頻信號(hào)。
I/O接口1012為處理組件1002和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁(yè)按鈕、音量按鈕、啟動(dòng)按鈕和鎖定按鈕。
傳感器組件1014包括一個(gè)或多個(gè)傳感器,用于為裝置1000提供各個(gè)方面的狀態(tài)評(píng)估。例如,傳感器組件1014可以檢測(cè)到裝置1000的打開(kāi)/關(guān)閉狀態(tài),組件的相對(duì)定位,例如組件為裝置1000的顯示器和小鍵盤,傳感器組件1014還可以檢測(cè)裝置1000或裝置1000一個(gè)組件的位置改變,用戶與裝置1000接觸的存在或不存在,裝置1000方位或加速/減速和裝置1000的溫度變化。傳感器組件1014可以包括接近傳感器,被配置用來(lái)在沒(méi)有任何的物理接觸時(shí)檢測(cè)附近物體的存在。傳感器組件1014還可以包括光傳感器,如CMOS或CCD圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件1014還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件1016被配置為便于裝置1000和其他設(shè)備之間有線或無(wú)線方式的通信。裝置1000可以接入基于通信標(biāo)準(zhǔn)的無(wú)線網(wǎng)絡(luò),如Wi-Fi,2G或3G,或它們的組合。在一個(gè)示例性實(shí)施例中,通信組件1016經(jīng)由廣播信道接收來(lái)自外部廣播管理系統(tǒng)的廣播信號(hào)或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,通信組件1016還包括近場(chǎng)通信(NFC)模塊,以促進(jìn)短程通信。例如,在NFC模塊可基于射頻識(shí)別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(huì)(IrDA)技術(shù),超寬帶(UWB)技術(shù),藍(lán)牙(BT)技術(shù)和其他技術(shù)來(lái)實(shí)現(xiàn)。
在示例性實(shí)施例中,裝置1000可以被一個(gè)或多個(gè)應(yīng)用專用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述開(kāi)機(jī)校驗(yàn)方法。
在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器1004,上述指令可由裝置1000的處理器1018執(zhí)行以完成上述開(kāi)機(jī)校驗(yàn)方法。例如,非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里公開(kāi)的發(fā)明后,將容易想到本公開(kāi)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開(kāi)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開(kāi)的一般性原理并包括本公開(kāi)未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本公開(kāi)的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開(kāi)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開(kāi)的范圍僅由所附的權(quán)利要求來(lái)限制。