本申请是2010年11月16日提交的美国专利申请号12/947,381的接续申请,因此以引用的方式将其全部内容合并于此;本申请还要求享有2009年11月16日提交的美国临时专利申请号61/272,890的优先权,以引用的方式将其全部内容合并于此。
具体实施方式
在后续的详细描述中,阐明了大量具体细节以提供对一些实施例的详尽理解。然而,本领域的普通技术人员将理解的是,可以在没有这些具体细节的情况下实践一些实施例。在其它实例中,没有详细描述公知的方法、过程、组件、单元和/或电路以便不使本发明难于理解。
申请人在一些实现中已经意识到:在电子设备中安装密钥资料同时代表设备资产的所有者(“所有者”)操作的实体(“安装者”)可能不会完全由所述所有者信任。如果由安装者在没有防止损害的措施下执行供应过程,则该供应过程会要求代表该所有者的非常高级别的信任。在某些情况下,可能不准许这样的信任,从而导致需要设计一种也由所述安装者保护供应过程免受损害的系统。
申请人进一步意识到,另一复杂性的源来自子所有者的可能存在。子所有者可以是一个不是该设备资产的所有者但是却拥有被放置在其中的某些密钥资料的实体。每一个子所有者可以具有它自己的一个或多个安装者。所有者与其安装者之间的相同信任问题可能对于每一个子所有者和它们各自的安装者中的任意一个而类似地存在。另外,在所有者与其子所有者之间可能存在部分不信任。所有者可以信任子所有者来向其设备提供密钥资料,但是该所有者可能不信任子所有者来修改例如由所述所有者或者任何其它子所有者安装的其它密钥资料。在许多情况下,所有者可能不接受其子所有者中的一个获得由另一个子所有者供应的密钥资料的能力。在其它情况下,子所有者可以将其秘密委托给所有者。
申请人认识到密钥供应的问题可以被表述为需要:(a)允许所有者来允许安装者(一个或多个)代表该所有者向设备提供密钥资料,而不将该密钥资料暴露给执行物理供应操作的安装者;(b)允许对于多于一个子所有者的类似模型,每一子所有者与其一个或多个安装者相关联;(c)防止任何子所有者获得由另一子所有者供应的密钥资料;(d)允许所有者控制每个子所有者经过其安装者供应什么密钥资料,同时不拥有所供应的资料本身。针对上述问题实现的解决方案的客户端侧可以适合嵌入式芯片组的能力,并且可以适于在短的时间内,例如在制造期间,执行。
本发明包括用于向一个或多个电子设备供应加密资料(例如,加密密钥或数据)的方法、电路、设备和系统。根据实施例,可以生成针对特定目标设备和/或特定设备组(例如,蜂窝式电话的具体构造和模型)的供应消息前导,并且将其提供到意欲在目标设备上安装或以其它方式使用功能加密密钥(即,加密资料)的一方。与也被称为“密钥供应系统”的加密资料供应模块(CMP)合作操作的位于目标设备上的供应消息前导可以提供:(1)用于向目标设备供应加密密钥的多级委派层级/结构,使得该设备的本地(根)密钥所有者(具有最高级非受限权利的一方)可以将完全或部分密钥供应权利委派给一个或多个其它方,并且该其它方中的一些或全部可以进一步沿着其长度和/或数量没有预定义限制的层级链将其各自权利中的一些或全部进一步委派给其它方,(2)部分委派功能(例如,基于密钥类型),使得供应权利委派层级中的任何成员可以定义其一个或多个委派方接收哪些密钥供应权利,包括是否进一步委派的权利,只要这些权利不超出委派方的权利。
供应消息前导可以由一个或多个消息部分或段构造而成,并且第一部分或段可以使用目标设备的本地/根密钥进行加密和/或签名。前导的第一部分可以包括第一加密资料和许可数据向量,该向量可以包括一个或多个使用限制,包括:(1)何种类型的密钥可以由前导的使用者(例如,第一委派方)供应到目标设备,以及(2)该前导符的使用者是否可以进一步沿着权利委派层级或链向下传送密钥供应权利或子权利的指示。
在某些实施例中,供应消息可以包括前导和有效载荷,使得可以按照特定的方式来构造和利用该前导,以便指示或促进授权的供应和/或供应授权的委派。在其它实施例中,不需要使用前导;并且代替的是,可以结合合适的协议(例如,识别协议、供应协议、查询协议)来使用消息,以便实现如本文描述的供应、委派和其它功能。
供应消息前导(即,供应消息的第一部分)可以被配置为使得包括加密资料(例如,作为供应主体的一个或多个功能密钥)的第二供应消息部分可以被附接到该前导(例如,由第一委派方),以便生成完整的第一供应消息。供应消息的第二部分可以由该前导内的第一加密资料(例如,由第一委派方提供或以其它方式已知的第一加密密钥)进行加密或签名。根据实施例,目标设备上接收完整供应消息的CMP可以通过下列步骤来处理前导:(1)使用设备本地/根密钥来对前导进行解密,(2)从该前导提取第一加密资料和许可数据向量,(3)使用所提取的第一加密资料对该消息的第二部分进行解密,(4)提取位于第二部分内的一个或多个功能密钥(第二加密资料),(5)针对在该前导中的许可数据向量中定义的使用许可,检查所提取的一个或多个功能密钥(第二加密资料),以确定所提取的一个或多个密钥是否具有由许可数据向量允许用于供应的类型,以及(6)如果所提取的密钥类型被允许并且前导有效,则将该密钥供应到目标设备(安装、存储或者以其它方式使用)。
根据进一步实施例,该第二供应消息部分可以包括不是功能密钥的第二加密资料(即,作为供应至目标设备的主体的密钥),而是用于对供应消息的第三部分(例如,由第二委派方提供)进行解密和/或鉴别的加密数据(例如,密钥、密钥链接等等),该第三部分可以被附接到(例如,由第二密钥供应委派方)在第二部分之后。根据这一实施例,第二部分也可以包括第二许可数据向量,其指示将从第三消息部分提取的任何加密资料(例如,第三加密资料或密钥)的使用限制。在这一情况下,当第三部分包括功能密钥时,可以将组合的第一部分和第二部分共同地视为供应消息前导,并且可以将包括要作为目标设备上的供应主体的功能密钥(例如,由第二委派方供应)的第三消息部分视为消息主体。根据其中前导的第一部分由也包括加密资料和/或第二许可数据向量的第二部分附接的实施例,可以将该第一部分和第二部分的组合的加密资料和许可数据向量称为“委派结构”,该委派结构为将由第二委派方供应到目标设备的一或多个功能加密密钥提供了手段(用于解密的加密资料)并且定义允许的使用(对于目标设备上的供应所允许的密钥类型)。
同样,第三供应消息部分可以由第二委派方添加加密资料(例如,密钥、密钥链接等等),该加密资料被要求用于对该供应消息的第四部分进行解密和/或鉴别,第四部分可以被附接到(例如,通过第三委派方)第三部分之后。如果该第四部分包括功能密钥,则可以将该消息的第一到第三部分认为是包括存取并处理第四部分的功能密钥所要求的委派结构的前导。
应当理解的是,其中一个部分中的加密资料可以用于对下一个部分进行解密/鉴别并且从该下一个部分提取数据的供应消息部分的链在数量上没有内在限制。根据所描述的方法,通过提供要被彼此附接的供应消息的多个部分,供应权利委派链或层级(即,委派结构)的长度或大小可以是无限制的,每一个供应权利委派方能够将子权利提供到子委派方,只要这些委派的权利都没有超出在任何先前的消息部分中的任何许可数据向量中发现的任何使用限制(例如,可以安装何种类型的密钥)或与之相矛盾。
由于根据本发明实施例在供应消息的目标设备处的数据处理是基本上连续的,因此根据一些实施例,该数据处理和/或数据处理器(例如,CMP)可以是状态机。由于根据本发明实施例在供应消息的目标设备处的数据处理是基本上连续的,因此根据某些实施例,该数据处理和/或数据处理器(例如,CMP)可能不需要存取用于将加密资料存储在供应消息中的非恒定量的存储器,以便支持无限数量的委派级别。
用R表示的“根密钥”可以是每一个设备中用作根信任锚的一个密钥。这是对供应消息进行解密和鉴别时可以使用的第一密钥。它是被假定预存在于所有供应设备中的唯一的密钥资料。其可以通过下面描述的方式来实现。需要注意的是,在某些实施例中,根密钥(R)可以可选地具有与本文进一步描述的信任ICV根相似或相同的功能,或者反之亦然。
根密钥可以是在整组(或批)设备中使用的单个密钥,或者可以是设备特有的。使根密钥是设备特有的可以增加安全性,但是可能会更难于管理,并且有时会在技术上不可行。
可以使由设备存储的根秘钥按照下面的三种方式中的一种对于要求其的供应过程可用:(a)可以从诸如EEPROM的内部保护存储器或者其它非易失性存储器对该根密钥进行找回,其被存储为根密钥供应的一部分;(b)可以使根秘钥作为在设备或芯片中实现的逻辑的硬编码部分可用;(c)可以从一个或多个根密钥组件中导出根密钥。根密钥字段(以及密钥本身)的长度可以是128比特、256比特、512比特、1024比特、2048比特、4096比特或任何其它合适的长度。
功能密钥可以是供应的主体。它们可以是作为供应过程的一部分被传送到设备的信息片段(例如,加密资料),并且这些信息可以在供应处理结束之后由其它过程在该设备上消耗。本文用k表示的功能密钥可以不必是加密密钥。这一“功能密钥”可以是永远不会被CMP解释的不透明字段。因此,在合理的长度要求内,它可以是任意数据的包装。每一个功能密钥可以是较大结构的字段,该较大结构是密钥结构。该密钥结构可以是由可以存储功能密钥和相关联的元数据的CMP维护的对象。
在示范性实现中,构成密钥结构的数据可以包括:(a)“密钥值”,其可以是功能密钥k;(b)“密钥ID”,其可以是密钥或结构的标识符,通常是唯一的;(c)“密钥类型”,其可以是表示功能密钥k的密钥类型的字符串;(d)“密钥槽”,其可以是表示在密钥类型内k的密钥槽的字符串。
由密钥供应系统处理(例如,接收和存储)的每一个功能密钥与密钥类型相关联。该密钥类型可以是表示密钥的用法、目的或者应用的不唯一的字符串。可以将这一属性提供到子所有者作为控制委派的手段。密钥类型也可以用作密钥元数据的一部分,该元数据由使用该密钥的应用读取,例如,以便确定密钥的用法或者允许应用在包含若干应用的密钥的资产库中检测其自己的密钥。
密钥类型字段的命名空间可以由所有者维护,并且可能由其一个或多个子所有者维护。在某些实现中,密钥类型的值可以是字符串,其可以仅由子字符串串联和比较功能来处理。
作为密钥类型字段的可能使用的示范性示例,所有者(并且可能是其各自的子所有者中的一个或多个)可以使用下列值作为密钥类型字段:(a)系统/固件更新/验证;(b)系统/防盗/证明;(c)应用/支付应用/加密;(d)应用/支付应用/签名;(e)应用/DRM/方案1/组私有;(f)应用/DRM/方案1/服务器参数。
“密钥槽”可以是用于区分具有相同密钥类型的密钥而提供的字段。当由密钥供应系统提供给定密钥类型的多于一个密钥时,这些密钥中的每一个可以在其密钥槽字段中具有不同的密钥槽值。密钥槽值可以在不同密钥类型的密钥之间重复。密钥槽中的值可以是整数计数器。密钥槽中的值可以是具有任意合适值的短字符串,并且可以被视为可以用于比较目的的不透明值。
该密钥类型和密钥槽字段中的值的组合在目标设备上可以是唯一的。然而,可以不要求密钥ID字段是唯一的。由于其属性和命名,密钥ID字段很可能是唯一的,但是其唯一性不是密钥供应系统的要求。对于密钥供应系统而言,密钥ID中的值可以是被存储以便可以由客户端应用使用的不透明字符串。
“供应结构”可以是在供应消息中发送的数据对象。单个供应消息可以包含供应结构的一个或多个实例。密钥供应系统的客户端侧可以接受来自安装者的供应消息,并且可以基于该消息可能包含的每一个供应结构起作用。
每一个供应结构可以包含或者可以指代可以由密钥供应系统处理的单个功能密钥。供应结构对象可以由两部分组成:前导和主体。前导可以包含委派结构的零个或多个实例;并且主体可以包含密钥供应操作所需的实际指令和数据。供应结构可以被认为由委派结构的零个或多个实例及其后的主体结构构成。
“委派结构”对象可以是被设计为从所有者或子所有者向设备上的密钥供应系统传送的对象,其准许使目标子所有者发出在该供应结构的主体对象中出现的命令。该目标子所有者在该结构中没有被识别,这是因为不存在对于子所有者的命名约定和执行。而是,该目标子所有者由其处理的密钥进行参照。
将目标子所有者使用的密钥表示为Pi,其中i是委派结构对象在供应结构中的这样的结构序列中的位置的指示符。例如,P1是由正在持有R的所有者委派的具有供应密钥授权的子所有者持有的密钥;而P2是由持有上面的P1的子所有者委派的具有供应密钥授权的子所有者持有的密钥,等等。
供应结构对象的前导结构可以包含委派结构对象的有序集合,依次引入P1……Pn。尽管可以由本发明的特定实现指定对n的限制,但是该设计允许n是任意大,例如,不将其值链接到除了处理时间以外所要求的系统资产。例如,导致插入某一密钥的供应结构可以从所有者(持有R)到子所有者P1的委派结构开始,允许其供应密钥,随后是由子所有者P1创建的到持有P2的另一个子所有者的委派结构,允许其供应该密钥,随后是由子所有者P2授权的实际密钥插入指令。
通过密钥类型限制委派:每一次委派可以被绑定到一组允许的密钥类型。可以使用密钥类型前缀(许可数据向量)来描述这样的组。委派可以应用于一个这样的前缀。为密钥类型前缀“a”发出的委派可以暗示该委派的目标子所有者仅控制密钥类型命名空间中以“a”开始的部分。R的所有者(其是所有者)可以控制密钥类型的整个命名空间。
每一个子所有者可以仅能够使用作为由该子所有者自身被委派的密钥类型前缀的接续的密钥类型前缀进行委派。例如,持有P2并且被委派有(由子所有者P1)密钥类型前缀“应用/DRM/方案1”的子所有者仅能够基于诸如“应用/DRM/方案1/XY电信”或者甚至是“应用/DRM/方案1”本身而不是诸如“应用/M预付”的前缀向持有P3的子所有者进行委派。
委派结构对象可以包括下列字段:
目标密钥:由目标子所有者持有的128比特(或其它)密钥。这一字段以加密的形式包含Pi。
允许的类型段:允许由子所有者Pi处理的密钥类型的密钥类型前缀。
委派授权:上述字段上的MAC,指示Pi-1的所有者同意将对上面的密钥类型前缀的密钥进行操作的许可委派给作为Pi的所有者的子所有者。
目标密钥可以包含加密形式的Pi。加密可以通过AES ECB借助从Pi-1(或R,如果i=1)导出的密钥进行。可以借助可以根据包括在下文介绍的那些方法的任何已知方法的CMAC PRF,根据包括本文描述的那些方法的任意已知方法来计算加密密钥KE:
L=E(Pi-1,0b) (1)
KE=T (4)
L可以是使用有效密钥Pi-1的加密的零块。
K1可以是根据任意已知方法和/或本文描述的那些方法的子密钥。可以构建该方法,使得该加密的块精确地为128比特,因此根本不需要计算K2。作为KDF输出的标签T可以由下列构成:“1”比特(指示回滚块数量)的ECB加密,由本说明书用于加密密钥的唯一常数标签,正式作为上下文(常数,以实现密钥持久性)且非正式地用于填充该结构的47比特的零字符串,以及可以作为要求的密钥长度的128的二进制表示。
该目标密钥字段可以接着利用由Pi-1导出的加密密钥而被按照下面计算为Pi的AES ECB加密:
TARGETKEY=E(KE,Pi)
允许的类型段的值可以是委派结构对象应用于其的密钥类型前缀。允许的类型段可以总是被全部附接到在处理该链中的较早委派结构对象时导出的允许的密钥类型,分隔符紧随其后。例如,如果先前的委派结构对象致使当前允许的类型是-系统/应用-并且允许的类型段中的值是“DRM”,则所产生的允许的类型是-系统/应用/DRM-。在允许的类型段值的每一次插入之后隐式地附接分隔符“/”。尽管如此,可以允许这一符号作为允许的类型段的一部分。
委派授权的值可以是经由Pi和允许的类型段计算的CBC-MAC。可以使用由Pi-1(或R,如果i=1)导出的密钥来计算CBC-MAC。可以根据任何已知方法和在本文描述的那些方法使用根据以下的CMAC PRF来计算MAC密钥K1:
L=E(Pi-1,0b) (5)
Kl=T (8)
还可以参照所使用的参数的较早解释。
可以按照下面来计算委派授权的值:
委派授权=CMAC(K1;(Pi||允许的类型段);128)
供应结构的主体对象包含供应有效载荷。该有效载荷是执行下面操作之一的命令:
ADD 添加密钥
DEL 删除密钥
ENU 枚举(即,列举)已经存储的密钥
这一主体对象可以包括六个字段:
命令 命令字段由至少3个比特表示,其中保留5个剩余的组合用于未来使用。
密钥类型 要被添加或移除的密钥的密钥类型,或者针对枚举命令的空值。
密钥槽 要被添加或移除的密钥的密钥槽,或者针对枚举命令的空值。
密钥值 要被添加的实际密钥,或者针对不是“添加”的命令的空值。如果不是空值,则这一字段的内容被加密。
密钥ID 要被添加或移除的密钥的ID,或者针对枚举命令的空值。
有效载荷授权所有上述字段上的MAC。
密钥值字段可以是其内容被加密的唯一字段。可以使用AES CCM或任何其它批准的模式,利用从Pi(或者R,如果在供应结构中不存在委派结构对象)导出的密钥进行加密。Pi可以是由主体对象前面的最后一个委派结构对象引入的密钥。可以使用根据下列的CMAC PRF根据任意已知方法来计算加密密钥KE:
L=E(Pi,0b) (9)
KE=T (12)
接着,密钥值字段可以利用由Pi导出的加密密钥而被计算为待供应的密钥k的AES CCM加密,如下所述:
KEYVALUE=E(KE,K)
有效载荷授权的值是在主体结构中所有其它字段上计算的CBC-MAC。可以使用由Pi(或R,如果i=1)导出的密钥来计算该CBC-MAC。使用根据以下的CMAC PRF根据已知方法来计算MAC密钥K1:
L=E(Pi,0b) (13)
Kl=T (16)
参照关于所使用的参数的较早解释。
有效载荷授权值可以如下计算:
委派授权=CMAC(K1;(命令||密钥类型||密钥值||密钥ID);128)
根据某些实施例,可以由密钥供应系统执行下述功能。
根密钥供应是其中将R值输入到设备中的操作。单值插入-假设在能够用于R的安全供应的设备上不存在预存在的秘密,则能够通过仅允许其设置而不允许其未受限的修改的手段来将其插入到设备中。这样的手段可以被编程为密钥提供系统的一部分,只要用于保持R的存储装置是这样的,使得在运行时间可编程的同时,不能够由不是密钥供应系统一部分的逻辑读取。
在全局R值的情况下,这一值可以被包括作为提供给芯片制造商的RTL(寄存器传输级)描述的一部分。可以使用模糊化技术来掩饰R的值,使得对于查看该RTL描述的任何人都难以明显观测。
插入R值的两个示例性选项:(a)使用作为密钥供应系统的一部分的只读机制,连同专有存取存储装置;(b)针对设备组,使用R的硬编码值。
R值可以是随机值,由通过批准的(假定存在1个)RNG反馈的批准的PRNG导出。
多个共享插入:代替插入单个R值,可以插入多个根密钥分量。插入每一个根密钥分量值,就像上面描述的插入单个R值一样。即,每一个根密钥分量可以被包括在RTL中或者被接收到设备中(例如,使用只写机制)。将从这些分量(也被称作“密钥共享”)计算出R,作为它们全部的组合。
所有者可以知晓所有根密钥分量,以便能够行使其作为根供应实体的权利。然而,不需要实际存储所有分量,对于可以计算R值的所有者来说,所有分量共同传送并存储这一值是足够的。
供应根密钥R作为几个根密钥分量值而不是作为单个根密钥值,并不暗示将R理解为用于供应的信任根,并且使用R的所有操作具有相同的安全模型。将R供应为分量的集合的唯一暗示是关于其要求供应(或以其它方式可以获得)这些分量的实体的信任。根据在密钥供应系统中使用的普通密码共享方案,当允许n个实体中的每一个分别供应单个根密钥分量时,这些实体中的任意一个都不能够比完全猜测整个密钥空间或R的概率更好地来确定R。只要i<n,这一命题也适用于任何i个共谋实体的组。
每一个根密钥分量Ri的值可以是随机值,从由批准的(假定存在一个)RNG反馈的批准的PRNG导出。尽管这一单个值本身不能够恢复根秘钥,也不能够辅助该根密钥的恢复,但是不需要放弃或免除应用。
根密钥导出:如果根密钥的值被提供为单个根密钥值,则可以通过读取它来进行导出。
如果R的值没有被明确供应,而是n个根密钥分量值的组合,则该n个共享被取回为R1......Rn,并且R的值可以计算如下:
除非被明确指定或批准,这些R1......Rn值中的任意一个不作它用。
功能密钥供应是其中将该功能密钥插入到设备中的过程。供应特定密钥类型的功能密钥的实体是被委派有供应该密钥类型的密钥的权限的所有者或者子所有者。可以由所有者或者自身被授权供应相同密钥类型或者更通用密钥类型前缀的另一子所有者来委派授权。如在委派部分中指定的,这一部分假定已经执行委派。
为了将密钥类型t的功能密钥k插入到设备中,可以执行下述步骤:
1.供应实体按照指定的顺序执行下述操作:
(a)如果供应实体是子所有者,则其找到委派结构对象的合适的链,允许其供应类型t的密钥。如果该实体由所有者委派,则这样的链可能具有一个委派结构元素。如果该实体由另一子所有者委派,则该链将包括从所有者链接到当前委派的子所有者的委派结构对象,连同从该子所有者向子所有者委派授权以便供应密钥的最终委派结构对象。该链始终由当前委派的所有者/子所有者整体提供给供应实体-绝非由该供应实体构建。所选择的链应该是其中委派结构对象的所有允许的类型段字段当连接有在其间添加的分隔符并且在末尾添加有分隔符时形成前缀t的一个链。例如,具有下述各个允许的类型段字段:-系统-,-应用/DRM-,-方案1-,的委派结构对象链适合于供应密钥,其中t=-系统/应用/DRM/方案1/PrKey-。
(b)如果由委派结构对象的整个链生成的密钥类型前缀存在的话,在将该前缀去掉之后,创建在命令字段中包含“添加”的主体元素,以及保持t值的密钥类型字段。(通过上述示例,密钥类型字段将包含-PrKey-。)
(c)使用密钥P来计算加密和完整性密钥:分别为KE和KI。如果供应实体是所有者,则P=R。应当根据在主体部分中指定的方式来计算这些密钥。
(d)采用KE并且使用AES CCM对k进行加密。
(e)向主体结构附接密钥ID t的值E(KE,k)(作为密钥类型)以及密钥槽值。
(f)在整个主体结构上,使用KI将MAC计算为密钥。
(g)由委派结构对象链和主体结构二者形成供应结构。所产生的供应结构形成供应消息。
(h)可以按照类似的方式附接到供应消息额外的供应结构对象。作为实现决策,如果几个主体结构全部适合相同的密钥类型前缀(委派结构对象的链),则可以允许将该几个主体结构附接到相同的前导。
(i)将供应消息传送给设备上的密钥供应系统。
2.设备上的密钥供应系统的客户端接收供应消息,并且执行下述操作:
3.设定C←R;A←Φ
4.跟随该前导中的委派结构对象的链;对于每一个这样的结构,执行下述动作:
(a)解析委派结构对象:允许类型段为a,目标密钥为t,委派授权为m。
(b)使用C和在委派-格式部分中指定的程序来计算KI。
(c)在委派结构对象上计算MAC。
(d)将所计算的MAC与m进行比较。如果MAC值不匹配,则立即终止该过程。指示可以包括发生故障时的m值。
(e)使用C和在委派-格式部分中指定的程序来计算KE。
(f)设定:C←D(KE,t)
(g)设定:A←A||a||分隔符
5.解析供应结构对象的主体结构:命令、密钥类型为t,密钥槽为s,密钥值为k,密钥ID和有效载荷授权为m。命令的值是添加(ADD),通过用例定义。
6.使用C和上面指定的例程来计算Kl。
7.使用Kl和主体结构的字段来计算MAC。
8.将所计算的MAC与m进行比较。如果MAC值不匹配,则立即终止该过程。指示可以包括主体结构的MAC失败的事实。
9.计算:T←A||t。
10.使用C和上面指定的例程来计算KE。
11.计算D(KE,k)以获得要被添加的密钥。
12.校验密钥是否已经被存储有相同的密钥类型t和相同的密钥槽。如果为是,则报告合适的错误,并终止该过程。
13.归档解密的密钥D(KE,k),以及所计算的密钥类型T、密钥槽s和密钥ID的值。
14.报告成功。
由设备上的供应实体和密钥供应系统执行的动作可能是交错进行的,因此不需要密钥供应系统存储诸如委派结构对象的链这样的大数据块。例如,可以将结构逐个地发送到密钥供应系统,在整个过程中密钥供应系统仅保留状态。
密钥的枚举和移除:移除密钥的过程与添加密钥的过程类似,以下除外:(a)在主体结构中不提供密钥值;(b)如果存在具有合适的密钥类型和密钥槽的密钥,则将其移除。
枚举密钥的过程与添加密钥的过程类似,存在下述区别:(a)在主体结构中不提供密钥值。(b)来自密钥供应系统的响应可以由所有类型的密钥类型、密钥槽和密钥ID构成,这些密钥的密钥类型字段以上面计算的T值开始。换言之,所列举的密钥将是具有以T开始的密钥类型字段的密钥,其由主体结构和被提供的委派结构对象链的组合传送。(c)主体结构的密钥类型字段可以为空。
转到图1,示出了根据本发明实施例由目标设备根所有者使用的供应消息前导生成器的功能框图。图2是根据本发明实施例由第一委派方使用的供应消息生成器的功能框图。图3是根据本发明实施例由第一委派方用于生成第二委派方可用的前导的消息第二部分的供应消息前导生成器的功能框图。图4是根据本发明实施例由第二委派方使用的供应消息生成器的功能框图。图5是根据本发明一些实施例包括接收供应消息的加密资料供应模块的目标设备的功能框图。
根据本发明一些实施例,一种电子设备可以包括:加密资料供应(CMP)模块,用于执行包括下列的方法:(a)接收包括前导和有效载荷的CMP消息;(b)通过使用该电子设备的根密钥来对CMP消息的前导进行解密;(c)从解密的CMP消息的前导中提取第一加密密钥;(d)从解密的CMP消息的前导中提取主许可数据向量,该向量指示以下中的至少一个:(A)密钥类型,由前导的使用者授权以被供应到电子设备,以及(B)指示前导的使用者是否被授权向其它实体委派密钥供应权利;(e)通过使用从前导提取的第一加密密钥,对CMP消息的有效载荷的至少一部分进行解密;(f)从解密的CMP消息的有效载荷中提取功能加密密钥,其中所提取的功能加密密钥包括与下列中的至少一个相关联的加密密钥:电子设备上安装的应用、电子设备上正在运行的过程;(g)针对由主许可数据向量指示的一个或多个使用许可,检查所提取的功能加密密钥的密钥元数据,并且确定所提取的功能加密密钥是否具有被允许用于供应的类型;(h)如果确定所提取的功能加密密钥具有被许可用于由许可数据向量供应的类型,则向所述电子设备供应所提取的功能加密密钥,其中,所述供应包括下列中的至少一个:(x)将所提取的功能加密密钥存储在电子设备中,(y)使用所述电子设备中的所提取的功能加密密钥,(z)在所述电子设备中安装所提取的功能加密密钥;其中,CMP消息包括多级委派层级,用于供应一个或多个加密密钥以由该电子设备的一个或多个应用使用;其中,所述电子设备的根密钥用于向一个或多个其它方委派至少部分密钥供应权利;其中,基于各自的许可数据向量,所述其它方中的至少一方被授权向一个或多个其它方委派密钥供应权利的至少一部分,其中利用至少一硬件部件来实现该电子设备。
在某些实施例中,使用电子设备的根密钥来对所述前导的一些或者全部进行数字签名。
在某些实施例中,由所述电子设备利用所提取的功能加密密钥用于从由下列构成的组中选择的过程:(1)解密数据,(2)加密数据,(3)数字版权管理,(4)签名生成,(5)签名验证,以及(6)支付应用。
在某些实施例中,所述CMP模块用于根据由密钥元数据和主许可数据向量指示的使用许可来调节所述电子设备的应用对所提取的功能加密密钥的使用。
在某些实施例中,所述方法包括:从解密的CMP消息的有效载荷中提取用于对CMP消息的另一部分进行解密的第二加密密钥。
在某些实施例中,解密的CMP消息的有效载荷进一步包括第二许可数据向量;并且所述CMP模块用于根据第一许可数据向量和第二许可数据向量二者的使用限制来调节所述第二加密密钥的使用。
在某些实施例中,所述CMP模块用于使用所述第二加密密钥来处理所述CMP消息的一部分。
在某些实施例中,所述CMP模块用于根据所述CMP消息内的所有许可数据向量的所有使用限制来调节从所述CMP消息中提取的所提取的功能加密密钥的使用。
在某些实施例中,所述主许可数据向量定义了可以被包括在所述CMP消息中的功能加密密钥的一个或多个类型。
在某些实施例中,所述CMP模块不用于处理所述CMP消息中具有与在所述主许可数据向量中定义的类型不同的类型的功能密钥相关联的加密资料。
在某些实施例中,从解密的CMP消息的有效载荷中提取功能加密密钥包括:(A)确定解密的有效载荷包括次许可数据向量和第二加密密钥;(B)从所述解密的有效载荷中提取所述次许可数据向量和所述第二加密密钥;(C)根据所述主许可数据向量和所述次许可数据向量二者的使用限制来调节所提取的功能加密密钥的使用。
在某些实施例中,所述CMP消息包括两部分前导和有效载荷部分;其中所述两部分前导包括:(A)第一前导部分,其存储(i)通过使用所述电子设备的根密钥加密的第一加密密钥;以及(ii)与所述第一加密密钥相关联的第一许可向量,其中所述第一许可向量定义与所述第一加密密钥相关联的供应限制;以及(B)第二前导部分,其存储(iii)通过使用所述第一加密密钥加密的第二加密密钥;以及(iv)与所述第二加密密钥相关联的第二许可向量,其中所述第二许可向量定义与所述第二加密密钥相关联的供应限制;其中,所述有效载荷部分包括:(v)通过使用所述第二加密密钥加密的所述功能加密密钥;其中,通过与所述第一许可向量和所述第二许可向量的供应限制的聚合相对应的供应限制来调节所述功能加密密钥的供应。
在某些实施例中,所述多级委派层级具有未预先定义的长度。
在某些实施例中,所述CMP消息包括针对基于密钥类型的部分委派功能的数据;其中,供应权利委派层级中的成员通过各自的许可向量得到授权,以便定义其委派方通过委派接收到哪些委派的密钥供应权利。
在某些实施例中,所述CMP消息包括指示所委派的密钥供应权利没有超出多级委派层级中较高成员的密钥供应权利的数据。
在某些实施例中,针对特定目标设备生成CMP消息的前导,并且将其提供到想要在所述目标设备上利用所述功能加密密钥的一方。
在某些实施例中,所述CMP消息的前导:(A)针对多个目标设备的特定组生成,并且(B)被提供给想要在所述目标设备上利用所述功能加密密钥的一方。
在某些实施例中,多个目标设备的特定组至少包括下面中的一个:具有共同标记的多个电子设备的组;具有共同模型的多个电子设备的组。
在某些实施例中,一种加密资料供应(CMP)方法可以在至少包括硬件部件的电子设备上实现;所述方法可以例如包括:(a)接收包括前导和有效载荷的CMP消息;(b)通过使用电子设备的根密钥对所述CMP消息的前导进行解密;(c)从解密的CMP消息的前导中提取第一加密密钥;(d)从解密的CMP消息的前导中提取主许可数据向量,其指示下列中的至少一个:(A)由前导的使用者授权以被供应到电子设备的密钥的类型,以及(B)前导的使用者是否被授权向其它实体委派密钥供应权利的指示;(e)通过使用从前导中提取的第一加密密钥来对所述CMP消息的有效载荷的至少一部分进行解密;(f)从解密的CMP消息的有效载荷中提取功能加密密钥,其中,所提取的功能加密密钥包括与下列中的至少一个相关联的加密密钥:在电子设备上安装的应用,以及在电子设备上运行的过程;(g)对照由主许可数据向量指示的一个或多个使用许可来检查所提取的功能加密密钥,并且确定所提取的功能加密密钥是否具有被允许用于供应的类型;(h)如果确定所提取的功能加密密钥具有用于由许可数据向量允许用于供应的类型,则将所提取的功能加密密钥供应到所述电子设备,其中所述供应包括下列中的至少一个:(x)在所述电子设备中存储所提取的功能加密密钥,(y)在所述电子设备中使用所提取的功能加密密钥,(z)在所述电子设备中安装所提取的功能加密密钥;其中,所述方法由至少包括硬件组件的电子设备实现,其中,所述CMP消息包括多级委派层级,用于供应一个或多个加密密钥以由电子设备中的一个或多个应用使用;其中,所述电子设备的根密钥用于向一个或多个其它方委派至少部分密钥供应权利;其中,基于各自的许可数据向量,授权所述其它方中的至少一方向一个或多个其它方委派密钥供应权利的至少一部分。
申请人已经认识到关于资产供应或者加密密钥供应存在的问题,并且该问题对于执行不应该由其它设备克隆的操作的许多电子设备可能是普遍存在的。对于加密计算,为了使得仅能够由期望的设备执行,会要求这样的设备存取在该设备外部不可用的数据资产。由于计算算法本身不一定是机密的,因此这样的资产的可用性仅是防止被克隆、被仿制或者以其它方式不期望的设备执行相同操作(例如,被攻击者欺诈)的因素。在示范性示例中,诸如PlayReady客户端或高带宽数字内容保护(HDCP)接收机的数字版权保护(DRM)代理可以利用在该设备外部大概无法使用的密钥资料来执行数字内容解密。
申请人已经认识到,受保护资产(例如,加密密钥)的供应由于不同于设备典型地遇到的供应的其它类型,至少从三个因素带来挑战。第一,所供应的资料应该以所供应的资料的机密性和/或完整性被保护的方式来安全供应。第二,与典型的软件包或图像不同,所供应的资产可以是每设备或者每组(或批)设备唯一的。第三,所供应的资产可以具有与其相关联的货币价值,以使得其由所述设备的接受是被唯一且肯定指示的,并且这样的指示可以用于记账目的、许可(license)目的或者具有货币结果的其它目的。
申请人开发了新型的资产供应系统,该系统可以使多个利益相关者受益,特别是在集成电路(IC)制造商、设备制造商、服务提供商和用户的领域。
第一利益相关者可以是IC供应商(ICV),其可以是部署有该系统的电子设备的IC制造者。
第二利益相关者可以是原始设备制造商(OEM),其可以从ICV获得IC,并且可以将该电子设备装配且运输到终端用户或中间批发商(例如,零售商、离线库存、在线贸易)。
第三利益相关者可以是服务提供商(SP),其可以经由该设备向该设备的终端用户提供服务。在某些消费类电子设备中,SP可以向可能由SP拥有并且可能由SP管理的受管理设备提供服务;或者SP可以向非管理设备提供服务,该设备可以由第三方(例如,终端用户本身或者企业)所有和/或管理。
如下面的用例所示范的,本发明某些实施例可以允许在利益相关者之间维持部分不信任;并且即使在并不完全信任或者可以部分不信任的多方之中,允许资产的安全供应以及供应权利的安全委派。
在第一示范性用例中,本发明可以实现服务密钥的安全供应。例如,该设备可以包括可能需要被供应有加密资料的已安装应用。该应用被信任使用任何合适的机制来访问资产。加密资料可以被单独地供应到每一个设备,并且可以是每设备或每组设备唯一的,并且可以促进安全应用的个性化。本发明可以例如允许由OEM或SP将HDCP Rx密钥(HDCP设备密钥)安全传送到所部署的设备;由OEM或SP将快速识别再现(FIDO)证实密钥(类密钥)安全传送到所部署的设备;由内容服务提供商将PlayReady模型密钥或PlayReady设备密钥安全传送到所部署的设备;由SP或其它实体(例如,企业或组织的信息技术(IT)部门)将Wi-Fi保护接入(WPA)密钥(类密钥)或其它无线通信加密密钥传送到所部署的设备等等。
在第二示范性用例中,本发明可以实现在设备生命周期内的任何时刻延期的个性化定制,作为供应服务密钥能力的副产品。例如,本发明可以允许将许可事件以及可能与其相关联的业务延期至特定设备实际要求该服务的时间上的随后时刻。
在第三示范性用例中,可以实现自组织设备分配。例如,IC或设备的参数可以在被运输到不同地理区域或者被提供到不同用户的实例之间不同。这可能要求供应商(例如,ICV或OEM)在运输前根据运输的目的地来对产品进行配置。由于该产品在被送离供应商库存之前根据其目的地被定制,因此上述约束可能意味着产品在分配和再分配方面的灵活性降低。本发明的供应机制可以允许供应商在产品送离后的任何时间供应配置数据,从而允许供应商重新获得灵活性。
在第四示范性用例中,本发明可以允许在特征激活方面的灵活性。例如,ICV或OEM可以基于被使能或禁用的特征的不同集合来销售相同产品的不同版本;具有相应确定的定价。这可能要求指示哪些特征被使能(或禁用)的参数被安全地供应给设备,本发明可以实现这样的安全供应。
在第五示范性用例中,本发明可以允许实施制造协议。例如,“标记”IC和设备的能力可以允许IC供应商和/或OEM监控其设计的命运,例如,按照它们中的多少被制造或者它们在哪里被销售。这可以允许减轻“灰色市场”(在随后的用例中会进一步讨论)和“三轮班”现象。具有给所述领域中的产品贴标签的安全能力以及基于该标签控制产品的能力,允许利益相关者监控和/或实施什么产品在什么区域操作。
在第六示范性用例中,本发明可以允许减轻或消除IC或电子设备的“灰色市场”。例如,IC供应商或OEM可以将相似的IC设计或相似的设备运输到不同的分发区域,可能通过不同的分发渠道。相同的产品在不同的区域可以以不同的价格进行销售。通常可能存在形成“灰色市场”的动机,其中在一个区域内低价购置IC或设备,而在另一个区域高价将其售出,这是由销售较高价产品的另一渠道服务的IC供应商或OEM所期望的。
在第七示范性用例中,本发明可以允许降低或消除“三轮班”问题。IC供应商可以与外部制造厂签订合同,从而会有风险,即,制造商可能实际制造出比所报告的数量更多的IC,并且为了自身利益将其销售。相似地,OEM可能雇佣外部制造商或装配工厂(或ODM,原始设计制造者),并且可能具有相似的风险,即,ODM在OEM设计上制造出“克隆”设备。
本发明某些实施例可以用于各种类型的数据项或数字项的安全供应。某些实施例可以用于安全供应加密资产、加密密钥、解密密钥、密码、短语PIN等等。某些实施例可以用于安全供应非加密资产或者可能不一定包括加密密钥和/或解密密钥的数字资产。某些实施例可以用于同时安全供应加密资产和非加密资产二者。某些实施例可以用于安全供应许可、重放(playback)许可、软件许可、DRM许可、多媒体许可、激活码、软件密钥或产品密钥、序列号、唯一识别码等等。在某些实施例中,术语“加密资产”或“加密密钥”可以可选地也包括这样的激活码、许可、重放许可、软件许可、DRM许可、多媒体许可、软件密钥或产品密钥、序列号、唯一识别码、数字文件等等;以及例如可以使能或禁用或激活或去激活电子设备的一个或多个特性或功能的其它适合的数据项或数据对象。本发明的实施例可以结合其它合适类型的资产或数据项的安全供应来使用。
参照图6,其是根据本发明的电子设备600的示意性框图说明。设备600可以是或可以例如包括智能手机、蜂窝手机、平板、平板手机(“Phablet”)设备、平板电脑、笔记本电脑、便携式游戏设备、便携式通信设备、便携式无线设备、便携式计算设备、手持设备、车载设备、互联网连接的设备或装置或环境、“物联网(IoT)”设备或装置或环境、连接到“云”或“云计算”系统或网络的设备、机器到机器(M2M)系统或环境、或者其它适合的电子设备。
设备600可以例如包括一个或多个信任根(RoT)元件611-614,以及安全存储装置620。在示范性示例中,RoT元件611-614被阐述为位于设备600中并且在安全存储装置620外部;然而,在某些实施例中,RoT元件611-614中的一个或多个或全部可以被存储在安全存储装置620内。设备600可以可选地包括在电子设备或计算设备中可能经常包括的其它硬件部件和/或软件模块,例如,处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图像处理单元(GPU)、输入单元(例如,触摸屏、键盘、物理键盘、屏幕上键盘、键区、微型机、手写笔)、输出单元(例如,屏幕、触摸屏、音频扬声器)、存储器单元和/或存储单元(例如,RAM单元、ROM单元、闪存、SD卡、SIM卡、短期存储器单元、长期存储器单元、易失性存储器、非易失性存储器)、无线收发机(例如,Wi-Fi收发机、蜂窝4G收发机、蜂窝4G LTE收发机、蜂窝3G收发机)、天线、蓝牙组件、GPS组件、电源(例如可充电电池)、操作系统(OS)、驱动器、软件应用等等。
ICV RoT 611可以是或者可以包括非对称主密钥,并且可以用于识别由特定ICV制造的IC。私钥可以由以下两种密钥共享组成:可以被固定在寄存器-传输级(RTL)的第一密钥共享;可以在IC制造期间被编程到管芯上一次性可编程(OTP)存储器中的非固定的第二密钥共享。适当管理非固定的(例如,OTP)密钥共享可以允许ICV针对每一个批次的IC使用不同的密钥。如果这些批次也对应到仓库库存或分布粒度,则由不同的OEM使用的IC可以具有不同的根密钥,从而允许保护ICV的供应链。ICV RoT 611可以是在设备600外部也知晓的主秘密RoT。
这一主密钥用于导出两个私钥:用于加密的kICV;E和用于鉴别的kicv;A;以及对称关联性密钥ka。相对应的公钥是Kicv;E和Kicv;A。通过使用ICV服务器私钥ks对公钥进行签名并且将证书存储在设备上,由IC供应商对公钥进行认证:
CICV=S[kS,KICV;A||KICV;E]
因此,在使用ICV服务器公钥Ks的协议执行期间,其它方可以使密钥生效。为了创建签名,IC供应商部署持有ks和RTL共享的硬件安全模块(HSM):给出OTP共享,HSM计算kicv;A和kicv;E,并且生成CICV(OTP共享也可以由相同的HSM生成并输出)。IC供应商使用对称关联性密钥ka用于以与使用自身关联性密钥(注意所有这样的密钥都用ka表示)的其它供应服务商相同的方式进行供应。
本文描述的一些协议可以利用IKa,即ka的身份,以便选择特定的关联性密钥。IKa具有特殊的值来表示由IC供应商使用的用于进行供应的ka;否则,IKa由供应服务器IPRS的身份和关联性密钥的类型(“个人的”或“等级范围的”)构成。供应服务器IPRS的身份可以被计算为散列:
KPRS,E:IPRS=H[KPRS,E])
设备本地RoT 613可以是在设备600上可以用于安全存储以及用于导出会话密钥的对称主密钥。设备本地RoT 613可以由设备600自身在设备600内生成,并且可能无法在设备600外部使用。
授权RoT 614可以是公共授权密钥,其可以用于验证通信实体的资格或身份。这些身份可以服务可以负责记账和/或报告的后端组件或子系统。因此,授权RoT 614不需要得到供应和委派机制的信任,并且授权RoT 614的妥协不会对所供应的资产和/或委派机制造成威胁。授权RoT 614可以被硬编码,并且在利用本发明的机制的所有设备中可以是功能等效的。作为授权RoT 614的公钥的对等物的私钥可以仅在授权服务器中或者在与这样的授权服务器相关联的后端组件或子系统中可用。
某些实施例可以可选地使用OEM RoT 612,其可以是能够基于特定IC识别由特定OEM制造的设备的非对称主密钥。OEM RoT 612的私钥可以由ICV RoT 611和OEM的编码签名公钥导出。OEM RoT 612在其功能目的方面可以通常与ICV RoT 611等效;但是OEM RoT 612可以进一步专用于OEM。OEM RoT 612可以专门用于OEM和用于验证根图像的公钥的组合。在某些实施例中,OEM RoT 612可以仅为ICV知晓,并且可能不被特定的OEM(或者其它OEM或第三方)所知。例如,特定OEM可以使用可以由OEM使用的用于代表OEM供应的另一密钥引入的委派机制(例如,如本文描述的)。
本发明可以利用适合的加密算法。例如,某些实施例可以利用128位安全对称密钥和在NIST P-256曲线上的椭圆曲线密码(ECC)公钥。为了从对称主密钥导出密钥,该系统可以利用密钥导出功能,例如,NIST特殊公开800-108的“相反模式的KDF”、“使用伪随机函数的密钥推导介绍”,结合AES-CMAC作为伪随机函数。对于对称操作,某些实现可以利用128比特AES;例如,利用CBC模式进行加密,利用CMAC模式进行授权,并且利用CCM模式用于鉴别的加密。加密散列可以使用SHA-256来执行。对于非对称操作,某些实现可以利用ECDSA和ECIES。在所有的通信和存储中,ECC公钥以未压缩的格式进行存储。
对于加密操作,可以使用下面的表示:
E[K,m]表示使用公钥K的消息m的加密;
E[k,m]表示使用密钥k的消息m的对称鉴别加密;
H[m]表示消息m的加密散列;
S[k,m]表示使用私钥k的消息m的签名。
供应服务器证书包括服务器的签名公钥(也用作这一服务器的标识符)、其加密公钥以及由授权服务器分配的标志;通过与授权RoT匹配的私钥,对证书进行签名。该标志可以例如指示该服务器是否必须呈现具有委派记录和日常字长供应记录的授权票据。系统的某些实现不需要管理供应服务器的命名空间。
资产供应是由该系统提供的主要特征。供应协议可能需要满足所有的相关安全要求,例如:只对正确的设备提供资产、确保资产机密性和完整性、并且确保记账系统的封闭性。供应协议可以确保发起供应业务的服务器是被授权的供应服务器。
在某些实现中,应该在可以执行资产供应之前满足一个或多个先决条件,例如:注册、密钥可用性和识别。
关于注册,在资产所有者能够使用供应服务器向设备供应资产之前,供应服务器必须通过授权服务器获得供应服务器证书,例如,针对公钥KPRS;E。这一过程确保了只能通过授权服务器来接近设备。
另外,供应服务器必须得到层级中位置较高的供应服务器(也被称为委派服务器)的适当委派。这一委派在资产供应可能发生之前在必须在该设备中创建的委派记录中进行表达。使用如本文详细描述的委派协议来实现这样的委派记录的创建。
关于识别,可以使用单通道协议来实现供应。这一协议假设设备和供应服务器共享对称关联性密钥ka。该设备具有从ICV信任根或者从与所讨论的供应服务器相关的委派记录中导出的ka值。如果供应服务器还无法使用ka值,则可以在单通道供应协议之前执行识别协议(或者其它合适的发现协议)。例如,可以使用下述识别协议:
供应服务器→设备:Ika
供应服务器←设备:
协议1:识别协议
供应服务器通过向设备传送Ika,即用于取回的对称关联性密钥ka的身份,来发起该协议。如果该设备没有被供应(被委派)来使用这样的关联性密钥进行通信,则该设备返回与正确响应相区别的“无意义”消息。否则,该设备具有对应于IPRS的委派记录。在这一情况下,设备取回对应于IKa的关联性密钥ka,使用kICV;A对IKa和ka进行签名,并发送密钥连同证书CICV和所述签名,全部这些都通过供应服务器的公钥KPRS;E进行加密。供应服务器使用其私钥kPRS;E对该消息进行解密,使证书CICV生效并且存储关联性密钥。
系统可以利用单通道供应协议,例如:
供应服务器→设备:Ika,E[ka,M]
协议2:单通道供应协议
供应服务器向设备发送IKa,即,要使用的对称关联性密钥的身份,以及使用所选择的关联性密钥ka进行加密的消息M。关联性密钥可以在识别阶段期间由供应服务器获得,或者由于类别中的所有设备共享相同的关联性密钥(类别供应情况)的事实而被获知。
加密的消息M可以包括:(1)为了防止重放攻击的消息标识符IM;(2)资产id IA;(3)资产有效载荷A;(4)可选的票据T(来自授权服务器),以便对过程进行授权;和(5)其它元数据。
在处理消息M之前,该设备验证委派记录允许处理这一类型的资产,并且所供应的资产id正确地位于针对这一实体允许的前缀下。
如果所述资产是硬件特征-激活值,则供应服务器发送资产的激活地址以及这一资产对于其有效的模型标识符,作为IA的一部分。如果所述资产是硬件特性-激活值,则该设备使用模型识别符和针对该激活地址的访问许可来验证兼容性。
如果资产id表明所供应的资产是现有资产的副本,则更换其值。
委派过程允许作为委派服务器的供应服务器引入新的供应服务器。这是供应方案的层级属性的基础。在委派过程中,委派供应服务器(可以被称作“委派服务器”)生成包括新的供应服务器的密钥资料的委派消息以及委派策略。委派消息可以接着被供应到设备,使得被委派的供应服务器随后执行其自身的供应(或委派)过程。使用被授权的单通道委派协议,类似于日常资产来供应委派消息。在执行该协议之后,该设备存储与这一供应服务器相对应的委派记录。
对于待执行的委派,委派服务器必须能够供应该设备。因此,委派服务器需要满足前述的注册和密钥可用性先决条件。委派服务器也必须得到委派其权利用于供应的委派服务器的委派授权,如果确实其自身由委派服务器委派。另外,对于要向设备递交委派结构的供应服务器(委派目标)而言,供应服务器需要满足注册要求。
可以通过使用供应协议来执行委派,除了所供应的资产A具有特殊类型,委派消息。委派消息可以包括:(1)被委派的供应服务器的公钥(对于执行识别协议必不可少);(2)加密的关联性密钥(对于类别供应必不可少);(3)在被委派的供应服务器上应用的供应策略。
出于示范性目的,委派过程可以在本文被描述为好像在设备和被委派的供应服务器之间的任何通信之前该被委派的服务器与该设备进行通信。然而,在这一通信中,被委派的供应服务器可以作为中间人,并且因而在与给定设备进行通信的同时,允许供应服务器获得针对该设备的供应权利。
为了向供应服务器委派供应权利,委派服务器经过安全通道从供应服务器接收在供应服务器证实中由授权服务器认证的公共加密密钥KPRS;E以及使用KICV;E加密的类别关联性密钥ka,即E[KICV;E;ka],其中公钥KICV;E是设备证书CICV的一部分,并且是可用的,例如,使用识别协议。使用供应过程,委派服务器将这一消息连同供应策略(供应服务器指定供应服务器被授权供应何种资产)作为资产A以及与该资产相关联的元数据发送到设备。在这一情况下,资产id可以是IPRS,即,供应服务器的身份。
在验证委派服务器具有委派的权利并且验证KPRS;E上的证书之后,该设备准备委派记录。例如,如果设定了类范围供应标志,则该设备使用kICV;E来对类别范围关联性密钥ka进行解密。如果设定了针对个性化供应的标志,则该设备随机地生成个性化关联性密钥ka。该设备接着在安全存储装置中存储包含策略KPRS;E以及一个或两个关联性密钥ka的委派记录。
除了供应以外,资产管理可以包括关于资产的常见操作:由供应服务器使用所述系统执行的查询、修改和移除。
关于查询,知晓设备的关联性密钥的供应服务器可以使用查询协议来查询该设备,例如:
供应服务器→设备:
IKa,E[ka,n||Q]
供应服务器←设备:
E[ka,n||R]
协议3:查询协议
根据查询协议,供应服务器向设备发送Ika,即,所使用的对称关联性密钥的身份,以及现时(nonce)n连同使用所选择的关联性密钥ka加密的查询Q。如果该设备具有指定的关联性密钥ka,则该设备计算响应R(该响应也可以是错误消息)并且将其与所接收的使用关联性密钥ka进行加密的现时一起进行发送;否则设备产生与有效消息相区别的消息(不使用ka)。
资产修改可以通过再供应实现。在供应具有已经使用的资产id的资产时,新的资产更换旧的资产。资产移除可以通过为资产供应空有效载荷和删除标志来执行。空资产的资产id对应到应该被移除的资产。
资产被供应到设备中,因此该设备上的组件或模块可以使用或消耗该资产。在示范性实施例中,资产仅以被读取的形式被消耗。
在资产获得过程中,将资产内容提供给响应于API呼叫的主体。在通常情况下,API呼叫可以返回实际资产。对于特征激活资产,该系统可以向相关的硬件模块直接提供资产值,API呼叫可以仅指示成功或者失败。
要求尝试使用API的呼叫应用提供识别所寻求的资产的资产id。作为应答,系统返回所要求的资产的有效载荷(除非该资产是被直接推向硬件的特征激活)。在失败时,API返回指示下面的错误情况中的一个的代码:(1)“未发现”,指示在承载指定的资产id的安全存储装置中不存在资产;(2)“未授权”,指示所提供的证书不足以批准访问所述资产;(3)“失败”,指示发生另一个失败,例如,在检查安全存储装置的完整性时,其防止资产变为可用。
每一个资产元数据包含指示何种实体被允许访问该资产的许可字段。在示范性实施例中,该系统可能不支持多个许可级别。特别地,其向设备上的实体仅提供读取访问。资产可以被读取,但是不能够被修改或甚至由设备上的用户删除。资产删除仅经过供应机制本身而被支持,即,在被授权的供应服务器的帮助下。
许可字段可以支持下述主体:“所有”,“TEE”,“特定-TEE”和“特定-HLOS”。
主体“所有”指示设备上的所有代码。资产对于所有应用都将是可自由使用的,无论是该应用是在TEE(受信执行环境)上运行,还是在该设备上的HLOS(高级操作系统)上运行。
主体“TEE”指示设备上的所有TEE代码。该资产对于在该设备的TEE中运行的所有功能都是可用的。
主体“特定-TEE”指示特定的TEE功能。该资产对于该设备上的一个或多个正确识别的TEE功能将是可用的。安全OS负责向实现本发明的代码确定并报告呼叫者身份,为了强制实施这一限制。
主体“特定-HLOS”指示特定的HLOS功能。该资产对于该设备上的一个或多个正确标识的HLOS应用将是可用的。HLOS应用可以使用挑战-响应协议来识别自身,其中对挑战做出响应所要求的秘密值被嵌入在HLOS共享库中。HLOS共享库可以使用数据模糊化技术以保护挑战-响应秘密并且应当使用代码完整性验证来验证呼入应用的身份。
某些实施例可以使能票据和授权的供应。例如,在某些实现中,可能要求供应服务器运营商从授权服务器获取授权票据以便供应资产。在这样的情况下,向这一供应服务器发出的供应服务器证书将包括指示这一供应服务器必须呈现具有供应事件的有效的授权票据的标志。
被要求呈现授权票据的供应服务器必须首先获得针对其资产发出的这样的票据。为了执行这一票据发出,供应服务器可以联系授权服务器并且呈现其自身的供应服务器证书以及根据资产计算的散列摘要。授权服务器可以对业务做记录(为了随后的记账目的),并且可以发出包含对资产散列的签名的授权票据。使用由授权RoT签名的票据签名密钥来计算该签名。该票据随后将由接收设备作为其存储这一资产的条件进行验证。
为了授权委派记录,委派服务器可以向授权服务器发送被委派的服务器的公钥(不是其散列)。授权服务器可以通过对这一公钥进行签名来发出授权票据。
为了最小化票据业务的数量,该系统可以发出覆盖多个资产的单个授权票据。例如,供应服务器可以构建包含作为叶子的所有资产的Merkle树,并且请求针对树的顶部散列的票据。票据请求以及所产生的票据应当指示树的大小,其应当是2的幂。当供应服务器接着向设备呈现票据时,也将呈现允许设备重建Merkle树的节点的最小子集,并且验证顶部散列与所述票据中表述的内容相匹配。
参照图7A-7E,其是根据本发明一些示范性实施例的系统700及其组件的示意性框图说明。图7A示出了系统700的示范性实现,其可以包括:授权服务器701、供应服务器731-733和电子设备771-772。系统700的组件可以经由一个或多个有线和/或无线通信链路、经由局域网(LAN)、经由广域网(WAN)、经由TCP/IP或互联网连接等等直接地和/或间接地与彼此进行通信。
需要注意的是,图7A-7E的单元或组件可以包括其它适合的模块或子单元,以便执行或实现本文描述的操作或功能或协议中的一个或多个。例如,识别模块可以执行与识别相关联的操作;注册模块可以执行与注册相关联的操作;供应模块可以执行与供应相关联的操作;委派模块可以执行与委派相关联的操作;查询模块可以执行与查询相关联的操作;等等。这样的模块可以在服务器侧,也可以在客户端侧或设备侧,或者可以被实现在供应服务器和/或委派服务器和/或授权服务器和/或电子设备上。
供应服务器731可以将资产供应到设备771。
供应服务器732可以具有将资产供应到设备772的权利。供应服务器732可以作为委派服务器操作;并且可以将其供应权利的一些或者全部委派给“目标”或者“被委派的”供应服务器733。被委派的供应服务器733可以依次将资产供应到设备772,严格地根据由委派服务器732先前委派给被委派的供应服务器733的供应权利。
根据本发明,委派服务器732可以不将由被委派的供应服务器733实际供应的资产展现给设备772;即使委派服务器732能够访问在系统700内发生的所有通信。
根据本发明,委派服务器732可以作为“介绍”服务器操作,并且可以向设备722“介绍”该被委派的供应服务器733。在进行这样的“介绍”(或者,供应权利的委派)时,被委派的供应服务器733可以向设备772发送加密的资产(X);并且委派服务器732不能够对该加密的资产(X)进行密码破译或解密,即使委派服务器732起初是到设备772的“被介绍的”被委派的供应服务器733的实体,并且即使委派服务器732能够监听系统700的组件间的所有通信。
图7B是授权服务器701的示范性实现的更详细方框图说明;
图7C是供应服务器731的示范性实现的方框图说明;
图7D是委派服务器732的示范性实现的方框图说明;
图7E是设备772的示范性实现的方框图说明。
图7A中示出的单元中的每一个可以例如包括:能够执行代码或程序或应用的处理器751;存储器单元752;存储单元753;有线或无线通信单元754(例如发射机、接收机、收发机、网络接口卡(NIC)、调制解调器等等);能够生成密钥、对称密钥、非对称密钥、私钥、公钥、加密密钥、解密密钥、密钥对等等的密钥生成器755,;能够生成可以由其它子单元或模块(例如,由密钥生成器755)使用的随机数或者伪随机数的随机数生成器(RNG)756;加密单元757或加密模块;解密单元758或解密模块;签名单元759或签名模块;签名验证单元760或签名验证模块;以及其它适合的硬件组件和/或软件模块。
需要注意的是,为了示范性目的,并且为了使大量的组件和唯一标号不模糊本发明,在图7A-7E中将在本段中提及的各种单元或模块显示为具有重复的标号,即使这些组件中的每一个可以在系统700的不同单元之间被不同地实现;例如,在全部图7B-7E中将处理器表示为处理器751,即使授权服务器701可以包括第一类型的处理器,供应服务器731可以包括第二(不同)类型的处理器,设备772可以包括第三(不同)类型的处理器等等。
转到图7B,授权服务器701可以例如进一步包括:授权模块711;单资产预授权票据生成器712;以及多资产预授权票据生成器713。
转到图7C,供应服务器731可以例如进一步包括:特征激活模块781;注册模块784;能够像供应服务器那样朝向设备执行一个或多个操作的服务器侧模块785,或者与服务器侧相关的本文描述的其它操作或功能;单通道供应服务器侧模块786;委派记录获取模块787;查询消息生成器789;预授权票据获得器792;以及Merkel树构建器793。
转到图7D,委派服务器732可以包括组件799,其可以包括供应服务器731的组件中的一些或全部;并且可以例如进一步包括:委派记录生成器742;委派服务器侧模块743;预授权票据获得器744。
转到图7E,设备772可以例如进一步包括:安全存储装置721;受信执行环境(TEE)722;安全操作系统(安全OS)723;高级操作系统(HLOS)724;一个或多个信任根(RoT)元件725;一个或多个委派记录726;能够实现或执行与设备侧操作相关的本文描述的功能中的一个或多个的设备侧模块729;单通道供应设备侧模块745;委派记录处理模块746;设备侧个性化模块747;查询响应消息生成器748;资产修改模块749;资产移除模块705;资产获得模块706;资产消费模块707;许可字段强制执行模块708;以及Merkle树重建器709。
为了示范性目的,本文讨论的部分可以描述加密资产(例如,加密密钥、解密密钥、密码密钥、密码、个人识别码(PIN)、密码短语)的安全和/或受控供应;然而,本发明也可以用于其它类型的资产的安全和/或受控供应或者与其它类型的资产的安全和/或受控供应相结合,该其它类型的资产例如是非加密资产、证书、激活码、数字版权管理(DRM)项或DRM相关项等等。
利用诸如“处理”、“计算”、“运算”、“确定”等等术语进行的讨论涉及计算机或计算系统或者类似的电子计算设备的动作和/或过程,其将被表示为位于计算系统的寄存器和/或存储器内的诸如电子的物理量的数据处理和/或转换为类似地被表示为位于该计算系统的存储器、寄存器或者其它这样的信息存储装置、传输或显示设备内的物理量的其它数据。
本发明实施例可以包括用于执行本文的操作的装置。这一装置可以被专门构建用于期望的目的,或者可以包括由存储在计算机中的计算机程序选择性激活或重新配置的通用计算机。这样的计算程序可以被存储在计算机可读存储介质中,例如但不局限于任何类型的磁盘(包括软盘、光盘、CD-ROM、磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或者适合于存储电子指令并且能够耦合到计算机系统总线的任何其它类型的介质。
本文使用的术语“加密操作”可以例如包括编码、解码、签名、鉴别、散列和/或执行与加密和/或数据安全有关的其它适合的操作。例如,“加密操作模块”或“密码令牌模块”可以包括编码模块和/或解码模块和/或其它适合的模块或单元。
某些实施例可以通过使用硬件组件和/或软件模块的适当组合来实现,可以例如包括:处理器、中央处理单元(CPU)、数字信号处理器(DSP)、单核或多核处理器、处理核心、集成电路(IC)、逻辑单元、控制器、缓冲器、累加器、寄存器、存储器单元、存储单元、输入单元(例如,键盘、键区、触摸屏、手写笔、物理按钮、微型手机、屏幕上接口)、输出单元(例如,屏幕、触摸屏、显示单元、扩音器、耳机)、有线和/或无线收发机、有线和/或无线通信链路或网络(例如,根据IEEE 802.11和/或IEEE 802.16和/或其它通信标准或协议)、网络元件(例如,网络接口卡(NIC)、网络适配器、调制解调器、路由器、集线器、交换机)、电源、操作系统(OS)、驱动器、应用和/或其它适合的组件。
某些实施例可以被实现为制品或存储制品(例如,CD或DVD或基于“云”的远程存储),其可以存储代码或指令或程序,当由计算机或计算设备或机器执行时,该代码或指令或程序使这样的机器执行根据本发明的方法。
某些实施例可以通过使用软件应用或“app”或“窗口部件”来实现,该软件应用或“app”或“窗口部件”可以从网站或应用商店(或者“app商店”或在线商场)处下载或购买或获得。
本文参照本发明一个或多个实施例描述的功能、操作、组件和/或特征可以与本文参照本发明一个或多个其它实施例描述的一个或多个其它功能、操作、组件和/或特征相组合或与该一个或多个其它功能、操作、组件和/或特征结合使用。
尽管本文说明和描述了本发明的某些特征,但是本领域的普通技术人员可以做出许多修改、替代、改变和等效。因此,权利要求意在覆盖所有这样的修改、替代、改变和等效。