專利名稱:用于驗證電子設備的平臺軟件的完整性的方法和設備的制作方法
技術領域:
本發明涉及用于使應用軟件能夠驗證電子設備的平臺軟件的完整性的方法和設備。
背景技術:
在電子設備上的軟件平臺是用來加載和執行軟件的操作系統或者運行時間環境(如Java或者移動代理平臺)。典型的一款軟件例如是可以在具有適當軟件平臺的設備上執行的游戲應用。為了提供多樣化的兼容設備和軟件應用,不同的制造商可以在它們的產品上使用同一軟件平臺。盡管因此軟件平臺或者操作系統是相似的或者甚至是相同的,然而配備有它的產品通常包括很特定的硬件。另外,盡管平臺軟件的核心可能相同,但是有許多可能并不相同或者甚至完全就存在于不同電子設備中的如設備驅動這樣的其它部件。
因此可能出現要在具有不適當的軟件平臺或者硬件的設備上執行軟件應用這一情形。至于不適當性的一些原因例如是用于存儲所需數據的隨機存取存儲器(RAM)數量不足、顯示器沒有充足的分辨率和/或顏色數目、失去在線連接性(W-LAN、藍牙等)或者鍵盤不含充分的控制鍵和動作鍵。如果任何這些要求沒有滿足,則在這樣的設備上使用相應的應用就可能無法滿足用戶,而用戶將對所購置的這款軟件不滿意。在一些情況下,在錯誤的設備上運行應用甚至可能導致可能需要昂貴的修復服務的用戶數據損失和/或設備故障。
一般而言,關于軟件平臺和導入軟件即來自外部來源的軟件也存在另一種威脅,即惡意軟件或者所謂的“malware”。已經有大量關注投入到用于軟件平臺驗證導入軟件的完整性的各種方法。然而,也可以重視相反的情形,即軟件平臺也可能攪亂導入軟件的操作。時下有許多保護方案是基于各種標識,比如設備ID或者多媒體卡ID。換而言之,軟件應用依賴于用以取回所需ID的某款平臺軟件。如果攻擊者能夠騙取所需ID,則整個保護方案會崩潰。因此,應用本身應當能夠驗證它是安裝在能夠并且被授權運行它的設備上。
在現有技術中,軟件應用可以通過為平臺軟件的所選軟件模塊計算密碼散列并且將該散列與在軟件應用的驗證例程中所含的散列進行比較來驗證軟件平臺的完整性。如果散列彼此對應,則成功地驗證了平臺并且可以在設備上執行軟件應用。所選軟件模塊例如可以是如設備驅動這樣的軟件或者是為了運行該應用而需要的某一其它款的軟件。利用應用中的固定預期散列值這一常規方式的缺點在于,平臺的軟件模塊的任何更新或者更換都造成平臺的否定驗證,這又造成無法執行較舊應用。由于如移動電話的電子設備的軟件等將必須在它們的壽命期中加以更新例如以便消除安全缺陷和軟件錯誤是相當普遍的,所以這樣的常規方式不適合于應對這些需求。
發明內容
因此,本發明的目的在于消除或者至少緩解上文討論的問題。
為了實現此目的,本發明提供用于實現電子設備的平臺軟件的完整性的驗證的方法和設備。
根據本發明的第一方面,提供一種用于驗證電子設備的平臺軟件的完整性的方法。該方法包括訪問平臺軟件的模塊;獲得簽名;獲得驗證密鑰,其中該驗證密鑰對應于簽名密鑰;將驗證密鑰用于對該簽名是否是通過以簽名密鑰對平臺軟件模塊進行簽名來導出的進行驗證;以及如果驗證成功則建立平臺軟件模塊的肯定驗證。以這一方式,平臺軟件的完整性可以由應用軟件驗證以確保它將在經授權的和適當的平臺上運行。以此方式,舊應用在仍然能夠驗證完整性的同時也將與平臺軟件模塊的新版本或者更新版本兼容。
根據一個示例性實施例,在獲得所述簽名之前對平臺軟件模塊執行散列函數以導出經計算的散列;獲得預期散列;以及比較經計算的散列和預期散列。如果散列彼此對應,則執行后續方法的步驟。另外,簽名的驗證包括通過使用驗證密鑰來對該簽名是否為通過以簽名密鑰對預期散列進行簽名來導出的進行驗證。使用散列是實現驗證的簡便方式,在檢驗簽名之前也對散列進行附加檢驗就提供了提高的安全性。
根據一個示例性實施例,在訪問平臺軟件的模塊之前訪問監視模塊;對監視模塊執行散列函數以導出第二經計算的散列;然后獲得第二預期散列;以及比較散列。如果散列彼此對應,則該方法包括調用監視模塊以執行如前所述的后續步驟。如果監視軟件在平臺軟件的新部分被安裝時不太可能有變化,則以下方式可能是有利的檢查監視模塊的完整性以及使用監視模塊以針對應用來執行平臺軟件的完整性檢驗。以此方式,應用軟件可以保持得更簡單并且僅需更少步驟以便進行自身驗證。
應當注意,密鑰SK(簽名密鑰)和VK(驗證密鑰)可以是來自適當的公共密鑰數字簽名方案如RSL或者DSS的非對稱密鑰對中的相應密鑰。然而,SK和VK也有可能是要與對稱密鑰數字簽名方案如HMAC_SHA1一起使用的同一保密密鑰K(K=SK=VK)。后一情況可以在使用監視模塊的本發明實施例中尤其有用,因為平臺軟件模塊和監視模塊假定地由同一開發者提供,從而將共享對稱密鑰用于簽名是易于處理的。這里的優點將是簽名會小得多。
為了提供從應用的觀點來看更可靠的完整性檢驗,可以在應用中嵌入第二預期散列。
根據一個實施例,如果散列不對應,則建立監視模塊的否定驗證并且拒絕監視模塊的調用。
根據另一實施例,如果散列不對應,則建立平臺軟件模塊的否定驗證并且拒絕對平臺軟件模塊的進一步訪問。如果簽名的驗證不成功,則也建立平臺軟件模塊的否定驗證并且拒絕對平臺軟件模塊的進一步訪問。因此,只有在兩個檢驗均成功時才可以建立肯定檢驗,這提供更可靠的驗證。
根據一個示例性實施例,驗證密鑰嵌入于執行驗證的應用中或者監視模塊中。與前述相似,這可以有助于提高可靠性,因為驗證密鑰來自于明顯受信的來源。
根據一個示例性實施例,預期散列由平臺軟件模塊提供。簽名也可以由平臺軟件模塊提供。一種用以提供散列和簽名的方式將是使它們中的一個或者二者作為靜態變量包含于軟件模塊中。
根據本發明的第二方面,提供一種用于提供平臺軟件模決以便實現電子設備的平臺軟件的完整性的驗證。該方法包括獲得平臺軟件模塊;獲得簽名密鑰;通過以簽名密鑰對平臺軟件模塊進行簽名來導出簽名;以及在電子設備中提供平臺軟件模塊和簽名。
根據一個示例性實施例,該方法還包括對所述平臺軟件模塊執行散列函數以導出預期散列;以及還在所述電子設備中提供所述預期散列。另外,所述簽名的導出包括以所述簽名密鑰對所述預期散列進行簽名。
根據一個示例性實施例,在電子設備中提供平臺軟件模塊,預期散列作為靜態變量集成到平臺軟件模塊中。這是用以提供散列的簡便和可靠方式。
根據一個示例性實施例,在與平臺軟件模塊相分離的電子設備中提供簽名。這在平臺軟件模塊存儲于攻擊者不能篡改它的位置如ROM等時可能是有利的。然后也可以分開地提供簽名。
根據另一實施例,在電子設備中提供平臺軟件模塊,并且簽名作為靜態變量被集成到平臺軟件模塊中。與前述相似,這是用以提供簽名的簡便和可靠方式。
簽名密鑰和驗證密鑰可以是例如公共密鑰/私有密鑰方案這樣的非對稱密鑰對中的相應密鑰。
在本發明的另一實施例中,簽名密鑰和驗證密鑰可以是對稱密鑰對中的相應密鑰。正如已經提到的,這可以提供較小的簽名并且簡化驗證,同時必須注意向可信賴的實體保持對稱(保密)密鑰。
根據本發明的第三方面,提供一種計算機程序產品,包括用于在程序產品運行于計算機或者網絡設備上時實現上述方法的程序代碼裝置。
根據本發明的第四方面,提供一種包括存儲于計算機可讀介質上的程序代碼裝置的計算機程序產品,該程序代碼裝置用于在軟件工具運行于計算機或者網絡設備上時實現上述方法。
根據本發明的第五方面,提供一種包括程序代碼裝置的計算機程序產品,該程序代碼裝置可從服務器上下載,用于在程序產品運行于計算機或者網絡設備上時實現上述方法。
根據本發明的第六方面,提供一種用于實現電子設備的平臺軟件的完整性的驗證的電子設備。該電子設備包括適于訪問平臺軟件的模塊的加載器部件和適于獲得簽名和驗證密鑰的接收器部件。該設備也包括適于使用驗證密鑰來驗證簽名的驗證部件。
根據一個示例性實施例,該電子設備還包括散列計算器部件,適于對所述平臺軟件模塊執行散列函數以導出經計算的散列;以及比較器部件,適于比較來自散列計算機器部件的經計算的散列和來自接收器部件的預期散列。接收器部件還適于獲得預期散列,而驗證部件還適于對簽名是否為通過以簽名密鑰對預期散列進行簽名來導出的進行驗證。
本發明的更多特征和優點將從以下描述和附圖中變得明顯,在附圖中圖1是本發明方法的實施例的示意流程圖;圖2是本發明方法的可選實施例在圖1所示步驟之前的步驟的示意流程圖;圖3是利用平臺軟件模塊來執行的本發明方法的另一實施例的示意圖;圖4是示出了根據本發明的方法的實施例的步驟的圖,這些步驟由應用軟件執行;圖5是示出了根據本發明的方法的實施例的步驟的圖,這些步驟由應用軟件執行;圖6是示出了根據本發明的方法的實施例的步驟的圖,這些步驟由監視軟件模塊執行;以及圖7示出了根據本發明的電子設備。
具體實施例方式
在圖1中,在流程圖中示出了本發明的實施例的步驟。該過程從對電子設備的平臺軟件的軟件模塊進行訪問即步驟102開始。此模塊例如可以是設備驅動或者平臺軟件的任何其它模塊。在步驟104中對該模塊執行散列函數以導出散列Hc。可以使用所有可能的各種函數作為散列函數。在步驟106中,獲得另一散列即預期He。此散列He可以由訪問的軟件模塊提供,但是其它來源也是可以想到的。在步驟108中,比較散列Hc和He以確定它們是否對應。在它最簡單的實施中,這將意味著確定兩個散列是否完全相同。然而,也有可能檢驗散列中的僅預定段是否相同,即檢驗它們是否在某一方面對應。如果Hc和He不彼此對應(步驟110),則驗證失敗而該過程以否定結果而告終(步驟112)。然而,如果Hc和He確實對應,在步驟114中獲得簽名S。此簽名S可以仍由軟件模塊提供,但是也可以由其它源提供。在步驟116中獲得驗證密鑰VK,例如私有密鑰/公共密鑰對中的公共密鑰。必須從受信源獲得驗證密鑰VK,因此例如可將此密鑰VK嵌入到應用軟件中。然而,也可以從另一來源接收它,只要可以信任此來源即可。在步驟118中使用驗證密鑰VK來驗證簽名S。這種驗證過程本身是已知的,所以在這里省略詳細的說明。如果驗證成功(步驟120),則驗證過程以肯定結果而告終(步驟122),平臺軟件模塊現在被驗證并且可以由應用軟件使用。在步驟120中是否定驗證的情況下,驗證失敗(步驟112),從而拒絕對平臺軟件模塊的進一步訪問。
圖2描述了本發明的可選實施例。在步驟202中,訪問作為平臺軟件一部分的監視模塊。可以在平臺軟件中提供這樣的監視模塊用于驗證其它平臺軟件模塊。為了使用此監視模塊,軟件必須首先驗證此監視模塊的完整性。由于預計監視模塊不像平臺軟件的其它部分那樣變化,所以其可以使用靜態完整性量度來執行。在步驟204中,對監視模塊執行散列函數以計算散列Hc2。在步驟206中獲得散列He2。與圖1中的過程相似,比較散列Hc2和He2以確定它們是否對應。如果在步驟210中確認它們確實對應,則該過程繼續到步驟214。當然,否則驗證會失敗(步驟212),就無法驗證并且也不會調用監視模塊。在步驟214中將在監視模塊的完整性的肯定驗證之后調用該監視模塊。現在,開始與圖1中所示過程幾乎相同的過程,其中的主要區別在于不是應用軟件而是監視模塊將執行該過程。至于更多步驟,請參見圖1的描述。
圖3是根據本發明用于提供軟件模塊2的本發明的實施例的圖示。以下步驟將由相應軟件模塊的軟件提供商執行。對軟件模塊的一些或者所有段執行散列函數(步驟300)以導出散列Hc。然后使用簽名密鑰SK對散列Hc進行簽名(步驟302)以導出簽名S,該簽名密鑰SK可以是公共/私有密鑰對中的私有或者公共密鑰。為了在電子設備中提供軟件模塊,一種優選方式是包括在軟件模塊中集成的計算散列Hc和對應簽名S。這樣的集成例如可以是包括作為靜態變量的簽名S和散列Hc。當隨后執行散列函數以便對軟件模塊進行驗證時,此部分當然是不使用的。然而在特殊情況下,可以與電子設備中的軟件模塊相分離地提供簽名S以及甚至散列Hc。出于這樣的目的,可以使用存儲器設備如只讀存儲器ROM等以便提供針對可能的攻擊者不允許訪問的模塊。
當要驗證這里描述的軟件模塊時,應用軟件或者本發明的另一實施例中監視模塊將對軟件模塊執行304所示的散列函數。當然,散列Hc和簽名S如果包含在內則不會被散列函數使用。應用軟件或者監視模塊也將訪問散列Hc和簽名S(由306和308所示)以便進行驗證。
圖4是示出了根據本發明的方法的實施例的步驟的圖,這些步驟由應用軟件4執行。當要驗證軟件模塊(未示出,見圖3)時,應用軟件4將對軟件模塊執行散列函數,如304所示,以導出經計算的散列Hc。當然,散列He和簽名S如果包含在軟件模塊中則不會被散列函數使用。應用軟件4也將訪問散列He和簽名S(306和308所示)以便進行驗證。在步驟402中,該驗證從比較散列Hc和He開始。如果它們不相同和對應,則驗證失敗(步驟410)。否則該驗證繼續到步驟404,使用驗證密鑰VK來驗證簽名S。驗證密鑰VK可以嵌入于應用軟件4中,但是也可以從外部來源(因特網服務器等)獲得。如果驗證成功,即如果確認(步驟406)簽名S是通過以與驗證密鑰VK相對應的簽名密鑰(未示出)對散列He進行簽名而導出的,則已經成功地達成完整性驗證。當然,如果不是這樣,即如果散列Hc或者He與簽名S不匹配,或者未以肯定的方式驗證簽名S,該驗證將失敗(步驟410)。在肯定驗證的情況下,相應軟件模塊的完整性是完好的,并且它可以隨后由應用軟件4使用。在失敗驗證的情況下,將拒絕對相應軟件模塊的進一步訪問。
將結合圖6來閱讀圖5,此二圖已經出于易于理解的考慮而加以分離。圖5描繪了本發明的實施例中由應用軟件8執行的步驟。先在步驟402中對監視模塊執行散列函數以導出經計算的散列Hc2,該監視(未示出,見圖6)模塊是電子設備的平臺軟件的一部分。獲得預期散列He2,該散列可以嵌入到應用軟件8中或者從外部來源接收該散列。由于監視模塊是未被假定為要變化的部分,所以此散列He2可以通過網絡等來發布。在步驟602中,比較散列Hc2和He2以確定它們是否匹配或者對應。在它們不匹配或者對應的情況下,監視模塊的驗證以失敗結果而告終(步驟610),因此將不對它進行調用以繼續驗證。否則根據此實施例,調用監視模塊以執行驗證過程的主要部分(見圖6)。如果監視模塊返回“是”所示的肯定驗證,則完整性驗證已經成功(步驟608)。也可能接收否定驗證結果(未示出),或者如果在某一時間幀中監視模塊沒有給出肯定答復則應用軟件8可能導出否定結果。應用軟件8現在可以安全地使用經監視模塊檢驗過的相應軟件模塊(未示出)。如果監視模塊沒有返回肯定驗證,則驗證將失敗(步驟612)。
圖6描繪了在結合圖5所描述的監視模塊的調用之后的步驟。當要驗證軟件模塊(未示出,見圖3)時,監視模塊6將對軟件模塊執行散列函數,如304所示,以導出經計算的散列Hc。當然,散列He和簽名S如果包含在軟件模塊中時將不被散列函數使用。監視模塊6也將訪問散列He和簽名S(306和308所示)以便進行驗證。在步驟502中,在調用之后,根據圖6中的描述,該驗證從比較散列Hc和He開始。如果它們不相同或者對應,則驗證失敗(步驟508)。否則該驗證繼續到步驟504,使用驗證密鑰VK來驗證簽名S。驗證密鑰VK可以嵌入于監視模塊6中,但是也可以通過充分可新賴的方式從外部來源(因特網服務器等)獲得。如果驗證成功,即如果可以確認(步驟506)簽名S是通過以與驗證密鑰VK相對應的簽名密鑰(未示出)對散列He進行簽名來導出的,則已經成功地達成完整性驗證。將“是”的所示的驗證的肯定結果發送到應用軟件(未示出)。現在在監視模塊一側上完成了驗證。當然,如果不是這樣,即如果散列Hc與He不匹配,或者簽名S未被肯定地驗證,該驗證將失敗(步驟508)。否定驗證結果也可以發送(未示出)到應用。另一可能是使用某一時間幀。如果在那一時間幀中沒有肯定驗證發送到應用,則可以導出其否定結果。在肯定驗證的情況下,相應軟件模塊的完整性是完好的,而它可以隨后由應用軟件使用。在失敗驗證的情況下,監視模塊將拒絕對相應軟件模塊的進一步訪問。
使用這樣的監視模塊可以是有利的,這是因為應用軟件本身可以使用很簡單的檢驗以驗證監視模塊的完整性,而監視模塊本身執行驗證過程的大部分。監視模塊可以容易地集成到平臺軟件中。
圖7示出了根據本發明的電子設備20,該電子設備可以是移動電話、PDA等。它包括加載器部件10、散列計算器部件12、接收器部件14、比較器部件16和驗證部件18。散列計算器部件12與加載器部件10和比較器部件16這二者連接。接收器部件14與比較器部件16和驗證部件18這二者連接。加載器部件10適于訪問電子設備20的平臺軟件的模塊。散列計算器部件12適于對平臺軟件模塊執行散列函數以導出經計算的散列。接收器部件14適于獲得預期散列、簽名和驗證密鑰。比較器部件16適于比較來自散列計算器部件12的經計算的散列和來自接收器部件14的預期散列。驗證部件18適于通過將驗證密鑰應用于簽名來驗證簽名。
本發明利用(密碼)散列函數和非對稱密碼密鑰,即所謂的公共/私有密鑰對。散列函數取任意二進制數據作為輸入并且產生固定大小的二進制串作為輸出。這樣的散列執行以及具有公共密鑰和私有密鑰的非對稱密碼本身是已知的,因此這里省略具體描述。盡管非對稱密鑰主要用于對數據進行加密,但是它們也可以用于簽名用途。通過使用私有密鑰,簽名例如可以由軟件提供商導出以使他的客戶能夠驗證所發布的軟件的來源。客戶可以將公共密鑰應用于簽名以驗證軟件是可靠的。
根據本發明的示例性實施例,應用軟件驗證電子設備的平臺軟件的完整性。應用軟件例如可以是游戲應用、辦公應用、繪圖應用、日歷應用或者要在設備上執行的應用軟件的某一部分。要驗證的平臺軟件可以例如在計算機、移動電話、個人數字助理(PDA)等上實施。
平臺軟件的驗證通過應用軟件來實現,從而應用軟件訪問平臺軟件的軟件模塊并且對軟件模塊執行散列函數以導出散列Hc。散列函數可以是用于驗證軟件一部分的任何適當種類的函數。將導出的散列Hc與由平臺軟件模塊提供的預期的散列He進行比較。散列He是通過對所選平臺軟件模塊執行散列函數來創建的,并且包含于平臺軟件模塊中;這些步驟將通常由平臺軟件的提供商來執行。然后利用簽名密鑰SK對散列He進行簽名以導出簽名S,該簽名可以包含于平臺軟件模塊中,或者可選地,在平臺軟件模塊存儲于不可篡改的位置如ROM等中的情況下,該簽名可以在與平臺軟件模塊相分離的某處。在這樣的情況下將平臺軟件模塊和簽名S相分離可以是有利,特別地如果軟件模塊不能容易地被攻擊者觸及的話,如上所述。在另一示例性實施例中,散列He和簽名密鑰SK是包含于平臺軟件模塊中的靜態變量。
如果散列Hc和He分別匹配或者對應,則應用軟件接收簽名S,然后該簽名由驗證密鑰VK來驗證。根據一個實施例,驗證密鑰VK嵌入于應用軟件中,而簽名S由平臺軟件模塊提供。如果兩個前述檢驗的驗證結構均是肯定的,即已經確認軟件模塊的可靠性,則驗證成功并且允許對相應平臺軟件模塊的進一步訪問。另一方面,在軟件模塊的否定驗證情況下,即如果散列Hc和He不匹配或者如果簽名S的驗證不成功,則拒絕對平臺軟件模塊的進一步訪問。
根據一個示例性實施例,在驗證平臺軟件模塊的完整性時利用監視軟件模塊。通常,監視軟件將包含于平臺軟件模塊中,而且并不預期在新的平臺軟件模塊被安裝和/或更新時會有變化。換而言之,在這一實施例中,驗證例程是平臺軟件模塊本身的部分。因此,應用軟件首先需要確認此監視模塊是可靠的。由于假設此監視模塊根本不變化,所以這可以通過使用(靜態)完整性量度來實現。應用軟件對監視軟件模塊執行散列函數以導出散列Hc2。然后將散列Hc2與在應用軟件中嵌入的預期散列He2進行比較。如果散列Hc2和He2匹配或者對應,則調用監視軟件模塊以驗證平臺軟件模塊的完整性。另一方面,在監視軟件模塊的否定驗證情況下,即如果散列Hc2和散列He2不匹配,則拒絕對監視軟件模塊的進一步訪問。這將通常意味著應用軟件將不執行,這是因為無法利用監視模塊來執行完整性檢驗。
如果監視軟件模塊的驗證成功,則監視軟件模塊驗證平臺軟件模塊的完整性。與沒有監視模塊的前述實施例相似,監視軟件模塊針對平臺軟件模塊執行散列函數以導出散列Hc1并且比較散列Hc1與預期散列He1。通常,散列He1由平臺軟件模塊例如作為模塊中所含變量來提供。如果散列Hc1和He1匹配,則監視軟件使用在監視軟件模塊中嵌入的驗證密鑰VK以驗證由平臺軟件模塊提供的簽名S。如果結果是肯定的,即兩個前述安全檢驗均給出肯定結果,則驗證成功并且監視模塊允許應用軟件進一步訪問平臺軟件。另一方面,在軟件模塊的否定驗證情況下,即如果散列Hc1和He1不匹配或者如果簽名S的驗證不成功,則監視模塊拒絕對相應平臺軟件模塊的進一步訪問。這當然將意味著應用軟件將不執行。
特別而言,當然必須從受信源獲得驗證密鑰。這對于預期散列而言基本上成立,然而偽造這樣的散列將不足以完全地規避本發明的概念,因為攻擊者于是將必須也偽造簽名,而這一點在沒有保密簽名密鑰時無法在不被注意的情況下完成。雖然在具有監視模塊的實施例中,軟件的開發者在所有情況之下都必須從受信來源獲得監視模塊的預期散列,否則保護方案當然就不起作用。
要注意這些方法也可以間接地用于硬件平臺的驗證。換而言之,應用軟件驗證操作系統模塊,該操作系統模塊又能夠驗證它在其上運行的硬件。這是為了確保例如游戲應用不會在不適當的平臺上執行。由于相同或者甚至不同制造商的許多電子設備共享相同的操作系統和/或軟件的部分是很普遍的,所以必須采取防范以確保具體應用將僅在那些被授權并且適當地被配備用來使用該應用的設備上運行。
例如,被設計用來僅在移動游戲板(deck)如NokiaN-Gage上運行的游戲在原理上也可以在使用同一操作系統的移動電話上執行。由于電話將很有可能沒有分別提供足夠的RAM存儲器,處理能力或者所需控制鍵和動作鍵等,所以并不希望游戲可以在電話上執行。用戶在他不能適當地控制游戲時當然會有所不滿。如果游戲使用電話上不存在的特殊鍵來終止游戲,則甚至可能強制用戶通過取出電池來關閉電話從而返回到正常操作。例如如果游戲用盡所有可用存儲器,則可能出現的其它問題是崩潰或者出現數據丟失。這樣的影響將為本發明所避免。一方面,這提高了使用性和用戶舒適度。另一方面,它可以為電子設備的制造商和應用軟件的供應商這二者提供對允許哪種軟件在哪些設備上運行的細調控制。
如上所述,必須以可新賴的方式獲得驗證所需數據以便確保它的完整性。當在應用軟件中嵌入數據(VK或者He2)時,必需保護它免遭不可檢測的修改。這例如通過使用軟件混淆技術來實現。
當使用對稱密鑰數字簽名時,除完整性以外也必須保證密鑰K的保密性。同樣,這可以通過使用軟件混淆技術來實現。
要注意本發明不直接地涉及到檢驗是否存在有應用所需的某些硬件或者軟件特征。然而,這可以由平臺軟件實現,而本發明確保此平臺軟件是可靠的,或者換而言之,它的完整性是有效的。平臺軟件然后能夠執行所述檢驗,并且如果必要則以平臺軟件的提供商或相應電子設備的制造商所希望的方式來拒絕執行應用。
權利要求
1.一種用于驗證電子設備的平臺軟件的完整性的方法,包括-訪問(102)所述平臺軟件的模塊;-獲得(114)簽名(S);-獲得(116)驗證密鑰(VK),所述驗證密鑰(VK)對應于簽名密鑰(SK);-通過使用所述驗證密鑰(VK)來對所述簽名(S)是否是通過以所述簽名密鑰(SK)對所述平臺軟件模塊進行簽名來導出的進行驗證(118);以及-如果所述驗證成功則建立(122)所述平臺軟件模塊的肯定驗證。
2.根據權利要求1所述的方法,其中在獲得所述簽名之前-對所述平臺軟件模塊執行(104)散列函數以導出經計算的散列(Hc);-獲得(106)預期散列(He);-比較(108)所述散列(Hc)和(He),并且如果所述散列(Hc)和(He)彼此對應,其中所述簽名(S)的所述驗證包括通過使用所述驗證密鑰(VK)來對所述簽名(S)是否是通過以所述簽名密鑰(SK)對所述預期散列(He)進行簽名來導出的進行驗證(118)。
3.根據權利要求1或者2所述的方法,其中在所述訪問所述平臺軟件的所述模塊之前-訪問(202)監視模塊;-對所述監視模塊執行(204)散列函數以導出第二經計算的散列(Hc2);-獲得(206)第二預期散列(He2);-比較(208)所述散列(Hc2)和(He2),并且如果所述散列(Hc2)和(He2)彼此對應,-調用(214)所述監視模塊以執行后續方法步驟。
4.根據權利要求3所述的方法,其中所述第二預期散列(He2)嵌入于執行所述驗證的應用中。
5.根據權利要求3或者4所述的方法,其中如果所述散列(Hc2)和(He2)不對應,則建立所述監視模塊的否定驗證并且拒絕所述監視模塊的調用。
6.根據權利要求2至5中任一權利要求所述的方法,其中如果所述散列(Hc)和(He)不對應,則建立所述平臺軟件模塊的否定驗證并且拒絕對所述平臺軟件模塊的進一步訪問。
7.根據任一前述權利要求所述的方法,其中如果所述簽名(S)的所述驗證不成功,則建立所述平臺軟件模塊的否定驗證并且拒絕對所述平臺軟件模塊的進一步訪問。
8.根據任一前述權利要求所述的方法,其中所述驗證密鑰(VK)嵌入于執行所述驗證的所述應用中或者所述監視模塊中。
9.根據任一前述權利要求所述的方法,其中所述預期散列(He)由所述平臺軟件模塊提供。
10.根據任一前述權利要求所述的方法,其中所述簽名(S)由所述平臺軟件模塊提供。
11.一種用于提供平臺軟件模塊以便實現電子設備的平臺軟件的完整性的驗證的方法,包括-獲得平臺軟件模塊;-獲得簽名密鑰(SK);-通過以所述簽名密鑰(SK)對所述平臺軟件模塊進行簽名(302)來導出簽名(S);以及-在所述電子設備中提供所述平臺軟件模塊和所述簽名(S)。
12.根據權利要求11所述的方法,還包括-對所述平臺軟件模塊執行(300)散列函數以導出預期散列(He);以及-在所述電子設備中提供所述預期散列(He),其中所述簽名的所述導出包括以所述簽名密鑰(SK)對所述預期散列(He)進行簽名(302)。
13.根據權利要求12所述的方法,其中在所述電子設備中提供所述平臺軟件模塊,所述預期散列(He)作為靜態變量集成到所述平臺軟件模塊中。
14.根據權利要求11至13中任一權利要求所述的方法,其中在與所述平臺軟件模塊相分離的所述電子設備中提供所述簽名(S)。
15.根據權利要求11至13中任一權利要求所述的方法,其中在所述電子設備中提供所述平臺軟件模塊,所述簽名(S)作為靜態變量集成到所述平臺軟件模塊中。
16.根據任一前述權利要求所述的方法,其中所述簽名密鑰(SK)和所述驗證密鑰(VK)是非對稱密鑰對的相應密鑰。
17.根據任一前述權利要求所述的方法,其中所述簽名密鑰(SK)和所述驗證密鑰(VK)是對稱密鑰對的相應密鑰。
18.一種計算機程序產品,包括用于在所述程序產品運行于計算機或者網絡設備上時實現根據權利要求1至17中任一權利要求所述的方法的程序代碼裝置。
19.一種計算機程序產品,包括存儲于計算機可讀介質上的程序代碼裝置,用于在所述軟件工具運行于計算機或者網絡設備上時實現根據權利要求1至17中任一權利要求所述的方法。
20.一種包括程序代碼裝置的計算機程序產品,該程序代碼裝置可從服務器下載,用于在所述程序產品運行于計算機或者網絡設備上時實現根據權利要求1至17中任一權利要求所述的方法。
21.一種電子設備(20),用于使應用能夠驗證電子設備的平臺軟件的完整性,包括-加載器部件(10),適于訪問所述平臺軟件的模塊;-接收器部件(14),適于獲得簽名(S)和驗證密鑰(VK);以及-驗證部件(18),適于使用所述驗證密鑰(VK)來驗證所述簽名(S)。
22.根據權利要求21所述的電子設備,還包括-散列計算器部件(12),適于對所述平臺軟件模塊執行散列函數以導出經計算的散列(Hc,Hc2);以及-比較器部件(16),適于比較來自所述散列計算器部件的經計算的散列(Hc,Hc2)和來自所述接收器部件的預期散列(He,He2),其中所述接收器部件(14)還適于獲得預期散列(He,He2),而所述驗證部件(18)還適于對所述簽名(S)是否是通過以所述簽名密鑰(SK)對所述預期散列(He)進行簽名來導出的進行驗證。
全文摘要
提供一種用于驗證電子設備的平臺軟件的完整性的方法,該方法包括訪問所述平臺軟件的模塊;獲得簽名;獲得驗證密鑰(VK),所述驗證密鑰(VK)對應于簽名密鑰(SK);通過使用所述驗證密鑰(VK)來對所述簽名(S)是否是通過以所述簽名密鑰(SK)對所述平臺軟件模塊進行簽名來導出的進行驗證;以及如果所述驗證成功則建立所述平臺軟件模塊的肯定驗證。本發明也提供一種用于提供平臺軟件模塊以執行上述方法的方法和一種可以在其上執行上述方法的設備。
文檔編號H04L29/06GK101065716SQ200480044447
公開日2007年10月31日 申請日期2004年11月22日 優先權日2004年11月22日
發明者N·阿索康, J·芒特伊拉, R·澤拉法特 申請人:諾基亞公司