專利名稱:在安全存儲區(qū)中保護應(yīng)用程序數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于控制從非安全存儲器中接收到的應(yīng)用程序的可靠性以及當(dāng)這種程序在計算機的安全環(huán)境中運行時為保持系統(tǒng)的安全性而控制這種程序的數(shù)據(jù)訪問的方法和裝置。
在數(shù)據(jù)處理系統(tǒng)中使用裝置和程序控制的方法來防止應(yīng)用程序訪問和修改存儲器的保護區(qū)是操作系統(tǒng)技術(shù)中已有的。例如Richard P.Jones的美國專利5,144,659和5,289,540。Jones以位于磁盤驅(qū)動器適配卡上的可編程輔助存儲器和控制單元的形式公開了其硬件,所述磁盤驅(qū)動器適配卡用于監(jiān)聽控制邏輯、地址以及中央處理器和文件存儲器之間的數(shù)據(jù)信號通路。一旦Jones系統(tǒng)的硬件和相關(guān)軟件安裝之后,操作系統(tǒng)就不再控制和訪問文件系統(tǒng)。在Jones系統(tǒng)中輔助存儲器存儲所有合法文件的簽名。文件簽名只是簡單的循環(huán)冗余校驗碼(CRC)。所述簽名可以通過檢測最后一次計算CRC之后文件是否被病毒修改來防止病毒的攻擊。但是所述簽名不能防止黑客的攻擊,因為在修改程序之后計算CRC并將新的CRC添加到文件中非常簡單。
最近,硬件中央處理器(CPU)自身具有特權(quán)等級,例如,在此基礎(chǔ)上可以防止以級別3運行的應(yīng)用程序直接訪問具有級別0的內(nèi)存段。在Advanced Micro Devices 1994年一月出版的《Am486微處理器軟件用戶手冊)》A-28頁到A-34頁中有一個例子。雖然這種電路防止級別3的應(yīng)用程序直接對超級用戶級的存儲器空間尋址,但是當(dāng)必須進行這樣的訪問時,微處理器并沒有相應(yīng)的機制來確定該應(yīng)用程序為可靠的而且要訪問的數(shù)據(jù)確實被分配給此可靠程序。
使用加密技術(shù)來確認(rèn)用戶身份和程序或ID卡的可靠性的技術(shù)是已知的。這一技術(shù)的一個例子是IBM的4755加密適配卡。然而,在當(dāng)前技術(shù)的教導(dǎo)中沒有說明應(yīng)用程序從非安全數(shù)據(jù)源中裝入時如何保護安全區(qū)中的永久數(shù)據(jù)。
在運行多個應(yīng)用程序并能存儲這些程序的長期數(shù)據(jù)的計算機系統(tǒng)中,需要防止除了創(chuàng)建該存儲區(qū)的程序以外的其它程序?qū)υ摯鎯^(qū)進行訪問。術(shù)語“其它程序”既包括完全不同的程序也包括試圖假裝成創(chuàng)建該存儲區(qū)的程序。然而,所有程序的新版本必須能夠訪問該程序的舊版本所創(chuàng)建的數(shù)據(jù)區(qū)。
在這特定的情況中,數(shù)據(jù)在計算機內(nèi)存中永久保存,而應(yīng)用程序本身則不然。當(dāng)不再需要此應(yīng)用程序時它就被從內(nèi)存中刪除,當(dāng)以后再一次需要時它們將被重新加載。每一應(yīng)用程序使用的數(shù)據(jù)區(qū)保留在計算機中,存儲在一永久媒體中并由計算機操作系統(tǒng)管理。當(dāng)應(yīng)用程序重新加載時,它必須對它所擁有的數(shù)據(jù)進行訪問,但是不允許它訪問其它應(yīng)用程序所擁有的數(shù)據(jù)。與此相似,并發(fā)操作的應(yīng)用程序必須不能互相訪問彼此的數(shù)據(jù)。從中重新加載應(yīng)用程序的程序存儲媒體不必進行任何方式的保護,所以必須對應(yīng)用程序進行組織使得它們能在改動時進行保護,并使它們包含用于與它們數(shù)據(jù)區(qū)安全地關(guān)聯(lián)的保護信息。
本發(fā)明提供了一種能有效地確認(rèn)從非安全區(qū)加載到安全區(qū)的應(yīng)用程序的可靠性并且將經(jīng)過確認(rèn)的應(yīng)用程序與永久內(nèi)存中已存在的數(shù)據(jù)區(qū)相關(guān)聯(lián)的方法和裝置,從而克服了上面所述技術(shù)的缺點與限制。
所發(fā)明的永久數(shù)據(jù)區(qū)安全訪問控制的一個優(yōu)點是可以從一非安全區(qū)中加載應(yīng)用程序并且該應(yīng)用程序能得到對永久數(shù)據(jù)的訪問而不會造成對安全的妨害。
本發(fā)明的另一個優(yōu)點是當(dāng)允許一個甚至沒有駐留在永久存儲器中的應(yīng)用程序訪問數(shù)據(jù)時可以利用處理器的特權(quán)優(yōu)先級來保護永久數(shù)據(jù)。
下面對本發(fā)明更加詳細的說明將使讀者對這些優(yōu)點以及其它的優(yōu)點更加明了。
附圖.1是本發(fā)明在其中發(fā)揮作用的計算機系統(tǒng)的框圖。
附圖.2是根據(jù)本發(fā)明改進的操作系統(tǒng)的框圖。
附圖.3是根據(jù)本發(fā)明的應(yīng)用程序驗證過程的流程圖。
附圖.4是根據(jù)本發(fā)明加載并核對應(yīng)用程序的流程圖。
附圖.5是應(yīng)用程序?qū)σ粩?shù)據(jù)區(qū)進行訪問的流程圖。
現(xiàn)在參看附
圖1,為了在一個特定實施例的環(huán)境中說明本發(fā)明,說明了一個典型的個人計算機結(jié)構(gòu),如在許多IBM個人計算機中采用的配置。本發(fā)明同樣可以用于其它數(shù)字計算機結(jié)構(gòu),如小型機和大型機環(huán)境以及計算機本地和廣域網(wǎng)環(huán)境。它只要求計算機在物理上是安全的,能夠防止攻擊者探察并改變該計算機的電路。在計算機自身在物理上不安全的情況下本發(fā)明的實施例可以采用具有美國專利5,159,629和5,027,397中所說明的具有安全模型13的安全卡11。
個人計算機結(jié)構(gòu)的處理部件是微處理器15,例如INTEL的80486、Pentium以及其它相似的微處理器。微處理器15連到總線17上,總線17包括一組數(shù)據(jù)線、一組地址線以及一組控制線。包括內(nèi)存以及存儲設(shè)備的若干I/O設(shè)備通過各自的適配器連到總線17。這些I/O設(shè)備可以是個人計算機的標(biāo)準(zhǔn)件,也可以是可選的插件。例如,這些設(shè)備可以包括一個通過圖形適配卡21連接的彩色顯示器19、通過適配器25連接的鍵盤23以及通過一已知的用于IBM計算機和IBM兼容機的SCSI適配器29連接的硬盤驅(qū)動器27等。其它設(shè)備也同樣作為個人計算機的一部分包括在其中或是作為可選插件可以從IBM公司或其它供應(yīng)商處得到。
隨機訪問存儲器(RAM)31和只讀存儲器(ROM)33作為個人計算機的標(biāo)準(zhǔn)配件包含在其中,而且輔助隨機訪問存儲器作為RAM 31的補充可以通過一可選擴展存儲器插件來添加。
ROM 33中存儲了許多指令,即是基本的輸入/輸出操作系統(tǒng),或BIOS,這些指令通過微處理器15來執(zhí)行。BIOS控制計算機的基本I/O操作。一個操作系統(tǒng)如IBM公司的通常與IBM個人計算機一起使用的IBMOS/2操作系統(tǒng),被加載到RAM 31并與存儲在ROM 33中的BIOS一起運行。本領(lǐng)域的技術(shù)人員可以理解個人計算機系統(tǒng)可以進行設(shè)置,將BIOS的一部分或是全部都存儲到RAN31中而不是ROM 33中,這樣就可以允許通過對可加載到RAM 31中的BIOS程序進行修改來改動基本系統(tǒng)操作。同樣地,存儲在RAM 31中的程序、數(shù)據(jù)以及知識表示可以存儲到ROM33中。
如附圖1所示,實現(xiàn)本發(fā)明的方法的程序35通過刻錄到光盤37或其它的媒體中作為制造商的產(chǎn)品得到有利的實施。媒體37可以用通過適配器41與總線相連的讀入設(shè)備39來讀取。進一步來說,可以通過在RAM 31、ROM 33或者兩者的組合或是DASD 27中存儲程序35的可執(zhí)行指令將該程序具體化成一特殊功能裝置,微處理器15可以通過適配器29進行訪問并執(zhí)行。
除了與主微處理器15一起使用外,本發(fā)明還可以在特殊用途設(shè)備如保密卡11中有效地使用,也就是上面提及的與總線17相連的加密卡11。另一方面,具體實施本發(fā)明的方法的程序35可以通過將其可執(zhí)行代碼存儲在RAM 53或ROM55或是兩者的組合或是如上面所述的從DASD 27中加載到RAM 53中來作為一特殊用途裝置實現(xiàn)。加密卡11還包含一加密處理模塊57用來有效地執(zhí)行諸如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)算法、RSA(RivestShamir & Adleman)算法等可用的算法。
本發(fā)明的最佳實施例被合并到操作系統(tǒng)中并成為操作系統(tǒng)中的一部分,如附圖2中以框圖形式說明的IBM OS/2操作系統(tǒng)。為了簡化說明,本發(fā)明將作為安全加密卡11的一部分來具體加以說明,同樣如附圖1所示,一個依照本發(fā)明的已確認(rèn)的應(yīng)用程序的非安全應(yīng)用程序源為DASD27。
在附圖2中,操作系統(tǒng)核心101在框圖的中間部分。核心101實現(xiàn)許多用于允許在計算機中有效地編寫和運行應(yīng)用程序的系統(tǒng)控制功能。
為應(yīng)用程序分配內(nèi)存是操作系統(tǒng)所完成的最重要的控制功能之一。如1983年出版的Ed Iacobucci所著的《OS/2編程指南》中第四章內(nèi)存管理中所說明的,OS/2操作系統(tǒng)為每一個應(yīng)用程序分配局部地址空間并將此局部地址空間根據(jù)局部描述符表映射到實際內(nèi)存中。
所以,存儲器段與應(yīng)用程序自然地獨立開來。也就是說,分配給一個應(yīng)用程序的存儲段對其它應(yīng)用程序來說是不可見、不可修改的。
當(dāng)應(yīng)用程序和它對應(yīng)的數(shù)據(jù)區(qū)只是短期地存在于內(nèi)存中,并且每次加載一個應(yīng)用程序到內(nèi)存中都要建立局部描述符表并分配新的內(nèi)存時,操作系統(tǒng)所使用的上述方法在Intel 80286及更高級微處理器中可以很好地工作。當(dāng)數(shù)據(jù)區(qū)必須保存在一永久存儲器如閃速存儲器中時,必須提供其它的方法來為一可靠性已經(jīng)得到確認(rèn)并已經(jīng)重新加載到內(nèi)存中的應(yīng)用程序安全地重新分配連續(xù)的存儲區(qū)。
在執(zhí)行例如從一DASD設(shè)備中加載的應(yīng)用程序之前,由于應(yīng)用程序在安全環(huán)境之外,必須對它的可靠性進行確認(rèn)。否則,有可能將一個冒名頂替的應(yīng)用程序加載進來,該冒名頂替的應(yīng)用程序可能會攻擊安全環(huán)境。而且,為加載的程序重新分配連續(xù)的存儲區(qū)時必須保持獨立,并且不能允許將其它應(yīng)用程序的存儲區(qū)分配給此新加載的程序。
可靠性核對在加載設(shè)備111中依照本發(fā)明由首先進行的應(yīng)用程序驗證以及在它們加載到安全存儲區(qū)之前的應(yīng)用程序核對來完成。而實現(xiàn)獨立的過程是由安全相關(guān)數(shù)據(jù)元素(SRDI)根據(jù)本發(fā)明通過對數(shù)據(jù)區(qū)表中的標(biāo)志字段和應(yīng)用程序標(biāo)志進行比較來完成。數(shù)據(jù)區(qū)表由操作系統(tǒng)的一個新的改進措施來進行維護,下面將再次參照附圖2對該措施進行說明。
RAM 53以及ROM 55包括在安全模塊13中,RAM 53以及ROM 55中包含有操作系統(tǒng),在本發(fā)明的加密卡版本中此操作系統(tǒng)可能是OS/2的一個子集。核心101管理內(nèi)存分配以及其它資源,如通過一DES資源管理器103管理數(shù)據(jù)加密標(biāo)準(zhǔn)算法(DES)以及通過一RSA資源管理器105管理Rivest Shamir & Adleman(RSA)。
一種永久內(nèi)存如閃速存儲器或依靠電池供電的內(nèi)存在107處提供。107永久內(nèi)存的實地址空間映射到全局描述符表,并從此可以為操作系統(tǒng)所用,當(dāng)使用內(nèi)存107的應(yīng)用程序在內(nèi)存53中停止運行時也不會消失。將內(nèi)存107中的地址分配給應(yīng)用程序由本發(fā)明的SRDI管理器進行處理。
根據(jù)本發(fā)明的一個改進的程序加載設(shè)備提供于111處,其目的是為了從未保護的DASD113或其它未保護的外部媒體中載入或重新加載一個應(yīng)用程序。
安全模型13中有理由為電路提供的物理保護,但此時從物理上來防止一個DASD設(shè)備受到攻擊的代價或復(fù)雜性都是不實際的。因此,有必要確保一個從DASD 27加載的應(yīng)用程序沒有被修改或替換為能對系統(tǒng)進行攻擊的一部分。這是由程序加載設(shè)備111使用操作系統(tǒng)中可用的加密資源來完成的。
在一個應(yīng)用程序加載和使用之前,由控制和確保系統(tǒng)的安全性的計算機系統(tǒng)的所有者或制造商或其它相應(yīng)的中央部件來進行驗證。驗證工作是通過加密卡11的加密設(shè)備如附圖3所示根據(jù)本發(fā)明完成的。
在附圖3中,在框201中為程序A選擇一個唯一的名字NA,并存儲在框203中。該名字不必含有任何特殊字符,只要在將被驗證的程序的名字域中是唯一的。名字NA以及程序PA作為205的輸入在207中被合并成為單一、相鄰的數(shù)據(jù)對象并存儲在框209中。雖然還有其它可能的方法,但在最佳實施例中是通過將NA和PA連接在一起實現(xiàn)的。合并后的對象用PANA表示。
在框211中,用PANA計算一個散列值來得到H(PANA)。H(PANA)具有統(tǒng)一的長度,與PANA的大小無關(guān)。而且,公共密鑰技術(shù)通??梢灾粚⑿∮诿荑€系數(shù)大小,如一個典型的RSA密鑰是1024位,的數(shù)據(jù)進行加密。
在框215中驗證方要通過H(PANA)用在框213從安全永久存儲器中得到的一個私有密鑰KPR來計算數(shù)字簽名DSIG。加密的結(jié)果就是此數(shù)字簽名DSIG。KPR是一個公共/私有密鑰對中的私有密鑰。相應(yīng)的公共密鑰KPU在程序用KPR來驗證的可靠性所要用到的每一計算機系統(tǒng)中都是可用的。
數(shù)字簽名的計算可以采用任何已知的技術(shù),包括但并不限于數(shù)字簽名算法RSA和DSA,以及散列算法SHA-1,MD5,MD4和MDC。
DSIG在框217中被附加到合并的程序/名稱對象PANA中并存儲在框219中。從而該數(shù)據(jù)簽名可以在程序發(fā)送和加載到一計算機系統(tǒng)中時與程序一起傳輸。最終發(fā)送的對象包括程序、名稱和數(shù)字簽名,即被稱作已驗證的程序A(CPA)。已驗證的程序現(xiàn)在可以在框221中發(fā)送到具有一安全永久存儲區(qū)和一依照本發(fā)明的操作系統(tǒng)的最終用戶的位置。
當(dāng)依照本發(fā)明的操作系統(tǒng)將一個程序加載到計算機系統(tǒng)時,它通過核對所附的數(shù)字簽名DSIG來核對程序本身以及程序名稱的可靠性。如上面所說明的,公共密鑰KPU在要用到程序PA的每一個計算機系統(tǒng)中都是可用的。
參照附圖4,當(dāng)加載一個程序來運行時,計算機的操作系統(tǒng)將依照本發(fā)明完成以下各步在框301中,已驗證的程序?qū)ο驝PA分成數(shù)字簽名DSIG和合并的程序/名稱對象PANA。
依照下面各步,根據(jù)公共密鑰KPU完成確認(rèn)該數(shù)字簽名是否該對象PANA中程序和名稱的合法簽名的工作。首先,在框303中使用公共密鑰KPU將數(shù)字簽名DSIG進行解密。如果數(shù)字簽名確實是由相應(yīng)的私有密鑰所生成的,解密的結(jié)果應(yīng)該是散列值H′(PANA)。
然后在框中用與驗證過程中相同的方法計算散列值H(PANA)。在框307中對框303和305進行比較來看H(PANA)是否等于H′(PANA)。如果相等,數(shù)字簽名核對并證明了PANA是由驗證方時所形成的,并且能證明PANA沒有被修改過。
如果該簽名不正確,在框309中加載過程退出。如果簽名正確,則在框311中將對象PANA分為程序PA和程序名NA。程序名NA保存在操作系統(tǒng)存儲器框313中的數(shù)據(jù)區(qū)分配表中,在其中除了操作系統(tǒng)本身外的其它程序都不能對它進行修改。程序在框315中加載,并在框317中開始程序PA的執(zhí)行。
所有程序占有的永久數(shù)據(jù)區(qū)由計算機的操作系統(tǒng)進行管理。任何應(yīng)用程序如果沒有向操作系統(tǒng)請求服務(wù)則都不能直接對它們進行訪問。
當(dāng)程序向操作系統(tǒng)請求分配一個新的永久數(shù)據(jù)區(qū)時,操作系統(tǒng)查找該程序的名稱并將它以與永久數(shù)據(jù)區(qū)永久關(guān)聯(lián)的方式存儲。從而每一個永久數(shù)據(jù)區(qū)就附加有一永久、不可修改的擁有者名稱域。
此后,當(dāng)程序請求對一存在的數(shù)據(jù)區(qū)進行訪問時,操作系統(tǒng)核對請求的程序是該數(shù)據(jù)區(qū)的創(chuàng)建者,也就是該數(shù)據(jù)區(qū)的擁有者。它將加載時存儲的程序名稱與數(shù)據(jù)區(qū)本身所附加的擁有者名稱進行比較。如果兩者不是完全相同的話,程序?qū)⒉粫辉试S對所請求的數(shù)據(jù)區(qū)進行訪問。如果我們可以保證程序名稱不能以任何方式偽造的話,這種機制就可以防止程序獲得對任何其它程序的數(shù)據(jù)的訪問。這種保證可以通過上面所述的程序驗證和加載程序時的處理來提供。
可以理解,唯一的應(yīng)用程序名稱與數(shù)據(jù)區(qū)擁有者的名稱的比較不必完全匹配,并且在一些系統(tǒng)中,部分比較或全部的比較可以以更好的方式完成。例如,對于一組請求訪問同一永久數(shù)據(jù)區(qū)并完成允許此訪問的程序來說,所有的名稱可以由性確認(rèn)方指定為以相同的字母開始但以不同的后綴結(jié)束。一組XYZ系列程序可以包括XYZA、XYZB等等。在此例中,只要求名稱中的XYZ部分與永久數(shù)據(jù)區(qū)的擁有者名稱匹配。同樣地,除了完全匹配之外,可以有其它的匹配方式進行補充而不會違背本發(fā)明的精神,如字符反序匹配以及其它的變化。
數(shù)據(jù)區(qū)訪問控制在附圖5的流程圖中進行了舉例說明,其中包括如下步驟。具有名稱NA的應(yīng)用程序A在框401中請求訪問數(shù)據(jù)區(qū)D2。該請求在框409中隨虛線表示的路徑送到SRDI管理器109。SRDI管理器109尋找加載程序A時所保存的名稱NA。SRDI管理器109接著檢查與數(shù)據(jù)區(qū)D2相關(guān)聯(lián)的擁有者名稱。
SRDI管理器109在框405對這兩個值進行比較,并在框407中發(fā)現(xiàn)請求者的名稱(NA)與數(shù)據(jù)擁有者的名稱(NA)相等,通過將數(shù)據(jù)區(qū)D2分配到程序A的局部描述符表來允許訪問。
在實線表示的路徑中,附圖5還表示了試圖訪問其它程序擁有的數(shù)據(jù)區(qū)時的情況,此時將發(fā)生以下各步。具有名稱NA的應(yīng)用程序A在框402中請求訪問數(shù)據(jù)區(qū)D1。該請求在框403中隨實線表示的路徑送到SRDI管理器。SRDI管理器尋找加載程序A時所保存的名稱。同樣該名稱為NA。SRDI管理器接著檢查與數(shù)據(jù)區(qū)D1相關(guān)聯(lián)的擁有者名稱,并且發(fā)現(xiàn)名稱為NB。在框405中SRDI管理器對這兩個值進行比較,既然請求者的名稱(NA)不等于數(shù)據(jù)擁有者的名稱(NA),則不分配內(nèi)存所以訪問被拒絕,從而程序A不能訪問程序B擁有的數(shù)據(jù)。可以理解的是,雖然此最佳實施例中比較是采用完全相等的辦法,為了匹配程序名和數(shù)據(jù)擁有者名稱可以選用其它的比較方法。
可以理解的是,對永久存儲器中的數(shù)據(jù)區(qū)的訪問的允許可以通過上述的分配來完成或者是真正地從它的局部描述符表中分配的區(qū)域中將數(shù)據(jù)復(fù)制到保護級別為0的SRDI管理器,也就是RAM中的另一區(qū)域。此RAM中的區(qū)域由保護級別為0的SRDI管理器的局部描述符進行分配并通過應(yīng)用程序的級別為3的局部描述符分配給發(fā)出請求的應(yīng)用程序。
本發(fā)明提供了一種將安全區(qū)域中的永久數(shù)據(jù)與來自該安全區(qū)域之外的暫時應(yīng)用程序相關(guān)聯(lián)的安全的方法。當(dāng)一個程序加載時,要對它的可靠性進行確認(rèn)并自動地將程序與它所創(chuàng)建的數(shù)據(jù)區(qū)關(guān)聯(lián)起來。任何程序不能獲得對其它程序創(chuàng)建的任何數(shù)據(jù)區(qū)的訪問。
當(dāng)然,可以對本發(fā)明進行一些修改和適應(yīng)來發(fā)揮其優(yōu)勢而不會背離本發(fā)明的精神。而且,本發(fā)明的一些特征的使用可以不必與其它特征的使用相一致。因此,本描述只應(yīng)僅僅作為本發(fā)明原理的一個示例,而不應(yīng)成為對它的限制。
權(quán)利要求
1.一種允許將來自外部的已驗證的應(yīng)用程序加載到計算機系統(tǒng)的安全模塊中并執(zhí)行的方法,包括在可靠性集中驗證時驗證應(yīng)用程序的可靠性;在該應(yīng)用程序?qū)⒁虞d和執(zhí)行的計算機中進行應(yīng)用程序的可靠性核對;將該應(yīng)用程序加載到計算機的安全模塊中;比較該應(yīng)用程序的唯一名稱與所存儲的與永久數(shù)據(jù)區(qū)相關(guān)聯(lián)的名稱;只有在該應(yīng)用程序的唯一名稱與所存儲的與永久數(shù)據(jù)區(qū)相關(guān)聯(lián)的名稱的比較匹配時,才允許應(yīng)用程序訪問該永久數(shù)據(jù)區(qū)。
2.一種驗證應(yīng)用程序P的可靠性,以使應(yīng)用程序P可以存儲在安全模塊之外并可以加載到安全模塊中且在其中執(zhí)行的方法,該方法包括為程序P選擇一個唯一的名稱N;將名稱N和程序P合并為一個單獨的相鄰的對象PN;使用一個私有-公共密鑰對算法中的私有密鑰從PN中計算得到一數(shù)字簽名DPN;將該數(shù)字簽名DPN附加到對象PN來獲得一已驗證的程序CP;建立一對應(yīng)于此私有-公共密鑰對算法中私有密鑰的公共密鑰,該密鑰在此程序P所要加載和執(zhí)行的每一個安全區(qū)中都是可用的。
3.一種從外部存儲器中將一個已驗證的程序CP加載到一個安全區(qū)以在該安全區(qū)中執(zhí)行的方法,該已驗證的程序CP具有相關(guān)聯(lián)的數(shù)字簽名DPN,該方法包括請求駐留在安全區(qū)中的操作系統(tǒng)加載一個程序CP;將該程序CP從外部存儲器中檢索到處于操作系統(tǒng)保護模式的內(nèi)存中;在安全區(qū)處于保護模式的內(nèi)存中將數(shù)字簽名DPN從已驗證程序CP的對象PN中分離出來;使用對應(yīng)于用來產(chǎn)生DPN的私有-公共密鑰對算法中私有密鑰的公共密鑰來確認(rèn)該數(shù)字簽名是否為對象PN的合法簽名;將程序P從對象PN的名稱N分離出來;將程序P加載到內(nèi)存中執(zhí)行;將程序名稱N存儲到保護的操作系統(tǒng)內(nèi)存中供以后用來允許程序P訪問安全區(qū)的內(nèi)存中的數(shù)據(jù)文件。
4.如權(quán)利要求3所述的方法,其特征在于,進一步包括在操作系統(tǒng)中檢索程序P對一數(shù)據(jù)對象的訪問請求;從處于保護的內(nèi)存中獲得程序P的名稱N;從數(shù)據(jù)對象D中獲得其擁有者名稱n;將名稱N和擁有者名稱n進行比較;如果名稱N和擁有者名稱n匹配,則授權(quán)程序P訪問數(shù)據(jù)對象D;如果名稱N和擁有者名稱n不匹配,則不允許程序P訪問數(shù)據(jù)對象D。
5.一種驗證程序可靠性以使應(yīng)用程序可以存儲于安全區(qū)外部并可以加載到安全區(qū)中執(zhí)行的裝置,包括為程序P選擇一唯一名稱N的裝置;將名稱N和程序P合并為一個單獨的相鄰的對象PN的裝置;使用一個私有-公共密鑰對算法中的私有密鑰從PN中計算數(shù)字簽名DPN的裝置;將該數(shù)字簽名DPN附加到對象PN來獲得一已驗證的程序CP的裝置;分配對應(yīng)于此私有-公共密鑰對算法中私有密鑰的公共密鑰的裝置,該密鑰在此程序P所要加載和執(zhí)行的每一個安全區(qū)中都是可用的。
6.一種從外部存儲器中加載一個已驗證的程序CP到一安全區(qū)以在該安全區(qū)中執(zhí)行的裝置,此已驗證的程序CP具有附加的數(shù)字簽名DPN,包括請求駐留在安全區(qū)中的操作系統(tǒng)加載程序CP的裝置;將該程序CP從外部存儲器中檢索到處于操作系統(tǒng)保護模式的內(nèi)存中的裝置;在安全區(qū)的處于保護模式的內(nèi)存中將數(shù)字簽名DPN從已驗證程序CP的對象PN中分離出來的裝置;使用對應(yīng)于用來產(chǎn)生DPN的私有-公共密鑰對算法中私有密鑰的公共密鑰來確認(rèn)該數(shù)字簽名是否為對象PN的合法簽名的裝置;將程序P與對象PN的名稱N分離出來的裝置;將程序P加載到內(nèi)存中以執(zhí)行的裝置;將程序名稱N存儲到操作系統(tǒng)保護內(nèi)存中供以后用來允許程序P訪問安全區(qū)的內(nèi)存中的數(shù)據(jù)文件的裝置。
7.如權(quán)利要求6所述的裝置,其特征在于,進一步包括在操作系統(tǒng)中接收程序P對一數(shù)據(jù)對象的訪問請求的裝置;從處于保護模式的內(nèi)存中獲得程序P的名稱N的裝置;從數(shù)據(jù)對象D中獲得其擁有者名稱n的裝置;將名稱N和擁有者名稱n進行比較的裝置;當(dāng)名稱N和擁有者名稱n匹配時授權(quán)程序P訪問數(shù)據(jù)對象D以及當(dāng)名稱N和擁有者名稱n不匹配時不允許程序P訪問數(shù)據(jù)對象D的裝置。
8.一種計算機程序產(chǎn)品,該產(chǎn)品具有計算機可讀媒體,其上記錄了用于驗證程序的可靠性,使得程序P可以存儲在安全區(qū)之外并可以加載到安全區(qū)中執(zhí)行的計算機程序邏輯,該產(chǎn)品包括為程序P選擇一唯一名稱N的裝置;將名稱N和程序P合并為一個單獨的相鄰的對象PN的裝置;使用一個私有-公共密鑰對算法中的私有密鑰從PN中計算數(shù)字簽名DPN的裝置;將該數(shù)字簽名DPN附加到對象PN來獲得一已驗證的程序CP的裝置;分配對應(yīng)于此私有-公共密鑰對算法中私有密鑰的公共密鑰的裝置,該密鑰在此程序P所要加載和執(zhí)行的每一個安全區(qū)中都是可用的。
9.一種計算機程序產(chǎn)品,該產(chǎn)品具有計算機可讀媒體,其上記錄了用于加載存儲在安全區(qū)之外的程序P并在安全區(qū)中執(zhí)行該程序的計算機程序邏輯,該程序P具有一附加的數(shù)字簽名DPN,該程序產(chǎn)品包括請求駐留在安全區(qū)中的操作系統(tǒng)加載程序CP的裝置;將該程序CP從外部存儲器中檢索到處于操作系統(tǒng)保護模式的內(nèi)存中的裝置;在安全區(qū)的處于保護模式的內(nèi)存中將數(shù)字簽名DPN從已驗證程序CP的對象PN中分離出來的裝置;使用對應(yīng)于用來產(chǎn)生DPN的私有-公共密鑰對算法中私有密鑰的公共密鑰來確認(rèn)該數(shù)字簽名是否為對象PN的合法簽名的裝置;將程序P從對象PN的名稱N中分離出來的裝置;將程序P加載到內(nèi)存中執(zhí)行的裝置;將名稱N存儲到操作系統(tǒng)保護內(nèi)存中供以后用來允許程序P訪問安全區(qū)的內(nèi)存中的數(shù)據(jù)文件的裝置。
10.如權(quán)利要求9所述的裝置,其特征在于,進一步包括在操作系統(tǒng)之中檢索程序P對一數(shù)據(jù)對象的訪問請求的裝置;從處于保護模式的內(nèi)存中獲得程序P的名稱N的裝置;從數(shù)據(jù)對象D中獲得其擁有者名稱n的裝置;將名稱N和擁有者名稱n進行比較的裝置;當(dāng)名稱N和擁有者名稱n匹配時授權(quán)程序P訪問數(shù)據(jù)對象D以及當(dāng)名稱N和擁有者名稱n不匹配時不允許程序P訪問數(shù)據(jù)對象D的裝置。
全文摘要
公開了一種用于驗證程序可靠性并用于安全地將其驗證過程已經(jīng)被核對的已驗證的應(yīng)用程序與它們所擁有的永久應(yīng)用程序數(shù)據(jù)相關(guān)聯(lián)的方法、裝置以及計算機程序產(chǎn)品。本發(fā)明可以防止其它應(yīng)用程序,包括其驗證過程已經(jīng)被核對的已驗證的應(yīng)用程序,訪問不屬于它們的數(shù)據(jù)。
文檔編號G06F21/00GK1203394SQ9810839
公開日1998年12月30日 申請日期1998年5月19日 優(yōu)先權(quán)日1997年6月20日
發(fā)明者托德·維斯頓·阿諾爾德 申請人:國際商業(yè)機器公司