密码密钥的虚拟化的制作方法

文档序号:6350276阅读:154来源:国知局
专利名称:密码密钥的虚拟化的制作方法
技术领域
本发明一般地涉及在虚拟计算环境中的处理,尤其是在该环境中提供安全性。
背景技术
在虚拟环境中提供安全性的一个方面是保护在密码装置所执行的密码操作中所使用的密码密钥(cryptographic key)。在一个例子中,这些密钥通过加密来保护。例如, 密码密钥被主密钥(master key)加密,提供加密的密码密钥。主密钥被保持在密码装置的安全边界内。加密的密码密钥可以存储在密码装置的安全边界之外,然后用于密码操作中。单个处理器系统具有与其相关联的一组主密钥。也就是说,单个处理器系统对于每种密码密钥具有一主密钥。但是,在分区环境中,对每个区域或分区具有一组主密钥。

发明内容
虽然分区系统中的每个分区具有其自己的一组主密钥,传统上,这些密钥被该分区中的所有虚拟系统共享。如此处所使用的,每个虚拟系统是在虚拟环境中运行的计算系统。其包括例如在像Linux的客户操作系统控制下的资源(例如一个或多个CPU,存储器, I/O等)。这样,术语“客户(guest)”指代虚拟系统。为了提高安全性,希望每个客户具有其自己的一组虚拟主密钥。这样,需要为每个运行于分区中的客户提供单独虚拟密钥的能力。另外,需要虚拟化除主密钥之外的密钥(例如其他密码密钥或其他密钥)的能力。通过提供用于虚拟化密码密钥的计算机程序产品而克服了现有技术的缺点并提供了附加的优势。计算机程序产品包括可由处理电路读取的存储介质,该存储介质存储由处理电路执行来实现一方法的指令。该方法包括,例如,获取密码密钥;和使用操作、密码密钥和掩码产生虚拟密码密钥。关于本发明的一个或多个方面的方法和系统也在此描述并要求保护。另外,关于本发明的一个或多个方面的服务也在此描述并要求保护。附加的特征和优点通过本发明的技术来实现。本发明的其他实施例和方面在此详细描述并被认为是所要求保护的发明的一部分。


