数据库中加密密钥的保护的制作方法

文档序号:6349139阅读:641来源:国知局

专利名称::数据库中加密密钥的保护的制作方法
技术领域
:本发明涉及数据库中加密密钥的保护。
背景技术
:近年来,已经出现许多身份证盗窃和信用卡欺诈事件,造成的损失高达数亿美元。结果,对抗这些威胁成为处理机密用户数据的任何企业优先考虑的事情。零售商、在线商店、大学和保健机构在加强诸如社会保障号的个人可识别信息(PII)的安全措施。要求处理信用卡数据的商店和服务提供商符合支付卡工业数据安全标准(PCI-DSS)。支付卡工业数据安全标准(PCI-DSS)是由PCI安全标准委员会编写的对于支付卡安全的一组要求,包括对安全性管理、政策、手续、网络架构、软件设计和其它关键保护措施的要求。保护数据并符合PCI-DSS的一种方式是通过对存储数据的数据库使用加密技术。加密对于保护传输中和静止的数据是重要的。通过使用加密,即使入侵者或其它任何威胁回避其它网络安全性控制,并获得对加密数据的访问,在无适当密钥的情况下,数据对该人是不可读的、不可使用的。相应地,需要在符合也许存在的安全性标准,诸如但不限于PCI-DSS,的同时提供密钥加密的鲁棒方法的系统、方法和计算机程序产品。
发明内容简单讲,本发明包括用于保护数据库中的加密密钥的系统、方法、计算机程序产品实施例和其组合以及子组合。一个实施例包括主密钥和双(dual)主密钥,两个都用来使用双重控制和分离(split)知识来对数据库中的加密密钥加密。因此,在任何用户访问加密的数据之前,主密钥和双主密钥必须通过两个单独的实体(例如两个密钥管理员)提供给数据库服务器,因此需要双重控制加密的数据。而且,主密钥和双主密钥是使用必须通过SQL命令单独和独立提供的密码来保护的,因此需要分离知识来访问主密钥和双主密钥。另一实施例包括主密钥和由用户密码导出的密钥加密密钥。在此实施例中,在任何用户访问加密的数据之前,主密钥和导出的密钥必须通过两个实体提供给数据库服务器,因此实现密钥的双重控制。用于主密钥的密码和导出密钥加密密钥的密码必须通过SQL命令单独提供,因此需要密码的分离知识。另一实施例包括通过服务器专用文件(称作主密钥启动文件)提供主密钥和双主密钥的秘密(或密码)。主密钥或双主密钥的所有人可以为主或双主密钥创建自动访问密钥副本。密钥管理员或系统安全官员然后可以配置数据库服务器以在不需要密钥管理员输入密码情况下,自动地访问主和双主密钥。在此实施例中,无论何时当需要主或双主密钥时,数据库服务器从主密钥启动文件中读取主密钥加密密钥或从双主密钥启动文件中读取双主密钥加密密钥,并解密自动访问密钥副本以得到主或双主密钥。以此方式,在任何数据库用户可以访问加密的数据之前,数据库中的加密密钥可以两个实体必须独立提供彼此不知道的密码的方式受到保护。这允许本发明的实施例提供分离知识和密钥的双重控制,允许改进的加密密钥的保护。下面参照附图详细描述本发明的另外的实施例、特征和优点以及本发明的各个实施例的结构和操作。附图并入本文并形成说明书的一部分,图解说明本发明的实施例,并与描述一起进一步用来解释本发明的原理,使相关领域的技术人员能够制造和使用本发明。图1图解说明根据本发明的实施例的示例性数据库管理系统(DBMS)。图2图解说明根据本发明的实施例的密钥管理模块。图3A是图解说明根据本发明的实施例来创建主密钥和双主密钥的流程图。图;3B是图解说明根据本发明的实施例来使用主密钥(和双主密钥)对密钥加密的示例性方法的流程图。图3C是图解说明根据本发明的实施例来使用导出密钥或导出密钥和主密钥对密钥加密的示例性方法的流程图。图3D是图解说明根据本发明的实施例的用于改变密钥加密的示例性方法的流程图。图3E是图解说明根据本发明的实施例的用于以配置的自动主密钥访问来操作数据库服务器的示例性方法的流程图。图4A是图解说明根据本发明的实施例来将主密钥加密密钥写入主密钥启动文件的流程图。图4B是图解说明根据本发明的实施例来解密主密钥自动访问副本的流程图。图5是图解说明根据本发明的实施例来改变主密钥或双主密钥密码的流程图。图6是图解说明根据本发明的实施例来重新生成主密钥或双主密钥的流程图。图7是图解说明根据本发明的实施例的用于丢掉主或双主密钥的示例性方法的流程图。图8图解说明用于实现本发明的实施例的组件的示例性计算机。结合附图通过下文给出的详细描述,本发明的特征和优点将变得更加明显。在图中,相似的附图标记通常表示相同、功能相似和/或结构相似的元件。通常,元件在其中首次出现的附图以相应附图标记的最左边的数字来表示。具体实施例方式尽管在本文中参照用于具体应用的说明性实施例描述了本发明,但应理解本发明并不局限于此。本领域技术人员在本文提供的教导下会认识到在其范围以及本发明会有大量应用的其它领域内的附加修改、应用和实施例。如本文中使用的术语“密钥”指任何形式的秘密信息。举一个例子,密钥可以包括长度取决于加密算法的一串比特位。术语“密钥管理员”根据实施例,指管理密钥和它们的密码的任何实体或人。举一个例子,密钥管理员可以是具有keycustodian_role的用户。keycustodian_role是包含密钥管理,诸如创建加密密钥、改变加密密钥等,所需的特权的系统角色。术语“分离知识”根据实施例,指两个或多个实体分别具有密钥分量的条件,所述密钥分量不单独传送所产生的密码(cryptographic)密钥知识。术语“双重控制”(或“多重控制”)根据实施例,指使用两个(或多个)单独的个人(或实体),(但利用分离知识)一起操作以保护敏感功能或信息,使得没有一个人能够访问或使用材料(诸如密码密钥)的过程。术语“系统安全官员(SSO)”根据实施例,指执行安全相关任务的人。SSO可以访问任何数据库(例如能够检查),但通常对数据库对象没有特殊许可。安全任务包括授予并撤销系统安全官员和密钥管理员角色;管理检查系统;更改密码;添加新注册;锁定和解锁注册帐户;创建和授予用户定义的角色;管理基于网络的安全性;和授予使用设置代理或设置会话授权命令的许可;并设置密码过期间隔。ss0_r0le是给SSO授予特权的系统角色。DBMS概述本发明的实施例可以操作于如图1中所示的示例性客户机/服务器数据库系统100。系统100包括一个或多个客户机110,其通过网络120与服务器130通信。数据库管理系统(DBMS)140驻存于服务器130中。注意,示例性客户机/服务器数据库系统100示于图1中,在本文中只出于图解说明而不是限制的目的来进行讨论。本发明并不局限于图1的示例。操作中,客户机110通过向DBMS140发布SQL语句将数据存储到数据库表150的行155中,或从数据库表150的行155中检索数据。从客户机110接收的SQL语句被DBMS140的查询引擎160处理。SQL是众所周知的,在许多可获得的公开的文献中有描述,包括由美国国家标准协会以美国国家标准ANSI/IS0/IEC9075:1992出版的InformationTechnology-DatabaseLanguages-SQL,,,其通过弓丨用全文合并于此。在一个实施例中,查询引擎160包括解析器161、标准器163、编译器165、查询优化器166、代码生成器167、执行单元169和访问方法170,现在大致对它们进行描述。从客户机110接收的SQL语句传送到解析器161,解析器将该语句转换成查询树,查询树是代表为系统方便选择的格式的查询分量的二进制树形数据结构。在这方面,解析器161使用众所周知的解析方法(例如递归下降解析)。查询树通过标准器163标准化。标准化包括例如去掉冗余数据。此外,标准器163可以执行误差校验,诸如确认出现在查询中的表名和列名是有效的(例如,可用且适应彼此)。标准器163还可以查询存在的任何引用完整性约束,并把它们添加到查询中。在标准化之后,查询树传送到编译器165,编译器165包括查询优化器166和代码生成器167。查询优化器166负责优化查询树。在一个实施例中,查询优化器166执行基于成本的分析以用来制定查询执行计划。查询优化器166将例如选择表的连接顺序,并选择相关索引145。查询优化器166因此执行查询分析,并从多个生成的执行计划中确定最佳执行计划,这里“最佳”是根据任意定义标准判断的,这又导致在执行单元169的查询执行过程中调用具体的访问方法170。密钥管理概述密钥管理包括加密中最重要的方面之一密码密钥的生成和安全存储。在一个实施例中,提供大的密钥大小(至少1位),不过通常本发明可以任何大小的密钥操作。用户可以创建长度为192、256或更大的密钥以获得更好的安全性。举一个例子,数据库服务器130使用任意加密算法,诸如众所周知的AES算法,来在磁盘上加密密钥。密钥存储的脆弱性在于用户提供的用来保护密钥的密码。如果用户提供的密码太短或容易猜到,则加密密钥的安全性可能被打折。通过具有有限寿命,密钥可进一步受到保护。如果用户怀疑攻击者可能已经获得该密钥,则密钥应该被认为损坏,其使用中止。用户可以创建另一密钥,执行改变表以用新密钥加密数据,然后丢弃损坏密钥。密钥的创建日期保存在“sysobjects”(系统表)中,使得用户可以判定密钥的使用时间以及是否需要改变。改变密钥通常需要使该表不可访问,同时数据被解密,并用新密钥重新加密。图2图解说明与执行单元169关联的密钥管理模块250。在一个实施例中,不旨在限制本发明,本发明的功能在查询执行阶段出现。例如,管理加密密钥的过程是在查询执行阶段过程中实现的,查询执行阶段是通过密钥管理模块250实现的。因此,数据库服务器130内的密钥管理模块250包括用于创建、更改和丢掉加密密钥的功能。主密钥在一个实施例中,主密钥是数据库级的密钥,由具有SS0_r0le或keycustodiarurole的用户创建,用作密钥加密密钥(KEK)或用于用户创建的加密密钥的KEK的一部分。双主密钥也是数据库级的密钥,由具有ss0_r0le或keycustodiarurole的用户创建,并与主密钥一起作为KEK来保护用户创建的加密密钥。为了获得分离知识和双重控制,数据库的双主密钥的创建者必须与创建同一数据库中的主密钥的用户不同。举一个例子,不旨在限制本发明,主密钥是由“sysobjects”系统表和具有示例性内部名称“sysencrmasterkey”的“sysencryptkeys”系统表中的项目定义的。同样,例如,双主密钥可以使用内部名称"sybencrdualmasterkey,,。主密钥还可以与从明确的密码导出的密钥加密密钥结合使用来提供双重控制和用于用户创建的加密密钥的分离知识。创建主密钥和双主密钥如之前描述的,主密钥和双主密钥是数据库级的密钥,由具有SS0_r0le或keycustodian_role的用户仓键。用于创建主密钥或双主密钥的示例性语法是createencryptionkey[dual]master[forAES]withpasswd<char_literal>在上述语法中,“master”和“dualmaster”描述只用来加密同一数据库中的其它密钥的数据库级的密钥。主和双主密钥是密钥加密密钥,不用来加密数据。参数“withpasswd”用来提供用于密码保护主密钥或双主密钥的字符串密码。在一个实施例中,“withpasswd”子句对于主密钥和双主密钥两者是强制性的。密码应该足够复杂以避免脆弱性。在一个实施例中,每个数据库可以有一个主密钥和一个双主密钥。现在参照图3A中的流程图300来描述根据本发明的实施例的用于创建主或双主密钥的示例性方法。密钥的不例性万法。在步骤302,用户提供“创建加密密钥”命令给数据库服务器130。在步骤304,用户提供“密码”參数以导出保护主或双主密钥的KEK。在步骤306,数据库服务器130从在步骤304中接收的密码中导出密钥。在步骤308,数据库服务器130使用在步骤302和304中接收的输入创建主或双主密钥。在步骤310,数据库服务器130使用在步骤306中导出的密钥对主/双主密钥加密。在一个实施例中,数据库服务器130执行主密钥和双主密钥的所有权分离。考虑下面的示例性语法createencryptionkeymasterwithpasswd'unforgettablethatswhatur'当上面的命令由具有SS0_r0le或keycustodiarurole的用户发布吋,数据库服务器130用内部名称“sybencrmasterkey”创建由从“unforgettablethatswhatur”导出的KEK加密的新的主密钥。如之前所述,双主密钥是在“createncryptionkey”语法之后通过指定“dualmaster”參数创建的。举ー个例子,双主密钥可以在创建主密钥之后创建。考虑下面的示例性语法createencryptionkeyaualmasterwithpasswd'doublyunforgettabie'当上述命令由具有ss0_r0le或keycustodiarurole的用户发布吋,数据库服务器创建内部名称为“sybencrdualmasterkey”的由从“doublyunforgettable”导出的密钥加密密钥(KEK)加密的密钥。当用户在CREATEENCRYPTIONKEY和ALTERENCRYPTI0NKEY语句上指定“dual_control”吋,数据库服务器130然后使用双主密钥与主密钥的结合。为主密钥和双主密钥设置加密密码如之前所述,在密钥可以被使用之前,用于主密钥和双主密钥的密码必须由单独的实体(例如密钥所有者)提供给服务器。当上面的命令由密钥管理员发布吋,数据库服务器130将密码存储在其存储器中,直到解密操作的加密需要使用主或双主密钥吋。此时,数据库服务器130使用从所存储的密码中导出的KEK解密主或双主密钥。通过使用本发明的实施例,为数据库中的主或双主密钥设置加密密码的示例性语法如下setencryptionpasswd‘password—phrase‘forkey[dual]master保护具有主和双主密钥的加密密钥使用本发明的实施例,创建密钥的示例性语法如下createencryptionkeykeyname[asdefaulて」[foralgorithm—name][with[keylengthnumbits][passwd<password_phrase'][init_vector{NULL|random}][pad{NULL|random][[no]dual_control]]这里,‘[no]dual.control'表示是否应该使用(或不使用)双重控制来加密新密钥。在一个实施例中,缺省配置是不包括双重控制的配置。下面的例子显示主密钥作为用于加密密钥的KEK的角色。如果主密钥已经被创建,它变成用于保护不指定密码的加密密钥的缺省密钥。下面的示例性语法用主密钥加密“kl”。图;3B图解说明根据上文显示的示例性语法的用于密钥加密的示例性方法308。在步骤310,用户提供“创建加密密钥”命令到数据库服务器130。在步骤312,用户提供keylength(密钥长度)參数。例如,如示例性语法中所示,keylength參数可以是192位。在步骤314,数据库服务器130检查用户是否已经指定使用双重控制。如果指定使用双重控制,则数据库服务器130用主密钥和双主密钥的組合来对密钥加密(步骤316)。返回步骤314,如果没有指定双重控制,则数据库服务器130用主密钥对密钥加密(步骤318)。下一示例性语法用主密钥和双主密钥的組合来加密“k2”使用主密钥和从密码导出的密钥的组合的加密必须以可以重新生成主密钥以及在不知道密钥的密码(即第二秘密)时重新加密受影响的加密密钥的方式来进行。在一个实施例中,此操作可以通过加密原始加密密钥两次来实现,第一次是通过从密码导出的密钥,第二次是通过主密钥。改变加密密钥指定以使用主密钥如之前所述,如果主密钥存在,并且当创建加密密钥不指定待用作KEK的密码时,数据库服务器130使用主密钥作为KEK。加密密钥的示例性的“alterencryptionkey”语法如下alterencryptionkeykeyname[as|notdefault][withpasswd'password'Ipasswdlogin_passwdImasterkey]modifyencryption[withpaswd'password'Ipasswdlogin__passwdImasterkey]dual—control]这里,masterkey(MODIFY动词之前的WITH子句)-表示当前加密使用主密钥。在一个实施例中,可以不必指定密码logirupasswd,也不必指定主密钥,原因是服务器130判定密钥是如何用“sysencryptkeys”系统表中的状态位来加密的。masterkey(在MODIFY动词之后的WITH子句)-表示密钥是将用主密钥重新加密的。[no]dualcontrol-表示密钥的加密是否应该在双重控制下进行。在一个实施例中,缺省配置是非双重控制。以下的例子图解说明根据本发明的实施例的数据库服务器130改变加密密钥指定的操作。例子1在此例子中,kl当前是通过用户密码“g00dbye2U”加密的。用户想使用主密钥作Skl的KEK。在此示例性语法中,MODIFY动作之后的“withmasterkey”子句允许用户改变加密来使用主密钥。alterencryptionkeyklwithpasswd<goodbye2U'modifyencryptionwithmasterkey图3D图解说明根据上文所示的示例性语法,改变当前通过密码加密的密钥的加密的示例性方法332。在步骤334,用户提供“改变加密密钥”命令给数据库服务器130。在步骤336,用户提供密码参数。例如,如示例性语法所示,密码参数可以是当前用来对密钥“kl”加密的密码。在步骤337,数据库服务器130使用从步骤336中的密码导出的密钥来解密密钥“kl”。在步骤338,“修改加密密钥”命令提供给数据库服务器130。在步骤340,数据库服务器130检查用户是否指定使用双重控制。如果指定使用双重控制,则数据库服务器130用主密钥和双主密钥的组合来对密钥加密(步骤342)。返回步骤340,如果没指定双重控制,数据库服务器130用主密钥来对密钥加密(步骤344)。以此方式,根据本发明的实施例,密钥的加密必须被改变。以下例子显示改变密钥加密的其它实施例。例子2在此例子中,k2当前是通过主密钥加密的。此示例性语法改变“k2”以在双重控制下通过主和双主密钥重新加密。alterencryptionkeyk2modifyencryptionwithmasterkeydual_control可替代地,以下语法可以用来重新加密“k2”alterencryptionkeyk2modifyencryptionwithdual_control例子3在此例子中,k3当前是在双重控制下使用密码“&iice2day”和主密钥来加密的。此示例性语法从“k3”中去掉了双重控制,将其返回到在从“&iiCe2day”导出的KEK的单控制的形式。alterencryptionkeyk3withpasswdiBniceSday'modifyencryptionwithpasswd‘Bnice2day,nodual_control在一个实施例中,数据库服务器130可以在不知道其密码的情况下将密码保护的加密密钥改变为单控制,原因是双重控制会在通过主密钥的“外部”加密之后,通过从密码导出的KEK在内部采用“内部”加密的形式。去掉双重控制等于用主密钥解密。例子411在此例子中,如果k4当前是通过主密钥加密的,以下命令会使用从密码“BytheC”导出的密钥和主密钥来用双重控制来对其加密。alterencryptionkeyk4modifyencryptionwithpasswdiBytheC'dual_control自动主密钥访问的配置选项在一个实施例中,存在可由具有SS0_r0le的用户设置的自动主密钥访问的配置选项。自动主密钥访问配置表示数据库服务器130是否应该操作于自动主密钥访问模式。此配置选项包括整数自变量,这里值“1”打开该选项,“0”关闭该选项。如之前所描述的,在自动主密钥访问模式下,如果automatic^ccess密钥副本对于那些主密钥是可得到的,则即使在不设置主密钥的密码的情况下,数据库服务器130也允许用户访问数据库的主密钥。在一个实施例中,数据库服务器130在主密钥或双主密钥被改变以增加对于automatic_access的密钥副本时,将主或双主密钥的KEK写入主密钥启动文件或双主密钥启动文件中(在此描述中,加密主密钥或双主密钥的KEK称作外部MKEK)。当服务器以配置的自动主密钥访问来启动时,或者当自动主密钥访问使能时,数据库服务器130从服务器专用主密钥启动文件中将用于所有数据库的主密钥和双主密钥的外部MKEK读入服务器存储器中。当访问数据库中的主密钥或双主密钥时,代替检索基础密钥(原始的主或双主密钥),数据库服务器130检索automatic^ccess密钥副本,并用从服务器存储器取得的MKEK来解密密钥副本。图3E图解说明用于以配置的自动主密钥访问来操作数据库服务器130的示例性方法360。在步骤362,数据库服务器130以配置的自动主密钥访问来启动。在步骤364,数据库服务器130从服务器专用主密钥启动文件中将外部MKEK读入到存储器中。在步骤366,数据库服务器130在访问数据库130中的主或双主密钥时,检索“automatic_access,,副本。在步骤368,数据库服务器130用来自数据库服务器130的存储器的MKEK来解密“automatic_access"苜Ij本。如果配置自动主密钥访问,并且数据库的主密钥或双主密钥具有automatic^access副本,则主或双主密钥不可被访问,直到外部MKEK可用于数据库服务器130。在一个实施例中,SSO可通过诸如“sp_encryptionmkey_startup_file”的管理命令指定特定主密钥或双主密钥启动文件的名称和位置。如果没有指定特定的主密钥启动文件的名称和位置,则可以使用缺省主密钥启动文件,例如在包含安全性相关文件的目录中。用于自动访问和密钥恢复的主密钥副本在一个实施例中,数据库服务器130是以'自动主密钥访问’模式配置的。在自动主密钥访问模式下,即使主密钥的密码不是在服务器存储器中设置的,数据库服务器130也可以是能够访问数据库的主密钥。在自动主密钥访问模式下,数据库服务器130使用从主密钥启动文件中读取的主KEK来解密主密钥。为了将数据库服务器130配置于自动主密钥访问模式,除了允许在服务器级实现自动主密钥访问,SSO或密钥管理员需要在数据库中为主或双主密钥创建automatic_access密钥副本。在一个实施例中,主密钥或双主密钥可以被改变以增加密钥副本。需要主密钥副本来提供针对用于自动主密钥访问的主密钥或双主密钥的访问,并支持主密钥的恢复。增加主密钥副本的示例性语法如下alterencryptionkey[dual]masterwithpasswd<char_string>addencryption{withpasswd<char_string>foruser<username>forrecoveryIforautomatic_access}这里passwd(第一个引用)_指定目前加密基础主密钥或双主密钥的密码。passwd(第二个引用)_对于恢复主密钥副本来说必须被提供。对于automatic^access主密钥副本来说可以不使用。foruser-表示恢复密钥副本将要被分配给的用户。举一个例子,数据库中除了密钥所有人的任何使用者可以是密钥恢复副本的分配人。forrecovery-表示在丢失密码的情况下将用作恢复主或双主密钥的密钥副本。forautomatic_access-表示在配置为“自动主密钥访问”的数据库服务器130启动之后,密钥副本要被用来访问主/双主密钥。当对于automaticjccess增加主密钥副本时,数据库服务器130由随机数据在内部创建MKEK,加密主密钥副本,且还将MKEK写到通过诸如‘sp_encryptionmkey_startup_file'的管理命令提供的缺省或配置的服务器专用主密钥启动文件。当数据库服务器130接着在“自动主密钥访问”模式启动时,数据库服务器130会从主密钥启动文件中读取主密钥副本的MKEK,并用它来解密主密钥的automaticjccess副本。如果还没有设置automaticjccess密钥副本,SSO或密钥管理员必须在用户可以访问由受主密钥和双主密钥保护的密钥加密的数据之前,使用一组加密密码命令来提供主和双主密钥的密码。现在参照图4A中的流程图400来描述根据本发明的实施例的向主密钥启动文件中写入MKEK的示例性方法。在步骤402,数据库服务器130由随机数据创建MKEK。在步骤404,数据库服务器130使用在步骤402创建的MKEK来加密主密钥副本。在步骤406,数据库服务器130将在步骤402中创建的MKEK写到主密钥启动文件中。现在参照图4B中的流程图410来描述根据本发明的实施例的解密主密钥的自动访问副本的示例性方法。在步骤412,它发生在数据库服务器130接着在自动主密钥访问模式启动时,数据库服务器130从主密钥启动文件中读取主密钥副本的MKEK。在步骤414,数据库服务器130使用在步骤412中获得的MKEK来解密主密钥的自动访问副本。可设置相似机制以解密双主密钥的自动访问副本。以此方式,通过允许分离秘密(例如主密钥和双主密钥)被安全地施加到数据库服务器130,用户可以借助数据库服务器130的自动主密钥访问来满足双重控制和分离知识的要求。此外,如果数据库服务器130在任何时间毁坏或遇到故障,可以使用自动主密钥访问来恢复数据库操作。改变主密钥副本以改变密码/MKEK通过SSO或密钥管理员可以修改主密钥副本,以改变它们的密码,或对于automatic_access密钥副本来改变内部生成并在外部存储的MKEK。用于改变主密钥副本以改变它们的密码的示例性语法是alterencryptionkey[dual]masterwithpasswd<char_string>{modifyencryptionwithpasswd<char—string〉[forrecovery]Imodifyencryptionforautomatic_access}这里,passwd(第一个引用)_是在创建主密钥命令或在改变双主密钥或主密钥的密码的最后一个命令上指定的密码。如果指定“[forrecovery]”,它是恢复密钥副本的当前密passwd(第二个引用)_是为改变恢复主密钥副本的密码而提供的。它为恢复密钥副本提供新密码。modifyencryption-用于改变基础密钥、恢复副本或automatic_access密钥副本上的明确的密码。可以通过密钥管理员或SSO(借助主密钥的密码的知识)来执行下面的示例性语法,以改变用来加密主密钥的automatic_access密钥副本的外部MKEK在一个实施例中,当修改automatic^ccess密钥副本时,数据库服务器130用从alterencryptionkeymasterwithpasswd'unforgettablethatswhatur'modifyencryptionforautomatic—access“passwd”(在此例子中是‘unforgettablethatswhatur,)导出的MKEK来解密基础主密钥。数据库服务器130然后创建新的外部MKEK,并代替主密钥启动文件中之前的MKEK。然后,数据库服务器130通过使用新的外部MKEK对主密钥加密来创建新的automatic_access密钥副本,并以与新的automatic_access密钥副本来代替sysencryptkeys中的老的automatic_access密钥副本。在一个实施例中,数据库服务器130以与对主密钥相同的方式在双主密钥上改变automatic_access密钥副本。下列示例性语法将主密钥的加密密码从、unforgetablethatswhatur,变成~colel951,。alterencryptionkeymasterwithpasswd'unforgettablethatswhatur'modifyencryptionwithpasswd'cole1951'现在参照图5中的流程图500来描述根据本发明的实施例生成改变的主或双主密钥的示例性方法。在步骤502,用户(例如密钥管理员或SS0)提供“改变加密密钥”命令给数据库服务器130。在步骤504,用户提供第一密码参数,它是用户想改变的密码。在步骤506,用户提供第二密码参数,它是与主或双主密钥关联的新的密码。在步骤508,数据库服务器130基于在步骤502、504和506中从用户接收的输入来重新加密主或双主密钥。恢复主密钥或双主密钥在一个实施例中,用于恢复主或双主密钥的程序与用于恢复常规加密密钥的程序是一样的。用于恢复主或双主密钥的示例性语法如下alterencryptionkey[dual]masterwithpasswd<char_string>recoverencryptionwithpasswd<char_string>上面用于恢复主密钥的语法可以由密钥管理员或由SSO执行。在上面的语法中,第一个“passwd”引用是从密钥恢复器获得的恢复密钥副本的密码。第二个“passwd”引用是用于基础密钥的新密码。重新生成主密钥或双主密钥如之前所述,主和双主密钥是用于加密密钥的KEK。好的密钥管理策略要求管理者周期性地通过重新生成KEK来改变KEK。在一个实施例中,代替允许创建超过一个的主或双主密钥,然后强迫用户通过更新的主和双主密钥去改变待被重新加密的每个加密密钥,数据库服务器130支持使用“重新生成”命令的主密钥的重新生成。“regenerate”命令用新的原始密钥代替主或双主密钥的原始密钥值,并重新加密通过主或双主密钥加密的所有加密密钥。用于重新生成主或双主密钥的示例性语法如下alterencryptionkey[dual]masterwithpasswd<char_string>regeneratekey[withpasswd<char_string>]图6图解说明描述通过数据库服务器130重新生成主或双主密钥的方法600。在步骤601,用户提供‘改变加密密钥主/双主重新生成密钥’命令。在步骤602,数据库服务器130确认“passwd”解密基础主或双主密钥。在步骤604,数据库服务器130创建新的主或双主密钥。在步骤606,数据库服务器130通过新的主或双主密钥重新加密所有(单独或部分)加密的主/双主加密密钥。在步骤610,数据库服务器用通过从以下数据导出的KEK加密的新的密钥来代替主或双主密钥,a)如果没提供第二可选“passwd”,则是第一引用“passwd”或b)新提供的密码。在步骤612,数据库服务器130丢弃密钥恢复副本。主密钥所有人必须执行改变加密密钥以增加新的恢复密钥副本,并通知新密码的指定密钥恢复器。在步骤614,如果存在一个automaticjccess密钥副本,数据库服务器130重新生成automatic_access密钥苜1J本。丢掉主密钥、恢复密钥副本或“automatic_access”密钥副本用于丢弃(或丢掉)主密钥或双主密钥的示例性语法如下dropencryptionkey[dual]master在一个实施例中,如果保持正在被丢掉的由主或双主密钥加密的任何密钥,则数据库服务器130可能不允许“丢掉”命令。上面的命令可以通过密钥管理员或SSO执行。在一个实施例中,一旦由数据库服务器130执行“丢掉”命令,则数据库服务器130丢掉主密钥(或双主密钥)和其密钥副本,即自动访问密钥副本和恢复密钥副本,并且如果automatic_access密钥副本存在,还从主密钥启动文件恢复外部MKEK。举一个例子,可以用下面的示例性语法来丢掉恢复密钥副本。alterencryptionkey[dual]masterdropencryptionforrecovery例如,automatic—access密钥副本用下面的语法丢掉,这会从主密钥启动文件中去掉外部MKEK,并且如果配置自动主密钥访问,则会从服务器存储器中丢掉MKEK。alterencryptionkey[dual]masterdropencryptionforautomatic_access图7图解说明根据上文显示的示例性语法的用于丢掉加密密钥的示例性方法700。在步骤702,用户提供“丢掉加密密钥”命令到数据库服务器130。在步骤704,数据库服务器130丢掉主密钥或双主密钥和其密钥副本。在步骤706,数据库服务器130从主密钥启动文件中去掉外部MKEK。示例性计算机实施例在本发明的实施例中,本文中描述的实施例的系统和组件是使用已知的计算机,诸如图8中所示的示例性计算机802,实现的。例如,数据库服务器130可以使用计算机802实现。计算机802可以是任何可购买和已知的能够执行本文描述的功能的计算机,诸如可从InternationalBusinessMachines、Apple、Sun、HP、Dell、Compaq、Digital、Cray等购买的计算机。计算机802包括一个或多个处理器(也称作中央处理单元或CPU),诸如处理器806。处理器806连接到通信总线804。计算机802还包括主或主要存储器808,诸如随机存取存储器(RAM)。主存储器808其中存储了控制逻辑826A(计算机软件)和数据。计算机802还包括一个或多个第二存储装置810。第二存储装置810包括例如硬盘驱动器812和/或可移动存储装置或驱动器814,以及其它类型的存储装置,诸如存储卡和存储棒。可移动存储装置814代表软盘驱动器、磁带驱动器、光盘驱动器、光存储装置和磁带备份等。可移动存储装置814与可移动存储单元816相接。可移动存储单元816包括其中存储计算机软件828B(控制逻辑)和/或数据的计算机可用或可读存储介质824。可移动存储单元816代表软盘、磁带、光盘、DVD、光存储盘或其它任何计算机数据存储装置。可移动存储驱动器814以已知方式读取和/或写入到可移动存储单元816。计算机802还包括输入/输出/显示装置822,诸如监视器、键盘、指针装置等等。计算机802进一步包括通信或网络接口818。网络接口818使得计算机802能够与远程装置通信。例如,网络接口818允许计算机802通过诸如LAN、WAN、因特网等的通信网络或介质824B(代表计算机可用或可读介质的形式)通信。网络接口818可以通过有线或无线连接与远程站点或网络相接。控制逻辑828C可以通过通信介质828B与计算机802来回传送。更具体地,计算机802可通过通信介质824B接收并发送用控制逻辑830调制的载波(电磁信号)。任何包括其中存储了控制逻辑(软件)的计算机可用或可读介质的设备或制造品在本文中称作计算机程序产品或程序存储装置。这包括但不局限于计算机802、主存储器808、第二存储装置810、可移动存储单元816和用控制逻辑830调制的载波。其中存储了控制逻辑的此计算机程序产品在由一个或多个数据处理装置执行时,使此数据处理装置能够以本文描述的方式工作,代表本发明的实施例。本发明可以以除了本文中描述的那些之外的软件、硬件和/或操作系统实现来工作。可以使用适于执行本文描述的功能的任何软件、硬件和操作系统实现。结论
发明内容和摘要部分给出了发明人考虑到的一个或多个但不是所有的本发明的示例性实施例,因此,不旨在以任何方式限制本发明和所附权利要求。借助图解说明实现特定功能和其关系的功能构建块,上面已经描述了本发明。为了便于描述,在本文中已经任意定义了这些功能构建块的界限。只要特定功能和其关系是适当执行的,可以定义可替代界限。特定实施例的前述描述会非常全面地揭露本发明的基本性质,在不通过大量实验,不偏离本发明的基本概念下,其它人通过应用本领域的知识可容易地修改和/或适应诸如特定实施例的各种应用。因此,基于本文提出的教导和指点,此适应性修改和改变旨在所公开的实施例的等同物的含义和范围内。应理解,本文的措词或术语用于描述目的,不用于限制,使得本说明书的术语或措词由本领域技术人员根据教导和指点来解读。本发明的宽度和范围不应由上述的示例性实施例中的任何一个来限制,而应该只根据下面的权利要求和其等同物来定义。权利要求1.一种用于保护数据库中的加密密钥的方法,包括(1)生成由第一实体提供的主密钥;(2)生成由第二实体提供的双主密钥;和(3)使用所述主密钥和所述双主密钥加密所述加密密钥。2.根据权利要求1所述的方法,其中步骤(1)包括接收创建所述主密钥的命令;接收保护所述主密钥的密码。3.根据权利要求1所述的方法,进一步包括(4)以自动主密钥访问模式配置与所述数据库关联的数据库服务器。4.根据权利要求3所述的方法,其中所述配置步骤包括为所述数据库服务器启用自动主密钥访问;和为所述主密钥和所述双主密钥创建自动访问密钥副本。5.根据权利要求4所述的方法,进一步包括由随机数据创建密钥加密密钥;使用所述密钥加密密钥来加密所述主密钥自动访问副本;和将所述密钥加密密钥存储在服务器专用主密钥启动文件中。6.根据权利要求1所述的方法,进一步包括以自动主密钥访问模式初始化与所述数据库关联的数据库服务器。7.根据权利要求6所述的方法,其中所述初始化步骤进一步包括从主密钥启动文件中读出主密钥副本的密钥加密密钥;使用所述密钥加密密钥来解密主密钥自动访问副本。8.根据权利要求1所述的方法,进一步包括改变所述主密钥的密码。9.根据权利要求8所述的方法,其中所述改变步骤包括接收第一密码;接收第二密码;和接收改变所述主密钥的命令,其中所述第一密码是当前与所述主密钥关联的密码,所述第二密码是代替所述第一密码的密码。10.根据权利要求1所述的方法,进一步包括恢复所述主密钥和所述双主密钥。11.根据权利要求1所述的方法,进一步包括重新生成所述主密钥和所述双主密钥。12.根据权利要求11所述的方法,其中所述重新生成步骤包括用新原始密钥值来代替所述主密钥和所述双主密钥的原始密钥值;和以重新生成的主密钥和双主密钥来重新加密所述加密密钥。13.根据权利要求1所述的方法,进一步包括使用所述主密钥和从密码导出的密钥的组合来加密所述加密密钥。14.根据权利要求13所述的方法,进一步包括通过经由不同实体提供所述主密钥和所述从密码导出的密钥来访问加密的数据。15.根据权利要求1所述的方法,进一步包括更新主密钥启动文件。16.一种用于保护数据库中的加密密钥的数据库服务器,包括生成从第一实体获得的主密钥的第一模块;生成从第二实体获得的双主密钥的第二模块;和使用所述主密钥和所述双主密钥加密所述加密密钥的第三模块。17.根据权利要求16所述的系统,其中所述数据库服务器包括密钥管理模块。18.根据权利要求16所述的系统,其中所述主密钥和所述双主密钥是数据库级的密钥。19.根据权利要求16所述的系统,其中所述主密钥和所述双主密钥是用于用户创建的密钥的密钥加密密钥(KEK)。20.根据权利要求16所述的系统,其中所述第一模块使用所述主密钥与所述双主密钥的组合作为合成密钥以為所有用户创建的密钥提供双重控制和分离知识。21.根据权利要求16所述的系统,其中所述第一模块使用所述主密钥与明确的密码的组合来提供用户创建的加密密钥的分离知识和双重控制。22.根据权利要求16所述的系统,进一步包括所述数据库的系统表,所述主密钥是在所述系统表中定义的。23.根据权利要求16所述的系统,其中所述数据库服务器是以自动主密钥访问模式配置的。24.根据权利要求23所述的系统,其中所述数据库服务器为所述自动主密钥访问模式创建主密钥启动文件。25.根据权利要求M所述的系统,其中所述数据库服务器从所述主密钥启动文件中将用于所有数据库的所述主密钥和所述双主密钥的外部MKEK读入到服务器存储器中。26.根据权利要求M所述的系统,其中所述数据库服务器将所述主密钥启动文件创建为只读文件。27.一种其中存储了控制逻辑的计算机程序产品,所述控制逻辑使得处理器能够保护数据库中的加密密钥,所述控制逻辑包括用于使处理器能够生成由第一实体提供的主密钥的第一计算机可读程序代码装置;用于使处理器能够生成由第二实体提供的双主密钥的第二计算机可读程序代码装置;和用于使处理器能够使用所述主密钥和所述双主密钥加密所述加密密钥的第三计算机可读程序代码装置。全文摘要本文中描述用于保护数据库中的加密密钥的系统、方法、计算机程序产品实施例和其组合以及子组合。一个实施例包括主密钥和双主密钥,两个都用来对数据库中的加密密钥加密。为了访问加密的数据,主密钥和双主密钥必须通过两个单独的实体提供给数据库服务器,因此需要主密钥和双主密钥的双重控制。而且,用于主密钥和双主密钥的密码必须单独且独立地提供,因此要求访问主密钥和双主密钥的分离知识。在另一实施例中,主密钥和从用户密码导出的密钥加密密钥用于双重控制。一个实施例还包括通过服务器专用文件为主密钥和双主密钥提供秘密。文档编号G06F17/30GK102422590SQ201080020514公开日2012年4月18日申请日期2010年5月5日优先权日2009年5月12日发明者拉尼沙·库马尔·基特卡拉,芭芭拉·简·班克斯,陈石平申请人:赛贝斯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1