欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于提供驗(yàn)證應(yīng)用完整性的方法和設(shè)備與流程

文檔序號(hào):11635222閱讀:244來源:國(guó)知局
本公開通常涉及計(jì)算機(jī)系統(tǒng),并且特別涉及這樣的系統(tǒng)中的軟件代碼的完整性。
背景技術(shù)
::本節(jié)旨在向讀者介紹技術(shù)的各個(gè)方面,這可能與下面描述和/或要求保護(hù)的本公開的各個(gè)方面有關(guān)。認(rèn)為該討論有助于向讀者提供背景信息以便于更好地理解本公開的各個(gè)方面。因此,應(yīng)當(dāng)理解,要從該角度來閱讀這些陳述,而不是作為對(duì)現(xiàn)有技術(shù)的承認(rèn)。由于各種原因,通常希望確保處理設(shè)備執(zhí)行未被篡改的軟件。為此目的,可以使用不同的技術(shù)來保護(hù)軟件鏡像免受篡改攻擊。最常用的技術(shù)是在代碼片段上計(jì)算簽名或校驗(yàn)和,然后在稍后的階段驗(yàn)證簽名或校驗(yàn)和。通常在沒有任何秘密的情況下計(jì)算和驗(yàn)證校驗(yàn)和,而生成加密簽名需要私鑰和對(duì)應(yīng)公鑰驗(yàn)證簽名?;谛r?yàn)和的保護(hù)的示例是windows操作系統(tǒng)中使用的可移植可執(zhí)行(pe)格式的crc32。pe頭包含crc32字段,其給出對(duì)應(yīng)代碼段的校驗(yàn)和。為了成功繞過保護(hù),攻擊者首先修改代碼段,然后利用在經(jīng)修改的代碼段上計(jì)算的新值來替代原始校驗(yàn)和。這種類型的攻擊是可能的,因?yàn)楣粽卟恍枰魏蚊孛軄砀陆?jīng)修改的代碼段的校驗(yàn)和。鑒于校驗(yàn)和的弱點(diǎn),加密簽名是優(yōu)選解決方案。簽名的生成在代碼釋放之前被執(zhí)行并且使用私有(因此是秘密)密鑰。相關(guān)聯(lián)的公鑰被附加到代碼,并且稍后用于在代碼安裝或運(yùn)行時(shí)校驗(yàn)代碼完整性。攻擊者仍然可以修改代碼,但是由于在沒有私鑰的情況下無法生成代碼的正確簽名,所以攻擊失敗。存在用于校驗(yàn)以本機(jī)代碼傳遞和執(zhí)行的應(yīng)用的完整性的許多解決方案,諸如由arxan(guardittm)、metaforic(metafortresstm)等提供的解決方案。本機(jī)代碼是可由處理器直接執(zhí)行的匯編器指令的集合。安裝之后指令集合不改變,這意味著程序完整性值在安裝之前和安裝之后保持相同(即隨時(shí)間保持不變)。在這種情況下,簽名可以被預(yù)先生成并且與應(yīng)用包一起傳遞。另一方面,以解釋代碼(諸如以java編寫的代碼、安卓dex代碼等)的形式分發(fā)的應(yīng)用包括在其被執(zhí)行之前必須通過解釋器的中間指令。與本機(jī)代碼不同,解釋代碼可以在安裝時(shí)間之后被修改以用于優(yōu)化目的。代碼修改通常非常依賴于目標(biāo)平臺(tái),因此不一定是可預(yù)測(cè)的。如果代碼被修改,則根據(jù)解釋代碼所生成的簽名不能用于在運(yùn)行時(shí)動(dòng)態(tài)地校驗(yàn)代碼完整性和真實(shí)性。為了將應(yīng)用軟件分發(fā)和安裝到前面提到的安卓操作系統(tǒng)上,使用稱為apk(androidapplicationpackage,安卓應(yīng)用包)的文件格式。為了制作apk文件,首先將針對(duì)安卓的程序編譯為中間語(yǔ)言,然后將它的部分打包成壓縮存檔文件(zip格式)。存檔文件包含單個(gè)dex(dalvikexecutablecode,dalvik可執(zhí)行代碼)文件中的整個(gè)程序代碼、各種資源(例如鏡像文件)以及apk文件的清單。存檔文件包括兩個(gè)附加文件:cert.sf和cert.rsa。cert.sf包含所有其他存檔文件的加密散列;cert.rsa包含用于簽名驗(yàn)證的公鑰。只有cert.sf利用rsa私鑰被簽名。cert.sf的rsa簽名使得能夠在安裝期間驗(yàn)證apk文件的整個(gè)內(nèi)容。實(shí)際上,cert.sf文件中提到的所有文件都是間接簽名的,因?yàn)閏ert.sf包含它們的散列。在安裝之前更改任何文件將導(dǎo)致錯(cuò)誤,因?yàn)檐浖z測(cè)到文件摘要與cert.sf文件中的散列不匹配。替選地,修改cert.sf文件內(nèi)的加密散列值(如在已經(jīng)描述的對(duì)基于校驗(yàn)和的驗(yàn)證的攻擊中)將在簽名驗(yàn)證期間導(dǎo)致錯(cuò)誤。dex文件頭還包含dex文件內(nèi)容的全局校驗(yàn)和。在首次執(zhí)行應(yīng)用時(shí),安卓系統(tǒng)使用優(yōu)化器,在執(zhí)行之前該優(yōu)化器及時(shí)將dex解釋字節(jié)代碼修改為稱為odex(優(yōu)化dex)的優(yōu)化機(jī)器指令序列。優(yōu)化器還更新校驗(yàn)和。然后將odex文件存儲(chǔ)在安卓文件系統(tǒng)中的特定存儲(chǔ)庫(kù)中以用于將來使用。然后odex文件成為應(yīng)用軟件的參考,并且當(dāng)其存在時(shí),不再使用原始dex文件。在運(yùn)行時(shí),系統(tǒng)可以使用odex校驗(yàn)和來驗(yàn)證應(yīng)用的完整性。然而,在安卓操作系統(tǒng)和用于執(zhí)行odex代碼的dalvik機(jī)器中,該選項(xiàng)不是默認(rèn)設(shè)置的,并不總是校驗(yàn)odex校驗(yàn)和,因?yàn)樾r?yàn)和驗(yàn)證對(duì)執(zhí)行性能具有不可忽視的影響。安卓版本5.0及更高版本引入了替代dalvik機(jī)器的安卓運(yùn)行時(shí)間(androidruntime,art)。應(yīng)用仍然以dex代碼部署,但是在安裝時(shí),使用提前編譯(aot)功能將dex代碼編譯為本機(jī)代碼。對(duì)dex文件的aot編譯產(chǎn)生二進(jìn)制可執(zhí)行可鏈接格式(elf)文件。然后將應(yīng)用的dex代碼編譯一次,并且然后每次執(zhí)行應(yīng)用時(shí)隨后啟動(dòng)elf代碼。當(dāng)art直接運(yùn)行本機(jī)代碼(elf代碼)時(shí),帶來更快的應(yīng)用執(zhí)行并改善總體功耗。因此可以看出,在安卓系統(tǒng)中,只在安裝時(shí)驗(yàn)證apk簽名。此外,如果用戶允許安裝來自不可信的源的應(yīng)用,則apk即使在未被由中央機(jī)構(gòu)簽名時(shí),也可以安裝在安卓設(shè)備上。然后應(yīng)用開發(fā)者使用他們擁有的自簽名證書,其不與任何可信機(jī)構(gòu)鏈接。在這種情況下,經(jīng)篡改的應(yīng)用可以由其所有者不知道的安卓設(shè)備上的任何黑客退出并重新安裝。如已經(jīng)提到的,安卓應(yīng)用使用解釋器可移植格式(dex)。該可移植格式可以在具有不同架構(gòu)和特性的大量設(shè)備上執(zhí)行:arm、x86、mips、小/大字節(jié)序(little/bigendian)等。為了提高性能,dex代碼在安裝時(shí)或者在首次使用應(yīng)用時(shí)被修改,以產(chǎn)生odex或者針對(duì)目標(biāo)設(shè)備優(yōu)化的elf二進(jìn)制。在優(yōu)化或oat編譯期間,可能在代碼中修改各種內(nèi)容:指令可能被其他指令替代,指令的對(duì)齊可能被改變,字節(jié)順序可能被交換,等等。于是優(yōu)化和oat編譯引發(fā)安全問題。雖然仍然可以使用cert.sf和cert.rsa來驗(yàn)證dex文件的簽名,但是對(duì)于odex和elf文件而言不是這樣的情況,因?yàn)閛dex和elf文件已被修改,并且它們的完整性不再與原始dex簽名鏈接。換句話說,完整性和真實(shí)性只能在安裝時(shí)被驗(yàn)證,而不能在運(yùn)行時(shí)被驗(yàn)證,因?yàn)楣粽吣軌蛐薷膐dex和elf代碼,并相應(yīng)地更新頭部中的最終校驗(yàn)和。因此,系統(tǒng)容易受到至少兩類攻擊:遠(yuǎn)程攻擊和根源攻擊。在遠(yuǎn)程攻擊中,下載的惡意應(yīng)用提升其權(quán)限并獲得系統(tǒng)許可。然后惡意應(yīng)用可以篡改存儲(chǔ)在內(nèi)部?jī)?chǔ)存器的緩存存儲(chǔ)庫(kù)上的odex和elf文件。在根源攻擊中,攻擊者獲得安卓設(shè)備,例如通過竊取設(shè)備或者通過在所有者不存在時(shí)訪問設(shè)備,無需鎖定設(shè)備會(huì)話。攻擊者可以通過usb鏈接從設(shè)備的內(nèi)部?jī)?chǔ)存器取回所安裝的應(yīng)用,修改應(yīng)用,然后將經(jīng)修改的應(yīng)用推回到內(nèi)部?jī)?chǔ)存器上。為了使后者的攻擊成功,設(shè)備必須是“根源的”(即需要“根源訪問”來控制設(shè)備的安卓系統(tǒng))。因此,安卓應(yīng)用完整性的信任可能在應(yīng)用的生命周期期間被破壞。可以信任安卓系統(tǒng)上安裝的內(nèi)容,但不一定是正在運(yùn)行的內(nèi)容。應(yīng)當(dāng)理解,期望具有解決方案,其克服與解釋代碼應(yīng)用的完整性和真實(shí)性相關(guān)的問題的至少一部分。本公開提供這樣的解決方案。技術(shù)實(shí)現(xiàn)要素:在第一方面,本公開針對(duì)一種用于處理應(yīng)用的設(shè)備。該設(shè)備包括接口,被配置為接收應(yīng)用,存儲(chǔ)器,被配置為存儲(chǔ)應(yīng)用和經(jīng)修改的應(yīng)用的簽名的校驗(yàn)和,以及處理單元,被配置為修改應(yīng)用以獲得經(jīng)修改的應(yīng)用,生成經(jīng)修改的應(yīng)用的校驗(yàn)和,使用簽名密鑰對(duì)經(jīng)修改的應(yīng)用的校驗(yàn)和進(jìn)行簽名,以及將簽名的校驗(yàn)和存儲(chǔ)在存儲(chǔ)器中。第一方面的各種實(shí)施例包括:·應(yīng)用包括第一校驗(yàn)和,并且處理單元還被配置為使用第一校驗(yàn)和來驗(yàn)證應(yīng)用的完整性。有利的是,對(duì)第一校驗(yàn)和進(jìn)行簽名,并且處理單元還被配置為驗(yàn)證第一校驗(yàn)和的簽名。·處理單元還配置為在執(zhí)行經(jīng)修改的應(yīng)用期間使用簽名的校驗(yàn)和來驗(yàn)證經(jīng)修改的應(yīng)用的完整性。·將應(yīng)用實(shí)現(xiàn)為解釋代碼,并且將經(jīng)修改的應(yīng)用實(shí)現(xiàn)為優(yōu)化解釋代碼,或者將經(jīng)修改的應(yīng)用編譯為本機(jī)代碼。·設(shè)備是智能手機(jī)或平板。·使用軟件保護(hù)技術(shù)來保護(hù)簽名密鑰?!ぬ幚韱卧慌渲脼樯山?jīng)修改的代碼的多個(gè)校驗(yàn)和,每個(gè)校驗(yàn)和是針對(duì)經(jīng)修改的代碼的不同部分而生成的,并且對(duì)經(jīng)修改的代碼的多個(gè)校驗(yàn)和進(jìn)行簽名?!ぬ幚韱卧慌渲脼獒槍?duì)經(jīng)修改的代碼的多個(gè)校驗(yàn)和生成單個(gè)簽名。·存儲(chǔ)器還被配置為存儲(chǔ)經(jīng)修改的應(yīng)用和簽名密鑰的證書,并且處理器還被配置為將簽名密鑰的證書存儲(chǔ)在存儲(chǔ)器中。在第二方面,本公開針對(duì)一種用于處理應(yīng)用的方法。設(shè)備接收應(yīng)用,修改應(yīng)用以獲得經(jīng)修改的應(yīng)用,生成經(jīng)修改的應(yīng)用的校驗(yàn)和,使用簽名密鑰對(duì)經(jīng)修改的應(yīng)用的校驗(yàn)和進(jìn)行簽名,以及將簽名的校驗(yàn)和存儲(chǔ)在存儲(chǔ)器中的存儲(chǔ)器中。第二方面的各種實(shí)施例包括:·應(yīng)用包括第一校驗(yàn)和,并且該方法還包括使用第一校驗(yàn)和來驗(yàn)證應(yīng)用的完整性?!?duì)第一校驗(yàn)和進(jìn)行簽名,并且該方法還包括驗(yàn)證第一校驗(yàn)和的簽名?!ぴ摲椒ㄟ€包括在執(zhí)行經(jīng)修改的應(yīng)用期間使用簽名的校驗(yàn)和來驗(yàn)證經(jīng)修改的應(yīng)用的完整性?!ぴ摲椒ㄟ€包括將經(jīng)修改的應(yīng)用和簽名密鑰的證書存儲(chǔ)在存儲(chǔ)器中。附圖說明現(xiàn)在將參照附圖通過非限制性示例來描述本公開的優(yōu)選特征,附圖中:圖1圖示了實(shí)現(xiàn)本公開的示例性系統(tǒng);圖2圖示了示例性系統(tǒng)功能方面;圖3圖示了根據(jù)本公開的優(yōu)選實(shí)施例的方法的優(yōu)選實(shí)施例。具體實(shí)施方式圖1圖示了實(shí)現(xiàn)本公開的示例性系統(tǒng)。系統(tǒng)包括設(shè)備110和應(yīng)用提供商(應(yīng)用商店)120。設(shè)備110可以是運(yùn)行安卓os的任何種類的合適的設(shè)備,諸如智能電話或平板,并且它包括至少一個(gè)硬件處理單元(“處理器”)111、存儲(chǔ)器112、用于與用戶交互的用戶接口113、以及用于通過諸如因特網(wǎng)的連接140與應(yīng)用提供商120通信的通信接口114。本領(lǐng)域技術(shù)人員將理解,為清楚起見,所示設(shè)備是非常簡(jiǎn)化的,并且另外的實(shí)際設(shè)備將包括諸如電源和永久儲(chǔ)存器的特征。應(yīng)用提供商120存儲(chǔ)可以由設(shè)備110下載的至少一個(gè)應(yīng)用apk文件122,該apk文件包括由簽名實(shí)體簽名的apk證書。圖2圖示了示例性系統(tǒng)的功能方面。設(shè)備110的os210包括簽名模塊212和嵌入的可信實(shí)體214??尚艑?shí)體214存儲(chǔ)簽名密鑰215與對(duì)應(yīng)的簽名證書216。簽名密鑰215可以是(至少在統(tǒng)計(jì)上)對(duì)于設(shè)備或者對(duì)于os的版本唯一的,并且其可以被對(duì)于每個(gè)設(shè)備唯一的設(shè)備密鑰保護(hù)。證書由簽名實(shí)體直接簽名或者通過信任鏈簽名。應(yīng)用220包括由簽名實(shí)體簽名的apk證書222、應(yīng)用代碼224(安裝之前的dex和安裝之后的odex或elf)、用于存儲(chǔ)odex或elf校驗(yàn)和的保留空間226、用于存儲(chǔ)odex或elf簽名以及簽名證書的保留空間228、以及包括完整性驗(yàn)證模塊232的庫(kù)230。簽名模塊212被配置為驗(yàn)證應(yīng)用的apk證書222,計(jì)算應(yīng)用的odex或elf校驗(yàn)和,以及在安裝應(yīng)用時(shí)對(duì)odex或elf校驗(yàn)和進(jìn)行簽名。簽名模塊212可以在dalvik虛擬機(jī)中或者在優(yōu)化或oat編譯dex的單元中實(shí)現(xiàn)。任何適當(dāng)?shù)默F(xiàn)有技術(shù)驗(yàn)證技術(shù)驗(yàn)證apk證書222。簽名模塊212被配置為將odex或elf校驗(yàn)和以及簽名插入應(yīng)用的緩存存儲(chǔ)庫(kù)中的保留空間226、228中。簽名模塊212還將簽名證書216存儲(chǔ)在緩存存儲(chǔ)庫(kù)中。應(yīng)當(dāng)理解,可以使用多個(gè)校驗(yàn)和,例如針對(duì)整個(gè)dex代碼的一個(gè)校驗(yàn)和以及針對(duì)dex代碼的一部分的至少一個(gè)另外的校驗(yàn)和。在這種情況下,簽名模塊212驗(yàn)證所有校驗(yàn)和,生成對(duì)應(yīng)的odex或elf校驗(yàn)和,對(duì)所有生成的odex或elf校驗(yàn)和進(jìn)行簽名(有利地使用單個(gè)簽名),并且將odex或elf校驗(yàn)和以及簽名存儲(chǔ)在緩存存儲(chǔ)庫(kù)中。完整性驗(yàn)證模塊232包括在apk的本機(jī)庫(kù)中,并且訪問擴(kuò)展的jni庫(kù),其允許在執(zhí)行期間的任何時(shí)間校驗(yàn)odex或elf校驗(yàn)和以及對(duì)應(yīng)簽名。完整性驗(yàn)證模塊232被配置為當(dāng)作為應(yīng)用的一部分被執(zhí)行時(shí),以任何合適的方式校驗(yàn)簽名證書,校驗(yàn)odex或elf校驗(yàn)和的簽名,計(jì)算odex或elf的當(dāng)前校驗(yàn)和,并且將計(jì)算出的校驗(yàn)和與經(jīng)簽名(和驗(yàn)證)的校驗(yàn)和進(jìn)行比較。應(yīng)當(dāng)理解,如果任何校驗(yàn)失敗,則可以采取合適的措施。圖3圖示了根據(jù)優(yōu)選實(shí)施例的方法的流程圖。在步驟s302中,設(shè)備110接收應(yīng)用的apk文件,并且在步驟s304中驗(yàn)證apk證書。在安裝應(yīng)用期間,在步驟s306中設(shè)備110優(yōu)化或oat編譯apk文件中的dex,并且獲得緩存存儲(chǔ)庫(kù)中的odex或elf。在步驟s308中,設(shè)備110計(jì)算odex的至少一個(gè)odex或elf校驗(yàn)和,并且在步驟s310中使用簽名密鑰215對(duì)odex或elf校驗(yàn)和進(jìn)行簽名。在步驟s312中,設(shè)備110將odex或elf校驗(yàn)和以及簽名證書存儲(chǔ)在應(yīng)用的緩存存儲(chǔ)庫(kù)中的保留空間226、228中。然后設(shè)備110可以在步驟s314中在任何合適的時(shí)間執(zhí)行odex或elf,并且在執(zhí)行期間,完整性驗(yàn)證模塊232可以通過計(jì)算與保留空間226中的經(jīng)簽名的odex或elf校驗(yàn)和進(jìn)行比較的當(dāng)前odex或elf校驗(yàn)和來在步驟s316中校驗(yàn)odex或elf的完整性。在執(zhí)行應(yīng)用期間可以多次校驗(yàn)完整性。要注意的是,該解決方案需要對(duì)當(dāng)前部署的安卓系統(tǒng)進(jìn)行輕微修改。在本描述中,術(shù)語(yǔ)“校驗(yàn)和”旨在覆蓋實(shí)現(xiàn)在生成校驗(yàn)和之后驗(yàn)證所生成的數(shù)據(jù)是否被修改的值。因此校驗(yàn)和可以例如也是散列值、循環(huán)冗余校驗(yàn)(crc)值或其他種類的摘要;優(yōu)選的是,從校驗(yàn)和獲得代碼是計(jì)算上不可行的。此外,雖然為了清楚起見使用了單個(gè)校驗(yàn)和,但是可以使用多個(gè)校驗(yàn)和,其中可以針對(duì)代碼的不同部分(其中不同部分可以重疊)生成校驗(yàn)和,并且針對(duì)代碼的不同部分的多個(gè)校驗(yàn)和用于生成單個(gè)的全局校驗(yàn)和,其用于比較。簽名可以是任何合適的加密簽名,諸如基于散列的消息認(rèn)證碼(hmac)或者基于例如rsa、數(shù)字簽名算法(dsa)或橢圓曲線數(shù)字簽名算法(ecdsa)的簽名。應(yīng)當(dāng)理解,本解決方案可以成功地抵抗根源攻擊和遠(yuǎn)程攻擊二者。盡管已在安卓環(huán)境中描述了本解決方案,但是它可以適用于在安裝期間修改代碼而不實(shí)現(xiàn)在運(yùn)行時(shí)對(duì)安裝的應(yīng)用進(jìn)行安全的完整性驗(yàn)證的其他操作系統(tǒng)。因此,應(yīng)當(dāng)理解,本公開提供了可以在安卓設(shè)備上實(shí)現(xiàn)應(yīng)用的運(yùn)行時(shí)完整性的解決方案。本描述中公開的每個(gè)特征和(在適當(dāng)?shù)那闆r下)權(quán)利要求和附圖可以獨(dú)立地或以任何適當(dāng)?shù)慕M合提供。描述為以硬件實(shí)現(xiàn)的特征也可以以軟件實(shí)現(xiàn),反之亦然。權(quán)利要求中出現(xiàn)的參考標(biāo)號(hào)僅作為說明,并且對(duì)權(quán)利要求的范圍沒有限制性影響。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
正蓝旗| 南江县| 南澳县| 鲁甸县| 济宁市| 抚顺市| 凤城市| 柏乡县| 青神县| 东山县| 公主岭市| 巴马| 溧水县| 防城港市| 固阳县| 保山市| 探索| 台北县| 富源县| 辽宁省| 东明县| 阳原县| 玉屏| 东港市| 神农架林区| 忻城县| 赞皇县| 响水县| 昌江| 巴南区| 旬邑县| 清水县| 申扎县| 郸城县| 云安县| 永安市| 盖州市| 平顺县| 延长县| 浦江县| 丰原市|