发明内容
在本发明的第一方面,提供了一种在租户系统中的第一安全上下文与服务提供商系统中的第二安全上下文之间进行数据传送的方法,所述方法包括:
在所述第一安全上下文中生成与数据相对应的访问控制列表,其中所述访问控制列表指定必须提供有效的使用凭证以便授权对所述数据的第一类型的使用;
在所述第二安全上下文中生成第一密码密钥对和第一密码证书,所述第一密码密钥对包括第一公钥KBLOB pub和第一私钥KBLOB priv,并且所述第一密码证书包括能够确认所述第一公钥KBLOB pub的来源的信息;
向所述第一安全上下文发送所述第一公钥KBLOB pub和所述第一密码证书;
在所述第一安全上下文中确认所述第一密码证书;
如果所述第一密码证书有效,则在所述第一安全上下文中用所述第一公钥KBLOB pub对所述数据和对应访问控制列表进行加密;
向所述第二安全上下文发送加密后的数据和加密后的对应访问控制列表以及能够确认所述数据的来源的信息。
在实施例中,所述使用凭证是使用证书。
在实施例中,所述数据包括密码密钥Ktenant。所述方法还可以包括在所述第一安全上下文中生成所述密码密钥Ktenant的步骤。第一类型的使用可以是一个或多个密码操作。
在实施例中,该方法还包括在发送加密后的数据之前在所述租户系统处建立对所述第二安全上下文的信任。
建立信任可以包括在所述第一安全上下文处确认以下内容:所述第二安全上下文由受信制造商制造,所述第二安全上下文的配置满足租户的安全要求,并且所述第二安全上下文被配置为实施所述ACL中包含的策略。
在实施例中,在向所述第二安全上下文传送加密后的数据前夕确认所述第二安全上下文的配置满足所述租户的安全要求。
建立信任还可以包括确认所述第二安全上下文的状态满足所述制造商的安全要求,例如确认软件和硬件不受所述服务提供商的攻击的影响。
制造商私钥可以用于确认所述第二安全上下文是由受信制造商制造的,并且用于确认所述第二安全上下文的第二身份公钥。
在实施例中,所述第二安全上下文存储第二身份私钥K2ID priv,并且所述方法还包括从所述第二安全上下文向所述第一安全上下文发送所述第二身份公钥K2ID pub和第二身份证书,其中所述第二身份公钥K2ID pub和所述第二身份私钥K2ID priv是密码密钥对,并且所述第二身份证书包括标识K2ID pub的信息并用制造商私钥Kman priv进行密码签名。
在实施例中,所述第二身份证书还包括可以确认所述第二安全上下文的状态的信息。
在实施例中,所述方法还包括在所述租户系统处建立对参考时间源的信任。在实施例中,所述方法还包括在所述服务提供商系统处建立对参考时间源的信任。建立对参考时间源的信任包括确认所述参考时间源是由受信制造商制造的,并且所述参考时间源的状态和配置满足安全要求。
在实施例中,所述方法还包括:
生成与所述第二安全上下文的当前配置有关的信息;
用所述第二身份私钥K2ID priv对所述信息进行密码签名;
从所述第二安全上下文向所述第一安全上下文发送签名后的信息。
在实施例中,所述第一密码证书包括与所述第二安全上下文的当前配置有关的信息,并且用所述第二身份私钥K2ID priv进行签名。
在实施例中,所述方法还包括:
在所述第一安全上下文中生成第二密码密钥对和第二密码证书,所述第二密码密钥对包括第二公钥和第二私钥并且所述第二密码证书包括能够确认所述第二公钥的来源的信息;
向所述第二安全上下文发送所述第二公钥和第二密码证书。
在实施例中,所述第一安全上下文存储第一身份私钥K1ID priv,并且所述方法还包括:
从所述第一安全上下文向所述第二安全上下文发送第一身份公钥K1ID pub和第一身份证书,其中所述第一身份公钥K1ID pub和所述第一身份私钥K1ID priv是密码密钥对,并且所述第一身份证书包括标识K1ID pub的信息并用制造商私钥Kman priv进行密码签名。
在实施例中,所述第二密码证书包括能够标识所述第二公钥的来源的信息;并且所述方法还包括:
用所述第一身份私钥K1ID priv对所述第二密码证书进行密码签名;
在所述第二安全上下文处使用所述第一身份公钥K1ID pub验证所述第二密码证书。
能够确认所述密码密钥Ktenant的来源的信息可以包括用签名的加密后的密码密钥Ktenant和加密后的对应访问控制列表。
向所述第二安全上下文发送加密后的密码密钥Ktenant和加密后的对应访问控制列表以及能够确定所述密码密钥Ktenant的来源的信息的步骤可以包括:
用对加密后的密码密钥Ktenant和加密后的对应访问控制列表进行密码签名;
向所述第二安全上下文发送加密后的密码密钥Ktenant和加密后的对应访问控制列表、加密后的密码密钥Ktenant和加密后的对应访问控制列表的签名以及的散列。
在实施例中,所述第一密码证书确认KBLOB priv是暂时的并且KBLOB priv不能离开所述第二安全上下文。在实施例中,所述第一密码证书确认非对称密钥对是在所述第二安全上下文中生成的。所述第一私钥KBLOB priv存储在所述第二安全上下文中。
在实施例中,能够确认所述第一密码密钥KBLOB pub的来源的信息是所述第一公钥KBLOB pub的签名散列。所述第一密码证书包括所述第一公钥KBLOB pub的散列,并且用所述第二安全上下文的身份密钥中的私钥K2ID priv进行签名。确认所述第一密码证书CBLOB的步骤包括使用所述第二安全上下文的身份密钥中的公钥K2ID pub来验证签名。
在实施例中,所述第二安全上下文对于服务提供商系统的其余部分是安全的。
在实施例中,所述访问控制(ACL)列表指定所述使用凭证必须包括能够确认所述使用凭证的来源的信息。所述访问控制列表可以指定所述使用凭证是必须用所述第二私钥签名的使用证书,以便授权对所述密码密钥Ktenant的第一类型的使用。
所述ACL指定所述使用凭证必须包括能够确定所述使用凭证的到期的信息并且指定所述使用凭证必须未到期才是有效的。
所述ACL可以指定租户密码密钥Ktenant只能存储在抵抗第三方的篡改的非易失性存储器中。
在实施例中,所述ACL指定租户密码密钥Ktenant只能存储在第二安全上下文内部。在备选实施例中,ACL包含以下限制:租户密码密钥Ktenant只能在其用不能离开第二安全上下文的密钥被加密以进行存储的条件下被存储。
在实施例中,所述方法还包括:
在所述第二安全上下文处确认所述密码密钥Ktenant的来源;
在所述第二安全上下文处用所述第一私钥KBLOB priv对加密后的密码密钥Ktenant和加密后的对应访问控制列表进行解密。
在实施例中,所述方法还包括:
在所述第二安全上下文处用另外的密码密钥对所述密码密钥Ktenant进行再加密,其中所述另外的密码密钥不能离开所述第二安全上下文;
存储再加密后的密码密钥Ktenant、对应访问控制列表、以及能够确认所述密码密钥Ktenant的来源的信息。
在本发明的另一方面,提供了一种载体介质,包括计算机可读代码,所述计算机可读代码被配置为使计算机执行所述方法中的任何方法。
在本发明的另一方面,提供了一种控制对数据的使用的方法,所述数据以服务提供商系统中的受信第二安全上下文可访问但对所述服务提供商系统的其余部分安全的方式存储在所述服务提供商系统中,其中指定必须提供有效的使用凭证以便授权对所述数据的第一类型的使用的访问控制列表与所述数据一起存储,所述方法包括:
在第一安全上下文中生成使用凭证,其中所述使用凭证包括:
能够标识与所述使用凭证相对应的数据的信息;
能够确定所述使用凭证的到期的信息;
发布所述使用凭证以及能够确认所述使用凭证的来源的信息;
在所述第二安全上下文处针对所述访问控制列表确认所述使用凭证,并确认所述使用凭证未到期;
在所述使用凭证有效且未到期的情况下,在所述第二安全上下文中,授权对所述数据的第一类型的使用。
在实施例中,所述使用凭证是使用证书。
在实施例中,所述数据包括密码密钥Ktenant。第一类型的使用可以是一个或多个密码操作。
在实施例中,能够确定所述使用凭证到期的信息包括:
到期时间;
标识参考时间源的信息。
在实施例中,所述方法还包括在所述租户系统处建立对参考时间源的信任。在实施例中,所述方法还包括在所述服务提供商系统处建立对参考时间源的信任。建立对参考时间源的信任包括确认所述参考时间源是由受信制造商制造的,并且所述参考时间源的状态和配置满足安全要求。
在实施例中,所述方法还包括连同确认所述身份密码密钥对的来源的信息一起向所述第一安全上下文提供时间源的身份密码密钥对中的公钥。
在实施例中,所述方法还包括连同确认所述身份密码密钥对的来源的信息一起向所述第二安全上下文提供时间源的身份密码密钥对中的公钥。
在实施例中,在所述第一安全上下文中生成使用凭证包括:
选择参考时间源;
向所述参考时间源请求当前时间戳
基于所述时间戳计算到期时间。
在实施例中,所述方法包括:
连同能够确认所述消息的来源的信息一起从所述参考时间源向所述租户系统发送包括当前时间戳的消息;以及
确认所述消息的来源。
所述消息还可以包括与所述参考时间源的当前配置有关的信息。
确认所述消息的来源的信息可以是用所述时间源的身份密码密钥对中的私钥签名的签名消息。
在实施例中,与开始时间有关的信息包括在所述使用凭证中。
能够标识与所述使用凭证相对应的数据的信息可以是Ktenant的散列。
在实施例中,所述使用凭证是使用证书,并且所述方法还包括:
在所述第一安全上下文中用私钥对所述使用证书进行密码签名,其中能够确认所述使用证书的来源的信息是所述签名,并且其中对应公钥被保护完整性且可被所述第二安全上下文访问;
在所述第二安全上下文处使用所述公钥验证所述使用证书。
在实施例中,所述方法还包括:
向所述第二安全上下文提供所述使用凭证、能够确认所述使用凭证的来源的信息、以及使用所述密钥Ktenant执行操作的请求,所述操作是第一类型的使用;
在所述使用凭证有效且未到期的情况下,在所述第二安全上下文处执行所述操作。
在实施例中,在所述第二安全上下文处确认所述使用凭证未到期包括:
向所述参考时间源请求当前时间戳;
连同能够确认所述消息的来源的信息一起从所述参考时间源向所述第二安全上下文发送包括当前时间戳的消息;以及
确认所述消息的来源。
确认所述消息的来源的信息可以是用所述时间源的身份密码密钥对中的私钥签名的签名消息。
在所述第二安全上下文处确认所述使用凭证未到期还可以包括:
将所述时间戳与到期时间进行比较。
在本发明的另一方面,提供了一种载体介质,包括计算机可读代码,所述计算机可读代码被配置为使计算机执行所述方法中的任何方法。
在本发明的另一方面,提供了一种密码设备,包括第一安全上下文,所述第一安全上下文包括:
第一收发器,被配置为从第二安全上下文接收第一公钥KBLOB pub和第一密码证书,所述第一密码证书包括能够确认所述第一公钥KBLOB pub的来源的信息;
第一处理器,被配置为执行密码操作,所述第一处理器被配置为:
生成与要传送的数据相对应的访问控制列表,其中所述访问控制列表指定必须提供有效的使用凭证以便授权对所述数据的第一类型的使用;
确认所述第一密码密钥对源自所述第二安全上下文;
使用所述第一公钥KBLOB pub对所述数据和对应访问控制列表进行加密;
其中,所述第一收发器被配置为向所述第二安全上下文发送加密后的数据和加密后的对应访问控制列表以及能够确认所述数据的来源的信息。
在实施例中,所述使用凭证是使用证书。
在实施例中,所述数据包括密码密钥Ktenant。
在实施例中,所述设备还包括:
第一设备存储器,存储第一身份私钥K1ID priv;
其中所述第一收发器还被配置为:
向所述第二安全上下文发送第一身份公钥K1ID pub和第一身份证书,其中所述第一身份公钥K1ID pub和所述第一身份私钥K1ID priv是密码密钥对,并且所述第一身份证书包括标识K1ID pub的信息并用制造商私钥Kman priv进行密码签名;以及
从所述第二安全上下文接收第二身份公钥K2ID pub以及第二身份证书,所述第二身份证书包括标识K2ID pub的信息并用制造商私钥Kman priv进行密码签名;
所述第一处理器还被配置为使用制造商公钥Kman pub来验证所述第二身份证书。
在实施例中,所述收发器还被配置为:
接收与所述第二安全上下文的当前配置有关的信息,其中所述信息用第二身份私钥K2ID priv进行密码签名,其中所述第二身份公钥K2ID pub和所述第二身份私钥K2ID priv是密码密钥对;并且其中
所述第一处理器还被配置为:
使用所述第二身份公钥K2ID pub验证所述签名;
确认以下内容:所述第二安全上下文的配置满足所述租户的安全要求,并且所述第二安全上下文被配置为实施所述ACL中包含的策略。
在实施例中,所述第一处理器还被配置为:
在所述第一安全上下文中生成第二密码密钥对和第二密码证书,所述第二密码密钥对包括第二公钥和第二私钥并且所述第二密码证书包括能够标识所述第二公钥的来源的信息;
用所述第一身份私钥K1ID priv对所述第二密码证书进行密码签名;
其中所述第一收发器还被配置为向所述第二安全上下文发送所述第二公钥和签名后的第二密码证书;
在本发明的另一方面,提供了一种密码设备,包括第一安全上下文,包括:
第一处理器,被配置为生成使用凭证,所述使用凭证包括:
能够标识与所述使用凭证相对应的数据的信息;
能够确定所述使用凭证的到期的信息;
第一收发器,被配置为向第二安全上下文发送所述使用凭证以及能够确认所述使用凭证的来源的信息。
在实施例中,所述使用凭证是使用凭证。
在实施例中,所述数据包括密码密钥Ktenant。
在实施例中,所述第一安全上下文还包括:
第一设备存储器,存储私钥
其中所述第一处理器被配置为用私钥对所述使用凭证进行密码签名。
在实施例中,所述使用凭证是使用证书。
在实施例中,能够确定所述使用凭证的到期的信息包括:
到期时间;
标识参考时间源的信息。
在实施例中,可以标识与使用证书相对应的密码密钥Ktenant的信息是Ktenant的散列。
在本发明的另一方面,提供了一种密码设备,包括第二安全上下文,用于与包括第一安全上下文的一个或多个设备协作,所述密码设备包括:
处理器,被配置为执行密码操作,所述处理器被配置为:
生成第一密码密钥对和第一密码证书,所述第一密码密钥对包括第一公钥KBLOB pub和第一私钥KBLOB priv,并且所述第一密码证书包括能够确认所述第一公钥KBLOB pub的来源的信息;
收发器,被配置为:
向第一安全上下文发送所述第一公钥KBLOB pub和所述第一密码证书;以及
从所述第一安全上下文接收加密后的数据和加密后的对应访问控制列表以及能够确认所述数据的来源的信息;
所述处理器还被配置为:
确认所述数据的来源;
使用所述第一私钥KBLOB priv对加密后的数据和加密后的对应访问控制列表进行解密。
在实施例中,所述使用凭证是使用证书。
在实施例中,所述数据包括密码密钥Ktenant。
在实施例中,所述处理器还被配置为:
用另外的密码密钥对所述密码密钥Ktenant进行再加密,其中所述另外的密码密钥不能离开所述第二安全上下文;
在实施例中,所述设备还包括设备存储器,存储第二身份私钥K2ID priv,并且其中所述收发器还被配置为:
向所述第一安全上下文发送第二身份公钥K2ID pub和第二身份证书,其中所述第二身份公钥K2ID pub和第二身份私钥K2ID priv是密码密钥对,并且所述第二身份证书包括标识K2ID pub的信息并用制造商私钥Kman priv进行密码签名;以及
从所述第一安全上下文接收第一身份公钥K1ID pub以及第一身份证书,所述第一身份证书包括标识K1ID pub的信息并用制造商私钥Kman priv进行密码签名,
所述处理器还被配置为:
使用制造商公钥Kman pub验证所述第一身份证书。
在实施例中,所述处理器还被配置为:
生成与所述第二安全上下文的当前配置有关的信息;
用所述第二身份私钥K2ID priv对所述信息进行密码签名;以及
其中所述收发器还被配置为:
向所述第一安全上下文发送所述信息和所述签名。
在实施例中,所述处理器还被配置为:
生成包括与所述第二安全上下文的当前配置有关的信息在内的第一密码证书,并用所述第二身份私钥K2ID priv对所述第一密码证书进行签名。
在实施例中,所述收发器还被配置为:
从所述第一安全上下文接收第二公钥和签名后的第二密码证书,所述第二密码证书包括能够确认所述第二公钥的来源的信息;
并且其中所述处理器还被配置为:
确认所述第二公钥的来源。
根据本发明的另一方面,提供了一种设备,包括:
设备存储器,存储:
加密后的数据;
与所述数据相对应的访问控制列表,所述访问控制列表指定必须提供有效的使用凭证以便授权对所述数据的第一类型的使用,并指定所述使用凭证必须包括能够确定所述使用凭证的到期的信息,并且指定所述使用凭证必须未到期以便授权对所述数据的第一类型的使用;以及
能够标识所述数据的来源的信息。
在实施例中,所述使用凭证是使用证书。
在实施例中,所述设备是包括第二安全上下文在内的密码设备,用于与包括第一安全上下文在内的一个或多个设备协作。
在实施例中,所述数据包括密码密钥Ktenant。
所述访问控制列表可以指定所述使用凭证是必须用私钥签名的使用证书,以便授权对所述密码密钥Ktenant的使用。
所述访问控制列表可以指定所述使用凭证必须包括能够标识与所述使用凭证相对应的所述密码密钥Ktenant的信息。
在实施例中,用不能离开第二安全上下文的密钥对加密后的密码密钥Ktenant进行加密。
在实施例中,所述设备还包括:
处理器,被配置为:
针对所述访问控制列表确认接收到的使用凭证,并确认所述使用凭证未到期;
在所述使用凭证有效且未到期的情况下,在所述第二安全上下文中,授权对所述密码密钥Ktenant的第一类型的使用。
在实施例中,提供了一种从租户到服务提供商的数据传送方法,包括利用由服务提供商系统内的安全设备生成的密钥对中的公钥来对数据进行加密。因此,在传输期间服务提供商不能访问数据。
与数据一起生成相应的访问控制列表,该列表指定在数据被存储后必须提供有效证书以便授权对数据的特定使用。因此,即使已经将数据传送出租户系统,租户也可以保持对数据使用的控制。
在实施例中,提供了一种控制安全地存储在服务提供商系统中的数据的使用的方法,包括向请求使用数据的一方发布具有到期时间的使用凭证。在授权使用所存储的数据之前,必须对使用凭证进行确认。这使得租户能够授权使用所存储的数据达有限的时间段。
在本说明书中,术语安全上下文是指一个或多个安全设备(例如,HSM)或安全设备的多个部分,其共享至少一个私钥并且被配置为保护和执行一组密码功能。
在本说明书中,术语密码密钥是指用于密码操作的原始密码材料块。与密钥相对应的访问控制列表包括与描述密钥材料可用于的操作(例如,加密、解密或存储)的一组许可有关的信息,以及必须提供以启用许可的任何凭证。还与密钥相关联的可以是与密钥类型有关的包括标识密钥类型的数据在内的信息,其中包括标识例如密钥可以使用的算法及其长度(例如,密钥长度256位的高级加密标准(AES)算法、或密钥长度2048位的RSA算法)的信息。
在本说明书中,术语“验证”可用于指代检查密码签名的方法。术语“确认”可以用于指代检查数据是否如预期的方法,或者检查签名是否正确以及数据是否如预期的方法。
在本说明书中,术语“访问控制列表”是指附于对象的一个或多个许可。许可指定在对象上允许的操作,以及授权操作所需的条件和/或凭证。
在本说明书中描述的方法中,公钥可以存储在第一安全上下文或第二安全上下文内,或者如果公钥的完整性受保护(例如,用第一安全上下文或第二安全上下文的身份密钥对其进行签名)则可以存储在第一安全上下文或第二安全上下文外部的非受信介质上。这意味着如果公钥被篡改,则将检测到这一点。
在本说明书中描述的方法中,可以通过使用密码证书来确认在第一安全上下文和第二安全上下文之间发送的信息。例如,可以用属于发送者的私有签名密钥对信息进行签名,并且将签名与信息一起发送给接收者。
本说明书中描述的方法可以是计算机实现的方法。
由于根据实施例的一些方法可以通过软件实现,因此一些实施例包括在任何适当的载体介质上的向通用计算机提供的计算机代码。载体介质可以包括任何非暂时性存储介质,例如软盘、CD ROM、磁性设备或可编程存储设备,或任何暂时性介质,例如任何信号,如电信号、光信号或微波信号。
具体实施方式
图1(a)是包括根据本发明的实施例的密码设备的租户系统1和包括根据本发明的另一实施例的密码设备的服务提供商系统3的示意图。
例如,服务提供商可以是云服务提供商。服务提供商向一个或多个租户提供对诸如密码密钥之类的数据的存储以及对数据的安全密码处理。例如,租户可以将服务提供商系统3的密码基础设施用于诸如支付、安全和监管之类的应用。服务提供商系统3包括服务提供商应用服务器,其被配置为执行诸如这些应用之类的一个或多个应用。
为了使用这些服务,租户系统1向服务提供商系统3提供密码密钥Ktenant。密码密钥Ktenant被安全地存储在服务提供商系统3处以用于这些应用。
租户系统1包括第一安全上下文5,并且服务提供商系统3包括第二安全上下文7。安全上下文可以是单个安全设备,例如硬件安全模块HSM。备选地,它可以是两个或更多个安全设备,或安全设备的一部分。术语安全上下文在此用于指代形成单个安全上下文的一个或多个设备或设备的一部分(partition),即其共享至少一个私钥并且被配置为保护和执行一组密码功能。第一安全上下文5对于租户系统的其余部分是安全的。第二安全上下文7对于服务提供商系统的其余部分是安全的。
租户密码密钥Ktenant被提供给服务提供商系统3中的第二安全上下文7。然后,租户密码密钥Ktenant被存储在第二安全上下文7中,或者在被存储在服务提供商系统3中的其他地方之前用不能离开第二安全上下文的密钥进行加密。
在将密码密钥Ktenant提供给第二安全上下文7之前,租户可以根据由第二安全上下文7提供的生成证书来认证和确认第二安全上下文7。例如,可以在制造作为第二安全上下文7的部分的一个或多个设备时生成该生成证书。租户信任制造商,但不信任服务提供商。生成证书认证第二安全上下文7是由受信任的制造商制造的,因此可以被信任。此外,第二安全上下文7的参数和状态可以例如根据包含在生成证书中和另外的配置证书中的信息来确认。
生成证书包括在设备的整个寿命期间有效的静态信息。配置证书包括与设备当前配置有关的信息。配置信息仅在生成配置证书时有效,并且可能在后续阶段更改。
因此,第一安全上下文5在密钥传送操作开始之前与第二安全上下文建立信任。
在被传送到第二安全上下文7之前,使用在第二安全上下文7处生成的非对称密钥对中的公共密钥来对租户密码密钥Ktenant进行加密。利用在第二安全上下文7处生成的非对称密钥对发布第一密码证书。在实施例中,第一密码证书确认以下内容:非对称密钥对是在第二安全上下文7中生成的,非对称密钥对中的私钥是暂时的,并且非对称密钥对中的私钥不能离开第二安全上下文7。这使得租户密码密钥Ktenant能够以对攻击者和服务提供商本身(即,对于服务提供商系统3的在第二安全上下文7外部的其余部分,例如应用服务器)安全的方式被传送到服务提供商系统3。
在实施例中,然后将租户密码密钥Ktenant存储在第二安全上下文7中。备选地,租户密码密钥Ktenant存储在服务提供商系统中的其他地方,例如存储在应用服务器中,并用不能离开第二安全上下文7的密钥进行加密。
在第一安全上下文5中,与租户密码密钥Ktenant一起还生成与租户密码密钥Ktenant相对应的访问控制列表(ACL)。ACL还与租户密码密钥Ktenant一起被传送到第二安全上下文7。ACL与租户密码密钥Ktenant一起存储。第一安全上下文5已与第二安全上下文7建立了信任,因此知道第二安全上下文7将实施ACL中包含的策略。因此,ACL允许租户保持对密钥的控制,即使密钥已被传送到第二安全上下文7。
在实施例中,ACL指定租户密码密钥Ktenant只能存储在第二安全上下文7内部。在备选实施例中,ACL包含以下限制:租户密码密钥Ktenant只能在其用不能离开第二安全上下文7的密钥被加密以进行存储的条件下被存储。这确保了第三方和服务提供商无法访问租户密码密钥Ktenant。
ACL可以指定租户密码密钥Ktenant只能存储在抵抗第三方的篡改的非易失性存储器中。
此外,ACL指定必须提供有效使用凭证,例如使用证书,以便授予对租户密码密钥Ktenant的一种或多种类型的使用。例如,ACL可能要求提供用由租户拥有的非对称密钥中的私钥签名的证书,以授权使用租户密钥Ktenant来执行某些密码操作。这确保了如果未经租户授权,则不能使用利用该密钥进行的特定类型的操作。
虽然租户密码密钥Ktenant存储在服务提供商系统中,但是服务提供商(即,服务提供商系统3中在第二安全上下文7外部的其余部分)不能访问密钥,并且未经租户授权,不能使用该密钥。这保护租户密码密钥Ktenant免受恶意服务提供商的破坏。它还保护租户密码密钥Ktenant免受对服务提供商具有管辖权但不对租户具有管辖权的安全机构的破坏。
它还允许多个租户使用服务提供商中相同的密码基础设施。多个租户可以将密钥存储在同一安全设备中,这是因为每个租户密码密钥Ktenant对于其他租户是不可访问的,并且未经相应租户的授权就不能使用。
访问控制列表可以指定使用凭证必须包括可以确定使用凭证的到期的信息,并且使用凭证必须未到期,以便授权使用密码密钥Ktenant。因此,租户能够在使用凭证中指定其密钥的有效期,在所述有效期之后不能使用密钥直到提供进一步授权为止。
可以参考第一安全上下文5和第二安全上下文7都信任的参考时间源2来计算到期时间。参考时间源2可以由服务提供商、租户或单独的第三方托管。图1(a)示出了参考时间源2由第三方托管的实施例的示意图。
尽管以上描述涉及租户密码密钥的传送和存储,但是可以以相同的方式传送和存储任何形式的数据。从租户到服务提供商的数据传送方法包括利用由服务提供商系统内的安全设备生成的密钥对中的公钥来对数据进行加密。因此,在传输期间服务提供商不能访问数据。传送前对加密后的数据进行密码签名,以确保数据的真实性和完整性。
与数据一起生成相应的访问控制列表,该列表指定在数据被存储后必须提供有效证书以便授权对数据的特定使用。因此,即使已经将数据传送出租户系统,租户也可以保持对数据使用的控制。
控制安全地存储在服务提供商系统中的数据的使用的方法包括向请求使用数据的一方发布具有到期时间的使用凭证。在授权使用所存储的数据之前,必须对使用证书进行确认。这使得租户能够授权使用所存储的数据达有限的时间段。
图1(b)示出了根据本发明的实施例的第一安全上下文5和根据本发明的另一实施例的第二安全上下文7的示意图。
第一安全上下文5可以是单个安全设备,例如硬件安全模块HSM。备选地,第一安全上下文5可以是两个或更多个安全设备,或者是安全设备的一部分。例如,第一安全上下文5可以是低功率、低性能、低成本的HSM。
第二安全上下文7可以是单个安全设备,例如硬件安全模块。备选地,第二安全上下文7可以是两个或更多个安全设备,或者是安全设备的一部分。第二安全上下文7可以包括高性能HSM的集群。
因此,第一安全上下文5和第二安全上下文7可以各自包括一个或多个防篡改密码设备或防篡改密码设备的一部分。
第一安全上下文5包括第一设备存储器9。第一设备存储器9被配置为存储密码信息,例如密钥、密钥对和证书。第一设备存储器9可以包括任何形式的非易失性设备存储器,例如闪存、光盘或磁性硬盘驱动器。第一安全上下文5还包括易失性存储器。
第一设备存储器9可以是物理上安全的并且可以防止第三方的篡改,例如通过包括诸如膜之类的物理安全件,所述膜覆盖整个设备,在不破坏底层物理硬件(而因此使其无法使用)的情况下不能被移除。
唯一非对称身份密钥K1ID存储在第一设备存储器9中,其具有对应的签名生成证书{C1ID}Kman priv。K1ID是用于证明数据来源和真实性的签名密钥。生成证书C1ID可以描述密钥的公共参数,例如生成证书C1ID可以包括与密钥的类型及其长度有关的信息。生成证书C1ID包括认证身份密钥K1ID在第一安全上下文5中生成的信息。例如,生成证书C1ID可以包括K1ID的公共密钥的散列,并且通过制造商非对称密钥的私钥Kman priv签名。
生成证书C1ID还可以包括状态信息,例如:与设备的唯一标识有关的信息;标识制造商、使用的硬件版本、使用的软件类型、单元的序列号和型号支持的特征/功能的信息。由第一安全上下文5和第二安全上下文7都信任的制造商对生成证书C1ID进行签名。使用制造商非对称密钥的私钥Kman priv对生成证书进行密码签名。制造商可以是制造构成第一安全上下文的安全设备和构成第二安全上下文的安全设备的第三方。受信制造商密钥中的公钥Kman pub也存储在第一设备存储器9中,或者可以以完整性受保护的方式存储在第一安全上下文5外部。
第二安全上下文7包括第二设备存储器11。第二设备存储器11被配置为存储密码信息,例如密钥、密钥对和证书。第二设备存储器11可以包括任何形式的非易失性设备存储器,例如闪存、光盘或磁性硬盘驱动器。第二安全上下文5还包括易失性存储器。
设备存储器可以是物理上安全的并且可以防止第三方的篡改,例如通过包括诸如膜之类的物理安全件,所述膜覆盖整个设备,在不破坏底层物理硬件(而因此使其无法使用)的情况下不能被移除。
唯一非对称身份密钥K2ID存储在第二设备存储器11中,其具有对应的签名生成证书{C2ID}Kman priv。K2ID是用于证明数据来源和真实性的签名密钥。生成证书C2ID可以描述密钥的公共参数,例如生成证书C2ID可以包括与密钥的类型及其长度有关的信息。生成证书C2ID包括认证身份密钥K2ID在第二安全上下文7中生成的信息。例如,生成证书C2ID可以包括K2ID的公钥的散列,并且通过制造商非对称密钥的私钥Kman priv签名。
生成证书C2ID还可以包括状态信息,例如:与设备的唯一标识有关的信息;标识制造商、使用的硬件版本、使用的软件类型、单元的序列号和型号支持的特征/功能的信息。生成证书C2ID由受信任的制造商签名。使用制造商非对称密钥的私钥Kman priv对生成证书进行密码签名。受信制造商密钥中的公钥Kman pub也存储在第二设备存储器11中,或者可以以完整性受保护的方式存储在第二安全上下文7外部。
在第一安全上下文5和第二安全上下文7中,密码密钥以安全、防篡改格式存储在设备存储器中。
可以使用可以在制造时生成的密码证书、签名的生成证书{C1ID}Kman priv和{C2ID}Kman priv,可验证地标识第一安全上下文5和第二安全上下文7。因此,第一安全上下文5和第二安全上下文7均能够以意味着它们无法被仿制的方式安全地存储它们的身份。标识第一安全上下文5和第二安全上下文7允许确定每个安全上下文中的一个或多个设备的来源。例如,每个设备包含在制造时在工厂中生成的唯一不对称身份密钥KID。每个组件还包含KID的密钥生成证书,该证书使用仅为制造商所知的非对称密钥进行签名。制造商密钥中的公钥可以用作信任根来认证真正的设备。
此外,可以根据包含在生成证书中的信息并通过交换另外的配置证书以不可否认的方式来确认第一安全上下文和第二安全上下文的参数和状态。
在实施例中,第一安全上下文5和第二安全上下文7各自被配置为分别生成配置证书C1V和C2V,其包含与由租户和服务提供商设置的设备的当前配置有关的信息。配置信息无法包括在生成证书中,这是因为生成证书是在制造时、在将设备分发给租户和服务提供商并进行配置之前生成的。
因此,一旦交换了生成证书,并且在两个安全上下文之间形成了信任,则可以通过进一步的签名证书数据传送来交换与动态配置相关的另外的信息。配置证书C1V和C2V分别由相应安全上下文的唯一非对称身份密钥的私钥签名。配置证书由KIDpriv签名以验证真实性,这是因为其他安全上下文现在信任KIDpriv。配置证书中包含的数据可能涉及管理员部署选项,例如安全设置、软件版本、使用哪个受信时间源或HSM是否认为它曾被试图篡改。
服务的来源和状态定义了可供其他服务信任的足够的信息。在生成和配置证书过程中交换该信息。
第二安全上下文被信任,信任其将实施在提供给第二安全上下文的ACL中指定的规则,并且被信任为其将准确地更新其状态证书。在实施例中,如果第二安全上下文不能以ACL中包含的指定级别实施规则,则第二安全上下文将不执行操作并且不会将其自身或其创建的密钥公告为支持所述规则。
第一安全上下文和第二安全上下文的身份密钥可以在制造时安装,并且这些密钥的散列由制造商密钥Kman priv签名,并与身份密钥一起存储,从而证明其来源。
通过能够密码标识来自“受信”源的服务,租户能够在高度保证所有数据都受到保护并且任何第三方(包括托管服务提供商)都无法恢复的情况下通过通信信道与托管服务交换其密码密钥。通过根据生成证书确定第二安全上下文7中的服务提供商的设备是受信的,并且根据配置证书确定其配置符合租户的安全策略,租户可以在知道密钥将以指定的方式存储的情况下传送他们的密钥。与密钥一起发送的ACL包括指定如何存储和使用密钥的策略。然后,第二安全上下文7将实施这些策略。租户可以相信第二安全上下文7将实施策略,这是因为它已经与第二安全上下文7建立了信任。建立信任允许安全传送,并且ACL允许第二安全上下文7在拥有密钥后应用策略。
第一安全上下文5还包括收发器13。收发器13被配置为发送和接收数据分组。可以例如经由第一安全上下文5与第二安全上下文7之间的互联网连接或直接有线连接从第一收发器13发送数据分组和在第一收发器13处接收数据分组。该通信链路可能是非受信的,然而下面关于图6(a)描述的密钥传送协议使密钥免受攻击者的保护。
第一安全上下文5还包括第一处理器17。第一处理器17被配置为执行密码操作,例如生成密码密钥和非对称密码密钥对,生成与密码密钥或非对称密码密钥对相对应的证书,生成与密码密钥相对应的访问控制列表,生成与密码密钥相对应的使用证书,利用存储在第一设备存储器9中的密码密钥对对象进行加密,利用存储在第一设备存储器9中的密码密钥对加密后的对象进行解密,利用存储在第一设备存储器9中的密码密钥对对象进行密码签名,基于存储在第一设备存储器9中的信息验证密码签名并确认对象。第一处理器17可以是物理安全的。
在实施例中,第一安全上下文5包括用于执行非密码操作的主处理器,并且第一处理器17是被配置为仅执行密码操作的协处理器,即与主处理器分开的单独组件。备选地,第一处理器17可以是主处理器。
密码密钥和非对称密码密钥对的生成可以包括随机数的生成。第一安全上下文5还可以包括随机熵源,用于随机数生成。
第二安全上下文7还包括收发器15。第二收发器15被配置为发送和接收数据分组。可以例如经由第一安全上下文5与第二安全上下文7之间的无线互联网连接或直接有线连接从第二收发器15发送数据分组和在第二收发器15处接收数据分组。
第二安全上下文7还包括第二处理器19。第二处理器19被配置为执行密码操作,例如生成密码密钥和非对称密码密钥对,生成与密码密钥或非对称密码密钥对相对应的证书,生成与密码密钥相对应的访问控制列表,生成与密码密钥相对应的使用证书,利用存储在第二设备存储器11中的密码密钥对对象进行加密,利用存储在第二设备存储器11中的密码密钥对加密后的对象进行解密,利用存储在第二设备存储器11中的密码密钥对对象进行密码签名,基于存储在第二设备存储器11中的信息验证密码签名并确认对象。第二处理器19可以是物理安全的。
在实施例中,第一安全上下文5包括用于执行非密码操作的主处理器,并且第一处理器17是被配置为仅执行密码操作的协处理器,即与主处理器分开的单独组件。备选地,第一处理器17可以是主处理器。
密码密钥和非对称密码密钥对的生成可以包括随机数的生成。第二安全上下文7还可以包括随机熵源,用于随机数生成。
例如可以用作第一安全上下文5或第二安全上下文7的部分的HSM设备可以包括如上所述的设备存储器、处理器、收发器和随机熵源。HSM可以包括物理和非物理安全属性。非物理安全属性包括使用加密,即在设备中包括被配置为执行对存储数据的加密的软件或物理组件。物理属性可以包括由物理接近触发的篡改开关,以及围绕设备的物理边界的防篡改膜。
本申请中讨论的密码非对称密钥对可以是支持签名和验证的任何非对称密钥对类型。例如,每个制造商密钥对Kman、第一身份密钥身份密钥K1ID、第二身份密钥对K2ID、时间源身份密钥对KTSID和签名密钥对Ktenant-sign可以是例如RSA、DSA或ECDSA密钥对中的任何一个,其中RSA或DSA是用于签名和验证的算法。
例如,为了生成RSA密钥对,可以由第一处理器17、第二处理器19或第三处理器41执行生成操作,以生成可以由RSA算法用于对数据进行签名的输出密钥对。
随机熵源可以用于生成随机数,该随机数又由第一处理器17、第二处理器19或第三处理器41用于生成密码密钥和密码密钥对。
本申请中的密码非对称密钥对可以是支持加密和解密的任何非对称密码密钥对类型。例如,第一密码密钥对KBLOB可以是RSA密钥对或可以在集成加密方案(IES)算法中使用的密钥对。
在下面描述的第一安全上下文5和第二安全上下文7之间的密码证书和密码密钥的传送可以通过第一安全上下文5和第二安全上下文7之间的安全的经认证的信道进行,该信道由服务提供商提供和控制。可以使用负载均衡器或防火墙设备来提供由服务提供商提供的安全信道。使用此类基础设施可减轻诸如拒绝服务之类的攻击。
尽管该信道对第三方是安全的,但它对服务提供商的攻击是开放的,因此不被租户信任用于高价值密码密钥的传送。因此,租户通过加密Ktenant并随后对通过信道发送的加密后的数据进行签名来实施安全性。
图2(a)是示出了在第一安全上下文5和第二安全上下文7之间建立信任的方法的流程图。建立信任的方法是根据本发明的实施例的密码密钥传送方法的一部分。建立信任的方法例如可以在生成密码密钥Ktenant之前执行,或者例如可以在生成密码密钥之后但在第一安全上下文5和第二安全上下文7之间的任何密码密钥交换之前执行。
在步骤S201,从第一安全上下文5向第二安全上下文7发送第一安全上下文的身份密钥中的公钥K1ID pub、以及生成证书{C1ID}Kman priv。第一安全上下文5中的第一收发器13被配置为向第二安全上下文7中的第二收发器15发送第一安全上下文的身份密钥中的公钥K1ID pub、以及生成证书{C1ID}Kman priv。可以在同一消息中发送与第一安全上下文5中的设备的状态有关的信息。在这种情况下,与设备状态有关的信息也包括在生成证书中,并且接收器可以使用该信息来确认消息中包含的状态信息。
生成证书是不可变的,因此仅包含在制造时可获得的信息。与设备的当前配置有关的信息(例如,IP地址或篡改状态)可以包括在配置证书中。配置信息可以与生成证书同时发送,或者在生成证书之后发送。但是,生成证书是在制造时生成和签名的,而配置证书是在密钥传送时生成的,并由K1ID-priv签名。只有在验证了生成证书后才能验证配置证书。
在步骤S202,在第二安全上下文7处验证生成证书的签名{C1ID}Kman priv。第二安全上下文7中的第二处理器19被配置为验证生成证书的签名{C1ID}Kman priv。使用存储在设备存储器11中的受信制造商密钥Kman pub中的公钥来验证生成证书。第二处理器19被配置为执行签名验证算法,其在给定签名消息{C1ID}Kman priv和公钥Kman pub的情况下接受或拒绝该消息的真实性声明。
在第二安全上下文7处确认第一安全上下文的身份密钥中的公钥K1ID pub的真实性。第二安全上下文7中的第二处理器19被配置为确认第一安全上下文的身份密钥中的公钥K1ID pub。在生成证书C1ID包括第一安全上下文的身份密钥中的公钥K1ID pub的散列的实施例中,通过以下方式确认真实性:计算第一安全上下文的身份密钥中的公钥K1ID pub的散列,并确认它与其生成证书C1ID中包含的内容匹配。
在实施例中,生成证书C1ID包括K1ID中的公钥的散列,并且由制造商非对称密钥中的私钥Kman priv签名,步骤S202包括:计算在消息中发送的接收数据的散列,在该情况下是K1ID pub的散列;连同制造商密钥中的公钥一起将接收到的签名输入到验证算法中(其可以是密码操作),并验证输出;将所计算的散列与验证算法的输出中包含的内容进行比较,以确定它们是否相同。
在步骤S203,如果状态信息包括在消息中,则第二安全上下文7确认设备的状态是否满足要求。备选地,状态信息不包括在生成证书中,并且第二安全上下文7不确认第一安全上下文5的状态。第二安全上下文7不向第一安全上下文5传送任何安全信息,因此不需要确认第一安全上下文5的状态信息。
如果验证了签名并且确认了状态信息,则第一安全上下文的身份密钥中的公钥K1ID pub被存储在第二安全上下文7的第二设备存储器11中。备选地,第一安全上下文的身份密钥中的公钥K1ID pub可以受第二安全上下文7对完整性的保护并且存储在第二安全上下文7外部的非受信存储装置中。第二安全上下文7可以使用K2ID priv对第一安全上下文的身份密钥中的公钥K1ID pub以及指示这是来自受信源的公钥的数据进行签名以进行存储。备选地,它可以使用另一密钥对其进行加密。在这些情况下,可以使用非受信设备存储器,其通常具有比第二安全上下文7内的设备存储器更大的容量,同时保持对密钥的信任。
如果未验证签名或未确认状态信息,则向第一安全上下文返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
在步骤S204,从第二安全上下文7向第一安全上下文5发送第二安全上下文的身份密钥中的公钥K2ID pub、以及生成证书{C2ID}Kman priv。第二安全上下文7中的第二收发器15被配置为向第一安全上下文5中的第一收发器13发送第二安全上下文的身份密钥中的公钥K2ID pub、以及生成证书{C2ID}Kman priv。可以在同一消息中发送与第二安全上下文7中的设备的状态有关的信息。在这种情况下,与设备状态有关的信息也将包括在生成证书中,以便确认状态信息。同样,生成证书是不可变的,因此仅包含在制造时可获得的信息。与设备的当前配置有关的信息(例如,IP地址或篡改状态)可以包括在配置证书中。配置信息可以与生成证书同时发送,或者在生成证书之后发送,例如在步骤S604中作为第一密码证书CBLOB的部分。但是,生成证书是在制造时生成和签名的,而配置证书是在密钥传送时生成的,并由K2ID-priv签名。只有在验证了生成证书后才能验证配置证书。
在步骤S205,在第一安全上下文5处验证生成证书的签名{C2ID}Kman priv。第一安全上下文5中的第一处理器17被配置为验证生成证书{C2ID}Kman priv。使用存储在设备存储器9中的受信制造商密钥中的公钥Kman pub来验证签名。第一处理器17被配置为执行签名验证算法,其在给定签名消息{C2ID}Kman priv和公钥Kman pub的情况下接受或拒绝该消息的真实性声明。这允许第一安全上下文5通过验证签名来确认第二安全上下文7中的制造商设备。
在第一安全上下文5处确认第二安全上下文的身份密钥中的公钥K2ID pub的真实性。第一安全上下文5中的第一处理器17被配置为确认第二安全上下文的身份密钥中的公钥K2ID pub。在生成证书C2ID包括第二安全上下文的身份密钥中的公钥K2ID pub的散列的实施例中,通过以下方式确认真实性:计算第二安全上下文的身份密钥中的公钥K2ID pub的散列,并确认它与其生成证书C2ID中包含的内容匹配。
在步骤S206,如果状态信息包括在消息中,则第一安全上下文5确认设备的状态是否满足要求。
如果验证了签名并且确认了状态信息,则第二安全上下文的身份密钥中的公钥K2ID pub被存储在第一安全上下文5的第一设备存储器9中。备选地,第二安全上下文的身份密钥中的公钥K2ID pub可以受第一安全上下文5对完整性的保护并且存储在第一安全上下文5外部的非受信存储装置中。第一安全上下文5可以使用K1ID priv对第二安全上下文的身份密钥中的公钥K2ID pub以及指示这是来自受信源的公钥的数据进行签名以进行存储。备选地,它可以使用另一密钥对其进行加密。在这些情况下,可以使用非受信设备存储器,其通常具有比第一安全上下文5内的设备存储器更大的容量,同时保持对密钥的信任。
如果未验证签名或未确认状态信息,则向第二安全上下文7返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
图2(b)是示出了在第一安全上下文5处确认第二安全上下文7的配置的方法的流程图,该方法是根据本发明的实施例的密码密钥传送方法的一部分。在该方法中,可以确认第二安全上下文7的配置。在实施例中,类似的方法也可以用于在第二安全上下文7处确认第一安全上下文5的配置。备选地,第二安全上下文7不确认第一安全上下文5的配置。第二安全上下文7不向第一安全上下文5传送任何安全信息,因此不需要确认第一安全上下文5的配置。
在步骤S211,由第二安全上下文7生成配置信息。配置信息可以包括与管理员应用的特定配置有关的信息。这可以包括例如与所支持的密码操作、所使用的密码密钥和/或单元的软件版本有关的信息。例如,,配置信息可以包括指示第一安全上下文5已经被配置为当租户密钥不在第二安全上下文7内时使用AES算法对租户密钥进行加密的信息。配置信息还可以包括与管理员部署选项有关的信息,所述管理员部署选项例如是安全设置、使用哪个受信时间源或者第二安全上下文7是否认为设备已经被试图篡改。
在步骤S212,配置信息由第二安全上下文的身份密钥中的私钥K2ID priv签名,产生配置证书C2V。第二安全上下文的身份密钥中的私钥K2ID priv存储在第二安全上下文7中,并且管理员不能访问。利用第二安全上下文的身份密钥中的私钥K2ID priv对配置证书C2V进行签名意味着不能破坏配置信息。
在步骤S213,从第二安全上下文7向第一安全上下文5发送配置信息和配置证书C2V。例如,这可以在步骤S204与K2ID pub和{C2ID}Kman priv同时发送。备选地,配置信息可以包括在关于图6(a)描述的第一密码证书中,并且配置信息可以与第一密码证书CBLOB同时发送。第二安全上下文7中的第二收发器15被配置为向第一安全上下文5中的第一收发器13发送配置信息和配置证书C2V。
在步骤S214,在第一安全上下文5处验证签名配置证书C2V。第一安全上下文5中的第一处理器17被配置为验证签名配置证书C2V。在步骤S204至S206中接收并处理签名配置证书C2V之后,使用存储在设备存储器9中的第二身份密钥中的公钥K2ID pub来验证签名配置证书C2V。第一处理器17被配置为执行签名验证算法,其在给定签名配置证书C2V和公钥K2ID pub的情况下接受或拒绝该消息的真实性声明。这允许第一安全上下文5证明已由已知设备生成配置信息。
在步骤S215,第一安全上下文确认配置信息是否满足其要求。
在实施例中,在向第二安全上下文7传送Ktenant之前立即请求并检查配置信息。这可确保最新的配置信息被确认。
在实施例中,还以类似的方式由第一安全上下文5生成并发送配置信息和配置证书。配置信息可以包括与管理员应用的特定配置有关的信息。由第一安全上下文5的身份密钥中的私钥对配置信息进行签名并向第二安全上下文7发送配置信息,所述第二安全上下文7确认第一安全上下文5的配置满足其要求。
在上述方法中,租户向服务提供商注册自己。注册以双方通过不安全介质进行相互认证的形式进行。使用唯一的非对称身份密钥来执行第一安全上下文5和第二安全上下文7的相互认证。身份密钥中的公钥与其匹配的生成证书一起被交换。每个安全上下文通过检查证书包含身份密钥中的公钥的散列并且证书真正地是由受信制造商创建的来确认另一个安全上下文的生成证书。身份密钥的生成证书可以称为授权证。使用所建立的共享信任根,第一安全上下文5和第二安全上下文7与可验证的可靠伙伴建立安全的经认证的网络通信。第一安全上下文5和第二安全上下文7各自密码确认另一安全上下文是由受信制造商构建的。
在第一安全上下文处使用Kman pub验证签名生成证书{C2ID}Kman priv的步骤S205验证第二安全上下文7是已知的可靠源。
图3是在建立信任之后并且在每个安全上下文中生成相关密钥之后,租户系统1和服务提供商系统3的示意图。
第一安全上下文5中的第一设备存储器9还存储第二安全上下文的身份密钥中的公钥K2ID pub。备选地,该密钥可以以完整性受保护的方式存储在第一安全上下文5外部。第一设备存储器9还存储在下面描述的步骤S601中生成的租户密钥Ktenant,以及在下面描述的步骤S401中生成的第二密钥对Ktenant-sign。
第二安全上下文7中的第二设备存储器11还存储第一安全上下文的身份密钥中的公钥K1ID pub。备选地,该密钥可以以完整性受保护的方式存储在第一安全上下文5外部。第二设备存储器1还存储在下面描述的步骤S602中生成的第一密码密钥对和第一密码证书。
图4(a)是示出了从第一安全上下文5向第二安全上下文7传送签名密钥Ktenant-sign的方法的流程图,该方法是根据本发明的实施例的密码密钥传送方法的一部分。在实施例中,在向第二安全上下文7发送密码密钥Ktenant之前执行传送签名密钥Ktenant-sign的方法。可以在生成密码密钥Ktenant之后执行传送签名密钥Ktenant-sign的方法。
在步骤S401,在第一安全上下文5中生成非对称密码密钥对和以及对应的证书Ctenant-sign。非对称密码密钥对和被称为第二公钥和第二私钥,对应的证书Ctenant-sign被称为第二密码证书。第一安全上下文5中的第一处理器17被配置为生成非对称密码密钥对和以及对应的证书Ctenant-sign。第二密码证书Ctenant-sign可以包括第二公钥的签名散列。
在步骤S402,用第一安全上下文的身份密钥中的私钥K1ID priv对第二密码证书Ctenant-sign进行密码签名。第一处理器17被配置为利用第一安全上下文的身份密钥中的私钥K1ID priv对第二密码证书Ctenant-sign进行密码签名。
因此,第二密码证书Ctenant-sign包括可以确认第二公钥的来源的信息。可以确认第二公钥的来源的信息包括第二公钥的签名散列。第二密码证书Ctenant-sign包括第二公钥的散列,并利用第一安全上下文的身份密钥中的私钥K1ID priv进行签名,这允许确认第二公钥的来源。
在步骤S403,向第二安全上下文7发送第二公钥和第二密码证书{Ctenant-sign}K1ID priv。第一收发器13被配置为向第二安全上下文7发送第二公钥和第二密码证书{Ctenant-sign}K1ID priv。
在步骤S404,在第二安全上下文7处验证第二密码证书{Ctenant-sign}K1ID priv。第二安全上下文7中的第二处理器19被配置为验证第二证书{Ctenant-sign}K1ID priv。使用第一安全上下文的身份密钥中的公钥K1ID pub来验证第二证书。第二处理器19被配置为执行签名验证算法,其在给定签名消息{Ctenant-sign}K1ID priv和公钥K1ID pub的情况下接受或拒绝消息的真实性声明。
然后在第二安全上下文7处确认第二公钥的真实性。第二安全上下文7中的第二处理器19被配置为确认第二公钥在第二密码证书Ctenant-sign包括第二公钥的散列的实施例中,通过计算第二公钥的散列并确认其与第二密码证书Ctenant-sign中包含的内容相匹配来确认第二公钥的真实性。
如果验证了签名并且确认了第二公钥,则将第二公钥存储在第二安全上下文7的第二设备存储器11中。备选地,它可以受第二安全上下文7的对完整性的保护,并且存储在第二安全上下文7外部的非受信存储装置中。
如果未验证签名或未确认第二公钥,则向第一安全上下文5返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
在上述方法中,在成功建立信任之后,第一安全上下文5生成非对称密钥Ktenant-sign,并且向第二安全上下文7转发包括用K1ID中的私钥签名的证书在内的公钥。第二安全上下文7确认证书并将Ktenant.sign的公钥以安全的防篡改格式存储在第二设备存储器11或其他地方以供后续使用。因此,租户系统中的第一安全上下文5生成非对称密钥Ktenant-sign,并向第二安全上下文转发公钥以供存储和后续使用。
图4(b)是租户注册方法的示意图,该方法是根据本发明的实施例的密码密钥传送方法的一部分。该方法包括生成租户密码密钥Ktenant(如下文关于步骤S601所述)、建立信任(如上文关于图2(a)所述)、以及生成和交换第二公钥(如上文关于图4(a)所述)。
图中的每个垂直框表示随时间推移的封闭实体(即第一安全上下文5、第二安全上下文7和时间源3),时间在向下方向上逐渐增加。箭头和循环起始自的块和终止于的块指示特定过程的持续时间。例如,第二安全上下文7接收第一安全上下文的身份密钥中的公钥K1ID pub和对应的生成证书。这开始了第二安全上下文7中的过程。该过程的下一步骤是确认证书,然后向第一安全上下文5转发响应,即,如果证书未被确认则转发错误消息,或者如果证书已被确认则转发包含其自身的公共身份密钥和证书在内的消息。这是该特定过程的结束。
循环指示过程内部发生的动作(例如,确认),其不需要与任何其他实体交互。横跨实体之间的线表示实体之间的通信。
在第一安全上下文5中生成密码密钥Ktenant。然后在第一安全上下文5中生成第二密码密钥Ktenant-sign。然后从第一安全上下文5向第二安全上下文7发送身份密钥中的公钥K1ID pub和签名证书{C1ID}Kman priv,并且在第二安全上下文7处对其进行确认。然后从第二安全上下文7向第一安全上下文5发送身份密钥中的公钥K2ID pub和签名证书{C2ID}Kman priv,并且在第一安全上下文5处对其进行确认。向第二安全上下文7发送第二密码密钥Ktenant-sign pub和签名证书{Ctenant-sign}K1ID priv,在所述第二安全上下文7中对它们进行确认和存储。
图5是在下文关于图6(a)讨论的数据传送过程期间交换第二公钥Ktenant-sign pub之后,租户系统1和服务提供商系统3的示意图。
在实施例中,Kblob和Cblob是暂时的,并且一旦Ktenant被传送,则从第二安全上下文7中删除Kblob和Cblob。
第二安全上下文7中的第二设备存储器11还存储第二密钥中的公钥Ktenant-sign pub。备选地,该密钥可以以完整性受保护的方式存储在第一安全上下文5外部。
图6(a)是示出了根据本发明的实施例的从第一安全上下文向5第二安全上下文7传送数据的方法的流程图。在图6(a)所示的实施例中,数据是密码密钥Ktenant。
一旦租户系统向服务提供商系统注册了自己,则第一安全上下文5通过安全的经认证的连接而连接到第二安全上下文7,并启动密钥传送或导入过程。
在步骤S601中,在第一安全上下文5中生成密码密钥Ktenant和对应的访问控制列表ACL。第一安全上下文5中的第一处理器17被配置为生成密码密钥Ktenant和对应的访问控制列表。
因此,第一安全上下文5生成密钥Ktenant,它们将其借给服务提供商。连同访问控制列表(ACL)在第一安全上下文5中的安全设备内部生成Ktenant。
ACL指定必须提供有效的使用凭证(例如,使用证书),以便授权对密钥的第一类型的使用。第一类型的使用可以是例如密码操作。ACL描述了如何使用密钥,对其使用的任何限制以及必须为要启用的每个操作提供的凭证。
在备选实施例中,密码密钥Ktenant并非在第一安全上下文5中生成,而是在第一安全上下文5外部生成,然后被提供给第一安全上下文5。
在备选实施例中,代替密码密钥Ktenant,在第一安全上下文5处生成或向其提供一些其他类型的数据。然后生成与该数据相对应的访问控制列表,其指定必须提供有效的使用凭证以便授权对数据的第一类型的使用。例如,第一类型的使用可以是读取数据文件的内容。
在下面的描述中,参考租户密钥的传送和租赁来描述方法和装置,但是应该理解的是,一些其他类型的数据可以代替租户密钥,并以相同的方式传送和租赁。
ACL可以包括一个或多个许可或策略。每个许可可以管理密钥的特定使用。例如,第一许可管理如何存储密钥,第二许可管理密钥如何用于加密,第三许可管理密钥如何用于解密等等。
ACL还包括与特定许可相关联的凭证。凭证指定了授权特定许可必须提供的内容。某些许可可能没有关联的凭证,例如存储许可。
如关于图2(a)和图2(b)所描述的,租户在传送密钥之前已经确认第二安全上下文7遵守ACL中的要求。租户确认第二安全上下文7由受信制造商制造。租户还可以确认第二安全上下文7的当前配置满足租户的安全要求。通过确认第二安全上下文7是受信的并且满足租户要求,租户可以确保第二安全上下文7将实施ACL中包含的策略/许可。
访问控制列表指定必须提供有效的使用凭证(例如,使用证书),以便允许对密码密钥Ktenant进行某些使用。因此,例如,每当密钥用于加密时,Ktenant ACL可能要求提供有效证书。因此,与这些使用相关的许可具有关联的凭证,例如使用证书。
例如,租户可以在管理使用密钥进行加密的许可中指定需要有效的使用证书。因此,为了使用密码密钥Ktenant进行加密,需要提供有效的使用证书来激活许可。
该许可可以指定使用证书必须包括可以标识与使用证书相对应的密码密钥Ktenant的信息,以便授权与该许可相对应的使用。ACL可以包括Ktenant的散列。
ACL可以包括对第二安全上下文7的引用。对第二安全上下文7的引用可以包括身份密钥中的公钥K2ID pub的散列。
在实施例中,该许可要求提供用由租户拥有的非对称密钥中的私钥Ktenant-sign签名的证书,以便授权与该许可相关联的使用。该许可指定必须用第二私钥对使用证书进行签名,以便授权使用密码密钥Ktenant。
在实施例中,该许可指定使用证书必须包括可以确定使用证书的到期的信息,并且使用证书必须未到期,以便授权使用与许可相关联的密码密钥Ktenant。因此,租户能够在使用证书时指定其密钥的到期时间,在该到期时间之后不能使用密钥直到提供进一步授权为止。这允许在保证可以使用密钥的时间的情况下在租户和服务提供商之间传送密码材料。它确保只能使用密钥达租户指定的设定时间量。
在实施例中,ACL包括以下许可,该许可指定使用证书必须包括可以确定使用证书的有效期的“开始时间”的信息,并且必须已经过了开始时间以便授权使用与许可相关联的密码密钥Ktenant。因此,租户能够指定密钥的有效期,在该有效期之外无法使用密钥,直到提供进一步的授权为止。它确保只能使用密钥达租户指定的设定时间间隔。
对于管理密码密钥Ktenant的存储的许可,证书凭证可以不存在。这意味着管理存储的许可始终被启用,或者例如仅在密钥被存储在非易失性介质中之前被启用。这允许第二安全上下文7在没有证书的情况下存储密钥。对于管理存储的许可仅在密钥被存储在非易失性介质中之前被启用的情况,该许可是临时许可,并且在存储之后停用,即将它从ACL中删去。
该许可可以指定密码密钥Ktenant仅在用不能离开第二安全上下文7的密钥加密以进行存储时可以存储在第二安全上下文7外部。该许可可以指定Ktenant只能用不能离开第二安全上下文7并且并非管理员(即,服务提供商)可控的密钥进行加密。许可还可以包括可用于对租户密钥Ktenant进行加密的一个或多个密钥类型和一个或多个密钥机制,例如租户密钥Ktenant只能用256位的AES密钥使用AES-GCM加密来进行加密。该许可可以指定密码密钥Ktenant也可以存储在第二安全上下文7内部。
在实施例中,该许可指定使用经认证的加密算法对密码密钥Ktenant和ACL进行加密。
在实施例中,该许可指定以与加密后的密码密钥Ktenant和访问控制列表相同的数据结构存储可以标识密码密钥Ktenant的来源的信息,并且该信息受到真实性保护。
备选地,该许可可以指定密码密钥Ktenant只能存储在第二安全上下文7内部。
Ktenant ACL包含以下许可,该许可指定租户密钥只能存储在第二安全上下文7内部和/或如果用服务提供商无法获得的密钥进行加密以便存储在第二安全上下文7外部则可以存储在第二安全上下文7外部。只要第二安全上下文7实施ACL中指定的策略,则租户密钥Ktenant不会被暴露给托管服务提供商系统3。
租户已经确保第二安全上下文7将实施该策略,这是因为它已经接收到确认第二安全上下文7的制造商是受信制造商的信息。在生成证书中发送标识第二安全上下文的制造商的信息。例如,利用制造商私钥对生成证书签名。此外,租户已经接收到确认第二安全上下文7的产品、软件和硬件的信息。在生成证书中发送该信息。由于制造商已被标识为受信制造商,所以租户相信第二安全上下文7符合制造商提供的信息。例如,如果生成证书包含指定软件和硬件不受服务提供商攻击的信息,则租户相信就是这种情况,这是因为该信息是由受信制造商提供的。租户可以根据生成证书确认服务提供商正在使用具有来自制造商的某些保证的第二安全上下文7。制造商可以在生成证书中提供保证第二安全上下文7将实施ACL的信息。由于租户信任制造商,这种保证也是被信任的。因此,允许租户确信将实施ACL的保证信息来自制造商。此外,在配置证书中发送的配置信息通知租户是否有人试图在物理上或通过尝试非法侵入来篡改第二安全上下文7。一旦租户确认第二安全上下文7未被篡改,则来自制造商的保证仍然适用。
ACL允许在租户和服务提供商之间传送密码材料,而不会将原始密码材料暴露给服务提供商或对服务提供商具有管辖权的安全机构。例如,因为担心密钥被交给对位于英国的公司没有管辖权的美国安全机构,位于英国的租户不希望美国服务提供商可访问其密码密钥。
此外,它允许服务提供商在单个基础设施内支持来自多个租户的密钥,从而无需为每个租户维护专用设备。租户不希望他们的密钥可供第三方访问,这是因为能够提取租户密钥的第三方可能会使用密钥。提供包括许可(该许可指定密码密钥Ktenant只能存储在第二安全上下文7内部和/或如果用不能离开第二安全上下文7的密钥加密以便进行存储则可以存储在第二安全上下文7外部)的访问控制列表,允许多个租户使用相同的密码基础设施,同时确保原始密钥材料永远不会暴露给其他租户。服务提供商和租户能够以安全的方式共享密码基础设施,以提高效率。
因此,ACL中包含的一个或多个许可限制了Ktenant的存储方式,并且设置为使得包括服务提供商在内的任何人都无法访问Ktenant。由于只能由用仅租户知道的私钥签名的证书凭证来激活与密钥的第一类型的使用相对应的许可,因此第二安全上下文7将禁止对密钥的第一类型的使用,直到与密钥一起提供授权证书的时间为止。这意味着包括服务提供商在内的任何第三方都无法访问原始密钥材料的第一类型的使用。因此,租户能够保证他们的密码密钥不会暴露给服务提供商或任何其他方。在将密钥导入到第二安全上下文中之后,租户能够通过访问控制列表控制其密钥的使用。
访问控制列表可以指定必须在使用证书中提供特定信息,以便允许对租户密钥Ktenant的特定使用。通过这种方式,租户可以限制服务提供商使用密钥的方式。例如,ACL可以包含以下许可,该许可指定当提供使用某个私钥签名的证书时,租户密钥可用于对数据进行加密。因此,与许可相关联的凭证是使用特定私钥签名的证书。它还可以包括以下许可,该许可指定当提供用不同私钥签名的证书时,可进行解密。每个许可可能需要不同的凭证,例如用不同私钥签名的证书。
许可可以指定的包含在证书中的其他信息可以包括发布证书的时间,其中时间戳包括对共享受信时钟和/或可以与证书一起使用的设备的身份(例如,KIDpub的散列)的引用。对身份的包括限制了上下文中的哪些设备可以使用密钥。
与第二安全上下文建立的信任以及对与租户密钥Ktenant相对应的ACL的提供允许租户对服务提供商遵守一组规则(即在ACL中提供的那些规则)这一情况进行密码确认,其保证不泄露原始密码材料和在密钥传送完成后使用密钥。它允许租户安全且可验证地将密码密钥租赁给服务提供商以便以受限的方式使用,同时支持多租户。
ACL包括确保服务提供商无法访问租户的原始密钥材料的策略,租户确保其密钥仅在其控制的情况下可用,并且多个租户可以以安全的方式共享相同的密码基础设施。它允许租赁密钥Ktenant,同时限制可以使用该密钥的时间段。它允许租户在服务提供商托管其密钥后准确地控制其密钥的使用。
在生成Ktenant之后,租户然后启动与服务提供商的密钥租赁协议。例如,第一安全上下文5可以向第二安全上下文7发送消息,这将启动步骤S602。该消息可以请求KBLOB pub。
在步骤S602,在第二安全上下文7中生成适用于加密方案的第一密码密钥对和第一密码证书CBLOB,该第一密码密钥对包括第一公钥KBLOB pub以及第一私钥KBLOB priv。在实施例中,第一密码证书包括第一公钥KBLOB pub的散列。
在实施例中,针对每次数据传送生成新的第一密码密钥对KBLOB和第一密码证书CBLOB,换句话说,每个第一密码密钥对KBLOB和第一密码证书CBLOB仅对单次使用有效。
在实施例中,第一密码证书CBLOB和配置证书是单个证书。换句话说,代替图2(b)的方法,生成第一密码证书,其还包括与第二安全上下文的当前配置有关的信息。与第二安全上下文的当前配置有关的信息可以如关于图2(b)所描述的。
在步骤S603,第一密码证书CBLOB用第二安全上下文的身份密钥中的私钥K2ID priv进行密码签名。第二处理器19被配置为用第二安全上下文的身份密钥中的私钥K2ID priv对第一密码证书CBLOB进行密码签名。
在实施例中,第一密码证书CBLOB确认KBLOB pub是在第二安全上下文7中生成的。第一密码证书包括可以确认密码密钥KBLOB pub的来源的信息。在实施例中,可以确认密码密钥KBLOB pub的来源的信息是第一公钥KBLOB pub的签名散列。换句话说,第一密码证书CBLOB包括第一公钥KBLOB pub的散列,并用第二安全上下文的身份密钥中的私钥K2ID priv签名,这允许确认第一公钥KBLOB pub的来源。
用K2ID priv对第一密码证书签名,以便证明服务提供商生成了该证书。包括有散列还确认了数据(即,第一公钥KBLOB pub)在传送期间未被篡改。
在实施例中,第一密码证书包括确认KBLOB priv是暂时的并且KBLOB priv不能离开第二安全上下文的信息。向第一安全上下文5与第一密码密钥对KBLOB一起发送指示KBLOB priv是暂时的并且KBLOB priv不能离开第二安全上下文的信息。第一密码证书包含该信息并被签名,从而确认包含在消息中的该信息。
在步骤S604,向第一安全上下文5发送第一公钥KBLOB pub和签名的第一密码证书{CBLOB}K2ID priv。也可以与第一密码密钥对KBLOB一起向第一安全上下文5发送与KBLOB pub有关(例如,指示KBLOB priv是暂时的且KBLOB priv不能离开第二安全上下文)的信息并且可以将该信息包括在第一证书中。第二收发器15被配置为向第一安全上下文5发送第一公钥KBLOB pub和签名的第一密码证书{CBLOB}K2ID priv。可以在同一消息中向第一安全上下文5发送配置信息和/或与密钥有关的信息。
因此,在步骤S602至S604,响应于启动消息,第二安全上下文7生成非对称密钥KBLOB,并向第一安全上下文5转发公钥以及用第二安全上下文的身份密钥中的私钥K2ID priv签名的证书。KBLOB是暂时的非对称密钥,在第二安全上下文7内部生成,具有伴随的密钥证书CBLOB。CBLOB允许租户确认以下内容:密钥是由第二安全上下文7内部的设备生成的,Kblob中的私钥是暂时的并且永远不会离开第二安全上下文7。服务提供商向第一安全上下文5发送KBLOB中的公钥和CBLOB。
在步骤S605,在第一安全上下文5处验证签名后的第一密码证书{CBLOB}K2ID priv。第一安全上下文5中的第一处理器17被配置为验证签名后的第一密码证书{CBLOB}K2ID priv。使用第二安全上下文的身份密钥中的公钥K2ID pub来验证签名后的第一密码证书{CBLOB}K2ID priv。第一处理器17被配置为执行签名验证算法,其在给定签名消息{CBLOB}K2ID priv和公钥K2ID pub的情况下接受或拒绝该消息的真实性声明。
然后,在第一安全上下文5处根据第一密码证书CBLOB确认第一公钥KBLOB pub的真实性。第一安全上下文5中的第一处理器17被配置为确认第一公钥KBLOB pub。在第一密码证书CBLOB包括第一公钥KBLOB pub的散列的实施例中,通过计算第一公钥KBLOB pub的散列并确认它与第一密码证书CBLOB中包含的内容匹配来确认第一公钥KBLOB pub的真实性。还根据该证书确认与第一公钥KBLOB pub一起发送的任何其他信息,例如当前配置信息和与第一公钥KBLOB pub相关的信息。
如果验证了签名,则将第一公钥KBLOB pub存储在第一安全上下文5的第一设备存储器9中。备选地,它可以受第一安全上下文5对完整性的保护,并且存储在第一安全上下文5外部的非受信存储装置中。
如果未验证签名或未确认密钥,则向第二安全上下文7返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
在生成还包括与第二安全上下文的当前配置有关的信息的第一密码证书CBLOB的实施例中,在步骤S605还确认与第二安全上下文的当前配置有关的信息,如关于图2(b)所述。还可以确认消息中包含的任何密钥信息。
因此,在步骤S605,第一安全上下文可以使用证书来确认KBLOB的参数、对源进行认证并检查其是否良好地构成并且符合租户期望的安全策略。租户可能要求的安全策略可以包括密钥长度、密钥类型和/或密钥许可-凭证对。密钥许可用于描述密钥可用于的操作。例如,许可可以指定密钥可以用于加密其他密钥,或者可以用于对数据进行密码签名。必须先用匹配的凭证激活许可,然后才能使用它们。该系统中的凭证采用可验证的密码证书的形式。第一安全上下文5确认CBLOB,确认以下内容:KBLOB中的私钥是暂时的,第二安全上下文7由受信源制造,并且第二安全上下文7的状态适于借出密钥。
步骤S606包括在第一安全上下文5中利用第一公钥KBLOB pub对密码密钥Ktenant和对应的访问控制列表进行加密。第一处理器17被配置为利用第一公钥KBLOB pub对密码密钥Ktenant和对应的访问控制列表进行加密。
由于第一安全上下文5和第二安全上下文7之间的通信信道由服务提供商提供和控制,因此租户不信任它用于传送高价值密码密钥(例如,Ktenant),因为它可能会受到服务提供商的攻击。因此,租户通过用第一公钥KBLOB pub加密Ktenant来实施Ktenant的安全性。第一证书CBLOB允许租户确认Kblob中的私钥永远不会离开第二安全上下文7,因此通过用第一公钥KBLOB pub加密Ktenant,租户可以确保Ktenant对服务提供商是安全的,即使服务提供商可以攻击通信信道。
以这种方式对租户密钥的加密提供了植根于第一安全上下文5和第二安全上下文7之间的信任的安全信道。这允许在租户和服务提供商站点之间使用不受第一安全上下文5和第二安全上下文7信任的较高级别安全认证信道。可以由服务提供商使用负载均衡器或防火墙设备来提供该较高层级安全信道。对租户密钥的加密允许服务提供商继续使用该基础设施来减轻诸如拒绝服务之类的攻击,但仍然允许上下文之间的安全性而无需信任外部安全服务。
在加密Ktenant之后,租户可以丢弃KBLOB pub。
在实施例中,可以确认密码密钥Ktenant的来源的信息是签名后的加密租户密钥和访问控制列表{{Ktenant,ACL}KBLOB pub}Ktenant-sign priv。
因此,在步骤S607,使用Ktenant-sign的私钥对来自步骤S606的输出blob进行密码签名。第一处理器17被配置为利用Ktenant-sign的私钥对来自步骤S606的输出blob进行密码签名。
在步骤S608,向第二安全上下文7发送加密后的密码密钥和对应的访问控制列表{Ktenant,ACL}KBLOB pub以及可以确认密码密钥Ktenant的来源的信息。在实施例中,还发送可以标识消息的来源的信息,其例如可以是Ktenant-sign的公钥的散列。
在其中可以标识消息的起源的信息包括的散列的实施例中,向第二安全上下文7转发加密后的blob、签名密钥的散列和签名。签名是可以确认密码密钥Ktenant的来源的信息。第一收发器13被配置为向第二安全上下文7发送加密后的blob、来自步骤S607的签名输出blob和Ktenant-sign的公钥的散列。
给定一个可接受的密钥KBLOB pub(其是租户定义为具有足够密码强度的密钥KBLOB pub),在第一安全上下文5处用Kblob的公钥对要注册的密钥Ktenant进行加密。如上所述,Ktenant包括许可-证凭对,即ACL,其指定可以使用密钥材料并且可以用必须由Ktenant-sign的私钥签名的证书激活的可接受操作。使用Ktenant-sign的私钥对加密后的blob进行签名,并向第二安全上下文7转发加密后的blob、签名和Ktenant-sign的公钥的散列。
向服务提供商中的第二安全上下文传送密码密钥Ktenant对于服务提供商和其他攻击者是安全的,这是因为用于对密码密钥Ktenant进行加密的密钥无法以明文形式恢复。需要Kblobpriv以成功地解密从第一安全上下文5向第二安全上下文7发送的数据。Kblobpriv是暂时的,并且无法由服务提供商或第三方访问或变更。
图6(b)是示出了根据本发明的实施例的从第一安全上下文5向第二安全上下文7传送密码密钥Ktenant的方法的进一步的步骤的流程图。
在步骤S609,在第二安全上下文7处确认密码密钥Ktenant的来源。在实施例中,这通过首先验证包含在从第一安全上下文5发送的消息中的签名来进行确认。
在实施例中,Ktenant-sign的公钥的散列用于标识消息源自的租户,从而标识验证签名所需的正确签名密钥。
然后使用Ktenant-sign的公钥来验证签名。第二安全上下文7中的第二处理器19被配置为验证签名。使用Ktenant-sign的公钥来验证签名。第二处理器19被配置为执行签名验证算法,其在给定签名和公钥Ktenant-sign的情况下接受或拒绝消息的真实性声明。
然后确认签名的内容与加密后的blob匹配。这允许确认加密后的blob的来源。
如果被验证和确认,则方法进行到步骤S610。如果未被验证或确认,则向第一安全上下文5返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
步骤S610包括在第二安全上下文7处利用第一私钥KBLOB priv对加密后的密码密钥Ktenant和对应的访问控制列表进行解密。第二处理器19被配置为对加密后的密码密钥Ktenant和对应的访问控制列表进行解密。第二处理器19被配置为在给定加密后的密码密钥Ktenant和对应的访问控制列表以及第一私钥KBLOB priv的情况下执行解密算法。
步骤S611包括在第二安全上下文7处用第三密码密钥对密码密钥Ktenant和ACL再加密。执行该步骤以使得密码密钥Ktenant和ACL可以存储在第二安全上下文7外部。在备选实施例中,省略该步骤并且将密码密钥Ktenant、ACL和标识密码密钥Ktenant的来源的信息未加密地存储在在第二安全上下文7内。
ACL指定哪种类型的密钥的参数可以用于加密Ktenant,以及可以使用哪种加密机制。
ACL可以包括许可(即策略),其规定Ktenant只能用不能离开第二安全上下文7并且并非管理员(即,服务提供商)可控的密钥进行加密。许可还包括可用于加密租户密钥Ktenant的一个或多个密钥类型和一个或多个密钥机制,例如租户密钥Ktenant只能用256位的AES密钥使用AES-GCM(Galois/计数器模型)加密来进行加密。
加密机制可以指定需要确保真实性、完整性和保密性或这些属性的某些子集。
第二安全上下文7可以重新使用满足ACL策略要求的现有密钥,或者创建新密钥。
使用指定的机制以及满足指定要求的第三密码密钥在第二安全上下文7中对密码密钥Ktenant和ACL进行加密。第二处理器被配置为使用第三密码密钥对密码密钥Ktenant进行加密。在实施例中,用不能离开第二安全上下文7的密钥对密码密钥Ktenant加密以便进行存储。
可以使用经认证的加密算法来对密码密钥Ktenant和ACL进行加密。
在实施例中,密码密钥Ktenant和ACL是要在经认证的加密算法(例如,AES-GCM操作)中进行加密的输入,同时输入可以标识密码密钥Ktenant的来源的信息作为经认证的数据参数。在实施例中,可以标识密码密钥Ktenant的来源的信息是Ktenant-sign的公钥。在实施例中,Ktenant的散列也与密码密钥Ktenant一起存储,例如Ktenant的散列可以是其中存储加密后的数据的文件的名称。
向第二安全上下文7外部的设备存储器传送再加密后的密码密钥Ktenant和对应的访问控制列表、以及可以标识密码密钥Ktenant的来源的认证信息。
因此,可以标识密码密钥Ktenant的来源的信息存储在与加密后的密码密钥Ktenant和访问控制列表相同的数据结构中,但是不一定要进行加密。然而,可以标识密码密钥Ktenant的来源的信息是真实性受保护的,使得它在没有通知的情况下不能被改变。
在上述步骤中,在接收时,第二安全上下文7使用Ktenant-sign的公钥来验证有效载荷签名。接收到的有效负载中包含的散列用于标识租户的签名密钥的公钥。使用所标识的签名密钥来验证接收到的有效载荷签名。成功确认有效载荷后,使用Kblob的私钥对Ktenant解密,并用不可恢复的密钥对其再加密(如Ktenant ACL所实施的),并将其与Ktenant-sign的公钥一起存储在第二安全上下文7外部以供后续使用。备选地,密钥Ktenant未加密地存储在第二安全上下文7内的受保护的非易失性存储器中。在这两种情况下,因此以安全防篡改的方式存储解密密钥。
用Ktenant的许可或策略描述存储Ktenant的方式。具体而言,在生成时,授权的许可限定Ktenant的存储方式,并被设置为使得除了第二安全上下文7之外包括服务提供商在内的任何人都无法访问Ktenant。
在多个租户在单个服务提供商处存储密钥的实施例中,每个租户密钥可以用相同的密钥加密以便存储。备选地,如果在例如与每个租户密钥相对应的ACL之间存在不同的存储许可,则可以使用不同的密钥对每个租户密钥进行加密。
图7(a)是密钥登记方法的示意图,该方法是根据本发明的实施例的密码密钥传送方法的一部分。该方法包括上文关于图6(a)和图6(b)描述的步骤S602至S611。
从第一安全上下文5向第二安全上下文7发送密钥登记消息。响应于该消息,在第二安全上下文7处生成第一密码密钥对KBLOB。第二安全上下文7向第一安全上下文5发送第一密码密钥对KBLOB中的公钥和签名后的第一密码证书{CBLOB}K2ID priv,在所述第一安全上下文5中确认第一密码密钥对KBLOB中的公钥和签名后的第一密码证书{CBLOB}K2ID priv。在第一安全上下文5处使用KBLOB pub对密码密钥Ktenant进行加密。在第一安全上下文5处使用Ktenant-sign priv对加密后的密钥{Ktenant}KBLOB pub和{Ktenant-sign pub}的散列进行签名。向第二安全上下文7(其中对签名消息进行确认)发送签名消息,并且在第二安全上下文7中对加密后的密钥{Ktenant}KBLOB pub进行解密,并用对管理员安全的不可恢复密钥进行再加密。然后,加密后的租户密钥可以存储在第二安全上下文7外部。
图7(b)是根据本发明的实施例的密码密钥传送方法的流程图。
租户在第一安全上下文5中设置租户密钥的ACL。然后,第一安全上下文5从第二安全上下文7请求第一公钥KBLOB pub。例如,第一安全上下文5向第二安全上下文7发送请求消息。然后,第一安全上下文5确认接收到的第一公钥KBLOB pub和第一密码证书CBLOB。这对应于上述步骤S605。如果未确认第一公钥KBLOB pub和第一密码证书CBLOB,则返回错误。如果它们被确认,则第一安全上下文5用第一公钥KBLOB pub对租户密钥和相关联的ACL进行加密。这对应于上述步骤S606。然后,第一安全上下文5用Ktenant-sign priv对加密后的密钥和相关联的ACL以及Ktenant-sign pub的散列进行签名。这对应于上述S607。然后,第一安全上下文5与第二安全上下文7交换加密后的blob、Ktenant-sign pub的散列以及签名。这对应于上面的步骤S608。
图8(a)是在将租户密钥Ktenant导入第二安全上下文7之后,租户系统1和服务提供商系统3的示意图。在实施例中,Kblob和Cblob是暂时的,并且一旦Ktenant被传送,则从第二安全上下文7和第一安全上下文5中删除Kblob和Cblob。
第一安全上下文5中的第一设备存储器9还存储第一公钥KBLOB pub。备选地,该密钥可以以完整性受保护的方式存储在第一安全上下文5外部。第二安全上下文7中的第二设备存储器11还存储租户密钥Ktenant和对应的ACL。备选地,租户密钥Ktenant和ACL在用不能离开第二安全上下文7的第三密码密钥加密的情况下可以存储在第二安全上下文7外部。
图8(b)是防篡改的安全参考时间源2的示意图,该参考时间源2可以由服务提供商、租户或单独的第三方托管。如果由服务提供商托管,则参考时间源可以是第二安全上下文7的部分,或者可以是不同的安全上下文。
时间源2包括第三设备存储器35。第三设备存储器35被配置为存储密码信息,例如密钥、密钥对和证书。第三设备存储器35可以包括任何形式的非易失性设备存储器,例如闪存、光盘或磁性硬盘驱动器。时间源2还包括易失性存储器。
第三设备存储器35存储唯一的非对称身份密钥KTSID与相应的签名生成证书{CTSID}Kman priv。KTSID是用于证明数据来源和真实性的签名密钥。生成证书CTSID可以描述密钥的公共参数,例如与密钥类型及其长度有关的信息。生成证书CTSID包括认证身份密钥KTSID在时间源2中生成的信息。例如,生成证书CTSID可以包括KTSID的公钥的签名散列。生成证书CTSID还可以包括状态信息,例如,与设备的唯一标识有关的信息;标识制造商、设备版本、硬件版本、软件类型和型号支持的特征的信息。由第一安全上下文5和第二安全上下文7都信任的制造商对生成证书CTSID进行签名。使用制造商非对称密钥的私钥Kman priv对生成证书进行密码签名。制造商可以是制造构成第一安全上下文的安全设备、构成第二安全上下文的安全设备和时间源2的第三方。
时间源2还包括第三收发器39。第三收发器39被配置为发送和接收数据分组。例如,可以经由无线互联网连接从收发器39发送和在收发器39处接收数据分组。
时间源2还包括第三处理器41。第三处理器41被配置为执行密码操作,例如生成密码密钥和非对称密码密钥对,生成与密码密钥或非对称密码密钥对相对应的证书,生成与密码密钥相对应的访问控制列表,生成与密码密钥相对应的使用证书,利用存储在第三设备存储器35中的密码密钥对对象进行加密,利用存储在第三设备存储器35中的密码密钥对加密后的对象进行解密,利用存储在第三设备存储器35中的密码密钥对对象进行密码签名,基于存储在第三设备存储器35中的信息进行签名验证和对象确认。
时间源2还包括时钟37。时钟37可以是单调时钟,即随时间的推移单调增加的计数器。时钟可以以高准确度表示每天的时间。在实施例中,时钟精确到1秒或更好。例如,时钟可以基于精确到40纳秒量级的GPS信号。
时间源2可以防止篡改,例如通过包括诸如膜之类的物理安全件,所述膜覆盖整个设备,并且在不破坏底层物理硬件(而因此使其无法使用)的情况下不能被移除。
图8(a)和图8(b)中所示的包括:1)由租户拥有和操作的第一安全上下文5,例如安全设备;2)由服务提供商拥有和操作的第二安全上下文7,例如一个或多个安全设备;以及3)可以由服务提供商、外部第三方或租户拥有的受信时间源2在内的三个服务是一组协作服务,它们都可以验证它们由具有一组已知的安全属性的受信第三方构建并遵守某些相同的规则。假设租户信任构建协作服务的上述第三方但不信任托管其中一些服务的服务提供商。安全上下文可以是一个或多个安全设备,其共享一组密码基元并形成可以对请求进行负载均衡的集群。
可以使用密码证书来可验证地标识第一安全上下文5、第二安全上下文7和参考时间源2中的每个,该密码证书可以例如在制造时生成。第一安全上下文5、第二安全上下文7和参考时间源2均能够以意味着它们无法被仿制的方式安全地存储它们的身份。标识第一安全上下文5、第二安全上下文7或参考时间源2允许确定其来源。
此外,可以以不可否认的方式确认第一安全上下文5、第二安全上下文7和参考时间源2中的每个的配置和状态。服务的来源和状态定义了可供其他服务信任的足够的信息。
每个组件包含例如在制造时在工厂中生成的KID。每个组件还包含KID的密钥证书,该证书使用仅为制造商所知的非对称密钥进行签名。制造商密钥中的公钥可以用作信任根来认证真正的设备。
在下面描述的参考时间源2和第二安全上下文7之间的密码证书和密码密钥的传送可以通过参考时间源2和第二安全上下文7之间的安全的经认证的信道进行,该信道由服务提供商提供和控制。请注意,尽管信道可以对于第三方是安全的,但服务提供商可以对其进行攻击,因此不受信任。
下文关于图9描述的公钥和证书的交换允许建立第二安全上下文7和时间源2之间的信任关系。
图9是示出了向第二安全上下文7注册时间源2的方法的流程图。这可以在任何时间作为根据本发明的实施例的密钥传送方法的一部分来执行,或者作为根据本发明的实施例的控制密码密钥的使用的方法的一部分来执行。例如,当第二安全上下文7的管理员在第二安全上下文7中设置设备时,即当执行认证时,可以执行注册时间源2的方法。这是一个不常进行的过程,并且可能只需要执行一次。在登记时间源2之后,第二安全上下文7然后可以向潜在租户广播与其受信时间源有关的信息。因此,租户最初知道服务提供商支持哪些时间源,并且可以在开始登记密钥之前例如通过确认时间源的真实性、状态和配置决定这些时间源是否可接受,如下面关于图10所述。
如果参考时间源2是第二安全上下文7的部分,则不必向第二安全上下文7注册时间源2,并且不执行这些步骤。
参考时间源2包括设备存储器35和时钟37,如上文关于图8(b)所描述的。
在步骤S901,响应于来自第二安全上下文7的查询消息,从参考时间源2向第二安全上下文7发送时间源的身份密钥中的公钥KTSID pub以及生成证书{CTSID}Kman priv。参考时间源2中的收发器39被配置为向第二安全上下文7中的第二收发器15发送时间源的身份密钥中的公钥KTSID pub以及生成证书{CTSID}Kman priv。可以在同一消息中发送与时间源设备2的状态有关的信息。在这种情况下,与设备状态有关的信息也将包括在生成证书中,以便允许确认状态信息。
在步骤S902,在第二安全上下文7处验证生成证书{CTSID}Kman priv。第二安全上下文7中的第二处理器19被配置为验证生成证书{CTSID}Kman priv。使用受信制造商密钥Kman pub中的公钥来验证生成证书。第二处理器19被配置为执行签名验证算法,其在给定签名消息{CTSID}Kman priv和公钥Kman pub的情况下接受或拒绝该消息的真实性声明。
然后,在第二安全上下文7处确认时间源的身份密钥中的公钥KTSID pub的真实性。第二安全上下文7中的第二处理器19被配置为确认时间源的身份密钥中的公钥KTSID pub。在生成证书CTSID包括时间源的身份密钥中的公钥KTSID pub的散列的实施例中,通过以下方式确认时间源的身份密钥中的公钥KTSID pub的真实性:计算时间源的身份密钥中的公钥KTSID pub的散列,并确认它与其生成证书CTSID中包含的内容匹配。
在步骤S903,第二安全上下文7还可以确认消息中包含的任何状态信息满足要求。
如果签名被验证并且状态信息被确认,则将时间源的身份密钥中的公钥KTSID pub存储在第二安全上下文7的第二设备存储器11中。备选地,它可以受第二安全上下文7的对完整性的保护,并且存储在第二安全上下文7外部的非受信存储装置中。
如果未验证签名,或者未确认密钥或状态信息,则向时间源2返回错误,例如发送申明“拒绝访问”的消息。此时,终止时间源2和第二安全上下文7之间的通信。
在上述步骤中,第二安全上下文7与参考时间源2建立信任。因此,第二安全上下文7通过借助于证书链确认其来源、状态和真实性与时间源2建立信任。
一旦建立了信任,则在步骤S904,第二安全上下文7向时间源2请求配置信息。第二安全上下文7中的收发器15向时间源2发送请求信息的消息。
在步骤S905,响应于该请求,时间源2生成包括与时间源2的配置有关的信息的配置信息,其可以包括与时钟有关的精度信息和安全设置、已经设置的密码基元、时间源运行的软件版本和时间源2的状态(包括检测到的任何异常)。时间源2中的第三处理器41被配置为生成该消息。
在步骤S906,用时间源的身份密钥中的私钥KTSID priv对响应消息进行签名。时间源2中的第三处理器41被配置为利用时间源的身份密钥中的私钥KTSID priv对消息进行密码签名。
在步骤S907,向第二安全上下文7发送签名和配置信息。时间源2中的收发器39被配置为向第二安全上下文7发送签名消息。
在步骤S908,第二安全上下文7使用时间源的身份密钥中的公钥KTSID pub来验证响应签名。第二安全上下文5中的第二处理器19被配置为验证签名。使用时间源的身份密钥中的公钥KTSID pub来验证签名。第二处理器19被配置为执行签名验证算法,其在给定签名消息和公钥KTSID pub的情况下,接受或拒绝消息的真实性声明。
在步骤S909,执行关于时间源配置是否在可接受容限内的检查。检查配置信息以确认其是否满足服务提供商的要求。
每当第二安全上下文7请求时间戳时,通过再次请求配置信息,可以再次检查配置信息。
可以从设备中存在的状态条目获得系统中所有设备(即,第一安全上下文5、第二安全上下文7和参考时间源2)的状态和配置。初始化后,每个设备都会更新此字段并生成新的配置消息,以允许客户端对新设备设置进行密码验证。
如果成功验证了签名并且时间源2的配置在容限内,则方法进行到步骤S910。如果不成功,则向时间源2返回错误,例如发送申明“拒绝访问”的消息。此时,终止时间源2和第二安全上下文7之间的通信。
在步骤S910,向第一安全上下文5发送消息,该消息包括标识时间源2的信息和指示第二安全上下文7信任时间源2的信息。标识时间源2的信息可以包括唯一标识号,例如时间源2的身份密钥中的公钥的散列或时间源2的IP地址。第二安全上下文7中的收发器15被配置为向第一安全上下文5发送包括标识时间源2的信息和指示时间源受信任的信息的消息。标识时间源2的信息和指示时间源2受信任的信息也存储在第二安全上下文7的设备存储器11中或者以完整性受保护的方式存储在第二安全上下文7的外部。
在实施例中,第二安全上下文7将时间源2添加到受信时间源列表。可以将参考时间源的唯一标识添加到列表。然后,第二安全上下文7广播受信时间源列表。第一安全上下文5从第二安全上下文7接收受信时间源列表。
在接收到标识一个或多个受信时间源的信息后,第一安全上下文5可以查询并以与第二安全上下文7相同的方式确认时间源的真实性、状态和配置。说明该过程的流程图如图10所示。同样,这可以在任何时间作为根据本发明的实施例的密钥传送方法的一部分来执行,或者作为根据本发明的实施例的控制密码密钥的使用的方法的一部分来执行。
备选地,如果参考时间源2是第一安全上下文5的部分,则不执行以下步骤。
此外,在首先由第一安全上下文5标识参考时间源2的情况下,可以执行以下步骤,然后向第二安全上下文7发送与时间源2有关的信息,该第二安全上下文7然后确认时间源2。
在下面描述的参考时间源2和第一安全上下文5之间的密码证书和密码密钥的传送可以通过参考时间源2和第一安全上下文5之间的安全的经认证的信道进行。在服务提供商提供时间源的情况下,可以由服务提供商或代理提供和控制信道。在第三方时间服务提供商提供时间源的情况下,可以在租户和时间服务提供商之间直接提供该信道。可以由时间服务提供商或代理提供该信道。请注意,虽然该信道对第三方是安全的,但它可以被时间服务提供商攻击。在下面描述的参考时间源2和第二安全上下文7之间的密码证书和密码密钥的传送可以在通过参考时间源2和第二安全上下文7之间的安全的经认证的信道进行。
下文关于图10描述的公钥和证书的交换允许建立第一安全上下文5和时间源2之间的信任关系。
在步骤S1001,响应于来自第一安全上下文5的查询消息,从参考时间源2向第一安全上下文5发送时间源的身份密钥中的公钥KTSID pub、生成证书{CTSID}Kman priv、和配置证书{CTSID}Kman priv。参考时间源2中的收发器39被配置为向第一安全上下文5中的第一收发器13发送时间源的身份密钥中的公钥KTSID pub以及生成证书{CTSID}Kman priv。可以在同一消息中发送与时间源设备的状态有关的信息。在这种情况下,与设备状态有关的信息也将包括在生成证书中,以便确认状态信息。
在步骤S1002,在第一安全上下文5处验证生成证书{CTSID}Kman priv。第一安全上下文5中的第一处理器17被配置为验证生成证书{CTSID}Kman priv。使用受信制造商密钥中的公钥Kman pub来验证生成证书。第一处理器17被配置为执行签名验证算法,其在给定签名消息{CTSID}Kman priv和公钥Kman pub的情况下接受或拒绝该消息的真实性声明。
然后,在第一安全上下文5处确认时间源的身份密钥中的公钥KTSID pub的真实性。第一安全上下文5中的第一处理器17被配置为确认时间源的身份密钥中的公钥KTSID pub。在生成证书CTSID包括时间源的身份密钥中的公钥KTSID pub的散列的实施例中,通过以下方式确认时间源的身份密钥中的公钥KTSID pub的真实性:计算时间源的身份密钥中的公钥KTSID pub的散列,并确认它与其生成证书CTSID中包含的内容匹配。
在步骤S1003,第一安全上下文5还可以根据消息中包含的任何状态信息来确认设备的状态是否满足要求。
如果签名被验证并且密钥和状态信息被确认,则将时间源的身份密钥中的公钥KTSID pub存储在第一安全上下文5的第一设备存储器9中。备选地,它可以受第一安全上下文5对完整性的保护,并且存储在第一安全上下文5外部的非受信存储装置中。
如果未验证签名,或者未确认密钥或状态信息,则向时间源2返回错误,例如发送申明“拒绝访问”的消息。此时,终止时间源2和第一安全上下文5之间的通信。
在上述步骤中,第一安全上下文5与参考时间源2建立信任。因此,第一安全上下文5通过与时间源建立安全连接并借助于证书链确认其来源和真实性与时间源2建立信任。
一旦建立了信任,则在步骤S1004,第一安全上下文5向时间源2请求配置和状态信息。第一安全上下文5中的收发器向时间源2发送请求信息的消息。
在步骤S1005,响应于该请求,时间源2生成包括时间源2的配置的消息,其可以包括与时钟有关的精度信息和安全设置、已经设置的密码基元、时间源运行的软件版本和时间源的状态(包括检测到的任何异常)。时间源中的第三处理器41被配置为生成配置信息。
该消息可以是向第二安全上下文7发送的同一消息。备选地,可以以与关于图2(b)描述的方式类似的方式生成和发送包含不同信息的消息。该消息可以包括与应用于参考时间源的特定配置有关的信息。
在步骤S1006,用时间源的身份密钥中的私钥KTSID priv对响应消息进行签名。时间源中的第三处理器41被配置为利用时间源的身份密钥中的私钥KTSID priv对消息进行密码签名。
在步骤S1007,向第一安全上下文5发送消息和签名。时间源2中的收发器39被配置为向第一安全上下文5发送签名消息。
在步骤S1008,第一安全上下文5使用时间源的身份密钥中的公钥KTSID pub来验证响应签名。第一安全上下文5中的第一处理器17被配置为验证签名。使用时间源的身份密钥中的公钥KTSID pub来验证签名。第一处理器17被配置为执行签名验证算法,其在给定签名消息和公钥KTSID pub的情况下,接受或拒绝消息的真实性声明。
在步骤S1009,执行关于时间源配置和时间源状态是否在可接受容限内的检查。检查信息以确认其是否满足租户的要求。在实施例中,在向第二安全上下文7传送Ktenant之前立即请求并检查配置信息。这可确保最新的配置信息被确认。
如果签名被成功验证并且时间源2的配置和状态在容限内,则标识时间源2的信息和指示时间源2受信任的信息存储在第一安全上下文5的设备存储器11中或者以完整性受保护的方式存储在第一安全上下文5的外部。如果不成功,则向时间源2返回错误,例如发送申明“拒绝访问”的消息。此时,终止时间源2和第一安全上下文5之间的通信。
每当第一上下文7请求时间戳时,通过再次请求配置信息,可以再次检查配置信息。
图11是示出了根据本发明的实施例的控制对密码密钥Ktenant的使用的方法的流程图。密码密钥Ktenant与访问控制列表一起安全地存储在服务提供商系统中,该访问控制列表指定必须提供有效的使用凭证(例如,使用证书)以便允许对密码密钥Ktenant的第一类型的使用。
在备选实施例中,代替密码密钥Ktenant,将一些其他类型的数据安全地存储在服务提供商系统中,并且控制对该数据的使用。访问控制列表与数据一起存储,其指定必须提供有效的使用证书以便授权对数据的第一类型的使用。在下文中,参考租户密钥的使用来描述方法和装置,但是应该理解的是,一些其他类型的数据可以代替租户密钥,并以相同的方式使用
启用所导入的密钥的过程可以称为密钥授权。
在租户希望将其密钥用于服务提供商的密码基础设施中的时间点,租户生成使用证书。
步骤S1101包括在第一安全上下文5中生成使用凭证。在实施例中,使用凭证是使用证书。第一安全上下文5中的处理器17被配置为生成使用证书。使用证书包括可以标识与使用证书相对应的密码密钥Ktenant的信息以及可以确定使用证书的到期的信息。
在实施例中,可以标识与使用证书相对应的密码密钥Ktenant的信息包括Ktenant的散列。
在实施例中,可以确定使用证书的到期的信息包括到期时间以及标识参考时间源的信息。参考第一安全上下文5和第二安全上下文7都信任的参考时间源2来计算到期时间。由第一安全上下文5和第二安全上下文7确定对参考时间源的信任,该第一安全上下文5和第二安全上下文7独立地连接到参考时间源并且经由证书的模块状态参数确认时间源是受信任的并且时间源是防篡改的。上文关于图9和图10对此进行了描述,并且其例如可以在密钥传送方法之前或者在密钥传送方法之后并且在生成使用证书之前执行。
因此,使用证书包括与参考安全时间源2的有效期有关的信息。
因此,密钥授权从租户生成凭证证书或“密钥使用”证书开始,该证书与Ktenant的许可ACL中定义的内容相匹配。换句话说,使用证书满足在与Ktenant相对应的访问控制列表中定义的要求。
在实施例中,用Ktenant-sign的私钥对凭证证书或使用证书进行签名。
图12示出了在第一安全上下文5生成使用证书的方法,该方法是根据本发明的实施例的控制对密码密钥Ktenant的使用的方法的一部分。
在步骤S1201,由第一安全上下文5选择参考时间源2。标识一个或多个时间源的信息和指示时间源受信任的信息可以存储在第一安全上下文5的设备存储器9中或以完整性受保护的方式存储在第一安全上下文外部。由第一安全上下文5选择其中一个时间源。
可以从第二安全上下文7广播的并且第一安全上下文5已经对其建立了信任的受信时间源列表中选择时间源2。因此,第二安全上下文7和第一安全上下文5都已与列表上的一个或多个时间源建立了信任。这些时间源中的每个时间源都是具有必要配置和状态的有效时间源。第一安全上下文从一个或多个有效时间源的列表中选择时间源2。
在步骤S1202,第一安全上下文5向所选择的时间源2请求当前时间戳。第一安全上下文5中的第一收发器13向时间源2发送请求消息。
在步骤S1203,时间源2生成包括时间戳的消息。该消息可以包括标识时间源的信息以及根据时间源时钟确定的消息生成时的当前时间。标识时间源的信息可以包括生成时间源的公共身份密钥KTSID pub的散列。
该消息还可以包括当前配置信息,其例如与时间源已被篡改的任何指示有关。然后,客户端可以在使用使用证书中的时间戳之前使用该信息来检查时间源是否处于可接受状态。
在步骤S1204,使用时间源的身份密钥中的私钥KTSID priv对消息进行签名。时间源中的第三处理器41被配置为利用时间源的身份密钥中的私钥KTSID priv对消息进行密码签名。
在步骤S1205,向第一安全上下文5发送消息和签名。时间源2中的收发器39被配置为向第一安全上下文5发送签名消息。
在步骤S1206,第一安全上下文5使用时间源的身份密钥中的公钥KTSID pub来验证响应签名。第一安全上下文5中的第一处理器17被配置为验证签名。使用时间源的身份密钥中的公钥KTSID pub来验证签名。第一处理器17被配置为执行签名验证算法,其在给定签名消息和公钥KTSID pub的情况下,接受或拒绝消息的真实性声明。如果签名验证成功,则方法进行到步骤S1207。如果不成功,则向时间源2返回错误,例如发送申明“拒绝访问”的消息。此时,终止时间源2和第二安全上下文7之间的通信。
如果消息中包括配置信息,则第一安全上下文5确认配置是否可接受。如果当前配置信息对于租户是不可接受的,则停止使用证书生成。
在步骤S1207,租户基于上述时间戳来计算其密钥Ktenant的到期时间。到期时间计算为时间戳时间加上租户希望证书有效的时间量,例如时间戳时间加上一天或多天。
在到期时间与通信延迟相比较小的情况下,例如可以将通信延迟考虑到到期时间中。在这种情况下,到期时间被计算为时间戳时间加上从参考时间源2到第一安全上下文5的通信延迟加上从第一安全上下文5到第二安全上下文7的通信延迟加上租户希望证书有效的时间量。
取决于应用,租户希望证书有效的时间量例如可以是几秒或几天。
“开始时间”也可以包括在使用证书中,以使得使用证书定义证书有效的有效期。这允许租户在使用之前预先生成一个或多个证书。
在步骤S1208,在使用证书中包括到期时间、对时间源的引用、对Ktenant的引用和对第二安全上下文7的引用。
对系统组件(例如,时间源或第二安全上下文7)的引用可以是可以使用证书绑定到它的唯一ID,或者可以是其身份密钥KID中的公钥的散列。
第一安全上下文5中的处理器17被配置为生成使用证书,其包括在步骤S1207中计算的到期时间、对时间源的引用、对Ktenant的引用以及对第二安全上下文7的引用。
在实施例中,对Ktenant的引用是Ktenant的散列。在实施例中,对时间源2的引用是其身份密钥中的公钥KTSID-pub的散列。在实施例中,对第二安全上下文7的引用是其身份密钥中的公钥K2ID-pub的散列。
返回图11,一旦生成了使用证书,就与可以标识使用证书的来源的信息一起发布该使用证书。在实施例中,可以标识使用证书的来源的信息是的散列。
在步骤S1102,使用签名密钥的私钥Ktenant-sign priv对使用证书进行签名。第一安全上下文5中的第一处理器17被配置为使用签名密钥的私钥Ktenant-sign priv对证书进行密码签名。
在步骤S1103,向服务提供商的应用服务器发送使用证书以及可以确认使用证书的来源的信息。可以确认使用证书来源的信息是签名,即签名后的使用证书。
第一收发器13被配置为向应用服务器发送使用证书。可以向希望使用租户密钥的其他实体发送使用证书。这些实体可以直接或经由应用服务器与第二安全上下文7通信。
可以与使用证书一起发送可以标识使用证书的来源的信息。可以标识使用证书的来源的信息可以是的散列。包括可以标识使用证书的来源的信息,以便标识应该使用哪个签名密钥来验证签名。
因此,第一安全上下文5向服务提供商发送使用证书、签名和Ktenant-sign pub的散列。然后,服务提供商对密钥的每次使用都伴随着向第二安全上下文7提供该信息。
在步骤S1104,由应用服务器向第二安全上下文7提供使用证书、签名以及可以标识使用证书的来源的信息(其可以是的散列)。每次应用服务器希望使用Ktenant时,都会提供使用证书。应用服务器可以与使用证书一起发送请求消息,指定对所需的租户密钥的使用。例如,应用服务器可以向包括数据文件的第二安全上下文7发送消息,请求第二安全上下文7用租户密钥、使用证书以及可以标识使用证书的来源的信息(其可以是的散列)对数据文件进行加密。
第二安全上下文7可以访问例如与不同的租户相关联的多个公钥。密钥可以存储在第二安全上下文7中,或者以认证的方式存储在第二安全上下文7外部。第二安全上下文7基于可以标识使用证书的来源的信息(其可以是的散列)来标识正确的签名验证密钥然后在第二安全上下文7处验证签名后的使用证书。第二安全上下文7中的第二处理器19被配置为验证签名。使用签名密钥Ktenant-sign pub的公钥验证签名。第二处理器19被配置为执行签名验证算法,其在给定签名使用证书和公钥Ktenant-sign pub的情况下,接受或拒绝消息的真实性声明。如果签名验证成功,则方法进行到步骤S1105。如果不成功,则向第一安全上下文5返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
在步骤S1105,第二安全上下文7针对存储在第二设备存储器11中的访问控制列表确认使用证书。作为该步骤的一部分,确认使用证书尚未到期。还确认使用证书允许所请求的操作,换句话说,使用证书匹配与对应于所请求的操作或使用的许可相关联的凭证。第二处理器19被配置为确认使用证书。如果证书无效(例如,由于证书签名指示的篡改)、到期或者如果ACL不允许所请求的操作,则第二安全上下文7可以例如向应用服务器返回错误消息。
第二安全上下文7根据使用证书中对Ktenant的引用来识别与使用证书相对应的安全存储的租户密钥。
第二安全上下文加载安全存储的租户密钥和ACL。加载租户密钥涉及使其对第二安全上下文7中的处理器可用,即如果尚不存在,则向设备存储器9发送租户密钥和ACL。这例如可以涉及从第二安全上下文7外部的非易失性存储器设备加载租户密钥和ACL,对密钥进行解密并使其可用于第二处理器。
此时,第二安全上下文7确认使用证书,并确认相对于参考时间源尚未到期。第二安全上下文7可以通过确认给定的所有字段都如预期,来利用使用证书启用匹配许可。
第二处理器19被配置为确认对Ktenant的引用和对第二安全上下文7的引用与对应于密钥Ktenant并被存储在第二设备存储器11中的ACL中的内容相匹配。在实施例中,对Ktenant的引用是Ktenant的散列。在实施例中,对第二安全上下文7的引用是身份密钥中的公钥K2ID pub的散列。
如果对Ktenant的引用和对第二安全上下文7的引用与ACL中的内容匹配,则确认有效期是否已到期。如果不匹配,则向应用服务器返回错误,例如发送申明“证书到期”的消息。
第二处理器19还被配置为关于参考时间源2确认有效期尚未到期。在实施例中,第二安全上下文7向对应于使用证书中的引用的时间源2请求当前时间戳。第二安全上下文7中的第二收发器15被配置为向时间源2发送请求消息。响应于请求消息,时间源2生成包括当前时间戳的消息。使用时间源的身份密钥中的私钥KTSID priv对消息进行签名。时间源中的第三处理器41被配置为利用时间源的身份密钥中的私钥KTSID priv对消息进行密码签名。然后向第二安全上下文7发送签名消息。时间源2中的收发器39被配置为向第二安全上下文7发送签名消息。该消息还可以包括时间源的当前配置信息。
然后,第二安全上下文7使用时间源的身份密钥中的公钥KTSID pub来验证响应签名。第二安全上下文7中的第二处理器19被配置为验证签名。使用时间源的身份密钥中的公钥KTSID pub来验证签名。第二处理器19被配置为执行签名验证算法,其在给定签名消息和公钥KTSID pub的情况下,接受或拒绝消息的真实性声明。
如果签名验证成功,则将当前时间戳与使用证书中包含的到期时间进行比较,以确定使用证书是否已到期。如果不成功,则向应用服务器返回错误,例如发送申明“拒绝访问”的消息。此时,终止第一安全上下文5和第二安全上下文7之间的通信。
如果从时间源2接收的当前时间戳在使用证书中包含的到期时间之前,则方法进行到步骤S1106。否则,向应用服务器返回错误,例如发送申明“证书到期”的消息。然后,应用服务器可以请求第一安全上下文5提供新证书或者简单地终止操作。
在步骤S1106,在使用证书有效且未到期的条件下,第二安全上下文7授权对密码密钥Ktenant的使用。如果证书有效且尚未到期,则允许进行密码操作。第二安全上下文7现在可以在有效期内使用租户密钥。第二安全上下文7激活对应于所请求的使用的ACL内的必要许可,并检查ACL以获得允许该请求的有效许可。然后,第二安全上下文7执行所请求的操作,并向应用服务器返回结果。例如,在应用服务器已经发送包括数据文件的消息和第二安全上下文7用租户密钥对数据文件进行加密的请求的情况下,第二安全上下文7用租户密钥对数据文件进行加密并且向应用服务器返回加密后的数据文件。
在到期时间点时或之前,租户可以生成新证书以延长密钥的到期时间。无法重新生成新证书会导致服务提供商无法使用密钥。在实施例中,第二安全上下文7在使用证书到期时间点之前或在到期时通知第一安全上下文5。然后,可以在第一安全上下文处生成具有较晚到期时间的新使用证书。备选地,第二安全上下文7在使用证书到期之前或到期时通知应用服务器。然后,应用服务器向第一安全上下文5请求新的使用证书。备选地,应用服务器读取使用证书,该应用服务器在到期之前或到期时向第一安全上下文5请求新的使用证书。备选地,可由租户或服务提供商拥有的另一组件可以监控证书并针对即将到期或已到期的证书提出请求。
因此,租户系统1以安全的方式向服务提供商系统3有效地租赁密码密钥Ktenant。服务提供商对密钥的使用受参考受信时间源的到期时间的密码限制,所述到期时间如在使用证书中由拥有租户设置的。ACL指定仅在提供未到期的使用证书时才授权对密码密钥Ktenant的使用。此外,租户可以限制服务提供商使用密钥的方式。
图13是根据本发明的实施例的控制对密码密钥Ktenan的使用的方法的示意图。
所示的方法对应于在第二安全上下文7处使用租户密钥并且到期时间过去的情况。第二安全上下文7或应用服务器可以周期性地将从参考时间源2获得的当前时间与使用证书中的到期时间进行比较,并且根据该信息来确定证书是否已经到期。备选地,第二安全上下文7可以仅在提出使用到期证书的请求时确定证书已到期。第二安全上下文7可以通知第一安全上下文5、应用服务器或另一设备密钥已超时。
第一安全上下文5被配置为响应于该通知向时间源2发送请求消息,请求当前时间戳,如上文关于步骤S1202所描述的。
时间源2被配置为生成并发送包括时间信息的消息,如上文关于步骤1203到1205所描述的。
在第一安全上下文5处验证该消息(如上文关于步骤S1206所描述的),并且生成使用证书(如在步骤S1207至S1208中所描述的),并对使用证书进行签名(如在上述步骤S1102中所描述的)。向服务提供商发送使用证书(如在上述步骤S1103中所描述的),并且向第二安全上下文7转发使用证书并且在第二安全上下文7处验证使用证书(如关于步骤S1104所描述的)。加载与使用证书相对应的所存储的租户密钥并且从时间源2获得当前时间戳,并对其进行确认,如上文关于S1105所描述的。加载租户密钥涉及使其可用于处理器,即如果尚不存在则向设备存储器9发送该租户密钥。这可以涉及从第二安全上下文7外部的非易失性存储器设备加载租户密钥,对密钥进行解密并使其可用于处理器。然后激活密钥,如在上述步骤S1106中那样。
图14是根据本发明的实施例的控制对密码密钥Ktenan的使用的方法的示意图。
在初始步骤中,第一安全上下文5从时间源2获得时间源的生成证书、状态和时间。然后在第一安全上下文5处验证生成证书和时间戳签名。上文关于图10和步骤S1201至S1206对此进行了描述。
如果确认了生成证书和时间戳签名,则该方法继续进行到下一步“生成授权证书”。如果未确认,则返回错误。
生成使用证书,如在上述步骤S1207和S1208中所述。然后向第二安全上下文7发送使用证书,如上文关于步骤S1103所描述的。
上文概述的步骤定义了一种系统,该系统对第三方以及恶意服务提供商的攻击是安全的,这是因为在租户和第二安全上下文7之间所有密钥材料都被加密,以安全的防篡改格式存储租户密钥材料,只能在租户以密码实施的方式授权时使用租户密钥,并且通过存在身份密钥KID以及由租户和服务提供商两者都信任的制造商签名的生成证书来防止组件欺骗。
上述密钥传送方法和控制密钥的使用的方法意味着租户可以向托管已知来源的共享密码基础设施的服务提供商安全地租赁密码密钥。租户密钥的使用以密码保护的方式仍受租户控制。
作为密钥传送方法的一部分,租户在自己托管的安全设备(即,第一安全上下文5)内生成密钥。
租户的安全设备(即,第一安全上下文5)通过确认基础设施是使用受信制造商构建的、上述受信制造商以租户可接受的方式配置并且适于向其租赁密钥,来确认由所选择的服务提供商(第二安全上下文7)托管的密码基础设施遵守租户可接受的一组规则。上文关于图2(a)描述的步骤S205允许确认基础设施是使用受信制造商构建的。如果验证了生成证书C2ID的签名,则确认了第二安全上下文是由受信制造商构建的。上文关于图2(b)描述的步骤S215允许确认基础设施以租户可接受的方式配置并且适于向其租赁密钥。
此外,租户和服务提供商的密码基础设施使用可由第三方托管的受信时间源2来实施由租户设置的密钥到期时间。
上述设备和方法使得CSP能够提供多租户托管密码解决方案。该系统被设计用于确保免受第三方和CSP本身的攻击。租户仍然可以控制其密钥,提供密码实施的使用授权,以便在CSP托管系统中使用。它允许HSM的多租赁并保证密钥被传送到服务提供商的密码基础设施。不止一个租户可以使用单个密码设备,但是保护租户密钥的安全性免于第三方和服务提供商的破坏。
上述设备和方法允许租户可验证地租赁密码密钥以便以服务提供商和第三方无法访问的方式在服务提供商的密码基础设施内使用,同时在CSP安全上下文内保持对密钥的使用的控制。这使得能够在租户和服务提供商之间安全地租赁密码密钥,能够限制租户密钥的使用以在服务提供商HSM内使用达设定的时间段,并且提供对恶意或流氓管理员攻击的抵抗。它允许以密码实施的方式向CSP租赁密钥。它允许服务提供商托管对第三方攻击具有鲁棒性的多租户服务,同时还能对恶意CSP是鲁棒的。密码实施了由租户控制对租户密钥的使用,这确保了密钥的使用现在完全由租户控制,使得服务对于攻击是安全的并使得能够与其他租户共享基础设施。
上述设备和方法允许CSP向其租户提供对其密码基础设施的使用以用于诸如支付、安全和监管之类的应用。
第二安全上下文7是服务提供商系统的一部分,使服务提供商(例如,CSP)能够代表其客户经由硬件安全模块HSM来托管密码服务。
尽管已经描述了一些实施例,但是这些实施例仅以示例方式提供,而不是为了限制本发明的范围。的确,本文中描述的新方法和装置可以修改为各种其他形式;此外,可以在不脱离本发明的精神的前提下,对本文所描述的方法和装置的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在涵盖落入本发明的范围和精神内的修改的这些形式。