安全應用調試的制作方法
【專利摘要】方法、系統(tǒng)和/或計算機程序產(chǎn)品啟用軟件應用的安全調試。服務器從客戶端接收安全軟件應用。安全應用被設計為在服務器內(nèi)執(zhí)行,并且對由安全軟件應用使用的數(shù)據(jù)的訪問受安全性對象的保護,其中安全性對象允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器中未受保護地退出。服務器還從客戶端接收安全附屬調試應用。安全附屬調試應用被設計為調試安全應用,但是不能被服務器使用。如果在服務器內(nèi)執(zhí)行安全軟件應用時存在錯誤,則服務器將安全軟件應用發(fā)送到客戶端,其中利用安全附屬調試應用對安全軟件應用進行調試。
【專利說明】
安全應用調試
技術領域
[0001]本公開涉及計算機領域,并且具體地涉及網(wǎng)絡上的計算機。還更具體地,本公開涉及通過網(wǎng)絡上的計算機調試計算機應用。
【背景技術】
[0002]計算機網(wǎng)絡通常包括服務器計算機和一個或多個客戶端計算機。服務器計算機通常代表客戶端計算機處理操作,諸如執(zhí)行應用、提供存儲器和計算資源等。由于服務器和客戶端之間的不安全連接、不信任能夠訪問服務器的客戶等,由服務器執(zhí)行的這些操作通常需要客戶端和服務器之間高級別的信任,這可能得到或者可能得不到保證,尤其在調試操作期間。
【發(fā)明內(nèi)容】
[0003]方法、系統(tǒng)和/或計算機程序產(chǎn)品啟用軟件應用的安全調試。服務器從客戶端接收安全軟件應用。安全應用被設計為在服務器內(nèi)執(zhí)行,并且訪問由安全軟件應用使用的數(shù)據(jù)受安全性對象的保護,其中安全性對象允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器中未受保護地退出。服務器還從客戶端接收安全附屬(sidecar)調試應用。安全附屬調試應用被設計為調試安全應用,但是不能被服務器使用。如果在服務器內(nèi)執(zhí)行安全軟件應用時存在錯誤,則服務器將安全軟件應用發(fā)送到客戶端,在客戶端中利用安全附屬調試應用對安全軟件應用進行調試。
【附圖說明】
[0004]相信是本發(fā)明特點的新穎特征在所附權利要求中闡述。但是,當結合附圖閱讀時,本發(fā)明本身,以及優(yōu)選的使用模式、其更多目標和優(yōu)點,將通過參考以下對說明性實施例的詳細描述得到最好的理解,附圖中:
[0005]圖1繪出了可以被本發(fā)明利用的示例性計算機系統(tǒng)和/或網(wǎng)絡;
[0006]圖2示出了根據(jù)本發(fā)明一種實施例的、網(wǎng)絡中的服務器和客戶端之間的功能關系;
[0007]圖3繪出了在網(wǎng)絡上的服務器內(nèi)的數(shù)據(jù)保護的附加細節(jié);
[0008]圖4示出了被發(fā)送到在網(wǎng)絡上的服務器中使用的處理器內(nèi)的高速緩存的受保護數(shù)據(jù)的附加細節(jié);
[0009]圖5繪出了存儲在服務器內(nèi)受保護存儲器區(qū)域內(nèi)的受保護數(shù)據(jù)的附加細節(jié);
[0010]圖6示出了處理器內(nèi)核心的附加細節(jié);及
[0011]圖7是由一個或多個處理器采用來安全地調試客戶端設備中的軟件應用的示例性步驟的高層流程圖。
【具體實施方式】
[0012]所屬技術領域的技術人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以采用以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以采用在一個或多個計算機可讀介質中的計算機程序產(chǎn)品的形式,在該計算機可讀介質上包含計算機可讀的程序代碼。
[0013]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一一但不限于一一電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(R0M)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0014]計算機可讀的信號介質可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括一一但不限于一一電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0015]計算機可讀介質上包含的程序代碼可以用任何適當?shù)慕橘|傳輸,包括一一但不限于一一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0016]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明的各方面的操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smal ltalk、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C"語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0017]下面將參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的各方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0018]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)。
[0019]計算機程序指令也可以被加載到計算機、其它可編程數(shù)據(jù)處理裝置或者其它設備上,使得一系列操作步驟在計算機、其它可編程裝置或者其它設備上執(zhí)行,以產(chǎn)生計算機實現(xiàn)的過程,使得在所述計算機或者其它可編程裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖中的一個或多個方框中所指定的功能/動作的過程。
[0020]現(xiàn)在參考附圖,并且尤其參考圖1,其中繪出了本發(fā)明可以利用的示例性計算機102的框圖。注意,為計算機102示出的示例性體系架構中的一些或全部可以被軟件部署服務器150和/或(一個或多個)其它計算機152加以利用。
[0021]計算機102包括處理器103,它可以利用一個或多個處理器,其中每個處理器具有一個或多個處理器核心104。處理器103耦合到系統(tǒng)總線106。驅動/支持顯示器109的視頻適配器108也耦合到系統(tǒng)總線106。系統(tǒng)總線106經(jīng)由總線橋112耦合到輸入/輸出(I/O)總線114。1/0接口 116耦合到I/O總線114。1/0接口 116提供與各種I/O設備的通信,包括鍵盤118、鼠標120、閃存驅動器122、打印機124、以及光存儲設備126 (例如,⑶或DVD驅動器)。連接到I/O接口 116的端口的格式可以是計算機體系架構領域技術人員已知的任何一種,包括但不限于,通用串行總線(USB)端口。
[0022]計算機102能夠經(jīng)由網(wǎng)絡128利用耦合到系統(tǒng)總線106的網(wǎng)絡接口130與軟件部署服務器150進行通信。網(wǎng)絡128可以是諸如互聯(lián)網(wǎng)的外部網(wǎng)絡,或者是諸如以太網(wǎng)或虛擬專用網(wǎng)(VPN)的內(nèi)部網(wǎng)絡。
[0023]硬盤驅動器接口 132也耦合到系統(tǒng)總線106。硬盤驅動器接口 132與硬盤驅動器134接口。在優(yōu)選的實施例中,硬盤驅動器134填充也耦合到系統(tǒng)總線106的系統(tǒng)存儲器136。系統(tǒng)存儲器被定義為計算機102中的易失性存儲器的最低級別。這種易失性存儲器包括附加的更高級別的易失性存儲器(未示出),包括但不限于,高速緩存存儲器、寄存器和緩沖器。填充系統(tǒng)存儲器136的數(shù)據(jù)包括計算機102的操作系統(tǒng)(0S)138和應用程序144。
[0024]OS 138包括外殼140,用于提供對諸如應用程序144的資源的透明用戶訪問。一般而言,外殼140是提供用戶與操作系統(tǒng)之間的解釋器和接口的程序。更具體而言,外殼140執(zhí)行被輸入到命令行用戶界面或來自文件的命令。因此,也被稱為命令處理器的外殼140—般而言是操作系統(tǒng)軟件層次結構的最高層次,并且用作命令解釋程序。外殼提供系統(tǒng)提示、解釋通過鍵盤、鼠標或其它用戶輸入介質輸入的命令、并且將解釋的(一個或多個)命令發(fā)送到操作系統(tǒng)的適當?shù)妮^低級別(例如,內(nèi)核142)進行處理。注意,雖然外殼140是基于文本、面向行的用戶界面,但是本發(fā)明將同樣很好地支持其它用戶接口模式,諸如圖形、語音、手勢等。
[0025]如所繪出的,OS 138還包括內(nèi)核142,其包括用于OS 138的較低級別的功能,包括提供由OS 138的其它部分以及應用程序144所需的基本服務,包括存儲器管理、進程和任務管理、盤管理、以及鼠標和鍵盤管理。
[0026]應用程序144包括呈現(xiàn)器,以示例性的方式被示為瀏覽器146。瀏覽器146包括程序模塊和指令,其啟用萬維網(wǎng)(WWW)客戶端(即,計算機102),以利用超文本傳輸協(xié)議(HTTP)消息向互聯(lián)網(wǎng)發(fā)送和接收網(wǎng)絡消息,從而使得能夠與軟件部署服務器150和其它所描述的計算機系統(tǒng)進行通信。
[0027]在計算機102的系統(tǒng)存儲器(以及軟件部署服務器150的系統(tǒng)存儲器)中的應用程序144還包括安全應用調試邏輯(SADL) 148 JADL 148包括用于實現(xiàn)下面在圖2_7中所描述的過程的代碼。在一種實施例中,計算機102能夠從軟件部署服務器150下載SADL148,包括以按需的方式下載。還要注意,在本發(fā)明的一種實施例中,軟件部署服務器150執(zhí)行與本發(fā)明相關聯(lián)的所有功能(包括執(zhí)行SADL 148),從而使得計算機102免于必須使用其自己的內(nèi)部計算資源來執(zhí)行SADL 148。
[0028]在計算機102中繪出的硬件元件不是旨在進行窮盡,而是代表性地突出由本發(fā)明所需的基本部件。例如,計算機102可以包括可替代的存儲器存儲設備,諸如盒式磁帶、數(shù)字多功能盤(DVD)、伯努利(Bernoulli)盒式磁帶,等等。這些和其它變化旨在本發(fā)明的精神和范圍之內(nèi)。
[0029]現(xiàn)在參考圖2,在系統(tǒng)200中給出了根據(jù)本發(fā)明一種實施例的、網(wǎng)絡中的服務器和客戶端之間的功能關系。假定在圖1中繪出的計算機102表示圖2中的服務器1(202)或服務器2(204),并且圖1中來自圖1的(一個或多個)其它計算機152表示在圖2中的客戶端計算機206和客戶端計算機208??蛻舳擞嬎銠C206被用戶A使用,其利用用戶A集成開發(fā)環(huán)境210,而客戶端208被用戶B使用,其利用用戶B IDE 212。如計算機開發(fā)和調試領域技術人員已知的,IDE是提供用來創(chuàng)建、修改、編輯和/或管理軟件應用的資源的軟件應用。IDE通常包括源代碼文本編輯器和編譯器,它們經(jīng)由(例如,在諸如圖1中示出的顯示器109的顯示器上的)用戶界面呈現(xiàn)給代碼開發(fā)人員(即,軟件工程師)。
[0030]在系統(tǒng)200中,服務器202和服務器204是云214的一部分,云214是連接的資源(包括服務器202和服務器204)的網(wǎng)絡。假定用于示例性目的,云214由服務提供商管理,其中服務提供商提供代表服務提供商的客戶/客戶端執(zhí)行軟件程序所需的資源(例如,處理服務器、存儲器存儲等)。例如,假定客戶端計算機206的用戶期望讓應用Al(216)(即,“安全軟件應用”)自己在服務器202上運行。還假定應用216是加密的,但是服務器202可以訪問可解密應用216的私有密鑰Al (218)。如所繪出的,被輸入到應用216中的數(shù)據(jù)作為數(shù)據(jù)A2來自客戶端計算機206(220)。但是,為了在由服務器202代表擁有客戶端計算機206的客戶執(zhí)行的操作中提供附加的安全性層,數(shù)據(jù)220以受保護的形式從客戶端計算機206被發(fā)送到服務器202。
[0031]現(xiàn)在參考圖3,其中給出了在網(wǎng)絡上的服務器內(nèi)的數(shù)據(jù)保護的附加細節(jié)。如上所述,應用216可以被加密。因此,私有密鑰218可以從安全性管理器302(例如,使用圖1中繪出的(一個或多個)其它計算機152中的另一個計算機的服務器和/或服務)被發(fā)送到服務器202。此外,安全性管理器302可以將安全性對象222發(fā)送到服務器202。安全性對象222需要從服務器202內(nèi)(或由服務器202使用)的存儲器304訪問應用(例如,應用216)或受保護數(shù)據(jù)(例如,受保護數(shù)據(jù)220)。存儲器304可以是系統(tǒng)存儲器、L3高速緩存存儲器、或者甚至由服務器202使用的永久性存儲器(例如,閃存驅動器、硬盤驅動器等)?,F(xiàn)在假定服務器202內(nèi)的操作系統(tǒng)(0S)306想要服務器202中的處理器303使用受保護數(shù)據(jù)220作為對應用216的輸入。不是信任OS 306來直接訪問存儲器304中的受保護數(shù)據(jù)220,而是必須使用安全性對象222,如在圖4中以示例性方式繪出的。在一種實施例中,安全性對象222是執(zhí)行本文所描述的過程以訪問受保護數(shù)據(jù)220的可編譯和/或可執(zhí)行的軟件代碼。在另一種實施例中,安全性對象222是憑證、令牌、密鑰或由可執(zhí)行程序使用以提供對本文所描述的受保護數(shù)據(jù)220的訪問的其它對象。
[0032]現(xiàn)在參考圖4,其中給出了在網(wǎng)絡上的服務器202中受保護數(shù)據(jù)220的附加細節(jié)。假定受保護數(shù)據(jù)220被加密。但是,根據(jù)本發(fā)明的一種實施例,不是在把受保護數(shù)據(jù)發(fā)送到高速緩存(例如,L2高速緩存616-參見圖6)之前將其解密,而是受保護數(shù)據(jù)220以其加密的形式被發(fā)送到L2高速緩存416。以這種加密的形式(如最初從客戶端206所接收到的(參見圖2)),應用216(參見圖3)無法使用受保護數(shù)據(jù)220作為輸入。但是,如在圖4中所繪出的,安全性對象222能夠在處理器303中解密受保護數(shù)據(jù)220以便生成解密數(shù)據(jù)420,解密數(shù)據(jù)420然后可以被發(fā)送到處理器303的核心404(例如并且更具體而言,到LI數(shù)據(jù)高速緩存620-參見圖6)用于執(zhí)行。再次注意,這種解密在處理器303內(nèi)發(fā)生,并且解密數(shù)據(jù)只在處理器303的范圍內(nèi)被允許。即,解密數(shù)據(jù)420不能離開處理器303的范圍,而是在被發(fā)送到存儲器304或在處理器303的外部的其它資源之前必須被重新加密。由于解密受保護數(shù)據(jù)220所采取的所有動作在處理器303內(nèi)發(fā)生,因此處理器303的用戶(例如,服務器202的擁有者(參見圖2-3))不能以可用的/解密形式訪問由客戶端計算機206的擁有者提供的潛在敏感的數(shù)據(jù)。
[0033]雖然圖4繪出了通過使用加密保護來自服務器202的擁有者的敏感數(shù)據(jù)的過程,但是圖5繪出了用于通過將數(shù)據(jù)存儲在服務器內(nèi)受保護存儲器區(qū)域內(nèi)來保護數(shù)據(jù)的過程。例如并且參考圖5,假定0S306想要訪問存儲器304中的受保護未加密數(shù)據(jù)520。顧名思義,受保護未加密數(shù)據(jù)520是未加密的。但是,它被存儲在受保護的存儲器304的區(qū)域中(S卩,受保護存儲器區(qū)域502)。在沒有執(zhí)行安全性對象522的情況下,訪問受保護存儲器區(qū)域502是不可能的。安全性對象522類似于在圖3中示出的安全性對象222,在這一點上,它可以通過安全性管理器302發(fā)出。但是,不是提供解密,而是安全性對象522提供對受保護存儲器區(qū)域502的訪問。即,安全性對象522包含由存儲器管理器(未示出)允許操作系統(tǒng)306訪問受保護存儲器區(qū)域502所需要的安全性算法/密鑰/密碼。如果服務器202具有安全性對象522的拷貝(即,它已被從圖3中示出的安全性管理器302接收到),則受保護未加密應用520被加載到L2高速緩存516(或其它操作存儲器)中,用于被處理器303中的核心504使用。注意,受保護未加密數(shù)據(jù)520仍然受到保護以避免經(jīng)由(未受保護的)操作系統(tǒng)306的惡意攻擊,這是由于它I)不能從處理器303和/或存儲器304的外部訪問,和2)只能通過使用安全性對象522來訪問。
[0034]注意,雖然存儲器304和受保護存儲器區(qū)域502在圖5中被繪出為在處理器303的外部,但是在一種實施例中,存儲器304和受保護存儲器區(qū)域502實際上是在處理器303之內(nèi)(內(nèi)部)。這提供了對受保護未加密數(shù)據(jù)520的附加保護,使得它只可以在處理器303之內(nèi)被訪問和利用。
[0035]還應注意,雖然為了清楚起見,在圖3中示出的存儲器304只繪出受保護數(shù)據(jù)220被包含在存儲器304之內(nèi),但是應該理解,在一種實施例中,存儲器304 (例如,系統(tǒng)存儲器)也將包含OS 306、安全性對象222、應用Al(216)和/或私有密鑰Al(218),如對于實現(xiàn)本文所公開的本發(fā)明可能需要的。
[0036]現(xiàn)在返回到圖2,假定由服務器202運行的應用失敗。如上所述,客戶端206的擁有者可能不信任服務器202訪問其數(shù)據(jù)220,更不用說調試應用216。但是,客戶端計算機206的擁有者確實信任服務器202足以保持I)應用和2)調試程序的拷貝,但是其中調試程序處于受保護形式。例如,假定應用A2(224)只能被繪為附屬A2(226)的調試程序來調試。應用224和/或附屬226由對稱密鑰A2(228)加密,該對稱密鑰是包括公開密鑰(用于加密)和私有密鑰(用于解密)的一對密鑰。加密版本的應用224和/或附屬226—起構成包230,如所繪出的。為了利用包230(即,為了利用附屬226解密應用224),附屬226和/或應用224必須通過對客戶端計算機206而不是服務器202可用的私有密鑰232來解密。
[0037]例如,假定當應用234的錯誤發(fā)生時(例如,程序“崩潰停止運行、或者產(chǎn)生非致命錯誤消息、或者開始產(chǎn)生已知為錯誤的輸出(例如,是以不正確的格式,諸如輸出數(shù)字而不是文本等)、或者開始使用比所預期的更多的CPU/存儲器資源等),服務器204正在運行應用B2234(即,另一個“安全應用軟件”)。如同上述應用216,應用234在使用前由私有密鑰B2(236)解密,并且對數(shù)據(jù)B2(238)的訪問需要使用安全性對象(未示出,但類似于本文所描述的安全性對象A2( 222))。
[0038]當應用234崩潰時,包括應用B2(234)和附屬B2(242)(類似于本文所討論的附屬226)的包240從服務器204被發(fā)送到客戶端計算機208中的用戶B IDE 212。注意,附屬242受對稱密鑰B2(244)(即,用于加密的公開密鑰和用于解密的私有密鑰(例如,私有密鑰B3246)的密鑰對)的保護。在一種實施例中,應用234還受對稱密鑰244的保護。為了利用附屬242,客戶端計算機208首先利用對客戶端計算機208而不是服務器204可訪問的私有密鑰B3(246)解密附屬242。因此,客戶端計算機208能夠調試應用234,但是服務器204不能。
[0039]在一種實施例中,發(fā)送到客戶端計算機的信息的包240包括核心轉儲248。核心轉儲248包括在故障/錯誤/崩潰時由應用(例如,應用234)使用的存儲器的記錄狀態(tài)。核心轉儲248包括程序計數(shù)器、堆棧指針、OS標志等的內(nèi)容。在一種實施例中,核心轉儲具體包括以下在圖6中繪出和描述的LI指令高速緩存618、L1數(shù)據(jù)高速緩存620、L2高速緩存616、CRR680,LCR 682,GPR 684和/或FPR688的內(nèi)容。在一種實施例中,核心轉儲包含與處理的較高級別描述有關的信息(例如,指向發(fā)生錯誤處的源和/或目標代碼的行的指針、由錯誤引發(fā)的標志等)。
[0040]在一種實施例中,發(fā)送到客戶端計算機208的信息的包240包括遙測數(shù)據(jù)250。遙測數(shù)據(jù)250描述了在崩潰時服務器內(nèi)的處理器和/或核心的操作。這種操作數(shù)據(jù)的例子包括,但不限于,處理器/核心的帶寬(即,每單位時間多少計算被執(zhí)行)、存儲器訪問(即,由處理器在預定的時間段期間做出的存儲器訪問量)等。
[0041]雖然利用附屬226或附屬242的過程可能需要在使用之前解密附屬226或附屬242,但是在一種實施例中,附屬226或附屬242受安全性對象的保護,諸如本文描述的安全性對象222或安全性對象522。即,不是允許客戶端(例如,客戶端計算機206或208)內(nèi)的操作系統(tǒng)在解密之后直接訪問附屬226或附屬242,而是一種實施例要求客戶端內(nèi)的操作系統(tǒng)經(jīng)過安全性對象(例如,222/522),使得附屬226或附屬242只在客戶端計算機中的處理器內(nèi)可訪問。
[0042]現(xiàn)在參考圖6,其中給出了如分別在圖1、4和5中繪出的核心104/404/504,以及由諸如圖2中的客戶端計算機206和/或208的客戶端計算機使用的處理器核心的附加示例性細節(jié)。核心104包括芯片上多級高速緩存層次結構,其包括統(tǒng)一的二級(L2)高速緩存616和分為兩部分的分別為一級(LI)指令(I)和數(shù)據(jù)(D)高速緩存618和620。如對本領域技術人員眾所周知的,高速緩存616、618和620為與系統(tǒng)存儲器(例如,在圖1中示出的系統(tǒng)存儲器136)中的存儲器位置對應的高速緩存行提供低延遲訪問。
[0043]響應于位于指令獲取地址寄存器(IFAR)630中的有效地址(EA),從Ll1-高速緩存618中獲取用于處理的指令。在每個周期期間,新的指令獲取地址可以從以下三個來源之一加載到IFAR 630中:提供從條件分支指令的預測產(chǎn)生的推測性目標路徑和連續(xù)地址的分支預測單元(BPU)636、提供清除和中斷地址的全局完成表(GCT)638、以及提供從預測的條件分支指令的解析產(chǎn)生的非推測性地址的分支執(zhí)行單元(BEU)692。與BPU 636關聯(lián)的是分支歷史表(BHT)635,其中記錄的是條件分支指令的解析,以在將來的分支指令的預測中提供幫助。
[0044]諸如IFAR630內(nèi)的指令獲取地址的有效地址(EA)是由處理器生成的數(shù)據(jù)或指令的地址。EA指定段寄存器和段內(nèi)的偏移信息。為了訪問存儲器中的數(shù)據(jù)(包括指令),EA通過一級或多級轉換被變換為與其中存儲數(shù)據(jù)或指令的物理位置相關聯(lián)的實際地址(RA)。
[0045]在核心104內(nèi),有效到實際地址的轉換由存儲器管理單元(MMU)和相關聯(lián)的地址轉換工具來執(zhí)行。優(yōu)選地,提供單獨的MMU用于指令訪問和數(shù)據(jù)訪問。在圖6中,為清楚起見,示出了單個MMU 611,只示出到指令存儲單元(ISU)601的連接。但是,本領域技術人員應該理解,MMU 611優(yōu)選地也包括到加載/存儲單元(LSU)696和698以及用于管理存儲器訪問所需的其它部件的連接(未示出)。麗1] 611包括數(shù)據(jù)轉換后備緩沖器(DTLB)612和指令轉換后備緩沖器(ITLB)613。每個TLB包含最近引用的頁表條目,其被訪問以便將數(shù)據(jù)(DTLB 612)或指令(ITLB 613)的EA轉換為RAJTLB 613中最近引用的EA-到-RA轉換被高速緩存在EOP有效-到-實際地址表(ERAT)632中。
[0046]如果命中/缺失邏輯622在通過ERAT 632轉換包含在IFAR 630中的EA和在1-高速緩存目錄634中查找實際地址(RA)之后確定對應于IFAR 630中的EA的指令的高速緩存行沒有位于Ll1-高速緩存618中,則命中/缺失邏輯622經(jīng)由1-高速緩存請求總線624提供RA到L2高速緩存616作為請求地址。這種請求地址也可以基于最近的訪問模式由L2高速緩存616內(nèi)的預取邏輯來生成。響應于請求地址,L2高速緩存616輸出可能在通過了可選的預解碼邏輯602之后經(jīng)由1-高速緩存重新加載總線626被加載到預取緩沖器(PB)628和Ll1-高速緩存618中的指令的高速緩存行。
[0047]一旦由IFAR 630中的EA指定的高速緩存行位于Ll1-高速緩存618中,Ll1-高速緩存618就將高速緩存行輸出到分支預測單元(BPU)636和指令獲取緩沖器(IFB)640兩者。BPU636為分支指令掃描指令的高速緩存行并且如果存在的話,預測條件分支指令的結果。在分支預測之后,BPU 636向IFAR 630提供推測性指令獲取地址,如以上所討論的,并且將預測傳遞到分支指令隊列664,使得當條件分支指令隨后被分支執(zhí)行單元692解析時,可以確定預測的準確性。
[0048]IFB 640臨時緩沖從Ll1-高速緩存618接收到的指令的高速緩存行,直到指令的高速緩存行可以被指令轉換單元(ITU)642轉換。在示出的核心104的實施例中,ITU 642將來自用戶指令集體系架構(UISA)指令的指令轉換為可能不同數(shù)量的可被核心104的執(zhí)行單元直接執(zhí)行的內(nèi)部ISA(IISA)指令。這種轉換可以,例如,通過引用存儲在只讀存儲器(ROM)模板中的微碼來執(zhí)行。在至少一些實施例中,UISA到IISA轉換產(chǎn)生與UISA指令不同數(shù)量的IISA指令和/或與對應的UISA指令不同長度的IISA指令。結果得到的IISA指令然后被全局完成表638分配給指令組,其成員被允許相對于彼此不按順序地進行分派和執(zhí)行。全局完成表638跟蹤對于其執(zhí)行尚未被至少一個相關聯(lián)的EA—其優(yōu)選地是指令組中最老指令的EA—完成的每個指令組。
[0049]在UISA到IISA指令轉換之后,指令可能不按順序地、基于指令類型被分派到鎖存器644、646、648和650中的一個。即,分支指令和其它條件寄存器(CR)修改指令被分派到鎖存器644,定點和加載存儲指令被分派到鎖存器646和648中的任一個,并且浮點指令被分派至IJ鎖存器650。然后由CR映射器652、鏈接和計數(shù)(LC)寄存器映射器654、異常寄存器(XER)映射器656、通用寄存器(GPR)映射器658和浮點寄存器(FPR)映射器660當中適當?shù)囊粋€給每個需要重命名寄存器臨時存儲執(zhí)行結果的指令分配一個或多個重命名寄存器。
[0050]分派的指令然后被臨時放置在CR發(fā)布隊列(CRIQ)662、分支發(fā)布隊列(BIQ)664、定點發(fā)布隊列(FXIQ)666和668以及浮點發(fā)布隊列(FPIQ)670和672當中合適的一個中。從發(fā)布隊列662、664、666、668、670和672中,只要觀察到數(shù)據(jù)依賴性和反依賴性,指令就可以機會性地發(fā)布到處理器103的執(zhí)行單元(在圖1中示出)用于執(zhí)行。但是,指令被維護在發(fā)布隊列662-672中,直到指令的執(zhí)行完成并且如果存在結果數(shù)據(jù)的話,則在有任何指令需要被重新發(fā)出的情況下,結果數(shù)據(jù)被寫回。
[0051]如所示出的,核心104的執(zhí)行單元包括執(zhí)行子部件603,其包括用于執(zhí)行CR-修改指令的CR單元(CRU)690、用于執(zhí)行分支指令的分支執(zhí)行單元(BEU)692、用于執(zhí)行定點指令的二個定點單元(FXU)694和605、用于執(zhí)行加載和存儲指令的兩個加載存儲單元(LSU)696和698、以及用于執(zhí)行浮點指令的兩個浮點單元(FPU)606和604。每個執(zhí)行單元690-604優(yōu)選地被實現(xiàn)為具有許多流水線階段的執(zhí)行流水線。
[0052]在執(zhí)行單元690-604之一內(nèi)執(zhí)行期間,如果存在的話,指令從耦合到執(zhí)行單元的寄存器文件內(nèi)的一個或多個體系架構化和/或重命名寄存器中接收操作數(shù)。當執(zhí)行CR-修改或CR從屬指令時,CRU 690和BEU 692訪問CR寄存器文件680,其在優(yōu)選實施例中包含CR和許多CR重命名寄存器,每個都包括多個由一位或多位形成的不同字段。在這些字段當中的是分別指示值(通常是指令的結果或操作數(shù))小于零、大于零或等于零的LT、GT和EQ字段。鏈接和計數(shù)寄存器(LCR)文件682包含計數(shù)寄存器(CTR)、鏈接寄存器(LR)和重命名寄存器,BEU692通過其每個也可以解析條件分支以獲得路徑地址。被同步的通用寄存器文件(GPR)684和686復制寄存器文件,并且存儲由FXU 694和605以及LSU 696和698訪問和產(chǎn)生的定點和整型值。注意,類似GPR 684和686的浮點寄存器文件(FPR)688也可以被實現(xiàn)為同步寄存器的重復集合,包含由FPU606和604執(zhí)行浮點指令和由LSU 696和698執(zhí)行浮點加載指令產(chǎn)生的浮點值。
[0053]在執(zhí)行單元完成指令的執(zhí)行之后,執(zhí)行單元通知GCT638,其以編程的順序調度指令的完成。為了完成由CRU 690,FXU 694和605或FPU 606和604中的一個執(zhí)行的指令,GCT638向執(zhí)行單元發(fā)出信號,其中如果存在的話,執(zhí)行單元將結果數(shù)據(jù)從分配的(一個或多個)重命名寄存器寫回到適當?shù)募拇嫫魑募械囊粋€或多個體系架構化的寄存器。然后,指令從發(fā)布隊列中刪除,并且一旦其指令組內(nèi)的所有指令都已完成,它就從GCT 638中刪除。但是,其它類型的指令以不同的方式完成。
[0054]當BEU692解析條件分支指令并且確定應采取的執(zhí)行路徑的路徑地址時,路徑地址與由BPU 636預測的推測性路徑地址進行比較。如果路徑地址匹配,則不需要進一步處理。但是,如果計算出的路徑地址與預測的路徑地址不匹配,則BEU 692向IFAR 630提供正確的路徑地址。在任一情況下,分支指令然后可以從BIQ 664中刪除,并且當在同一指令組中的所有其它指令都已執(zhí)行完成時,從GCT 638中刪除。
[0055]在執(zhí)行加載指令之后,通過執(zhí)行加載指令計算出的有效地址通過數(shù)據(jù)ERAT(未示出)被轉換為實際地址,并且然后提供給LlD-高速緩存620作為請求地址。這時,加載指令從FXIQ 666或668中刪除,并且放置在加載重新排序隊列(LRQ)609中,直到所指示的加載被執(zhí)行。如果請求地址沒有在LlD-高速緩存620中,則請求地址被放置在加載缺失隊列(LMQ)607中,從中,所請求的數(shù)據(jù)從L2高速緩存616中檢索,并且如果失敗,則從另一個核心104或從系統(tǒng)存儲器中檢索。LRQ 609監(jiān)聽獨占式訪問請求(例如,具有修改意圖的讀取)、在互聯(lián)架構(未顯示)上針對運行中的加載進行清除或殺死,并且如果發(fā)生命中,則取消并重新發(fā)出加載指令。存儲指令類似地利用用于存儲的有效地址在執(zhí)行存儲指令之后被加載到其中的存儲隊列(STQ)610來完成。從STQ 610中,數(shù)據(jù)可以被存儲到LlD-高速緩存620和L2高速緩存616中的任一個或兩者。
[0056]注意,處理器的狀態(tài)包括在特定時間的存儲的數(shù)據(jù)、指令和硬件的狀態(tài),并且在本文中被定義為是“硬”或“軟”的?!坝病睜顟B(tài)被定義為在體系架構上需要處理器從其進程中的當前點執(zhí)行進程的處理器內(nèi)的信息。作為對比,“軟”狀態(tài)被定義為將提高進程的執(zhí)行效率,但不需要實現(xiàn)在體系架構上正確的結果的處理器內(nèi)的信息。在圖6的核心104中,硬狀態(tài)包括用戶級寄存器一諸如CRR 680、LCR682、GPR 684和686、FPR 688以及主管級寄存器651 —的內(nèi)容。核心104的軟狀態(tài)既包括“性能關鍵”信息,諸如LU-高速緩存618、L1D-高速緩存620的內(nèi)容,諸如DTLB 612和ITLB 613的地址轉換信息,又包括不太重要的信息,諸如BHT635和L2高速緩存616的內(nèi)容的全部或部分。因此,這些寄存器的內(nèi)容是描述處理器核心104的實時當前體系架構狀態(tài)寄存器的固定值。
[0057]因此,在一種實施例中,在圖2中繪出的核心轉儲248的內(nèi)容包含核心的“硬”狀態(tài)和/或“軟”狀態(tài),如以上所描述/定義的。
[0058]在本發(fā)明的一種實施例中,解碼/解密數(shù)據(jù)被直接加載到圖6中繪出的LlD-高速緩存620中,從而繞過LSU 696/698,STQ 610等。在一種實施例中,解密數(shù)據(jù)420被發(fā)送到在圖6中繪出的L2高速緩存616,從中,它被分派到相應的執(zhí)行單元。
[0059]現(xiàn)在返回到圖3,如上所述,安全性管理器302是除其它功能之外還創(chuàng)建安全性對象222的服務器/服務(例如,利用在圖1中繪出的(一個或多個)其它計算機152中的一個或多個)。在一種實施例中,每個安全性對象特定于特定的數(shù)據(jù)。即,第一安全性對象可以被設計為解密第一受保護數(shù)據(jù);第二安全性對象可以被設計為解密第二受保護數(shù)據(jù);等等。這允許對哪些受保護數(shù)據(jù)可以被解密/啟用以被服務器和/或客戶端使用進行精細粒度級別的控制。
[0060]再次注意,在圖4中,在一種實施例中,受保護數(shù)據(jù)220是不可用的,直到它在處理器303的內(nèi)部,其中它利用安全性對象222被轉換為其可使用的形式。這確保了受保護數(shù)據(jù)220的使用不能在不使用安全性對象222的情況下發(fā)生,其中安全性對象222的使用必須在處理器303的內(nèi)部(之內(nèi))發(fā)生。
[0061]現(xiàn)在參考圖7,其繪出了由一個或多個處理器采用來安全地啟用軟件應用的調試的示例性步驟的高層流程圖。在啟動器方框702之后,服務器從客戶端接收安全軟件應用(方框704)。安全應用被設計為在服務器中執(zhí)行。但是,對由安全軟件應用使用的數(shù)據(jù)的訪問受安全性對象的保護,這允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器未受保護地退出。
[0062]如在方框706中所描述的,服務器從客戶端接收安全附屬調試應用。安全附屬調試應用被設計為調試安全應用。在一種實施例中,安全附屬調試應用被加密,使得客戶端,但不是服務器,具有解密安全附屬調試應用所需的私有密鑰的拷貝。
[0063]如在查詢方框708中所描述的,做出關于當在服務器內(nèi)執(zhí)行安全軟件應用時是否已發(fā)生執(zhí)行錯誤(例如,崩潰、故障等)的查詢。如在方框710中所描述的,響應于檢測到當在服務器內(nèi)執(zhí)行安全軟件應用時發(fā)生了錯誤,安全軟件應用從服務器傳送到客戶端,從而允許客戶端調試安全軟件應用。該過程在終止器方框712處結束。
[0064]在本發(fā)明的一種實施例中,響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,安全附屬調試應用從服務器發(fā)送到客戶端(在客戶端還沒有調試安全軟件應用所需的安全附屬調試應用的拷貝的情況下)。
[0065]在本發(fā)明的一種實施例中,響應于在服務器中執(zhí)行安全軟件應用時檢測到錯誤,從正在執(zhí)行安全軟件應用的服務器中的處理器生成核心轉儲,然后將其從服務器發(fā)送到客戶端。在一種實施例中,這種核心轉儲包括在錯誤發(fā)生時數(shù)據(jù)高速緩存、指令高速緩存、以及處理器的核心內(nèi)的寄存器的內(nèi)容。在一種實施例中,這種核心轉儲在從服務器發(fā)送到客戶端之前被加密。
[0066]在本發(fā)明的一種實施例中,響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,遙測數(shù)據(jù)從服務器發(fā)送到客戶端。在一種實施例中,這種遙測數(shù)據(jù)描述:每第一預定義時間段的計算量、以及每第二預定義時間段的存儲器訪問量,其中,計算量和存儲器訪問量發(fā)生在執(zhí)行安全軟件應用時發(fā)生錯誤之前的第三預定義時間段期間。
[0067]在本發(fā)明的一種實施例中,安全性對象撤銷命令被發(fā)送到服務器,其中安全性對象撤銷命令防止服務器內(nèi)的處理器進一步利用由安全軟件應用所需的數(shù)據(jù)。例如并且再次參考圖3,假定服務器202正在利用安全性對象222訪問需要輸入到應用216的受保護數(shù)據(jù)220。安全性管理器302可以通過向服務器202發(fā)送安全性對象撤銷命令308來停止這一過程,其阻止OS 306利用安全性對象222。即,假定每次受保護數(shù)據(jù)220通過使用安全性對象222被訪問,則只有有限量的數(shù)據(jù)(例如,行、頁、塊、堆等)可以在安全性對象222必須再次被調用(以訪問下一行/頁/塊/等)之前被訪問。因此,通過禁用安全性對象222,沒有新的數(shù)據(jù)可以從存儲器304中被訪問。
[0068]類似地,私有密鑰撤銷命令310可以被發(fā)送到客戶端計算機208(參見圖2),從而阻止使用附屬242來調試應用234。這種通過私有密鑰撤銷命令310阻止附屬242可以通過破壞私有密鑰246來實現(xiàn),從而防止附屬242的進一步解密。即,假定只有應用234的有限部分可以利用附屬242來調試(通過使用私有密鑰246)。此后,為了調試應用234的下一部分(例如,代碼的下一塊、應用234的下一個函數(shù)等),附屬242必須再次被私有密鑰246解密。但是,私有密鑰撤銷命令310禁用私有密鑰246(例如,通過破壞私有密鑰246、阻止對私有密鑰246的訪問等),從而防止對應用234的任何進一步調試。注意,如果附屬242只可通過安全性對象(例如,上述222或522)訪問,則撤銷命令可以從安全性管理器302(參見圖3)發(fā)布到客戶端計算機208,從而選擇性地禁用那個安全性對象。
[0069]如現(xiàn)在和本文中所描述的,并且進一步參考圖6,在本發(fā)明的一種實施例中,服務器包括處理器,處理器包括核心,并且核心包括數(shù)據(jù)高速緩存。在一種實施例中,安全性對象能夠直接將數(shù)據(jù)推送到LlD-高速緩存620中,從而提供核心內(nèi)更快的,并且仍然安全的操作。注意,LI表示高速緩存的最低級別,它最先被檢查以定位操作數(shù)(在數(shù)據(jù)(D)高速緩存的情況下)或數(shù)據(jù)(在數(shù)據(jù)(D)高速緩存的情況下)。如果必需的操作數(shù)/數(shù)據(jù)沒有在LI高速緩存中找到(即,“高速緩存缺失”),則下一個最高級別高速緩存存儲器(L2高速緩存)被搜索。如果存在L2高速緩存缺失,則下一個最高L3高速緩存(如果系統(tǒng)具有L3級高速緩存)被搜索。如果存在L2/L3高速緩存缺失,則為必需的操作數(shù)/數(shù)據(jù)搜索系統(tǒng)存儲器。如果系統(tǒng)存儲器不具有所需的操作數(shù)/數(shù)據(jù)(例如,頁故障),則為所需的操作數(shù)或數(shù)據(jù)搜索虛擬存儲器、永久性存儲器(例如,硬盤驅動器)和/或存儲器云(例如,存儲設備的網(wǎng)絡)。
[0070]注意,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)示出的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0071]本文所使用的術語僅僅是為了描述特定的實施例而不是要作為本發(fā)明的限制。如本文所使用的,除非上下文明確地另外指出,否則單數(shù)形式“一個”和“這個”是要也包括復數(shù)形式。還應當理解,當在本說明書使用時,術語“包括”規(guī)定所述特征、整數(shù)、步驟、操作、元素和/或部件的存在,但是并不排除一個或多個其它特征、整數(shù)、步驟、操作、元素、部件和/或其組的存在或添加。
[0072]以下權利要求中所有方式或步驟加功能元素的對應結構、材料、動作及等價物都是要包括用于結合具體所述的其它所述元素執(zhí)行所述功能的任何結構、材料或行為。已經(jīng)為了說明和描述的目的給出了本發(fā)明的各種實施例的描述,但這不是詳盡的或者要把本發(fā)明限定到所公開的形式。在不背離本發(fā)明范圍與精神的情況下,許多修改和變化對本領域普通技術人員都將是顯而易見的。實施例的選擇和描述是為了最好地解釋本發(fā)明的原理和實踐應用,并使本領域普通技術人員能夠理解本發(fā)明具有適于預期特定使用的各種修改的各種實施例。
[0073]還要注意,在本公開中描述的任何方法可以通過使用VHDL(VHSIC硬件描述語言)程序和VHDL芯片來實現(xiàn)。VHDL是用于現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)以及其它類似電子設備的示例性設計入門語言。因此,本文所描述的任何軟件實現(xiàn)的方法可以通過基于硬件的VHDL程序來仿真,然后被應用到VHDL芯片,諸如FPGA。
[0074]因此,在詳細地并且參考其說明性實施例描述本申請的發(fā)明的實施例之后,很顯然,在不背離所附權利要求所定義的本發(fā)明的范圍的情況下,修改和變化是可能的。
【主權項】
1.一種啟用軟件應用的安全調試的方法,所述方法包括: 由服務器從客戶端接收安全軟件應用,其中安全軟件應用被設計為在服務器內(nèi)執(zhí)行,其中,對由安全軟件應用使用的數(shù)據(jù)的訪問受安全性對象保護,并且其中安全性對象允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器未受保護地退出; 由服務器從客戶端接收安全附屬調試應用,其中安全附屬調試應用被設計為調試安全軟件應用,其中安全附屬調試應用被加密,并且其中客戶端,而不是服務器,具有解密安全附屬調試應用所需的私有密鑰的拷貝;及 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將安全軟件應用從服務器發(fā)送到客戶端。2.如權利要求1所述的方法,還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將安全附屬調試應用從服務器發(fā)送到客戶端,其中客戶端被啟用來解密安全附屬調試應用和調試安全軟件應用。3.如權利要求1所述的方法,還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,從正在執(zhí)行安全軟件應用的服務器中的處理器生成核心轉儲;及 將核心轉儲從服務器發(fā)送到客戶端。4.如權利要求3所述的方法,其中核心轉儲包括在錯誤發(fā)生時數(shù)據(jù)高速緩存、指令高速緩存以及處理器的核心內(nèi)的寄存器的內(nèi)容。5.如權利要求3所述的方法,還包括: 在發(fā)送到客戶端之前加密核心轉儲。6.如權利要求1所述的方法,還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將遙測數(shù)據(jù)從服務器發(fā)送到客戶端,其中遙測數(shù)據(jù)描述: 每個第一預定義時間段的計算量,及 每個第二預定義時間段的存儲器訪問量,其中,計算量和存儲器訪問量發(fā)生在執(zhí)行安全軟件應用時發(fā)生錯誤之前的第三預定義時間段期間。7.如權利要求1所述的方法,還包括: 將安全性對象撤銷命令發(fā)送到服務器,其中安全性對象撤銷命令防止服務器內(nèi)的處理器進一步利用由安全軟件應用使用的數(shù)據(jù)。8.—種用于啟用軟件應用的安全調試的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括具有利用其體現(xiàn)的程序代碼的計算機可讀存儲介質,程序代碼能被一個或多個處理器讀取和執(zhí)行以執(zhí)行包括以下的方法: 由服務器從客戶端接收安全軟件應用,其中安全軟件應用被設計為在服務器內(nèi)執(zhí)行,其中,對由安全軟件應用使用的數(shù)據(jù)的訪問受安全性對象保護,并且其中安全性對象允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器未受保護地退出; 由服務器從客戶端接收安全附屬調試應用,其中安全附屬調試應用被設計為調試安全軟件應用,其中安全附屬調試應用被加密,并且其中客戶端,而不是服務器,具有解密安全附屬調試應用所需的私有密鑰的拷貝;及 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將安全軟件應用從服務器發(fā)送到客戶端。9.如權利要求8所述的計算機程序產(chǎn)品,其中所述方法還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將安全附屬調試應用從服務器發(fā)送到客戶端,其中客戶端被啟用來解密安全附屬調試應用和調試安全軟件應用。10.如權利要求8所述的計算機程序產(chǎn)品,其中所述方法還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,從正在執(zhí)行安全軟件應用的服務器中的處理器生成核心轉儲;及 將核心轉儲從服務器發(fā)送到客戶端。11.如權利要求10所述的計算機程序產(chǎn)品,其中核心轉儲包括在錯誤發(fā)生時數(shù)據(jù)高速緩存、指令高速緩存以及處理器的核心內(nèi)的寄存器的內(nèi)容。12.如權利要求10所述的計算機程序產(chǎn)品,其中所述方法還包括: 在發(fā)送到客戶端之前加密核心轉儲。13.如權利要求8所述的計算機程序產(chǎn)品,其中所述方法還包括: 響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤,將遙測數(shù)據(jù)從服務器發(fā)送到客戶端,其中遙測數(shù)據(jù)描述: 每個第一預定義時間段的計算量,及 每個第二預定義時間段的存儲器訪問量,其中,計算量和存儲器訪問量發(fā)生在執(zhí)行安全軟件應用時發(fā)生錯誤之前的第三預定義時間段期間。14.如權利要求8所述的計算機程序產(chǎn)品,其中所述方法還包括: 將安全性對象撤銷命令發(fā)送到服務器,其中安全性對象撤銷命令防止服務器內(nèi)的處理器進一步利用由安全軟件應用使用的數(shù)據(jù)。15.—種計算機系統(tǒng),包括: 處理器、計算機可讀存儲器和計算機可讀存儲介質; 用以由服務器從客戶端接收安全軟件應用的第一程序指令,其中安全軟件應用被設計為在服務器內(nèi)執(zhí)行,其中,對由安全軟件應用使用的數(shù)據(jù)的訪問受安全性對象保護,并且其中安全性對象允許服務器內(nèi)的處理器訪問由安全軟件應用使用的數(shù)據(jù),但不允許數(shù)據(jù)從處理器未受保護地退出; 用以由服務器從客戶端接收安全附屬調試應用的第二程序指令,其中安全附屬調試應用被設計為調試安全軟件應用,其中安全附屬調試應用被加密,并且其中客戶端,而不是服務器,具有解密安全附屬調試應用所需的私有密鑰的拷貝;及 用以響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤而將安全軟件應用從服務器發(fā)送到客戶端的第一程序指令;并且其中 第一、第二和第三程序指令被存儲在計算機可讀存儲介質上并且經(jīng)由計算機可讀存儲器由處理器執(zhí)行。16.如權利要求15所述的計算機系統(tǒng),還包括: 用以響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤而將安全附屬調試應用從服務器發(fā)送到客戶端的第四程序指令,其中客戶端被啟用來解密安全附屬調試應用和調試安全軟件應用;并且其中 第四程序指令被存儲在計算機可讀存儲介質上并且經(jīng)由計算機可讀存儲器由處理器執(zhí)行。17.如權利要求15所述的計算機系統(tǒng),還包括: 用以響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤而從正在執(zhí)行安全軟件應用的服務器中的處理器生成核心轉儲的第四程序指令;并且其中 第四程序指令被存儲在計算機可讀存儲介質上并且經(jīng)由計算機可讀存儲器由處理器執(zhí)行。18.如權利要求17所述的計算機系統(tǒng),其中核心轉儲包括在錯誤發(fā)生時數(shù)據(jù)高速緩存、指令高速緩存以及處理器的核心內(nèi)的寄存器的內(nèi)容。19.如權利要求15所述的計算機系統(tǒng),還包括: 用以響應于在服務器內(nèi)執(zhí)行安全軟件應用時檢測到錯誤而將遙測數(shù)據(jù)從服務器發(fā)送到客戶端的第四程序指令,其中遙測數(shù)據(jù)描述: 每個第一預定義時間段的計算量,及 每個第二預定義時間段的存儲器訪問量,其中,計算量和存儲器訪問量發(fā)生在執(zhí)行安全軟件應用時發(fā)生錯誤之前的第三預定義時間段期間;并且其中 第四程序指令被存儲在計算機可讀存儲介質上并且經(jīng)由計算機可讀存儲器由處理器執(zhí)行。20.如權利要求15所述的計算機系統(tǒng),還包括: 用以將安全性對象撤銷命令發(fā)送到服務器的第四程序指令,其中安全性對象撤銷命令防止服務器內(nèi)的處理器進一步利用由安全軟件應用使用的數(shù)據(jù);并且其中 第四程序指令被存儲在計算機可讀存儲介質上并且經(jīng)由計算機可讀存儲器由處理器執(zhí)行。
【文檔編號】H04L12/26GK105981333SQ201480067181
【公開日】2016年9月28日
【申請日】2014年10月21日
【發(fā)明人】R·H·伯維伊, R·R·弗萊德朗得, J·R·可里默, J·R·林頓
【申請人】國際商業(yè)機器公司