在说明书结尾部分的权利要求中,本发明的一个或多个方面作为例子被特别指出并清楚地被要求保护。本发明的上述及其他目的、特征和优点从以下详细描述结合附图来看是显然的,其中图1示出包含并使用本发明一个或多个方面的计算环境的一个例子;图2示出了客户的控制模块的一个例子,包括根据本发明一方面使用的一个或多个客户主密钥掩码;图3示出了根据本发明一方面的提供虚拟密钥的逻辑的一个实施例;
3
图4示出了根据本发明一方面,使用在虚拟密钥下加密的加密密钥的逻辑的一个实施例;并且图5示出了包括本发明的一个或多个方面的计算机程序产品的一个实施例。
具体实施例方式根据本发明的一方面,提供虚拟化密码密钥的能力。在一个特别示例中,用来保护其他密码密钥的主密钥被虚拟化,使得计算环境的分区的每个客户可以拥有其自己的一组主密钥。这组主密钥对于每种要保护的密码密钥(例如AES或DEA)包括一密钥,因此,该组主密钥可以包括一个或多个主密钥。参考图1来描述包含并使用本发明的一个或多个方面的计算环境的一个实施例。 计算环境100包括例如划分到一个或多个分区或区域104(例如,逻辑分区1-N)的中央处理器复合体(CPC) 102,至少一个主机106(例如,控制程序,例如管理程序),一个或多个中央处理器108,以及输入/输出子系统110。每个逻辑分区104可以作为单独的系统来运行。也就是说,每个逻辑分区可以独立地重置,如果有需要,可以初始加载操作系统,并操作不同的程序。在逻辑分区中运行的操作系统或应用程序看起来能访问整个完整的系统,但是实际上只是其一部分可用。中央处理器108是可分配给逻辑分区的物理处理器资源。例如,每个逻辑分区104 包括一个或多个逻辑处理器,其每个表示可动态分配到分区的所有或一部分物理处理器资源。尤其是,物理资源由主机106拥有,并且共享的物理资源由主机分派给在由主机106管理的分区中运行的一个或多个客户112。例如,主机可以在运行于处理器108上的微码中实施或者是执行于机器上的主机操作系统的一部分。在每个逻辑分区中,一个或多个客户(甚至几十万)可以运行,并且每个客户能够运行于特定的虚拟化等级上。例如,如果一个客户运行于主机上(例如LPAR)而非另一客户上,则认为其运行在第一虚拟化等级。但是,如果客户操作系统(例如Linux)运行在一个其他客户操作系统上(例如由国际商业机器公司提供的Z/VM 。z/VM 是纽约阿蒙克市的国际商业机器公司的注册商标。此处所用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。)(参见例如图1的逻辑分区2),则其运行在第二虚拟化等级上。客户可以被分层,层数决定了虚拟化等级(参见例如图1的逻辑分区)。为了提供计算环境中的安全性,在密码操作中使用的密码密钥使用主密钥而被加密。计算环境的每个逻辑分区具有其自己的一组主密钥(也就是对每种要保护的密码密钥一个主密钥)。在一个例子中,每个主密钥使用伪随机产生器随机产生,并存储在硬件系统区域(HSA)的安全部分中。根据本发明的一方面,逻辑分区的每个客户被提供有其自己的虚拟主密钥。这是通过为该逻辑分区取得主密钥并为每个客户将其虚拟化而实现的,如此处所详述的。 在一个实施例中,为了虚拟化例如主密钥的密码密钥,使用掩码。每个客户具有其自己的掩码,并且如图2所示的,该掩码存储在控制块200中。控制块可以包括用于客户的一个或多个掩码。在此处描述的实施例中,被虚拟化的密钥是主密钥,并且因此对于可用于客户的每种主密钥具有一个掩码。如果仅有一种类型的主密钥,那么就仅有一个主密钥掩码。在一个例子中,掩码是一个唯一数值,例如起始于初始点并随着每次使用数字而加一的
4序列数值。在另一个例子中,数值不需要是唯一的,而能够例如是强随机数值,其中重复的几率很小。其他可能也存在。客户的掩码例如由客户运行在其下的操作系统来分配。例如,处于第二虚拟化等级的客户的掩码由处于第一虚拟化等级的客户,例如Z/VM 操作系统分配。客户的掩码被创建该掩码的操作系统置于客户的控制块中。掩码对于客户是不可访问的,并且在客户的使用期限期间(也就是直到客户为IPLed)保留。在一个例子中,为了提供虚拟主密钥,使用主密钥及一个或多个掩码来执行布尔操作,例如异或(或其他操作)。用来创建虚拟主密钥的掩码数量取决于客户的虚拟化等级。例如,如果客户处于第一虚拟化等级,使用一个掩码;处于第二虚拟化等级,使用两个掩码(除了由布尔操作所产生的可能的中间掩码),等等。参考图3进一步详述该处理。参考图3,详细描述了用来提供虚拟密码密钥(例如虚拟主密钥)的逻辑的一个实施例。在一个例子中,该逻辑由计算环境的处理器执行,并且尤其是在其中执行的微代码。 另外,该示例涉及虚拟化主密钥;但是,在其他实施例中,除了主密钥之外的密钥,例如其他密码密钥,可以使用同样的过程来虚拟化。在一个例子中,由微代码产生主密钥。初始地,为了产生虚拟主密钥,在步骤300,确定为其产生密钥的客户的等级。该信息对于运行于中央处理器上的微代码是已知的。如果在询问302中客户的虚拟化等级为一,则在步骤304中,与该客户相关联的掩码与适当的主密钥进行异或,以向客户提供虚拟主密钥。具体地,存储于该客户的控制块(或其他地方)的掩码被获取,并且对掩码与分配给客户在其中执行的分区的主密钥执行XOR操作。XOR的结果是虚拟主密钥,其可以用于加密/解密密码密钥。另外,根据本发明的一方面,还产生虚拟验证模式,其在确定虚拟主密钥是否仍有效的处理中使用。也就是说,由伪随机数产生器产生的验证模式与每个主密钥相关联。验证模式用于检测主密钥的变化。如果产生一新的主密钥,则也产生一新的模式。在一个例子中,为了产生虚拟验证模式,在步骤306,产生虚拟主密钥所使用的相同的掩码与提供给主密钥的验证模式进行异或。该操作的结果是为客户提供虚拟验证模式。尽管在该例子中,用于验证模式的掩码与用于虚拟主密钥的掩码相同,在另一实施例中,掩码可以不同。回到询问302,如果要为其产生虚拟主密钥的客户的等级大于1,则使用取决于客户等级的一定数目的掩码来执行一个或多个异或操作。例如,在步骤308中,获取与该客户相关联的掩码,并且与下一最低等级的客户的掩码进行异或,以提供结果掩码。例如,如果要为其产生虚拟主密钥的客户是第二等级的客户,则该客户的掩码与第一等级客户的掩码进行M)R,以提供结果掩码。类似地,在步骤310,为验证模式而分配给客户的掩码与分配给下一最低等级的客户的验证模式掩码进行异或,以提供用于产生虚拟验证模式的结果掩码。如果步骤308和 310中的掩码相同,该步骤可以跳过。如果在询问312中,没有为其产生虚拟密钥的客户的更多虚拟化等级,则在步骤 304中,被获取用于产生虚拟主密钥的结果掩码与该客户在其中执行的分区的主密钥进行 M)R,以向该客户提供虚拟主密钥。类似地,在步骤306,被获得用于产生虚拟验证模式的结果掩码与分区的验证模式进行M)R,以提供虚拟验证模式。
回到询问312,但是如果有更多的虚拟化等级,则在步骤308重复以下处理来自先前处理的步骤308的结果掩码与在下一最低等级的掩码进行异或,并且如果有必要或需要,在步骤310,来自先前处理的步骤310的结果掩码与用于验证模式的下一最低等级的掩码进行异或。然后如上所述继续处理。在一个例子中,使用虚拟主密钥来加密一密码密钥以提供一加密的密码密钥。为了用主密钥加密,使用编码操作(encipher operation)。例如,通过调用现有密码助理 (也叫做消息安全助理)加密函数来完成该加密,该加密函数使用透明(clear)数据加密密钥来加密数据。微代码通过将用户透明密钥指定为数据并将主密钥指定为透明数据加密密钥来调用该函数。现有函数获取这些输入,并输出加密密钥。任何加密函数都足够。在一个示例中,使用由纽约阿蒙克市的国际商业机器公司提出的Z/Arehiteeture 所提供的加密函数。该函数的一个实施例在2009年2月IBM出版的No. SA22-7832-07的 “z/Architecture Principles of operation”中描述,此处其整体通过引用而被包含。在处理中可以使用结果加密密钥和虚拟验证模式。在一个示例中,在密码函数的处理过程中使用加密密钥和虚拟模式。该处理的一个实施例参考图4来描述。在一个示例中,处理器(例如,在CPU上运行的微代码)执行该逻辑。初始地,在步骤400,在逻辑分区中运行的客户发出对密码操作的请求,并且提供用其自己的虚拟主密钥加密的密码密钥和虚拟验证模式。然后在步骤402,所提供的验证模式与在密码操作期间由微代码使用以上描述的相同过程而为客户产生的虚拟模式相比较。在一个示例中,响应于产生模式,该模式被存储在存储器的安全部分中,例如硬件系统区的安全部分,并被用于比较。如果在询问404中,比较得到不匹配,则步骤406提供一错误。如果指出错误,则这指示用于加密密码密钥的虚拟主密钥发生了变化,并且如上所述要使用新的虚拟主密钥。回到询问404,如果虚拟模式匹配,则在步骤408,在例如解密或加密的密码函数中可以使用客户的加密密钥。这结束了处理。关于使用主密钥的进一步细节在2009年8月31日提交的US序列号为 12/550, 667(案件号 P0U920090070US1),名称为"Conversion of Cryptographic Key ftOtection”的申请中记载,其作为参考在此处整体合并进来。以上详细描述的是用于将分配给特定的分区或区域的主密钥虚拟化,使得每个在该区域中运行的客户可以具有其自己的虚拟主密钥。该虚拟主密钥在需要时产生。一旦产生,它将被使用直到其重新产生(例如,由于IPL等)。虽然此处描述的实施例中产生虚拟主密钥,其他密钥(包括其他密码密钥)也可以以相同的方式被虚拟化。在上述实施例中,每个虚拟系统具有一掩码。虚拟系统可以由多个虚拟中央处理器(或被称为客户中央处理器)构成。在另一实施例中,一掩码可以分配给每个客户中央处理器,并且相同虚拟系统中的客户中央处理器的所有掩码具有相同的值。本领域技术人员应当理解,本发明的方面可以实施为系统,方法或计算机程序产品。因此,本发明的方面可采用完全硬件实施例,完全软件实施例(包括固件,驻留软件,微码等)或结合软件和硬件方面(此处都被一般性称为“电路”,“模块”或“系统”)的实施例的形式。另外,本发明的方面可采用包含在一个或多个计算机可读介质中的计算机程序产
6品的形式,其上包含计算机可读程序代码。可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读存储介质。计算机可读存储介质可以是例如,但不限于电子、磁、光或半导体系统、 装置或设备或前述的任何适当组合。更多计算机可读存储介质的具体示例(非穷举列表) 包括如下具有一个或多个电线的电连接,便携计算机盘,硬盘、随机访问存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPR0M或闪存),光纤,便携光盘只读存储器 (CD-ROM),光存储设备,磁存储设备,或先前所述的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可包含或存储可以与指令执行系统、装置或设备相连接或供其使用的程序。现参考图5,在一个例子中,计算机程序产品500包括,例如一个或多个计算机可读介质502,其上存储有计算机可读程序代码装置或逻辑504,以提供并实现本发明的一个或多个方面。可以使用适当的介质来传送位于计算机可读介质上的程序代码,包括但不限于无线,有线,光纤电缆,RF等或前述的任何适当的组合。用于执行本发明各方面操作的计算机程序代码可以以一个或多个编程语言的任何组合写成,包括面向对象的编程语言,例如Java,Smalltalk, C++或类似的,以及常规过程编程语言,例如“C”编程语言或类似的编程语言。程序代码可完全在用户计算机上执行、 部分地在用户计算机上执行、作为独立的软件包执行、部分地在用户计算机上并部分在远端计算机上执行、或完全在远端计算机或服务器上执行。在后面的方案中,远端计算机可通过任何类型的网络连接到用户计算机,包括局域网(LAN)或广域网(WAN),或连通外部计算机连接(例如使用互联网服务提供商通过互联网)。在此,本发明各方面的描述参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图说明和/或框图。可理解的,流程图和/或框图的每个块,以及在流程图和/或框图中的块的组合可由计算机程序指令完成。这些计算机程序指令可提供给通用计算机的处理器、专用计算机或其它可编程数据处理设备,以产生一机器,使得通过计算机的处理器或其他可编程数据处理装置来执行的指令产生完成在流程图和/或框图块中描述的功能/动作的方法。这些计算程序指令还可以存储在计算机可读介质中,其可指引计算机,其它可编程数据处理装置,或其它设备以特定方式运行,使得存储在计算机可读介质中的指令产生一制造品,包括完成在流程图和/或框图块中描述的功能/动作的指令。计算机程序指令还可装载在计算机、其他可编程数据处理装置或其他设备上以产生一系列在计算机、其他可编程装置或其他设备上完成的操作性步骤,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图块中描述的功能/动作的处理。附图中的流程图和框图描述了根据本发明不同实施例的系统、方法、和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图的每个块可代表代码的模块,段或部分,其包括一个或多个可执行的指令以实现特定逻辑功能。应当注意到,在一些可选的实现中,块中标注的功能可以不按图中所标注的顺序产生。例如,连续示出的两个块事实上可实质上同时执行,或者这些块有时可以按相反的顺序执行,这取决于相关的功能。还应当注意到,框图和/或流程图说明中的每个块,以及框图和/或流程图说明中块的组合可由执行特定功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合实现。除上述之外,可由提供客户环境管理的服务提供商提供、提出、开发、管理、维护本发明的一个或多个方面。例如,服务提供商可创建,维护,支持计算机代码和/或计算机基础结构等,以为一个或多个客户实现本发明的一个或多个方面。作为回报,例如在订购和/ 或约定的情况下,服务提供商可从客户收取费用。另外或可选地,服务提供商可从对一个或多个第三方的广告内容的销售收取费用。在本发明的一个方面中,可以部署应用程序以执行本发明的一个或多个方面。作为一个例子,部署一应用程序包括提供可操作的计算机基础结构以实现本发明的一个或多个方面。作为本发明的另一方面,部署计算机基础结构包括整合计算机可读代码到计算系统中,其中与计算系统结合的代码可以执行本发明的一个或多个方面。作为本发明的另一方面,提供整合计算机基础结构的过程,包括整合计算机可读代码到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能执行本发明的一个或多个方面。虽然以上描述了多个实施例,但是它们仅是例子。例如,不同于那些以上描述的其它计算环境可以包含和使用本发明的一个或多个方面。例如,可以使用非Linux或^]^ 的操作系统。另外,虽然此处描述的是逻辑分区,本发明的一个或多个方面适合其他类型的分区或区域。还可以有更多或更少的分区或区域,并且每个分区可以执行0或更多客户。可以执行若干客户类型,包括不同的操作系统。另外,除主密钥之外的密钥可以被虚拟化。还有,虚拟验证模式是可选的。存在多种其它变形。另外,其它类型的计算环境得益于本发明的一个或多个方面。作为一个例子,环境可包括仿真器(例如软件或其它仿真机制),其中仿真一特别的体系结构(例如包括指令执行,例如像地址转换的体系功能和体系寄存器)或其子集(例如,在具有处理器和存储器的本地计算系统上)。在这样的环境中,仿真器的一个或多个仿真函数可以执行本发明的一个或多个方面,虽然执行仿真器的计算机具有不同于被仿真的能力的体系结构。作为一个例子,在仿真模式中,被仿真的特殊指令或操作被解码,并且建立适当的仿真函数以完成单个的指令或操作。在仿真环境中,主计算机包括例如存储器来存储指令和数据;指令提取单元用于从存储器提取指令并任选地提供本地缓存给所提取的指令;指令解码单元用于接收所提取的指令并且决定所提取指令的类型;以及指令执行单元用于执行指令。执行可以包括将数据从存储器装载到寄存器中;将数据从寄存器存储回存储器;或由解码单元决定,完成某种类型的算术或逻辑操作。在一个例子中,每个单元以软件实现。例如,被单元执行的操作作为仿真软件中一个或多个子例程完成。另外,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少一个通过系统总线直接或间接连接到存储器元件的处理器。存储器元件包括例如,在程序代码实际执行期间采用的本地存储器,大容量存储器,以及为了减少执行期间代码必须从大容量存储器取出的次数而提供暂时存储至少一些程序代码的缓存存储器。输入/输出或I/O设备(包括,但不限于键盘、显示器、指向设备、DASD、磁带、⑶、DVD、拇指驱动器和其他存储介质等)可以与系统直接或通过中介I/O控制器连接。网络适配器还可以连接到系统以使得数据处理系统通过中介私有或公共网络,连接到其它数据处理系统或远端打印机或存储器设备。调制解调器,电缆调制解调器和以太网卡仅是少数几种类型的网络适配器。此处所用的术语是仅是为了描述特定实施例的目的而不是为了限制本发明。如此处所用的,单数形式“一个”,“一”和“该”还旨在包括复数形式,除非上下文另外明确指明。还应当理解,术语“包括”和/或“包含”用在本说明书中,表示所声明特征、整数、步骤、 操作、元件和/或组件的存在,但并不排除存在或增加一个或多个其它特征、整数、步骤、操作、元件和/或它们的组。在以下权利要求中出现的所有装置或步骤加功能元素的相应结构、材料、动作和等同物,意指包括与特别要求保护的其他要求保护的元素相结合来执行功能的任何结构、 材料或动作。本发明的描述为了说明和描述的目的,而不为了穷举或以所公开的形式限制本发明。很多改进和变形对于本领域技术人员来说是显然的,而不背离本发明的范围和精神。实施例的选择和描述是为了最好地解释本发明和实际应用的原理,并且为了使得本领域其他技术人员能够理解本发明具有不同改进的不同实施例也适于预期的特殊应用。
权利要求
1.一种用于虚拟化密码密钥的方法,包括 获取密码密钥;以及使用操作、密码密钥和掩码产生虚拟密码密钥。
2.根据权利要求1的方法,其中所述操作包括异或操作,并且其中所述产生包括执行密码密钥和掩码之间的异或操作以提供该虚拟密码密钥。
3.根据权利要求2的方法,其中在异或操作中使用的掩码取决于为其产生虚拟密码密钥的客户的虚拟化等级。
4.根据权利要求3的方法,其中响应于客户的第一虚拟化等级,掩码包括为该客户产生的掩码。
5.根据权利要求3的方法,其中响应于虚拟化等级大于1,掩码是通过对一定数目的掩码执行一个或多个异或操作而获取的结果掩码,其中所述数目取决于虚拟化等级。
6.根据权利要求1的方法,其中虚拟密码密钥是虚拟主密钥,并且该方法还包括创建可用来证实虚拟主密钥的虚拟验证模式。
7.根据权利要求6的方法,其中所述创建包括使用另一操作、验证模式和另一掩码来创建虚拟验证模式。
8.根据权利要求7的方法,其中所述另一操作包括异或操作,而所述另一掩码与所述掩码相同。
9.根据权利要求7的方法,其中所述另一操作和所述另一掩码中的至少一个分别不同于所述操作和所述掩码。
10.根据权利要求1的方法,其中所述掩码是唯一数值,其在客户使用虚拟密码密钥的期限期间是唯一的。
11.一种包括适合于执行根据前述任何方法权利要求的方法的所有步骤的系统。
12.—种计算机程序,包括执行根据前述任何方法权利要求的方法的所有步骤的指令, 所述计算机程序在计算机系统上执行。
全文摘要
虚拟化密码密钥以提供一虚拟密码密钥。为了虚拟化密钥,对密钥和掩码使用例如异或操作的操作。虚拟密钥可被虚拟环境的客户用在密码操作中。
文档编号G06F9/445GK102483699SQ201080038488
公开日2012年5月30日 申请日期2010年8月24日 优先权日2009年8月31日
发明者P·叶其中 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1