安全应用调试的制作方法
【专利摘要】方法、系统和/或计算机程序产品启用软件应用的安全调试。服务器从客户端接收安全软件应用。安全应用被设计为在服务器内执行,并且对由安全软件应用使用的数据的访问受安全性对象的保护,其中安全性对象允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器中未受保护地退出。服务器还从客户端接收安全附属调试应用。安全附属调试应用被设计为调试安全应用,但是不能被服务器使用。如果在服务器内执行安全软件应用时存在错误,则服务器将安全软件应用发送到客户端,其中利用安全附属调试应用对安全软件应用进行调试。
【专利说明】
安全应用调试
技术领域
[0001]本公开涉及计算机领域,并且具体地涉及网络上的计算机。还更具体地,本公开涉及通过网络上的计算机调试计算机应用。
【背景技术】
[0002]计算机网络通常包括服务器计算机和一个或多个客户端计算机。服务器计算机通常代表客户端计算机处理操作,诸如执行应用、提供存储器和计算资源等。由于服务器和客户端之间的不安全连接、不信任能够访问服务器的客户等,由服务器执行的这些操作通常需要客户端和服务器之间高级别的信任,这可能得到或者可能得不到保证,尤其在调试操作期间。
【发明内容】
[0003]方法、系统和/或计算机程序产品启用软件应用的安全调试。服务器从客户端接收安全软件应用。安全应用被设计为在服务器内执行,并且访问由安全软件应用使用的数据受安全性对象的保护,其中安全性对象允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器中未受保护地退出。服务器还从客户端接收安全附属(sidecar)调试应用。安全附属调试应用被设计为调试安全应用,但是不能被服务器使用。如果在服务器内执行安全软件应用时存在错误,则服务器将安全软件应用发送到客户端,在客户端中利用安全附属调试应用对安全软件应用进行调试。
【附图说明】
[0004]相信是本发明特点的新颖特征在所附权利要求中阐述。但是,当结合附图阅读时,本发明本身,以及优选的使用模式、其更多目标和优点,将通过参考以下对说明性实施例的详细描述得到最好的理解,附图中:
[0005]图1绘出了可以被本发明利用的示例性计算机系统和/或网络;
[0006]图2示出了根据本发明一种实施例的、网络中的服务器和客户端之间的功能关系;
[0007]图3绘出了在网络上的服务器内的数据保护的附加细节;
[0008]图4示出了被发送到在网络上的服务器中使用的处理器内的高速缓存的受保护数据的附加细节;
[0009]图5绘出了存储在服务器内受保护存储器区域内的受保护数据的附加细节;
[0010]图6示出了处理器内核心的附加细节;及
[0011]图7是由一个或多个处理器采用来安全地调试客户端设备中的软件应用的示例性步骤的高层流程图。
【具体实施方式】
[0012]所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以采用以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以采用在一个或多个计算机可读介质中的计算机程序产品的形式,在该计算机可读介质上包含计算机可读的程序代码。
[0013]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一一但不限于一一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(R0M)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0014]计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一一但不限于一一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0015]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一一但不限于一一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0016]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smal ltalk、C++等,还包括常规的过程式程序设计语言一诸如“C"语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0017]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0018]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0019]计算机程序指令也可以被加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,以产生计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中所指定的功能/动作的过程。
[0020]现在参考附图,并且尤其参考图1,其中绘出了本发明可以利用的示例性计算机102的框图。注意,为计算机102示出的示例性体系架构中的一些或全部可以被软件部署服务器150和/或(一个或多个)其它计算机152加以利用。
[0021]计算机102包括处理器103,它可以利用一个或多个处理器,其中每个处理器具有一个或多个处理器核心104。处理器103耦合到系统总线106。驱动/支持显示器109的视频适配器108也耦合到系统总线106。系统总线106经由总线桥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能够经由网络128利用耦合到系统总线106的网络接口130与软件部署服务器150进行通信。网络128可以是诸如互联网的外部网络,或者是诸如以太网或虚拟专用网(VPN)的内部网络。
[0023]硬盘驱动器接口 132也耦合到系统总线106。硬盘驱动器接口 132与硬盘驱动器134接口。在优选的实施例中,硬盘驱动器134填充也耦合到系统总线106的系统存储器136。系统存储器被定义为计算机102中的易失性存储器的最低级别。这种易失性存储器包括附加的更高级别的易失性存储器(未示出),包括但不限于,高速缓存存储器、寄存器和缓冲器。填充系统存储器136的数据包括计算机102的操作系统(0S)138和应用程序144。
[0024]OS 138包括外壳140,用于提供对诸如应用程序144的资源的透明用户访问。一般而言,外壳140是提供用户与操作系统之间的解释器和接口的程序。更具体而言,外壳140执行被输入到命令行用户界面或来自文件的命令。因此,也被称为命令处理器的外壳140—般而言是操作系统软件层次结构的最高层次,并且用作命令解释程序。外壳提供系统提示、解释通过键盘、鼠标或其它用户输入介质输入的命令、并且将解释的(一个或多个)命令发送到操作系统的适当的较低级别(例如,内核142)进行处理。注意,虽然外壳140是基于文本、面向行的用户界面,但是本发明将同样很好地支持其它用户接口模式,诸如图形、语音、手势等。
[0025]如所绘出的,OS 138还包括内核142,其包括用于OS 138的较低级别的功能,包括提供由OS 138的其它部分以及应用程序144所需的基本服务,包括存储器管理、进程和任务管理、盘管理、以及鼠标和键盘管理。
[0026]应用程序144包括呈现器,以示例性的方式被示为浏览器146。浏览器146包括程序模块和指令,其启用万维网(WWW)客户端(即,计算机102),以利用超文本传输协议(HTTP)消息向互联网发送和接收网络消息,从而使得能够与软件部署服务器150和其它所描述的计算机系统进行通信。
[0027]在计算机102的系统存储器(以及软件部署服务器150的系统存储器)中的应用程序144还包括安全应用调试逻辑(SADL) 148 JADL 148包括用于实现下面在图2_7中所描述的过程的代码。在一种实施例中,计算机102能够从软件部署服务器150下载SADL148,包括以按需的方式下载。还要注意,在本发明的一种实施例中,软件部署服务器150执行与本发明相关联的所有功能(包括执行SADL 148),从而使得计算机102免于必须使用其自己的内部计算资源来执行SADL 148。
[0028]在计算机102中绘出的硬件元件不是旨在进行穷尽,而是代表性地突出由本发明所需的基本部件。例如,计算机102可以包括可替代的存储器存储设备,诸如盒式磁带、数字多功能盘(DVD)、伯努利(Bernoulli)盒式磁带,等等。这些和其它变化旨在本发明的精神和范围之内。
[0029]现在参考图2,在系统200中给出了根据本发明一种实施例的、网络中的服务器和客户端之间的功能关系。假定在图1中绘出的计算机102表示图2中的服务器1(202)或服务器2(204),并且图1中来自图1的(一个或多个)其它计算机152表示在图2中的客户端计算机206和客户端计算机208。客户端计算机206被用户A使用,其利用用户A集成开发环境210,而客户端208被用户B使用,其利用用户B IDE 212。如计算机开发和调试领域技术人员已知的,IDE是提供用来创建、修改、编辑和/或管理软件应用的资源的软件应用。IDE通常包括源代码文本编辑器和编译器,它们经由(例如,在诸如图1中示出的显示器109的显示器上的)用户界面呈现给代码开发人员(即,软件工程师)。
[0030]在系统200中,服务器202和服务器204是云214的一部分,云214是连接的资源(包括服务器202和服务器204)的网络。假定用于示例性目的,云214由服务提供商管理,其中服务提供商提供代表服务提供商的客户/客户端执行软件程序所需的资源(例如,处理服务器、存储器存储等)。例如,假定客户端计算机206的用户期望让应用Al(216)(即,“安全软件应用”)自己在服务器202上运行。还假定应用216是加密的,但是服务器202可以访问可解密应用216的私有密钥Al (218)。如所绘出的,被输入到应用216中的数据作为数据A2来自客户端计算机206(220)。但是,为了在由服务器202代表拥有客户端计算机206的客户执行的操作中提供附加的安全性层,数据220以受保护的形式从客户端计算机206被发送到服务器202。
[0031]现在参考图3,其中给出了在网络上的服务器内的数据保护的附加细节。如上所述,应用216可以被加密。因此,私有密钥218可以从安全性管理器302(例如,使用图1中绘出的(一个或多个)其它计算机152中的另一个计算机的服务器和/或服务)被发送到服务器202。此外,安全性管理器302可以将安全性对象222发送到服务器202。安全性对象222需要从服务器202内(或由服务器202使用)的存储器304访问应用(例如,应用216)或受保护数据(例如,受保护数据220)。存储器304可以是系统存储器、L3高速缓存存储器、或者甚至由服务器202使用的永久性存储器(例如,闪存驱动器、硬盘驱动器等)。现在假定服务器202内的操作系统(0S)306想要服务器202中的处理器303使用受保护数据220作为对应用216的输入。不是信任OS 306来直接访问存储器304中的受保护数据220,而是必须使用安全性对象222,如在图4中以示例性方式绘出的。在一种实施例中,安全性对象222是执行本文所描述的过程以访问受保护数据220的可编译和/或可执行的软件代码。在另一种实施例中,安全性对象222是凭证、令牌、密钥或由可执行程序使用以提供对本文所描述的受保护数据220的访问的其它对象。
[0032]现在参考图4,其中给出了在网络上的服务器202中受保护数据220的附加细节。假定受保护数据220被加密。但是,根据本发明的一种实施例,不是在把受保护数据发送到高速缓存(例如,L2高速缓存616-参见图6)之前将其解密,而是受保护数据220以其加密的形式被发送到L2高速缓存416。以这种加密的形式(如最初从客户端206所接收到的(参见图2)),应用216(参见图3)无法使用受保护数据220作为输入。但是,如在图4中所绘出的,安全性对象222能够在处理器303中解密受保护数据220以便生成解密数据420,解密数据420然后可以被发送到处理器303的核心404(例如并且更具体而言,到LI数据高速缓存620-参见图6)用于执行。再次注意,这种解密在处理器303内发生,并且解密数据只在处理器303的范围内被允许。即,解密数据420不能离开处理器303的范围,而是在被发送到存储器304或在处理器303的外部的其它资源之前必须被重新加密。由于解密受保护数据220所采取的所有动作在处理器303内发生,因此处理器303的用户(例如,服务器202的拥有者(参见图2-3))不能以可用的/解密形式访问由客户端计算机206的拥有者提供的潜在敏感的数据。
[0033]虽然图4绘出了通过使用加密保护来自服务器202的拥有者的敏感数据的过程,但是图5绘出了用于通过将数据存储在服务器内受保护存储器区域内来保护数据的过程。例如并且参考图5,假定0S306想要访问存储器304中的受保护未加密数据520。顾名思义,受保护未加密数据520是未加密的。但是,它被存储在受保护的存储器304的区域中(S卩,受保护存储器区域502)。在没有执行安全性对象522的情况下,访问受保护存储器区域502是不可能的。安全性对象522类似于在图3中示出的安全性对象222,在这一点上,它可以通过安全性管理器302发出。但是,不是提供解密,而是安全性对象522提供对受保护存储器区域502的访问。即,安全性对象522包含由存储器管理器(未示出)允许操作系统306访问受保护存储器区域502所需要的安全性算法/密钥/密码。如果服务器202具有安全性对象522的拷贝(即,它已被从图3中示出的安全性管理器302接收到),则受保护未加密应用520被加载到L2高速缓存516(或其它操作存储器)中,用于被处理器303中的核心504使用。注意,受保护未加密数据520仍然受到保护以避免经由(未受保护的)操作系统306的恶意攻击,这是由于它I)不能从处理器303和/或存储器304的外部访问,和2)只能通过使用安全性对象522来访问。
[0034]注意,虽然存储器304和受保护存储器区域502在图5中被绘出为在处理器303的外部,但是在一种实施例中,存储器304和受保护存储器区域502实际上是在处理器303之内(内部)。这提供了对受保护未加密数据520的附加保护,使得它只可以在处理器303之内被访问和利用。
[0035]还应注意,虽然为了清楚起见,在图3中示出的存储器304只绘出受保护数据220被包含在存储器304之内,但是应该理解,在一种实施例中,存储器304 (例如,系统存储器)也将包含OS 306、安全性对象222、应用Al(216)和/或私有密钥Al(218),如对于实现本文所公开的本发明可能需要的。
[0036]现在返回到图2,假定由服务器202运行的应用失败。如上所述,客户端206的拥有者可能不信任服务器202访问其数据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的错误发生时(例如,程序“崩溃停止运行、或者产生非致命错误消息、或者开始产生已知为错误的输出(例如,是以不正确的格式,诸如输出数字而不是文本等)、或者开始使用比所预期的更多的CPU/存储器资源等),服务器204正在运行应用B2234(即,另一个“安全应用软件”)。如同上述应用216,应用234在使用前由私有密钥B2(236)解密,并且对数据B2(238)的访问需要使用安全性对象(未示出,但类似于本文所描述的安全性对象A2( 222))。
[0038]当应用234崩溃时,包括应用B2(234)和附属B2(242)(类似于本文所讨论的附属226)的包240从服务器204被发送到客户端计算机208中的用户B IDE 212。注意,附属242受对称密钥B2(244)(即,用于加密的公开密钥和用于解密的私有密钥(例如,私有密钥B3246)的密钥对)的保护。在一种实施例中,应用234还受对称密钥244的保护。为了利用附属242,客户端计算机208首先利用对客户端计算机208而不是服务器204可访问的私有密钥B3(246)解密附属242。因此,客户端计算机208能够调试应用234,但是服务器204不能。
[0039]在一种实施例中,发送到客户端计算机的信息的包240包括核心转储248。核心转储248包括在故障/错误/崩溃时由应用(例如,应用234)使用的存储器的记录状态。核心转储248包括程序计数器、堆栈指针、OS标志等的内容。在一种实施例中,核心转储具体包括以下在图6中绘出和描述的LI指令高速缓存618、L1数据高速缓存620、L2高速缓存616、CRR680,LCR 682,GPR 684和/或FPR688的内容。在一种实施例中,核心转储包含与处理的较高级别描述有关的信息(例如,指向发生错误处的源和/或目标代码的行的指针、由错误引发的标志等)。
[0040]在一种实施例中,发送到客户端计算机208的信息的包240包括遥测数据250。遥测数据250描述了在崩溃时服务器内的处理器和/或核心的操作。这种操作数据的例子包括,但不限于,处理器/核心的带宽(即,每单位时间多少计算被执行)、存储器访问(即,由处理器在预定的时间段期间做出的存储器访问量)等。
[0041]虽然利用附属226或附属242的过程可能需要在使用之前解密附属226或附属242,但是在一种实施例中,附属226或附属242受安全性对象的保护,诸如本文描述的安全性对象222或安全性对象522。即,不是允许客户端(例如,客户端计算机206或208)内的操作系统在解密之后直接访问附属226或附属242,而是一种实施例要求客户端内的操作系统经过安全性对象(例如,222/522),使得附属226或附属242只在客户端计算机中的处理器内可访问。
[0042]现在参考图6,其中给出了如分别在图1、4和5中绘出的核心104/404/504,以及由诸如图2中的客户端计算机206和/或208的客户端计算机使用的处理器核心的附加示例性细节。核心104包括芯片上多级高速缓存层次结构,其包括统一的二级(L2)高速缓存616和分为两部分的分别为一级(LI)指令(I)和数据(D)高速缓存618和620。如对本领域技术人员众所周知的,高速缓存616、618和620为与系统存储器(例如,在图1中示出的系统存储器136)中的存储器位置对应的高速缓存行提供低延迟访问。
[0043]响应于位于指令获取地址寄存器(IFAR)630中的有效地址(EA),从Ll1-高速缓存618中获取用于处理的指令。在每个周期期间,新的指令获取地址可以从以下三个来源之一加载到IFAR 630中:提供从条件分支指令的预测产生的推测性目标路径和连续地址的分支预测单元(BPU)636、提供清除和中断地址的全局完成表(GCT)638、以及提供从预测的条件分支指令的解析产生的非推测性地址的分支执行单元(BEU)692。与BPU 636关联的是分支历史表(BHT)635,其中记录的是条件分支指令的解析,以在将来的分支指令的预测中提供帮助。
[0044]诸如IFAR630内的指令获取地址的有效地址(EA)是由处理器生成的数据或指令的地址。EA指定段寄存器和段内的偏移信息。为了访问存储器中的数据(包括指令),EA通过一级或多级转换被变换为与其中存储数据或指令的物理位置相关联的实际地址(RA)。
[0045]在核心104内,有效到实际地址的转换由存储器管理单元(MMU)和相关联的地址转换工具来执行。优选地,提供单独的MMU用于指令访问和数据访问。在图6中,为清楚起见,示出了单个MMU 611,只示出到指令存储单元(ISU)601的连接。但是,本领域技术人员应该理解,MMU 611优选地也包括到加载/存储单元(LSU)696和698以及用于管理存储器访问所需的其它部件的连接(未示出)。丽1] 611包括数据转换后备缓冲器(DTLB)612和指令转换后备缓冲器(ITLB)613。每个TLB包含最近引用的页表条目,其被访问以便将数据(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经由1-高速缓存请求总线624提供RA到L2高速缓存616作为请求地址。这种请求地址也可以基于最近的访问模式由L2高速缓存616内的预取逻辑来生成。响应于请求地址,L2高速缓存616输出可能在通过了可选的预解码逻辑602之后经由1-高速缓存重新加载总线626被加载到预取缓冲器(PB)628和Ll1-高速缓存618中的指令的高速缓存行。
[0047]一旦由IFAR 630中的EA指定的高速缓存行位于Ll1-高速缓存618中,Ll1-高速缓存618就将高速缓存行输出到分支预测单元(BPU)636和指令获取缓冲器(IFB)640两者。BPU636为分支指令扫描指令的高速缓存行并且如果存在的话,预测条件分支指令的结果。在分支预测之后,BPU 636向IFAR 630提供推测性指令获取地址,如以上所讨论的,并且将预测传递到分支指令队列664,使得当条件分支指令随后被分支执行单元692解析时,可以确定预测的准确性。
[0048]IFB 640临时缓冲从Ll1-高速缓存618接收到的指令的高速缓存行,直到指令的高速缓存行可以被指令转换单元(ITU)642转换。在示出的核心104的实施例中,ITU 642将来自用户指令集体系架构(UISA)指令的指令转换为可能不同数量的可被核心104的执行单元直接执行的内部ISA(IISA)指令。这种转换可以,例如,通过引用存储在只读存储器(ROM)模板中的微码来执行。在至少一些实施例中,UISA到IISA转换产生与UISA指令不同数量的IISA指令和/或与对应的UISA指令不同长度的IISA指令。结果得到的IISA指令然后被全局完成表638分配给指令组,其成员被允许相对于彼此不按顺序地进行分派和执行。全局完成表638跟踪对于其执行尚未被至少一个相关联的EA—其优选地是指令组中最老指令的EA—完成的每个指令组。
[0049]在UISA到IISA指令转换之后,指令可能不按顺序地、基于指令类型被分派到锁存器644、646、648和650中的一个。即,分支指令和其它条件寄存器(CR)修改指令被分派到锁存器644,定点和加载存储指令被分派到锁存器646和648中的任一个,并且浮点指令被分派至IJ锁存器650。然后由CR映射器652、链接和计数(LC)寄存器映射器654、异常寄存器(XER)映射器656、通用寄存器(GPR)映射器658和浮点寄存器(FPR)映射器660当中适当的一个给每个需要重命名寄存器临时存储执行结果的指令分配一个或多个重命名寄存器。
[0050]分派的指令然后被临时放置在CR发布队列(CRIQ)662、分支发布队列(BIQ)664、定点发布队列(FXIQ)666和668以及浮点发布队列(FPIQ)670和672当中合适的一个中。从发布队列662、664、666、668、670和672中,只要观察到数据依赖性和反依赖性,指令就可以机会性地发布到处理器103的执行单元(在图1中示出)用于执行。但是,指令被维护在发布队列662-672中,直到指令的执行完成并且如果存在结果数据的话,则在有任何指令需要被重新发出的情况下,结果数据被写回。
[0051]如所示出的,核心104的执行单元包括执行子部件603,其包括用于执行CR-修改指令的CR单元(CRU)690、用于执行分支指令的分支执行单元(BEU)692、用于执行定点指令的二个定点单元(FXU)694和605、用于执行加载和存储指令的两个加载存储单元(LSU)696和698、以及用于执行浮点指令的两个浮点单元(FPU)606和604。每个执行单元690-604优选地被实现为具有许多流水线阶段的执行流水线。
[0052]在执行单元690-604之一内执行期间,如果存在的话,指令从耦合到执行单元的寄存器文件内的一个或多个体系架构化和/或重命名寄存器中接收操作数。当执行CR-修改或CR从属指令时,CRU 690和BEU 692访问CR寄存器文件680,其在优选实施例中包含CR和许多CR重命名寄存器,每个都包括多个由一位或多位形成的不同字段。在这些字段当中的是分别指示值(通常是指令的结果或操作数)小于零、大于零或等于零的LT、GT和EQ字段。链接和计数寄存器(LCR)文件682包含计数寄存器(CTR)、链接寄存器(LR)和重命名寄存器,BEU692通过其每个也可以解析条件分支以获得路径地址。被同步的通用寄存器文件(GPR)684和686复制寄存器文件,并且存储由FXU 694和605以及LSU 696和698访问和产生的定点和整型值。注意,类似GPR 684和686的浮点寄存器文件(FPR)688也可以被实现为同步寄存器的重复集合,包含由FPU606和604执行浮点指令和由LSU 696和698执行浮点加载指令产生的浮点值。
[0053]在执行单元完成指令的执行之后,执行单元通知GCT638,其以编程的顺序调度指令的完成。为了完成由CRU 690,FXU 694和605或FPU 606和604中的一个执行的指令,GCT638向执行单元发出信号,其中如果存在的话,执行单元将结果数据从分配的(一个或多个)重命名寄存器写回到适当的寄存器文件中的一个或多个体系架构化的寄存器。然后,指令从发布队列中删除,并且一旦其指令组内的所有指令都已完成,它就从GCT 638中删除。但是,其它类型的指令以不同的方式完成。
[0054]当BEU692解析条件分支指令并且确定应采取的执行路径的路径地址时,路径地址与由BPU 636预测的推测性路径地址进行比较。如果路径地址匹配,则不需要进一步处理。但是,如果计算出的路径地址与预测的路径地址不匹配,则BEU 692向IFAR 630提供正确的路径地址。在任一情况下,分支指令然后可以从BIQ 664中删除,并且当在同一指令组中的所有其它指令都已执行完成时,从GCT 638中删除。
[0055]在执行加载指令之后,通过执行加载指令计算出的有效地址通过数据ERAT(未示出)被转换为实际地址,并且然后提供给LlD-高速缓存620作为请求地址。这时,加载指令从FXIQ 666或668中删除,并且放置在加载重新排序队列(LRQ)609中,直到所指示的加载被执行。如果请求地址没有在LlD-高速缓存620中,则请求地址被放置在加载缺失队列(LMQ)607中,从中,所请求的数据从L2高速缓存616中检索,并且如果失败,则从另一个核心104或从系统存储器中检索。LRQ 609监听独占式访问请求(例如,具有修改意图的读取)、在互联架构(未显示)上针对运行中的加载进行清除或杀死,并且如果发生命中,则取消并重新发出加载指令。存储指令类似地利用用于存储的有效地址在执行存储指令之后被加载到其中的存储队列(STQ)610来完成。从STQ 610中,数据可以被存储到LlD-高速缓存620和L2高速缓存616中的任一个或两者。
[0056]注意,处理器的状态包括在特定时间的存储的数据、指令和硬件的状态,并且在本文中被定义为是“硬”或“软”的。“硬”状态被定义为在体系架构上需要处理器从其进程中的当前点执行进程的处理器内的信息。作为对比,“软”状态被定义为将提高进程的执行效率,但不需要实现在体系架构上正确的结果的处理器内的信息。在图6的核心104中,硬状态包括用户级寄存器一诸如CRR 680、LCR682、GPR 684和686、FPR 688以及主管级寄存器651 —的内容。核心104的软状态既包括“性能关键”信息,诸如LU-高速缓存618、L1D-高速缓存620的内容,诸如DTLB 612和ITLB 613的地址转换信息,又包括不太重要的信息,诸如BHT635和L2高速缓存616的内容的全部或部分。因此,这些寄存器的内容是描述处理器核心104的实时当前体系架构状态寄存器的固定值。
[0057]因此,在一种实施例中,在图2中绘出的核心转储248的内容包含核心的“硬”状态和/或“软”状态,如以上所描述/定义的。
[0058]在本发明的一种实施例中,解码/解密数据被直接加载到图6中绘出的LlD-高速缓存620中,从而绕过LSU 696/698,STQ 610等。在一种实施例中,解密数据420被发送到在图6中绘出的L2高速缓存616,从中,它被分派到相应的执行单元。
[0059]现在返回到图3,如上所述,安全性管理器302是除其它功能之外还创建安全性对象222的服务器/服务(例如,利用在图1中绘出的(一个或多个)其它计算机152中的一个或多个)。在一种实施例中,每个安全性对象特定于特定的数据。即,第一安全性对象可以被设计为解密第一受保护数据;第二安全性对象可以被设计为解密第二受保护数据;等等。这允许对哪些受保护数据可以被解密/启用以被服务器和/或客户端使用进行精细粒度级别的控制。
[0060]再次注意,在图4中,在一种实施例中,受保护数据220是不可用的,直到它在处理器303的内部,其中它利用安全性对象222被转换为其可使用的形式。这确保了受保护数据220的使用不能在不使用安全性对象222的情况下发生,其中安全性对象222的使用必须在处理器303的内部(之内)发生。
[0061]现在参考图7,其绘出了由一个或多个处理器采用来安全地启用软件应用的调试的示例性步骤的高层流程图。在启动器方框702之后,服务器从客户端接收安全软件应用(方框704)。安全应用被设计为在服务器中执行。但是,对由安全软件应用使用的数据的访问受安全性对象的保护,这允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器未受保护地退出。
[0062]如在方框706中所描述的,服务器从客户端接收安全附属调试应用。安全附属调试应用被设计为调试安全应用。在一种实施例中,安全附属调试应用被加密,使得客户端,但不是服务器,具有解密安全附属调试应用所需的私有密钥的拷贝。
[0063]如在查询方框708中所描述的,做出关于当在服务器内执行安全软件应用时是否已发生执行错误(例如,崩溃、故障等)的查询。如在方框710中所描述的,响应于检测到当在服务器内执行安全软件应用时发生了错误,安全软件应用从服务器传送到客户端,从而允许客户端调试安全软件应用。该过程在终止器方框712处结束。
[0064]在本发明的一种实施例中,响应于在服务器内执行安全软件应用时检测到错误,安全附属调试应用从服务器发送到客户端(在客户端还没有调试安全软件应用所需的安全附属调试应用的拷贝的情况下)。
[0065]在本发明的一种实施例中,响应于在服务器中执行安全软件应用时检测到错误,从正在执行安全软件应用的服务器中的处理器生成核心转储,然后将其从服务器发送到客户端。在一种实施例中,这种核心转储包括在错误发生时数据高速缓存、指令高速缓存、以及处理器的核心内的寄存器的内容。在一种实施例中,这种核心转储在从服务器发送到客户端之前被加密。
[0066]在本发明的一种实施例中,响应于在服务器内执行安全软件应用时检测到错误,遥测数据从服务器发送到客户端。在一种实施例中,这种遥测数据描述:每第一预定义时间段的计算量、以及每第二预定义时间段的存储器访问量,其中,计算量和存储器访问量发生在执行安全软件应用时发生错误之前的第三预定义时间段期间。
[0067]在本发明的一种实施例中,安全性对象撤销命令被发送到服务器,其中安全性对象撤销命令防止服务器内的处理器进一步利用由安全软件应用所需的数据。例如并且再次参考图3,假定服务器202正在利用安全性对象222访问需要输入到应用216的受保护数据220。安全性管理器302可以通过向服务器202发送安全性对象撤销命令308来停止这一过程,其阻止OS 306利用安全性对象222。即,假定每次受保护数据220通过使用安全性对象222被访问,则只有有限量的数据(例如,行、页、块、堆等)可以在安全性对象222必须再次被调用(以访问下一行/页/块/等)之前被访问。因此,通过禁用安全性对象222,没有新的数据可以从存储器304中被访问。
[0068]类似地,私有密钥撤销命令310可以被发送到客户端计算机208(参见图2),从而阻止使用附属242来调试应用234。这种通过私有密钥撤销命令310阻止附属242可以通过破坏私有密钥246来实现,从而防止附属242的进一步解密。即,假定只有应用234的有限部分可以利用附属242来调试(通过使用私有密钥246)。此后,为了调试应用234的下一部分(例如,代码的下一块、应用234的下一个函数等),附属242必须再次被私有密钥246解密。但是,私有密钥撤销命令310禁用私有密钥246(例如,通过破坏私有密钥246、阻止对私有密钥246的访问等),从而防止对应用234的任何进一步调试。注意,如果附属242只可通过安全性对象(例如,上述222或522)访问,则撤销命令可以从安全性管理器302(参见图3)发布到客户端计算机208,从而选择性地禁用那个安全性对象。
[0069]如现在和本文中所描述的,并且进一步参考图6,在本发明的一种实施例中,服务器包括处理器,处理器包括核心,并且核心包括数据高速缓存。在一种实施例中,安全性对象能够直接将数据推送到LlD-高速缓存620中,从而提供核心内更快的,并且仍然安全的操作。注意,LI表示高速缓存的最低级别,它最先被检查以定位操作数(在数据(D)高速缓存的情况下)或数据(在数据(D)高速缓存的情况下)。如果必需的操作数/数据没有在LI高速缓存中找到(即,“高速缓存缺失”),则下一个最高级别高速缓存存储器(L2高速缓存)被搜索。如果存在L2高速缓存缺失,则下一个最高L3高速缓存(如果系统具有L3级高速缓存)被搜索。如果存在L2/L3高速缓存缺失,则为必需的操作数/数据搜索系统存储器。如果系统存储器不具有所需的操作数/数据(例如,页故障),则为所需的操作数或数据搜索虚拟存储器、永久性存储器(例如,硬盘驱动器)和/或存储器云(例如,存储设备的网络)。
[0070]注意,附图中的流程图和框图显示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续示出的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0071]本文所使用的术语仅仅是为了描述特定的实施例而不是要作为本发明的限制。如本文所使用的,除非上下文明确地另外指出,否则单数形式“一个”和“这个”是要也包括复数形式。还应当理解,当在本说明书使用时,术语“包括”规定所述特征、整数、步骤、操作、元素和/或部件的存在,但是并不排除一个或多个其它特征、整数、步骤、操作、元素、部件和/或其组的存在或添加。
[0072]以下权利要求中所有方式或步骤加功能元素的对应结构、材料、动作及等价物都是要包括用于结合具体所述的其它所述元素执行所述功能的任何结构、材料或行为。已经为了说明和描述的目的给出了本发明的各种实施例的描述,但这不是详尽的或者要把本发明限定到所公开的形式。在不背离本发明范围与精神的情况下,许多修改和变化对本领域普通技术人员都将是显而易见的。实施例的选择和描述是为了最好地解释本发明的原理和实践应用,并使本领域普通技术人员能够理解本发明具有适于预期特定使用的各种修改的各种实施例。
[0073]还要注意,在本公开中描述的任何方法可以通过使用VHDL(VHSIC硬件描述语言)程序和VHDL芯片来实现。VHDL是用于现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似电子设备的示例性设计入门语言。因此,本文所描述的任何软件实现的方法可以通过基于硬件的VHDL程序来仿真,然后被应用到VHDL芯片,诸如FPGA。
[0074]因此,在详细地并且参考其说明性实施例描述本申请的发明的实施例之后,很显然,在不背离所附权利要求所定义的本发明的范围的情况下,修改和变化是可能的。
【主权项】
1.一种启用软件应用的安全调试的方法,所述方法包括: 由服务器从客户端接收安全软件应用,其中安全软件应用被设计为在服务器内执行,其中,对由安全软件应用使用的数据的访问受安全性对象保护,并且其中安全性对象允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器未受保护地退出; 由服务器从客户端接收安全附属调试应用,其中安全附属调试应用被设计为调试安全软件应用,其中安全附属调试应用被加密,并且其中客户端,而不是服务器,具有解密安全附属调试应用所需的私有密钥的拷贝;及 响应于在服务器内执行安全软件应用时检测到错误,将安全软件应用从服务器发送到客户端。2.如权利要求1所述的方法,还包括: 响应于在服务器内执行安全软件应用时检测到错误,将安全附属调试应用从服务器发送到客户端,其中客户端被启用来解密安全附属调试应用和调试安全软件应用。3.如权利要求1所述的方法,还包括: 响应于在服务器内执行安全软件应用时检测到错误,从正在执行安全软件应用的服务器中的处理器生成核心转储;及 将核心转储从服务器发送到客户端。4.如权利要求3所述的方法,其中核心转储包括在错误发生时数据高速缓存、指令高速缓存以及处理器的核心内的寄存器的内容。5.如权利要求3所述的方法,还包括: 在发送到客户端之前加密核心转储。6.如权利要求1所述的方法,还包括: 响应于在服务器内执行安全软件应用时检测到错误,将遥测数据从服务器发送到客户端,其中遥测数据描述: 每个第一预定义时间段的计算量,及 每个第二预定义时间段的存储器访问量,其中,计算量和存储器访问量发生在执行安全软件应用时发生错误之前的第三预定义时间段期间。7.如权利要求1所述的方法,还包括: 将安全性对象撤销命令发送到服务器,其中安全性对象撤销命令防止服务器内的处理器进一步利用由安全软件应用使用的数据。8.—种用于启用软件应用的安全调试的计算机程序产品,所述计算机程序产品包括具有利用其体现的程序代码的计算机可读存储介质,程序代码能被一个或多个处理器读取和执行以执行包括以下的方法: 由服务器从客户端接收安全软件应用,其中安全软件应用被设计为在服务器内执行,其中,对由安全软件应用使用的数据的访问受安全性对象保护,并且其中安全性对象允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器未受保护地退出; 由服务器从客户端接收安全附属调试应用,其中安全附属调试应用被设计为调试安全软件应用,其中安全附属调试应用被加密,并且其中客户端,而不是服务器,具有解密安全附属调试应用所需的私有密钥的拷贝;及 响应于在服务器内执行安全软件应用时检测到错误,将安全软件应用从服务器发送到客户端。9.如权利要求8所述的计算机程序产品,其中所述方法还包括: 响应于在服务器内执行安全软件应用时检测到错误,将安全附属调试应用从服务器发送到客户端,其中客户端被启用来解密安全附属调试应用和调试安全软件应用。10.如权利要求8所述的计算机程序产品,其中所述方法还包括: 响应于在服务器内执行安全软件应用时检测到错误,从正在执行安全软件应用的服务器中的处理器生成核心转储;及 将核心转储从服务器发送到客户端。11.如权利要求10所述的计算机程序产品,其中核心转储包括在错误发生时数据高速缓存、指令高速缓存以及处理器的核心内的寄存器的内容。12.如权利要求10所述的计算机程序产品,其中所述方法还包括: 在发送到客户端之前加密核心转储。13.如权利要求8所述的计算机程序产品,其中所述方法还包括: 响应于在服务器内执行安全软件应用时检测到错误,将遥测数据从服务器发送到客户端,其中遥测数据描述: 每个第一预定义时间段的计算量,及 每个第二预定义时间段的存储器访问量,其中,计算量和存储器访问量发生在执行安全软件应用时发生错误之前的第三预定义时间段期间。14.如权利要求8所述的计算机程序产品,其中所述方法还包括: 将安全性对象撤销命令发送到服务器,其中安全性对象撤销命令防止服务器内的处理器进一步利用由安全软件应用使用的数据。15.—种计算机系统,包括: 处理器、计算机可读存储器和计算机可读存储介质; 用以由服务器从客户端接收安全软件应用的第一程序指令,其中安全软件应用被设计为在服务器内执行,其中,对由安全软件应用使用的数据的访问受安全性对象保护,并且其中安全性对象允许服务器内的处理器访问由安全软件应用使用的数据,但不允许数据从处理器未受保护地退出; 用以由服务器从客户端接收安全附属调试应用的第二程序指令,其中安全附属调试应用被设计为调试安全软件应用,其中安全附属调试应用被加密,并且其中客户端,而不是服务器,具有解密安全附属调试应用所需的私有密钥的拷贝;及 用以响应于在服务器内执行安全软件应用时检测到错误而将安全软件应用从服务器发送到客户端的第一程序指令;并且其中 第一、第二和第三程序指令被存储在计算机可读存储介质上并且经由计算机可读存储器由处理器执行。16.如权利要求15所述的计算机系统,还包括: 用以响应于在服务器内执行安全软件应用时检测到错误而将安全附属调试应用从服务器发送到客户端的第四程序指令,其中客户端被启用来解密安全附属调试应用和调试安全软件应用;并且其中 第四程序指令被存储在计算机可读存储介质上并且经由计算机可读存储器由处理器执行。17.如权利要求15所述的计算机系统,还包括: 用以响应于在服务器内执行安全软件应用时检测到错误而从正在执行安全软件应用的服务器中的处理器生成核心转储的第四程序指令;并且其中 第四程序指令被存储在计算机可读存储介质上并且经由计算机可读存储器由处理器执行。18.如权利要求17所述的计算机系统,其中核心转储包括在错误发生时数据高速缓存、指令高速缓存以及处理器的核心内的寄存器的内容。19.如权利要求15所述的计算机系统,还包括: 用以响应于在服务器内执行安全软件应用时检测到错误而将遥测数据从服务器发送到客户端的第四程序指令,其中遥测数据描述: 每个第一预定义时间段的计算量,及 每个第二预定义时间段的存储器访问量,其中,计算量和存储器访问量发生在执行安全软件应用时发生错误之前的第三预定义时间段期间;并且其中 第四程序指令被存储在计算机可读存储介质上并且经由计算机可读存储器由处理器执行。20.如权利要求15所述的计算机系统,还包括: 用以将安全性对象撤销命令发送到服务器的第四程序指令,其中安全性对象撤销命令防止服务器内的处理器进一步利用由安全软件应用使用的数据;并且其中 第四程序指令被存储在计算机可读存储介质上并且经由计算机可读存储器由处理器执行。
【文档编号】H04L12/26GK105981333SQ201480067181
【公开日】2016年9月28日
【申请日】2014年10月21日
【发明人】R·H·伯维伊, R·R·弗莱德朗得, J·R·可里默, J·R·林顿
【申请人】国际商业机器公司