本申请案与2005年12月20日申请的第11/313,870号美国申请案相关;所述申请案主张2004年12月21日申请的第60/638,804号美国临时申请案的权益。本中请案进一步与2005年12月20日申请的第11/314,411号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/314,410号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/313,536号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/313,538号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/314,055号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/314,052号美国专利申请案相关;本申请案进一步与2005年12月20日申请的第11/314,053号美国专利申请案相关。
本申请案与以下美国申请案相关:霍尔兹曼等人2006年11月6日申请的题为“使用证书链的内容控制方法(Content Control Method Using Certificate Chains)”的第11/557,028号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用证书链的内容控制***(Content Control System Using Certificate Chains)”的第11/557,010号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用证书撤回列表的内容控制方法(Content Control Method Using Certificate Revocation Lists)”的第11/557,006号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用证书撤回列表的内容控制***(Content Control System Using Certificate Revocation Lists)”的第11/557,026号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用通用控制结构的内容控制方法(Content Control Method Using Versatile Control Structure)”的第11/557,049号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用通用控制结构的内容控制***(Content Control System Using Versatile Control Structure)”的第11/557,056号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“用于控制从存储器装置供应的信息的方法(Method for Controlling Information Supplied From Memory Device)”的第11/557,052号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“用于控制从存储器装置供应的信息的***(System for Controlling Information Supplied From Memory Device)”的第11/557,051号美国申请案、霍尔兹曼等人2006年11月6日申请的题为“使用身份对象的控制方法(Control Method Using Identity Objects)”的第11/557,041号美国申请案,以及霍尔兹曼等人2006年11月6日申请的题为“使用身份对象的控制***(Control SystemUsing Identity Objects)”的第11/557,039号美国申请案。
具体实施方式
其中可实施本发明各方面的实例存储器***由图1的方框图说明。如图1所示,存储器***10包含中央处理单元(CPU)12、缓冲器管理单元(BMU)14、主机接口模块(HIM)16和快闪接口模块(FIM)18、快闪存储器20以及***存取模块(PAM)22。存储器***10通过主机接口总线26和端口26a与主机装置24通信。可能为NAND型的快闪存储器20为主机装置24提供数据存储装置,主机装置24可以是数码相机、个人计算机、个人数字助理(PDA)、数字媒体播放器(例如,MP-3播放器)、蜂窝式电话、机顶盒或其它数字装置或器具。用于CPU 12的软件代码也可存储在快闪存储器20中。FIM 18通过快闪接口总线28和端口28a连接到快闪存储器20。HIM 16适于连接到主机装置。***存取模块22选择适当的控制器模块(例如,FIM、HIM和BMU)以用于与CPU 12通信。在一个实施例中,虚线框内的***10的所有组件可封闭在单一单元中(例如,存储器卡或棒10′中)且优选地被囊封。存储器***10可移除地连接到主机装置24,使得***10中的内容可由许多不同主机装置的每一者存取。
在下文的描述中,存储器***10也称为存储器装置10,或简单地称为存储器装置或装置。虽然本文中参考快闪存储器说明本发明,但本发明也可应用于其它类型的存储器,例如磁盘、光学CD,以及所有其它类型的可重写非易失性存储器***。
缓冲器管理单元14包含主机直接存储器存取(HDMA)32、快闪直接存储器存取(FDMA)34、仲裁器36、缓冲器随机存取存储器(BRAM)38和加密引擎40。仲裁器36是共享总线仲裁器,使得在任何时间仅一个主控装置或起始器(其可为HDMA 32、FDMA 34或CPU 12)可为处于活动状态的,且从属装置或目标为BRAM 38。仲裁器负责将适当起始器请求多路传输到BRAM 38。HDMA 32和FDMA 34负责在HIM 16、FIM18与BRAM 38或CPU随机存取存储器(CPU RAM)12a之间传送的数据。HDMA 32和FDMA 34的操作是常规的且本文中不需要详细描述。BRAM 38用于存储主机装置24与快闪存储器20之间传递的数据。HDMA 32和FDMA 34负责在HIM 16/FIM 18与BRAM38或CPU RAM 12a之间传递数据且用于指示扇区完成。
在一个实施例中,存储器***10产生用于加密和/或解密的密钥值,其中此值优选地实质上不可由例如主机装置24等外部装置存取。或者,也可在***10外部(例如由许可证服务器)产生密钥值,并将其发送到***10。不管如何产生密钥值,一旦密钥值存储在***10中,就只有经验证实体将能够存取密钥值。然而,通常逐个文件地进行加密和解密,因为主机装置以文件的形式读取数据和将数据写入到存储器***10。如同许多其它类型的存储装置那样,存储器装置10不管理文件。虽然存储器20确实存储文件分配表(FAT)(其中识别文件的逻辑地址),但FAT通常由主机装置24而不由控制器12存取和管理。因此,为了加密特定文件中的数据,控制器12必须依赖于主机装置来发送存储器20中的文件中的数据的逻辑地址,使得***10可使用仅可由***10使用的密钥值找到并加密和/或解密特定文件的数据。
为了向主机装置24和存储器***10两者提供句柄以参考相同密钥来用密码方法处理文件中的数据,主机装置提供针对由***10产生或发送到***10的密钥值的每一者的参考,其中此类参考可简单地为密钥ID。因此,主机24将由***10用密码方法处理的每一文件与密钥ID相关联,且***10将用于用密码方法处理数据的每一密钥值与由主机提供的密钥ID相关联。因此,当主机请求用密码方法处理数据时,其将把所述请求连同密钥ID连同待从存储器20获取或存储在存储器20中的数据的逻辑地址一起发送到***10。***10产生或接收密钥值并将由主机24提供的密钥ID与此值相关联,且执行密码处理。以此方式,不需要在存储器***10操作的方式方面作出变化,同时允许其使用密钥完全控制密码处理,包含对密钥值的专有存取。换句话说,一旦密钥值存储在***10中或由***10产生,***就继续允许主机24通过拥有对FAT的专有控制来管理文件,同时其维持针对对用于密码处理的密钥值的管理的专有控制。在密钥值存储在存储器***10中之后,主机装置24与对用于数据的密码处理的密钥值的管理无关。
由主机24提供的密钥ID和发送到存储器***或由存储器***产生的密钥值形成一量的两个属性,下文在实施例的一者中称为“内容加密密钥”或CEK。虽然主机24可使每一密钥ID与一个或一个以上文件相关联,但主机24也可使每一密钥ID与未经组织的数据或以任何方式组织的数据相关联,且不限于组织为完整文件的数据。
为了使用户或应用程序获得对***10中的受保护内容或区域的存取,其将需要使用向***10预先注册的凭证来验证。凭证与以此凭证准予给特定用户或应用程序的存取权相联系。在预先注册过程中,***10存储用户或应用程序的身份和凭证以及由用户或应用程序确定并通过主机24提供的与此身份和凭证相关联的存取权的记录。在预先注册已完成之后,当用户或应用程序请求将数据写入到存储器20时,其将需要通过主机装置提供其身份和凭证、用于加密数据的密钥ID,以及经加密数据将被存储到的逻辑地址。***10产生或接收密钥值并使此值与由主机装置提供的密钥ID相关联,且将针对用于加密待写入的数据的密钥值的密钥ID存储在其针对此用户或应用程序的记录或表中。其接着加密数据并将经加密数据及其产生或接收的密钥值存储在由主机指定的地址处。
当用户或应用程序请求从存储器20读取经加密数据时,其将需要提供其身份和凭证、针对先前用于加密所请求的数据的密钥的密钥ID,以及经加密数据被存储到的逻辑地址。***10将接着将由主机提供的用户或应用程序身份和凭证与存储在其记录中的用户或应用程序身份和凭证进行匹配。如果它们匹配,那么***10将接着从其存储器中获取与由用户或应用程序提供的密钥ID相关联的密钥值,使用密钥值解密存储在由主机装置指定的地址处的数据,并将经解密数据发送到用户或应用程序。
通过将验证凭证与对用于密码处理的密钥的管理分离,则有可能在不共享凭证的情况下共享存取数据的权利。因此,具有不同凭证的用户或应用程序的群组可存取用于存取相同数据的相同密钥,而此群组外的用户不具有存取权。虽然群组内的所有用户或应用程序可存取相同数据,但其可能仍具有不同权利。因此,一些用户或应用程序可能具有只读存取权,而其它用户或应用程序可能仅具有写入存取权,而另外其它用户或应用程序可能具有两者。由于***10维持用户或应用程序身份和凭证、其能够存取的密钥ID以及与密钥ID的每一者相关联的存取权的记录,所以***10有可能针对特定用户或应用程序添加或删除密钥ID并改变与此类密钥ID相关联的存取权,从一个用户或应用程序向另一用户或应用程序授权存取权,或甚至删除或添加用于用户或应用程序的记录或表,所有均如经适当验证的主机装置所控制。所存储的记录可指定需要安全通道用于存取某些密钥。可使用对称或不对称算法以及密码来完成验证。
尤其重要的是,存储器***10中的安全内容的便携性。在其中对密钥值的存取由存储器***控制的实施例中,当存储器***或并入有所述***的存储装置从一个外部***转移到另一外部***时,维持存储在其中的内容的安全性。不管密钥由存储器***产生还是源自存储器***外部,外部***均不能存取***10中的此类内容,除非其已用完全由存储器***控制的方式经验证。即使在如此经验证之后,存取也完全由存储器***控制,且外部***仅可以根据存储器***中的预设记录而控制的方式存取。如果请求不遵守此类记录,那么请求将被拒绝。
为了提供保护内容方面的较大灵活性,预想下文中称为分区的存储器的某些区域仅可由经适当验证的用户或应用程序来存取。当与基于密钥的数据加密的上述特征组合时,***10提供较大的数据保护能力。如图2所示,快闪存储器20可将其存储容量划分为若干分区:用户区域或分区和定制分区。用户区域或分区P0可由所有用户和应用程序在不验证的情况下存取。虽然存储在用户区域中的数据的所有位值可由任何应用程序或用户读取或写入(如果数据读取经加密的话),但没有解密权限的用户或应用程序将不能存取由存储在用户区域中的位值表示的信息。这(例如)由存储在用户区域P0中的文件102和104说明。同样存储在用户区域中的是未加密文件(例如,106),其可由所有应用程序和用户读取和理解。因此,象征性地,经加密的文件展示为具有与其相关联的例如用于文件102和104的锁。
虽然用户区域P0中的经加密文件无法由未经授权应用程序或用户理解,但此类应用程序或用户可能仍能够删除或破坏文件,这对于一些应用来说可能是不合需要的。出于此目的,存储器20还包含受保护定制分区,例如分区P1和P2,其不能在没有预先验证的情况下被存取。下文中阐释本申请案中的实施例中准许的验证过程。
同样如图2中所说明,多种用户或应用程序可存取存储器20中的文件。因此,用户1和2以及应用程序1-4(在装置上运行)在图2中展示。在允许这些实体存取存储器20中的受保护内容之前,其首先以下文中阐释的方式由验证过程验证。在此过程中,正请求存取的实体需要在主机侧被识别以实现基于角色的存取控制。因此,请求存取的实体首先通过供应例如“我是应用程序2,且我希望读取文件1”等信息来识别其自身。控制器12接着将身份、验证信息和请求与存储在存储器20或控制器12中的记录进行匹配。如果满足所有要求,那么接着向此实体准予存取权。如图2中所说明,允许用户1从分区P1中的文件101读取和向其进行写入,但除了用户1具有从P0中的文件106读取和向其进行写入的不受限权利外,用户1仅可读取文件102和104。另一方面,不允许用户2存取文件101和104但用户2具有对文件102的读取和写入存取权。如图2中所指示,用户1和2具有相同登录算法(AES),而应用程序1和3具有不同登录算法(例如,RSA和001001),其也不同于用户1和2的登录算法。
安全存储应用程序(SSA)是存储器***10的安全性应用,且说明本发明的一实施例,其可用于实施上文识别的特征中的许多特征。SSA可体现为软件或计算机代码,其中数据库存储在存储器20或CPU 12中的非易失性存储器(未图示)中,且被读取到RAM12a中并由CPU 12执行。下表中陈述参考SSA使用的首字母缩略词:
定义、首字母缩略词和缩写
ACR |
存取控制记录 |
AGP |
ACR群组 |
CBC |
链区块密码 |
CEK |
内容加密密钥 |
ECB |
电子密码本 |
ACAM |
ACR属性管理 |
PCR |
许可控制记录 |
SSA |
安全存储应用程序 |
实体 |
登录SSA并因此利用其功能性的具有真实和个体存在状态(主机侧)的任何事物。 |
SSA***描述
数据安全性、完整性和存取控制是SSA的主要作用。数据是原本会清楚地存储在某种大容量存储装置上的文件。SSA***位于存储***的顶部且为所存储的主机文件添加安全性层,并通过下文描述的安全性数据结构提供安全性功能。
SSA的主要任务是管理与存储器中存储(且安全)的内容相关联的不同权利。存储器应用程序需要管理多个用户和对多个所存储内容的内容权利。主机应用程序从其侧看到此类应用程序可见的驱动程序和分区,以及管理并描绘存储装置上所存储文件的位置的文件分配表(FAT)。
在此情况下,存储装置使用划分为分区的NAND快闪芯片,但也可使用其它移动存储装置且其在本发明的范围内。这些分区是连续的逻辑地址线程,其中开始和结束地址界定其边界。因此,可视需要借助软件(例如,存储在存储器20中的软件)向对隐藏分区的存取强加限制,所述软件使此类限制与此类边界内的地址相关联。SSA可通过由其管理的分区的逻辑地址边界来完全辨别分区。SSA***使用分区来物理上保护数据使其免于未经授权的主机应用程序的影响。对于主机,分区是界定在其中存储数据文件的专门空间的机制。这些分区可为公共的,其中具有对存储装置的存取权的任何人均可了解并意识到装置上分区的存在;或者分区为专用或隐藏的,其中仅选定的主机应用程序可存取并意识到其存在于存储装置中。
图3是说明存储器的分区P0、P1、P2和P3(显然,可使用少于或多于四个分区)的存储器的示意图,其中P0是可由任何实体在不验证的情况下存取的公共分区。
专用分区(例如,P1、P2或P3)隐藏对其内部的文件的存取。通过防止主机存取所述分区,快闪装置(例如,快闪卡)给予对分区内部的数据文件的保护。然而,这种保护通过向对存储在分区内的逻辑地址处的数据的存取强加限制而涵盖了驻存在隐藏分区中的所有文件。换句话说,所述限制与某一逻辑地址范围相关联。能够存取所述分区的所有用户/主机将具有对内部所有文件的不受限存取权。为了将不同文件(或文件群组)彼此隔离,SSA***使用密钥和密钥参考或密钥ID提供每文件或文件群组的另一水平的安全性和完整性。用于加密不同存储器地址处的数据的特定密钥值的密钥参考或密钥ID可类推到含有经加密数据的容器或域。出于这个原因,在图4中,密钥参考或密钥ID(例如,“密钥1”和“密钥2”)用图形展示为围绕使用与密钥ID相关联的密钥值加密的文件的区域。
参看图4,举例来说,文件A可由所有实体在不验证的情况下存取,因为其展示为未被任何密钥ID封闭。尽管公共分区中的文件B可由所有实体读取或重写,但其含有以具有ID“密钥1”的密钥加密的数据,使得文件B中所含的信息不可由实体存取,除非此实体具有对此密钥的存取权。以此方式,使用密钥值和密钥参考或密钥ID仅提供逻辑保护,这与由上文描述的分区提供的保护类型形成对比。因此,可存取分区(公共或专用)的任何主机能够读取或写入整个分区中的数据,包含经加密数据。然而,由于数据经加密,所以未经授权的用户仅可破坏它。其优选地不能在不被检测到的情况下改变数据。通过限制对加密和/或解密密钥的存取权,此特征可仅允许经授权的实体使用所述数据。文件B和C也在P0中使用具有密钥ID“密钥2”的密钥加密。
可通过使用内容加密密钥(CEK)的对称加密方法(每CEK一种方法)来提供数据机密性和完整性。在SSA实施例中,CEK中的密钥值由仅在内部使用的快闪装置(例如,快闪卡)产生或接收,并对于外界保持作为秘密。经加密或译成密码的数据也可为散列的或密码被链式分块以确保数据完整性。
并非分区中的所有数据由不同密钥加密并与不同密钥ID相关联。公共或用户文件中或操作***区域(即,FAT)中的某些逻辑地址可能不与任何密钥或密钥参考相关联,且因此可由可存取分区本身的任何实体使用。
调用创建密钥和分区以及从其中进行数据写入和读取或使用密钥的能力的实体需要通过存取控制记录(ACR)登录SSA***。SSA***中的ACR的特权称为动作。每个ACR可具有许可以执行以下三个类别的动作:创建分区和密钥/密钥ID、存取分区和密钥,以及创建/更新其它ACR。
ACR以群组来组织,称为ACR群组或AGP。一旦ACR已经成功验证,SSA***就打开一对话,通过所述对话可执行ACR的动作的任一者。ACR和AGP是用于根据策略控制对分区和密钥的存取的安全性数据结构。
用户分区
SSA***管理一个或一个以上公共分区,也称为用户分区。此分区存在于存储装置上,且是可通过存储装置的标准读取写入命令存取的分区。获得关于分区大小以及其在装置上的存在状态的信息优选地不能向主机***隐藏。
SSA***使得能够通过标准读取写入命令或SSA命令存取此分区。因此,存取分区优选地不可限于特定ACR。然而,SSA***可使主机装置能够将存取限于用户分区。可个别地启用/停用读取和写入存取。允许所有四个组合(例如,仅写入、仅读取(写入保护)、读取和写入,以及无存取)。
SSA***使ACR能够将密钥ID与用户分区内的文件相关联,并使用与此类密钥ID相关联的密钥来加密个别文件。存取用户分区内的经加密文件以及设定对分区的存取权将使用SSA命令集来完成。以上特征也适用于未组织为文件的数据。
SSA分区
这些是仅可通过SSA命令存取的隐藏(对未经授权方隐藏)分区。除了通过借助登录到ACR上建立的对话(下文描述)来存取SSA分区之外,SSA***将优选地不允许主机装置存取SSA分区。类似地,优选地,SSA将不提供关于SSA分区的存在、大小和存取许可的信息,除非此请求通过所建立的对话而到来。
对分区的存取权是从ACR许可导出的。一旦ACR登录到SSA***中,其就可与其它ACR共享分区(下文描述)。当创建分区时,主机为分区提供参考名称或ID(例如,图3和4中的P0-P3)。此参考用于对分区的进一步读取和写入命令中。
存储装置的分割
装置的所有可用存储容量优选地分配到用户分区和当前配置的SSA分区。因此,任何再分割操作可能涉及现有分区的重新配置。对装置容量(所有分区的大小之和)的净变化将为零。装置存储器空间中的分区的ID由主机***界定。
主机***可将现有分区的一者再分割为两个较小分区或将两个现有分区(其可能或可能不邻近)合并为一个。经划分或合并的分区中的数据可由主机斟酌而擦除或保持不受影响。
由于存储装置的再分割可能导致数据损失(因为其在存储装置的逻辑地址空间中被擦除或到处移动),所以SSA***管理对再分割的严格限制。仅允许驻存在根AGP(下文阐释)中的ACR发布再分割命令,且其仅可参考其所拥有的分区。由于SSA***不知道数据在分区中如何组织(FAT或其它文件***结构),所以主机的责任是在再分割装置的任何时间重建这些结构。
用户分区的再分割将改变主机OS所看到的此分区的大小和其它属性。
再分割之后,主机***的责任是确保SSA***中的任何ACR不在参考非现有分区。如果这些ACR未被适当删除或更新,那么代表这些ACR存取非现有分区的将来尝试将被***检测到并拒绝。关于删除的密钥和密钥ID予以类似注意。
密钥、密钥ID和逻辑保护
当将文件写入到某一隐藏分区时,其向一般公众隐藏。但是,一旦一实体(敌对或不敌对)获得了解和对此分区的存取权,文件就变得可用且容易看见。为了进一步保护文件,SSA可在隐藏分区中对其进行加密,其中用于存取用于对文件进行解密的密钥的凭证优选地不同于那些用于存取分区的凭证。由于文件完全由主机控制和管理的事实,所以使CEK与文件相关联成为问题。将文件链接到SSA确认的某一内容(密钥ID)将对此进行校正。因此,当SSA创建密钥时,主机使此密钥的密钥ID与使用由SSA创建的密钥加密的数据相关联。如果所述密钥连同密钥ID一起被发送到SSA,那么所述密钥和密钥ID可容易地彼此相关联。
密钥值和密钥ID提供逻辑安全性。与给定密钥ID相关联的所有数据(不管其位置如何)用内容加密密钥(CEK)中的相同密钥值译成密码,所述CEK的参考名称或密钥ID在由主机应用程序创建时唯一地提供。如果一实体获得对隐藏分区的存取权(通过经由ACR验证)并希望读取或写入此分区内的经加密文件,那么其需要能够存取与所述文件相关联的密钥ID。当准予对针对此密钥ID的密钥的存取时,SSA将密钥值加载于与此密钥ID相关联的CEK中,并在将数据发送到主机之前对数据进行解密,或在将数据写入到快闪存储器20之前对数据进行加密。在一个实施例中,SSA***随机创建与密钥ID相关联的CEK中的密钥值一次,并由SSA***维持所述密钥值。SSA***外部没有任一方了解或能够存取CEK中的此密钥值。外界仅提供并使用参考或密钥ID,而不是CEK中的密钥值。密钥值完全由SSA管理且优选地仅可由SSA存取。或者,可将密钥提供给SSA***。
SSA***使用以下密码模式中的任一者(用户定义)来保护与密钥ID相关联的数据(所使用的实际密码算法以及CEK中的密钥值由***控制且不揭示给外界):
区块模式-数据划分为区块,每一区块经个别加密。此模式通常视为不太安全且容易受字典攻击。然而,其将允许用户随机存取数据区块中的任一者。
链接模式-数据划分为区块,所述区块在加密过程期间链接。每个区块被用作对下一区块的加密过程的输入中的一个输入。在此模式中(尽管视为较安全的),从开始到结束循序写入和读取数据,从而创建可能不可被用户接受的额外开销。
散列的-额外创建了可用于证实数据完整性的数据摘要的链模式。
ACR和存取控制
SSA经设计以处置多个应用程序,其中所述应用程序的每一者在***数据库中表示为节点树。通过确保树分支之间无串扰来实现应用程序之间的相互排斥。
为了获得对SSA***的存取权,实体需要经由***的ACR的一者建立连接。SSA***根据用户选择与其连接的ACR中内嵌的定义来管理登录程序。
ACR是到达SSA***的个别登录点。ACR保持登录凭证和验证方法。同样驻存在记录中的是SSA***内的登录许可,其中是读取和写入特权。这在图5中说明,图5说明同一AGP中的n个ACR。这意味着n个ACR中的至少一些可共享对同一密钥的存取权。因此,ACR#1和ACR#n共享对具有密钥ID“密钥3”的密钥的存取权,其中ACR#1和ACR#n是ACR ID,且“密钥3”是用于加密与“密钥3”相关联的数据的密钥的密钥ID。同一密钥还可用于加密和/或解密多个文件,或多个数据集。
SSA***支持到***上的若干类型的登录,其中验证算法和用户凭证可变化,如一旦用户成功登录则用户在***中的特权可变化那样。图5再次说明不同的登录算法和凭证。ACR#1指定密码登录算法且密码作为凭证,而ACR#2指定PKI(公共密钥基础结构)登录算法且公共密钥作为凭证。因此,为了登录,实体将需要提供有效的ACR ID,以及正确的登录算法和凭证。
一旦实体已登录到SSA***的ACR中,就在与ACR相关联的许可控制记录(PCR)中界定其许可(其使用SSA命令的权利)。在图5中,根据所展示的PCR,ACR#1准予对与“密钥3”相关联的数据的仅读取许可,且ACR#2准予读取和写入与“密钥5”相关联的数据的许可。
不同的ACR可在***中共享共同兴趣和特权,例如用以读取和写入的密钥方面的共同兴趣和特权。为了实现这一目的,具有共同之处的ACR分组为AGP-ACR群组。因此,ACR#1和ACR#n共享对具有密钥ID“密钥3”的密钥的存取权。
AGP和其内部的ACR以层级树组织,且因此除了创建保持敏感数据安全的安全密钥以外,ACR可优选地还创建对应于其密钥ID/分区的其它ACR实体。这些ACR子代将具有与其父代(创建者)相同或少于其父代的许可,且可被给予针对父代ACR自身创建的密钥的许可。不言而喻,子代ACR获得对其所创建的任何密钥的存取许可。这在图6中说明。因此,AGP 120中的所有ACR均由ACR 122创建,且此类ACR中的两个从ACR 122继承对存取与“密钥3”相关联的数据的许可。
AGP
通过指定AGP和AGP内的ACR来完成到SSA***上的登录。
每个AGP具有唯一ID(参考名称),其用作针对其在SSA数据库中的条目的索引。当创建AGP时,AGP名称提供到SSA***。如果所提供的AGP名称已存在于***中,那么SSA将拒绝创建操作。
AGP用于管理对如以下段落中将描述的存取和管理许可的授权的限制。图6中的两个树所提供的功能之一是管理完全分离实体(例如,两个不同应用程序,或两个不同计算机用户)的存取。出于此类目的,可能重要的是,两个存取过程大体彼此独立(即,实质上无串扰),即使两者同时发生。这意味着每一树中的验证、许可以及额外ACR和AGP的创建不连接到且不依赖于另一树的验证、许可以及额外ACR和AGP的创建。因此,当SSA***用于存储器10中时,这允许存储器***10同时服务于多个应用程序。其还允许两个应用程序彼此独立地存取两个单独数据集(例如,照片集和歌曲集)。这在图6中说明。因此,与针对经由图6的顶部部分中的树中的节点(ACR)的应用程序或用户存取的“密钥3”、“密钥X”和“密钥Z”相关联的数据可包括照片。与针对经由图6的底部部分中的树的节点(ACR)的应用程序或用户存取的“密钥5”和“密钥Y”相关联的数据可包括歌曲。创建AGP的ACR具有仅当AGP没有ACR条目时删除所述AGP的许可。
实体的SSA入口点:存取控制记录(ACR)
SSA***中的ACR描述准许实体登录到***中的方式。当实体登录到SSA***中时,其需要指定对应于其即将执行的验证过程的ACR。ACR包含许可控制记录(PCR),其说明一旦如图5中说明的ACR中所定义而经验证用户就可执行的所准予的动作。主机侧实体提供所有ACR数据字段。
当实体已成功登录到ACR上时,实体将能够查询所有ACR的分区以及密钥存取许可和ACAM许可(下文阐释)。
ACR ID
当SSA***实体启始登录过程时,其需要指定对应于登录方法的ACR ID(由主机当创建ACR时提供),使得当已满足所有登录要求时SSA将设置正确算法并选择正确PCR。当创建ACR时,将ACR ID提供到SSA***。
登录/验证算法
验证算法指定什么种类的登录程序将被实体使用,以及需要什么种类的凭证来提供用户身份的证明。SSA***支持若干标准登录算法,在从无程序(以及无凭证)和基于密码的程序到基于对称或不对称密码术的双向验证协议的范围内变化。
凭证
实体的凭证对应于登录算法,且由SSA使用以检验并验证用户。凭证的实例可以是用于密码验证的密码/PIN数字、用于AES验证的AES密钥等。凭证的类型/格式(即,PIN、对称密钥等)经预先定义并从验证模式导出;当创建ACR时,将其提供到SSA***。SSA***与定义、分配和管理这些凭证无关,基于PKI的验证除外,其中装置(例如,快闪卡)可用于产生RSA或其它类型的密钥对,且公共密钥可被导出以用于证书产生。
许可控制记录(PCR)
PCR展示在登录到SSA***中并成功通过ACR的验证过程之后准予实体的内容。存在三种类型的许可类别:用于分区和密钥的创建许可、针对分区和密钥的存取许可,以及用于实体-ACR属性的管理许可。
存取分区
PCR的此段落含有实体在成功完成ACR阶段后可存取的分区的列表(使用如提供到SSA***的其ID)。对于每一分区,存取类型可限于仅写入或仅读取,或可指定完全写入/读取存取权。因此,图5中的ACR#1能够存取分区#2而不是分区#1。PCR中指定的限制适用于SSA分区和公共分区。
可通过到达代管SSA***的装置(例如,快闪卡)的规则读取和写入命令或通过SSA命令来存取公共分区。当以限制公共分区的许可创建根ACR(下文阐释)时,其可将所述许可传递到其子代。ACR可优选地仅限制规则读取和写入命令存取公共分区。SSA***中的ACR可优选地仅在其创建后被限制。一旦ACR具有从公共分区读取/向公共分区写入的许可时,优选地其不能被取走。
存取密钥ID
PCR的此段落含有与当实体的登录过程已满足ACR策略时实体可存取的密钥ID(如由主机提供到SSA***)的列表相关联的数据。所指定的密钥ID与驻存在PCR中出现的分区中的文件相关联。由于密钥ID不与装置(例如,快闪卡)中的逻辑地址相关联,所以当一个以上分区与特定ACR相关联时,文件可为分区中的任一者。PCR中指定的密钥ID每一者可具有不同的存取权集。存取由密钥ID指向的数据可限于仅写入或仅读取,或可指定完全写入/读取存取权。
ACR属性管理(ACAM)
此段落描述在某些情况下可如何改变ACR的***属性。
SSA***中可准许的ACAM动作是:
1.创建/删除/更新AGP和ACR。
2.创建/删除分区和密钥。
3.授权对密钥和分区的存取权。
父代ACR优选地不能编辑ACAM许可。这将优选地需要删除和重新创建ACR。并且,对由ACR创建的密钥ID的存取许可优选地不能被取走。
ACR可具有创建其它ACR和AGP的能力。创建ACR也可意味着向其授权由其创建者拥有的一些或所有ACAM许可。具有创建ACR的许可意味着具有对于以下动作的许可:
1.定义和编辑子代的凭证-验证方法优选地一旦通过创建ACR设定就不能被编辑。可在已针对子代定义的验证算法的边界内改变凭证。
2.删除ACR。
3.授权对子代ACR的创建许可(因此具有孙代)。
具有创建其它ACR的许可的ACR具有向其所创建的ACR授权解除封锁许可的许可(尽管其可能不具有对ACR进行解除封锁的许可)。父代ACR将把对其解除封锁者的参考放置在子代ACR中。
父代ACR是具有删除其子代ACR的许可的唯一ACR。当ACR删除其创建的较低层的ACR时,接着由此较低层ACR产生的所有ACR也自动删除。当删除ACR时,接着删除其创建的所有密钥ID和分区。
存在ACR可更新其自身的记录的两个例外情况:
1.密码/PIN(尽管由创建者ACR设定)仅可由包含其的ACR更新。
2.根ACR可删除其本身和其所驻存在的AGP。
授权对密钥和分区的存取权
ACR及其AGP组合在层级树中,其中根AGP和其内部的ACR处于树的顶部(例如,图6中的根AGP 130和132)。SSA***中可存在若干AGP树,但其完全彼此分离。AGP内的ACR可向其所处的同一AGP内的所有ACR以及向由其创建的所有ACR授权对其密钥的存取许可。创建密钥的许可优选地包含授权使用密钥的存取许可的许可。
对密钥的许可划分为三个类别:
1.存取-这定义对于密钥的存取许可,即读取、写入。
2.所有权-依据定义,创建密钥的ACR是其所有者。此所有权可从一个ACR授权给另一ACR(倘若其处于同一AGP中或子代AGP中)。密钥的所有权提供删除密钥以及授权对于所述密钥的许可的许可。
3.存取权授权-此许可使ACR能够授权其所持有的权利。
ACR可授权对其所创建的分区以及其具有存取许可的其它分区的存取许可。
通过将分区的名称和密钥ID添加到所指定的ACR的PCR来完成许可授权。授权密钥存取许可可通过密钥ID或通过陈述存取许可是针对授权ACR的所有所创建密钥来进行。
ACR的封锁和解除封锁
ACR可具有封锁计数器,其当实体向***进行的ACR验证过程不成功时递增。当达到不成功验证的某一最大数目(MAX)时,SSA***将封锁ACR。
被封锁ACR可由被封锁ACR所参考的另一ACR解除封锁。对解除封锁ACR的参考由其创建者设定。解除封锁ACR优选地处于与被封锁ACR的创建者相同的AGP中,且具有“解除封锁”许可。
***中没有其它ACR可对被封锁ACR解除封锁。ACR可能配置有封锁计数器但没有解除封锁者ACR。在此情况下,如果此ACR被封锁,那么其无法被解除封锁。
根AGP-创建应用程序数据库
SSA***经设计以处置多个应用程序并使其每一者的数据隔离。AGP***的树结构是用于识别并隔离应用程序特定数据的主要工具。根AGP处于应用程序SSA数据库树的尖端处并遵守稍许不同的行为规则。若干根AGP可配置于SSA***中。两个根AGP 130和132展示于图6中。显然,可使用更少或更多AGP,且其在本发明的范围内。
通过将新AGP/ACR树添加到装置的过程,针对新应用程序和/或装置的新应用程序的发布凭证来注册装置(例如,快闪卡)。
SSA***支持根AGP创建(以及根AGP的所有ACR及其许可)的三种不同模式:
1.开放:不要求任何种类的验证的任何用户或实体或通过***ACR(下文阐释)验证的用户/实体可创建新的根AGP。开放模式使得能够在当所有数据传递在开放通道上完成(即,在发布代理的安全环境中)时没有任何安全性措施的情况下,或通过经由***ACR验证建立的安全通道(即,在空中(OTA))和发布后程序)创建根AGP。
如果***ACR未经配置(这是可选特征)且根AGP创建模式设定为开放,那么仅开放通道选项可用。
2.受控:只有通过***ACR验证的实体可创建新的根AGP。如果***ACR未经配置,那么不可将SSA***设定到此模式。
3.锁定:停用根AGP的创建,且不可将额外根AGP添加到***。
两个SSA命令控制此特征(这些命令可由任何用户/实体在不验证的情况下使用):
1.方法配置命令-用于配置SSA***使用三种根AGP创建模式中的任一者。仅允许以下模式变化:开放->受控、受控->锁定(即,如果SSA***当前配置为受控,那么其仅可改变为锁定)。
2.方法配置锁定命令-用于停用方法配置命令,并永久锁定当前选择的方法。
当创建根AGP时,其处于使得能够创建和配置其ACR(使用施加到根AGP的创建的相同存取限制)的特殊初始化模式中。在根AGP配置过程结束时,当实体明确地将其切换到操作模式时,现有ACR不再可被更新且不再可创建额外ACR。
一旦根AGP被置于标准模式中,其仅可通过经由其ACR中被指派有删除根AGP的许可的一个ACR登录到***中而被删除。除了特殊初始化模式外,这是根AGP的另一例外情况;其优选地是可含有具有删除其自身的AGP的许可的ACR的唯一AGP,与下一树层中的AGP形成对比。
根ACR与标准ACR之间的第三且最终差异是,其是***中可具有创建和删除分区的许可的唯一ACR。
SSA***ACR
***ACR可用于以下两种SSA操作:
1.在敌对环境内的安全通道的保护下创建ACR/AGP树。
2.识别并验证代管SSA***的装置。
优选地,SSA中仅可存在一个***ACR,且一旦经界定,其就优选地不能改变。当创建***ACR时不需要***验证;仅需要SSA命令。可停用创建***ACR特征(类似于创建根AGP特征)。创建***ACR之后,创建***ACR命令没有效果,因为优选地仅允许一个***ACR。
当处于创建过程中时,***ACR不操作。完成后,需要发布特殊命令,其指示***ACR已创建且准备执行。在此点之后,***ACR优选地不能被更新或替代。
***ACR在SSA中创建根ACR/AGP。其具有添加/改变根层的许可,直到主机对其满意并将其封锁时为止。封锁根AGP本质上切断其到***ACR的连接且致使其防窜改。此时,没有一方可改变/编辑根AGP和内部的ACR。这通过SSA命令来完成。停用根AGP的创建具有永久影响且不能颠倒。以上涉及***ACR的特征在图7中说明。***ACR用于创建三个不同的根AGP。在创建这些根AGP之后的某一时间,从主机发送SSA命令以封锁来自***ACR的根AGP,藉此停用创建根AGP特征,如图7中将***ACR连接到根AGP的虚线所指示。这致使三个根AGP防窜改。在根AGP被封锁之前或之后,三个根AGP可用于创建子代AGP以形成三个单独树。
上述特征为内容所有者在配置具有内容的安全产品方面提供较大灵活性。需要“发布”安全产品。发布是提出识别密钥的过程,装置可借助识别密钥来识别主机,且反之亦然。识别装置(例如,快闪卡)使主机能够决定其是否可信任其与装置的秘密。另一方面,识别主机使装置能够只有当主机被允许时才实行安全性策略(准予和执行特定主机命令)。
经设计以服务于多个应用程序的产品将具有若干识别密钥。产品可“预先发布”-在装运之前在制造期间存储密钥,或“之后发布”-在装运之后添加新密钥。对于之后发布,存储器装置(例如,存储器卡)需要含有某种主控装置或装置层密钥,其可用于识别经允许以将应用程序添加到装置的实体。
上述特征使得产品能够经配置以启用/停用之后发布。另外,之后发布配置可在装运之后安全地完成。装置可被作为零售产品购买,其上除了上述主控装置或装置层密钥外没有其它密钥,且接着所述装置由新的所有者配置以启用进一步的之后发布应用程序或将其停用。
因此,***ACR特征提供实现以上目的的能力:
-不具有***ACR的存储器装置将允许应用程序的无限制和不受控添加。
-不具有***ACR的存储器装置可经配置以停用***ACR创建,这意味着没有办法控制新应用程序的添加(除非创建新的根AGP的特征也被停用)。
-具有***ACR的存储器装置将仅允许经由使用***ACR凭证通过验证程序建立的安全通道受控地添加应用程序。
-具有***ACR的存储器装置可经配置以在已添加应用程序之前或之后停用应用程序添加特征。
密钥ID列表
根据特定ACR请求创建密钥ID;然而,在存储器***10中,其仅由SSA***使用。当创建密钥ID时,创建ACR提供以下数据或将以下数据提供到创建ACR:
1.密钥ID。所述ID由实体通过主机提供,且用于在所有进一步读取或写入存取中参考密钥和使用密钥加密或解密的数据。
2.密钥密码和数据完整性模式(上文中以及如下文所阐释的分块、链接和散列模式)。
除了主机提供的属性外,以下数据由SSA***维持:
1.密钥ID所有者。作为所有者的ACR的ID。当创建密钥ID时,创建者ACR是其所有者。然而,密钥ID所有权可转移到另一ACR。优选地,仅允许密钥ID所有者转移密钥ID的所有权以及授权密钥ID。授权对相关联密钥的存取许可以及撤回这些权利可由密钥ID所有者或被指派有授权许可的任何其它ACR来管理。每当试图实行这些操作中的任一者时,SSA***将仅当请求ACR经授权时才准予所述操作。
2.CEK。这是密钥值被用于将与密钥ID相关联的或由密钥ID指向的内容译成密码的CEK。密钥值可以是由SSA***产生的128位AES随机密钥。
3.MAC和IV值。链接区块密码(CBC)加密算法中使用的动态信息(消息验证代码和启始向量)。
还参看图8A-16的流程图说明SSA的各种特征,其中步骤左侧的“H”意味着操作由主机执行,且“C”意味着操作由卡执行。虽然参考存储器卡说明这些SSA特征,但将了解,这些特征也适用于其它物理形式的存储器装置。为了创建***ACR,主机向存储器装置10中的SSA发布创建***ACR的命令(方框202)。装置10通过检查***ACR是否已存在来作出响应(方框204,菱形206)。如果其已存在,那么装置10传回失败并停止(椭圆形208)。如果其不存在,那么存储器10检查是否允许***ACR创建(菱形210),且在不允许的情况下传回失败状态(方框212)。因此,可存在装置发布者不允许创建***ACR的实例,例如在所需的安全性特征已经预定使得不需要任何***ACR的情况下。如果允许***ACR创建,那么装置10传回OK状态并等待来自主机的***ACR凭证(方框214)。主机检查SSA状态以及装置10是否已指示允许创建***ACR(方框216和菱形218)。如果不允许创建或如果***ACR已存在,那么主机停止(椭圆形220)。如果装置10已指示允许创建***ACR,那么主机发布SSA命令以界定其登录凭证并将其发送到装置10(方框222)。装置10用所接收的凭证更新***ACR记录并传回OK状态(方框224)。响应于此状态信号,主机发布指示***ACR准备就绪的SSA命令(方框226)。装置10通过锁定***ACR使得其不能被更新或替代来作出响应(方框228)。这锁住***ACR的特征及其用于向主机识别装置10的身份。
用于创建新树(新的根AGP和ACR)的程序通过这些功能在装置中配置的方式而确定。图9阐释所述程序。主机24和存储器***10两者均遵循此程序。如果完全停用添加新的根AGP,那么不能添加新的根AGP(菱形246)。如果其被启用但需要***ACR,那么主机在发布创建根_AGP命令(方框254)之前通过***ACR验证并建立安全通道(菱形250,方框252)。如果不需要***ACR(菱形248),那么主机24可在不验证的情况下发布创建根AGP命令并行进到方框254。如果***ACR确实存在,那么即使不需要***ACR主机也可使用所述***ACR(流程图中未展示)。装置(例如,快闪卡)将拒绝任何创建新的根AGP的尝试(如果所述功能被停用),且其将拒绝在不验证的情况下创建新的根AGP的尝试(如果需要***ACR)(菱形246和250)。方框254中新创建的AGP和ACR现切换到操作模式,使得此类AGP中的ACR不能被更新或以另外的方式改变,且不可将任何ACR添加到所述ACR(方框256)。***接着被任选地锁定,使得不能创建额外的根AGP(方框258)。虚线框258是指示此步骤为任选步骤的惯例。本说明书的图式的流程图中的所有虚线框均是任选步骤。这允许内容所有者封锁出于可能模仿具有合法内容的真实存储器装置的其它非法目的而对装置10的使用。
为了创建ACR(不同于上述根AGP中的ACR),可以具有创建ACR的权利的任何ACR开始(方框270),如图10所示。实体可试图通过提供入口点ACR身份和具有其希望创建的所有必要属性的ACR来通过主机24输入(方框272)。SSA检查与ACR身份的匹配以及具有此身份的ACR是否具有创建ACR的许可(菱形274)。如果请求被检验为经授权,那么装置10中的SSA创建ACR(方框276)。
图11展示说明在使用图10的方法的安全性应用中有用的树的两个AGP。因此,营销AGP中具有身份m1的ACR具有创建ACR的许可。ACR m1还具有使用密钥的许可,所述密钥用于读取和写入与密钥ID“营销信息”相关联的数据以及与密钥ID“价格列表”相关联的数据。使用图10的方法,其创建具有两个ACR s1和s2的销售AGP,其仅具有对用于存取与密钥ID“价格列表”相关联的定价数据的密钥的读取许可,而不具有对存取与密钥ID“营销信息”相关联的数据所必需的密钥的读取许可。以此方式,具有ACR s1和s2的实体仅可读取而不能改变定价数据,且将不具有对营销数据的存取权。另一方面,ACR m2不具有创建ACR的许可,且仅具有对用于存取与密钥ID“价格列表”相关联以及与密钥ID“营销信息”相关联的数据的密钥的读取许可。
因此,可以上文阐释的方式授权存取权,其中m1向s1和s2授权读取定价数据的权利。这在涉及较大营销和销售群组的情况下尤其有用。在仅存在一个或几个销售人员的情况下,可能不需要使用图10的方法。事实上,可由ACR向同一AGP内的较低或相同层处的ACR授权存取权,如图12中所说明。首先,实体通过以上文描述的方式经由主机指定树中的ACR而进入此类AGP的树(方框280)。接下来,主机将指定要授权到的ACR和权利。SSA检查树以查看此类ACR以及所述ACR是否具有将权利授权给指定的另一ACR的许可(菱形282)。如果是,那么授权所述权利(方框284);如果不是,那么其停止。结果在图13中说明。此情况下的ACR m1具有将读取许可授权给ACR s1的许可,使得在授权之后s1将能够使用密钥来存取定价数据。这可在m1具有相同或更大权利存取定价数据和如此授权的许可的情况下执行。在一个实施例中,在授权之后m1保留其存取权。优选地,可在例如持续有限的时间、有限的存取次数等受限条件(而不是永久地)下授权存取权。
用于创建密钥和密钥ID的过程在图14中说明。实体通过ACR验证(方框302)。所述实体请求创建具有由主机指定的ID的密钥(方框304)。SSA检查所指定的ACR是否具有如此做的许可(菱形306)。举例来说,如果密钥将用于存取特定分区中的数据,那么SSA将检查ACR是否可存取此分区。如果ACR经授权,那么存储器装置10创建与由主机提供的密钥ID相关联的密钥值(方框308),并将密钥ID存储在ACR中且将密钥值存储在其存储器中(控制器相关联存储器或存储器20中),并根据实体供应的信息指派权利和许可(方框310),且以此类指派的权利和许可修改此类ACR的PCR(方框312)。因此,密钥的创建者具有所有可用权利,例如读取和写入许可、授权和与同一AGP中的其它ACR或处于较低层的ACR共享的权利,以及转移密钥的所有权的权利。
ACR可改变SSA***中的另一ACR的许可(或完全改变其存在),如图15中所说明。实体可如之前一样通过ACR进入树;在一种情况下,实体经验证且接着其指定ACR(方框330、332)。其请求删除目标ACR或目标ACR中的许可(方框334)。如果所指定的ACR或此时处于活动状态的ACR具有如此做的权利(菱形336),那么删除目标ACR,或改变目标ACR的PCR以删除此类许可(方框338)。如果这未经授权,那么***停止。
在上述过程之后,目标将不再能够存取其在过程之前能够存取的数据。如图16所示,实体可试图在目标ACR处进入(方框350)并发现验证过程失败,因为先前现有的ACRID不再存在于SSA中,使得存取权被拒绝(菱形352)。假定ACR ID尚未被删除,实体指定ACR(方框354)以及特定分区中的密钥ID和/或数据(方框356),且SSA接着检查密钥ID或根据此类ACR的PCR准许分区存取请求(菱形358)。如果许可已被删除或已期满,那么再次拒绝请求。否则,准予所述请求(方框360)。
上述过程描述装置(例如,快闪卡)如何管理对受保护数据的存取,而不管ACR及其PCR是否刚刚由另一ACR改变或如此经配置以作为开始。
对话
SSA***经设计以处置同时登录的多个用户。当使用此特征时,SSA接收的每个命令与特定实体相关联,且只有当用于验证此实体的ACR具有对所请求动作的许可时才被执行。
通过对话概念来支持多个实体。对话在验证过程期间建立且由SSA***指派得到对话id。对话id在内部与用于登录到***中的ACR相关联,且经导出到实体以用于所有进一步SSA命令中。
SSA***支持两种类型的对话:开放式对话和安全对话。在ACR中界定与特定验证过程相关联的对话类型。SSA***将以类似于其本身实行验证的方式实行对话建立。由于ACR界定实体许可,所以此机制使***设计者能够将安全穿隧与存取特定密钥ID或调用特定ACR管理操作(即,创建新的ACR和设定凭证)相关联。
开放式对话
开放式对话是以对话id但没有总线加密来识别的对话,所有命令和数据不受阻碍地通过。此操作模式优选地用于多用户或多实体环境中,其中实体不是威胁模型的一部分,也不在总线上窃听。
尽管不保护数据的传输也不启用主机侧上的应用程序之间的有效防火墙,但开放式对话模式使SSA***能够允许仅存取允许用于当前经验证ACR的信息。
开放式对话还可用于分区或密钥需要受保护的情况。然而,在有效验证过程之后,向主机上的所有实体准予存取权。为了获得经验证ACR的许可,各种主机应用程序唯一需要共享的是对话id。这在图17A中说明。线400上方的步骤是由主机24采取的步骤。在实体针对ACR1经验证(方框402)之后,其请求对与存储器装置10中的密钥ID X相关联的文件的存取(方框404、406和408)。如果ACR1的PCR允许此存取,那么装置10准予所述请求(菱形410)。如果不,那么***返回到方框402。在验证完成之后,存储器***10仅通过所指派的对话id(而不是ACR凭证)来识别发布命令的实体。在开放式对话中,一旦ACR1获得对与其PCR中的密钥ID相关联的数据的存取权,任何其它应用程序或用户就可通过指定在主机24上的不同应用程序之间共享的正确对话ID来存取相同数据。此特征在以下应用中较有利:用户仅能够登录一次并能够存取与针对不同应用程序执行登录所通过的账户联系的所有数据是较为便利的。因此,蜂窝式电话用户可能能够存取所存储的电子邮件,并收听存储器20中存储的音乐,而不必登录多次。另一方面,未被ACR1包含的数据将不可存取。因此,相同蜂窝式电话用户可具有可通过单独账户ACR2存取的有价值的内容,例如游戏和照片。这是其不希望借走其电话的其他人存取的数据,尽管其可能不介意其他人通过其第一账户ACR1存取可用的数据。将对数据的存取分为两个单独账户同时允许在开放式对话中存取ACR1提供了使用的方便性以及提供对有价值数据的保护。
为了更进一步使在主机应用程序之间共享对话id的过程方便,当ACR请求开放式对话时,其可明确地请求对话将被指派得到“0(零)”id。以此方式,应用程序可经设计以使用预先定义的对话id。由于明显的原因,唯一的限制是仅一个请求对话0的ACR可在特定时间被验证。验证另一请求对话0的ACR的尝试将被拒绝。
安全对话
为了添加安全性层,可如图17B所示而使用对话id。存储器10接着还存储处于活动状态的对话的对话id。举例来说,在图17B中,为了能够存取与密钥ID X相关联的文件,实体在被允许存取文件之前将还需要提供对话id(例如,对话id“A”)(方框404、406、412和414)。以此方式,除非请求实体知道正确的对话id,否则其不能存取存储器10。由于在对话结束之后删除对话id且对话id对于每一对话将不同,所以实体仅在其已能够提供对话号时才可获得存取权。
SSA***通过使用对话号跟踪命令是否真的来自正确的经验证实体。对于存在攻击者将试图使用开放式通道来发送恶意命令的威胁的应用和使用情况,主机应用程序使用安全对话(安全通道)。
当使用安全通道时,用安全通道加密(对话)密钥对对话id以及整个命令加密,且安全性等级与主机侧实施方案一样高。
终止对话
在以下情形的任一者中,终止对话,且注销ACR:
1.实体发布明确的结束对话命令。
2.通信超时。特定实体在界定为ACR参数的一者的时间周期内未发布命令。
3.所有开放式对话在装置(例如,快闪卡)重设和/或功率循环之后终止。
数据完整***
SSA***检验SSA数据库(其含有所有ACR、PCR等)的完整性。另外,通过密钥ID机制为实体数据提供数据完整***。
如果密钥ID配置为将散列作为其加密算法,那么散列值与CEK和IV一起存储在CEK记录中。在写入操作期间计算和存储散列值。在读取操作期间再次计算散列值,并将其与先前写入操作期间存储的值进行比较。每次实体正存取密钥ID时,将额外数据连接(以密码方式)到旧数据且更新适当的散列值(针对读取或针对写入)。
由于只有主机知道与密钥ID相关联或由密钥ID指向的数据文件,所以主机以以下方式明确地管理数据完整性功能的若干方面:
1.从开始到结尾写入或读取与密钥ID相关联或由密钥ID指向的数据文件。任何存取文件的部分的尝试将使文件混乱,因为SSA***正使用CBC加密方法并产生整个数据的散列消息摘要。
2.不需要以邻接流处理数据(所述数据流可与其它密钥Id的数据流交错且可分割在多个对话上),因为中间散列值由SSA***维持。然而,如果数据流重新开始,那么实体将需要明确地指示SSA***重设散列值。
3.当读取操作完成时,主机明确地请求SSA***通过将所读取的散列与写入操作期间计算的散列值进行比较来验证所述读取的散列。
4.SSA***还提供“虚设读取”操作。此特征将使数据串流通过加密引擎但将不会将其发出到主机。此特征可用于在实际上从装置(例如,快闪卡)读出数据之前检验数据完整性。
随机数产生
SSA***将使外部实体能够利用内部随机数产生器并请求在SSA***外部使用随机数。此服务可由任何主机使用且不需要验证。
RSA密钥对产生
SSA***将使外部用户能够利用内部RSA密钥对产生特征并请求在SSA***外部使用密钥对。此服务可由任何主机使用且不需要验证。
替代实施例
替代于使用层级方法,可使用数据库方法来实现类似结果,如图18中所说明。
如图18所示,可将实体的凭证列表、验证方法、失败尝试的最大数目和解除封锁所需的凭证的最小数目输入到存储在控制器12或存储器20中的数据库中,所述数据库将此类凭证要求与由存储器10的控制器12实行的数据库中的策略(对密钥和分区的读取、写入存取、安全通道要求)相关。还存储在数据库中的是对密钥和分区的存取的约束和限制。因此,一些实体(例如,***管理员)可能在白列表上,这意味着这些实体可存取所有密钥和分区。其它实体可能在黑列表上,且其存取任何信息的尝试将被封锁。限制可为全局的或密钥和/或分区特定的。这意味着仅某些实体可存取某些特定密钥和分区,且某些实体不能这样做。还可对内容本身施加约束,不管其所处的分区或用于对其进行加密或解密的密钥如何。因此,某些数据(例如,歌曲)可能具有仅可被存取其的前五个主机装置存取的属性,或其它数据(例如,电影)仅可被读取有限次数,而不管哪些实体具有存取权。
验证
密码保护
密码保护意味着需要提供密码来存取受保护区域。除非其不能为一个以上密码,否则密码可与不同权利(例如,读取存取权或读取/写入存取权)相关联。
密码保护意味着装置(例如,快闪卡)能够检验由主机提供的密码,即装置还具有存储在装置管理的安全存储器区域中的密码。
发布和限制
密码经受重放攻击。因为密码在每次提供之后不变,所以其可相同地再发送。这意味着如果待保护的数据有价值且通信总线容易存取,那么不应按现状使用密码。
密码可保护对所存储数据的存取但不应用于保护数据(不是密钥)。
为了增加与密码相关联的安全性等级,可使用主密钥使其多样化,结果是窃取一个密码不会使整个***崩溃。基于对话密钥的安全通信通道可用于发送密码。
图19是说明使用密码进行验证的流程图。实体将账户id和密码呈递给***10(例如,快闪存储器卡)。***检查所述密码是否与其存储器中的密码匹配。如果其匹配,那么传回经验证状态。否则,错误计数器针对所述账户递增,且要求实体重新输入账户id和密码。如果计数器溢出,那么***传回存取被拒绝的状态。
对称密钥
对称密钥算法意味着相同密钥用于两侧以进行加密和解密。这意味着在通信之前已预先同意密钥。并且,每一侧应实施彼此的反向算法,即一侧上为加密算法且另一侧上为解密算法。两侧不需要实施两种算法来进行通信。
验证
对称密钥验证意味着装置(例如,快闪卡)和主机共享相同密钥且具有相同密码算法(直接和反向,例如DES和DES-1)。
对称密钥验证意味着询问-响应(防护重放攻击)。受保护装置针对其它装置产生询问且两者均计算响应。验证装置发送回响应,且受保护装置检查响应并相应地确认验证。接着可准予与验证相关联的权利。
验证可为:
外部的:装置(例如,快闪卡)验证外界,即装置确认给定主机或应用程序的凭证。
相互的:在两侧均产生询问。
内部的:主机应用程序验证装置(例如,快闪卡),即主机检查装置对于其应用程序是否为真的。
为了增加整个***的安全性等级(即,破坏一部分不会破坏全部)
通常将对称密钥与使用主密钥的多样化进行组合。
相互验证使用来自两侧的询问以确保询问为真实询问。
加密
对称密钥密码术还用于加密,因为其是非常有效的算法,即其不需要强大的CPU来处置密码术。
当用于保护通信通道时:
两个装置均必须知道用于保护通道的对话密钥(即,加密所有传出数据并解密所有传入数据)。此对话密钥通常是使用预先共享的秘密对称密钥或使用PKI来建立。
两个装置均必须知道并实施相同密码算法。
签名
对称密钥还可用于签署数据。在所述情况下,签名是加密的部分结果。保持结果为部分的允许在不暴露密钥值的情况下签署与所需一样多的次数。
发布和限制
对称算法非常有效且安全,但其基于预先共享的秘密。发布以动态方式安全地共享此秘密且可能使其为随机的(如同对话密钥)。观点是共享的秘密难以长期保持安全且几乎不可能与多个人共享。
为了促进此操作,已发明公共密钥算法,其允许在不共享秘密的情况下交换秘密。
不对称验证程序
基于不对称密钥的验证使用最终构成用于安全通道通信的对话密钥的一系列数据传递命令。基本协议向SSA***验证用户。协议变化允许相互验证(其中用户检验其希望使用的ACR)和双因数验证。
SSA的不对称验证协议优选地使用公共密钥基础结构(PKI)和RSA算法。如这些算法所定义,允许验证过程中的每一方创建其自身的RSA密钥对。每对由公共和专用密钥组成。由于密钥是匿名的,所以其不能提供身份的证明。PKI层调用第三置信方,其签署公共密钥的每一者。置信方的公共密钥在将验证彼此的各方之间预先共享,且用于检验各方的公共密钥。一旦建立信任(两方均确定可信任另一方提供的公共密钥),协议就继续验证(检验每一方持有匹配的专用密钥)和密钥交换。这可通过下文描述的图22和23中说明的询问响应机制来完成。
含有经签署公共密钥的结构称为证书。签署证书的置信方称为证书授权方(CA)。为了验证一方,其具有RSA密钥对和证实公共密钥的真实性的证书。所述证书由另一(验证)方所信任的证书授权方签署。验证方预期在其拥有物中具有其置信CA的公共密钥。
SSA允许证书链接。这意味着被识别方的公共密钥可由不同的CA(不同于识别方所信任的CA)来签署。在此情况下,被识别方将除了其自身的证书外还提供签署其公共密钥的CA的证书。如果此第二级证书仍不为另一方所信任(未由其置信CA签署),那么可提供第三级证书。在此证书链接算法中,每一方将拥有验证其公共密钥所需的证书的完整列表。这在图23和24中说明。此类型的ACR进行相互验证所需的凭证是选定长度中的RSA密钥对。
SSA证书
SSA使用[X.509]版本3数字证书。[X.509]是通用标准;此处描述的SSA证书简档进一步指定并限制证书的所定义字段的内容。证书简档还定义为证书链的管理定义的信任层级、SSA证书的确认以及证书撤回列表(CRL)简档。
证书被认为是公共信息(作为内部的公共密钥)且因此不被加密。然而,其包含检验公共密钥以及所有其它信息字段未被窜改的RSA签名。
[X.509]定义使用ASN.1标准格式化每一字段,所述ASN.1标准又使用DER格式进行数据编码。
SSA证书概述
图20和21中描绘的SSA证书管理结构的一个实施例由针对主机的无限制层级层和针对装置的至多三个层级层组成,但可针对装置使用多于或少于三个的层级层数。
主机证书层级
装置基于两个因素验证主机:存储在装置中的根CA证书(作为在创建ACR时存储的ACR凭证),和由试图存取装置的实体供应的证书/证书链(针对所述特定ACR)。
对于每一ACR,主机证书授权方用作根CA(这是驻存在ACR凭证中的证书)。举例来说:对于一个ACR,根CA可以是“主机1CA(层2)证书”,且对于另一ACR,其可以是“主机根CA证书”。对于每一ACR,持有由根CA签署的证书(或将根CA连接到终端实体证书的证书链)的每个实体可登录到所述ACR中,只要其具有针对终端实体证书的相应专用密钥。如上文所提及,证书是公共知识,且不保持为秘密的。
由根CA发布的所有证书持有者(和相应专用密钥)可登录到所述ACR中的事实意味着对特定ACR的验证由存储在ACR凭证中的根CA的发布者确定。换句话说,根CA的发布者可以是管理ACR的验证方案的实体。
主机根证书
根证书是SSA用于开始检验试图登录(主机)的实体的公共密钥的置信CA证书。此证书在ACR被创建作为ACR凭证的一部分时提供。其是PKI***的信任的根源,且因此假定其由置信实体(父代ACR或制造/配置置信环境)提供。SSA使用其公共密钥检验此证书以检验证书签名。主机根证书以加密状态存储在非易失性存储器(图1未图示)中,其中装置的秘密密钥优选地仅可由***10的图1的CPU 12存取。
主机证书链
这些是验证期间提供给SSA的证书。链的处理完成之后,主机证书链的再收集不应存储在装置中。
图20是说明若干不同主机证书链的主机证书层层级的示意图。如图20中所说明,主机证书可具有许多不同证书链,其中仅说明三个:
A1.主机根CA证书502、主机1CA(层2)证书504和主机证书506;
B1.主机根CA证书502、主机n CA(层2)证书508、主机1CA(层3)证书510、主机证书512;
C1.主机根CA证书502、主机n CA(层2)证书508和主机证书514。
以上三个证书链A1、B1和C1说明可用于证明主机的公共密钥为真的三个可能的主机证书链。参考以上证书链A1且在图20中,主机1CA(层2)证书504中的公共密钥由主机根CA的专用密钥签署(即,通过加密公共密钥的摘要),所述主机根CA的公共密钥在主机根CA证书502中。主机证书506中的主机公共密钥又由主机1CA(层2)的专用密钥签署,主机1CA(层2)的公共密钥提供在主机1CA(层2)证书504中。因此,具有主机根CA的公共密钥的实体将能够检验以上证书链A1的真实性。作为第一步骤,所述实体使用其拥有物中的主机根CA的公共密钥来解密由主机发送到其处的主机1CA(层2)证书504中的所签署的公共密钥,并将经解密的所签署的公共密钥与由主机发送的主机1CA(层2)证书504中的未签署的公共密钥的摘要进行比较。如果两者匹配,那么主机1CA(层2)的公共密钥经验证,且实体将接着使用主机1CA(层2)的经验证的公共密钥来解密由主机所发送的主机证书506中的主机1CA(层2)的专用密钥签署的主机的公共密钥。如果此经解密的所签署值与由主机发送的主机证书506中的公共密钥的摘要的所签署值匹配,那么接着主机的公共密钥也经验证。证书链B1和C1可用于以类似方式进行验证。
如从以上涉及链A1的过程中将注意到,来自需要由实体检验的主机的第一公共密钥是主机1CA(层2)而不是主机根CA证书中的公共密钥。因此,主机需要发送到实体的全部内容是主机1CA(层2)证书504和主机证书506,使得主机1CA(层2)证书将是链中需要发送的第一个证书。如上文所说明,证书检验序列如下。检验实体(在此情况下为存储器装置10)首先检验链中第一证书(其在此情况下为根CA下的CA的证书504)中的公共密钥的真实性。在此证书中的公共密钥检验为真之后,装置10接着继续检验下一证书(在此情况下为主机证书506)。出于同样的原因,在证书链含有两个以上证书的情况下可应用类似的检验序列,从紧接在根证书下方的证书开始并以待验证的实体的证书结束。
装置证书层级
主机基于两个因数验证装置:存储在主机中的装置根CA,和由装置供应到主机的证书/证书链(其在创建ACR作为凭证时供应到装置)。主机验证装置的过程类似于上文描述的装置验证主机的过程。
装置证书链
这些是ACR的密钥对的证书。其在创建ACR时提供到卡。SSA个别地存储这些证书,且将在验证期间将它们逐个提供到主机。SSA使用这些证书来向主机验证。装置能够处置3个证书的链,但可使用不同于3个的证书数目。证书的数目可依据ACR不同而变化。其在创建ACR时确定。装置能够将证书链发送到主机,然而,其不需要对它们进行解析,因为其不使用证书链数据。
图21是说明装置证书层层级的示意图,所述层级用于说明针对使用SSA的装置(例如,存储装置)的1到n个不同证书链。图21中说明的n个不同证书链如下:
A2.装置根CA证书520、装置1CA(制造商)证书522和装置证书524;
B2.装置根CA证书520、装置nCA(制造商)证书526和装置证书528。
SSA装置可由1到n个不同制造商制造,每一制造商具有其自身的装置CA证书。因此,针对特定装置的装置证书中的公共密钥将由其制造商的专用密钥签署,且制造商的公共密钥又由装置根CA的专用密钥签署。装置的公共密钥被检验的方式类似于上文描述的主机的公共密钥的情况下的方式。与上文针对主机描述的链A1的检验的情况下一样,不需要发送装置根CA证书,且链中将需要发送的第一证书是装置iCA(制造商)证书,之后是装置证书,i是从1到n的整数。
在图21中说明的实施例中,装置将提供两个证书:装置iCA(制造商)证书,之后是其自身的装置证书。装置iCA(制造商)证书是制造此装置的制造商的证书,且所述制造商是提供专用密钥以签署装置的公共密钥的制造商。当主机接收到装置iCA(制造商)证书时,主机将使用其拥有物中的根CA的公共密钥来解密和检验装置iCA(制造商)公共密钥。如果此检验失败,那么主机将中止过程并通知装置验证已失败。如果验证成功,那么主机接着将对下一证书的请求发送到装置。装置将接着发送其自身的装置证书以由主机以类似方式检验。
上述检验过程还在图22和23中更详细说明。在图22中,“SSM***”是实施本文描述的SSA***以及下文描述的其它功能的软件模块。SSA可实施为软件或计算机代码,其具有存储在存储器20或CPU 12中的非易失性存储器(未图示)中的数据库,且被读取到RAM 12a中并由CPU 12执行。
如图22所示,在过程中存在三个阶段,其中在装置10中的SSM***542验证主机***540。在第一公共密钥检验阶段,主机***540在SSM命令中将主机证书链发送到SSM***542。SSM***542使用位于ACR 550中的主机根证书548中的根证书授权方公共密钥来检验(方框552)主机证书544和主机公共密钥546的真实性。当涉及到根证书授权方与主机之间的中间证书授权方的情况下,中间证书549也用于方框552中的检验。假定检验或过程(方框552)成功,那么SSM***542接着行进到第二阶段。
SSM***542产生随机数554并将其作为询问发送到主机***540。***540使用主机***的专用密钥547来签署随机数554(方框556)并作为对询问的响应而发送经签署的随机数。使用主机公共密钥546来解密响应(方框558),并将响应与随机数554进行比较(方框560)。假定经解密响应与随机数554匹配,那么询问响应成功。
在第三阶段,使用主机公共密钥546来加密随机数562。此随机数562接着为对话密钥。主机***540可通过使用其专用密钥来解密(方框564)来自SSM***542的经加密随机数562而获得对话密钥。借助此对话密钥,接着可启始主机***540与SSM***542之间的安全通信。图22说明其中主机***540由装置10中的SSM***542验证的单向不对称验证。图23是说明类似于图22的单向验证协议的双向相互验证过程的协议图,其中图23中的SSM***542也由主机***540验证。
图24是用于说明本发明的一个实施例的证书链590的图。如上所述,需要呈现以用于检验的证书链可包含若干证书。因此,图24的证书链包含总共九(9)个证书,其全部可能需要经检验以用于验证。如上文背景部分中所阐释,在用于证书检验的现有***中,发送不完整证书链,或在发送完整证书的情况下,不以任何特定次序发送证书使得接收者将在已接受并存储整个群组的证书后才能分析证书。由于链中证书的数目事先不知道,所以这可引起问题。可能需要保留大量存储空间以用于存储不确定长度的证书链。这对于执行检验的存储装置可能成问题。
本发明的一个实施例是基于一***可减轻所述问题的认识,其中主机装置以与证书链将被存储装置检验的次序相同的次序发送其证书链。因此,如图24所示,证书的链590以作为紧接在主机根证书以下的证书的证书链590(1)开始,且以作为主机证书的证书590(9)结束。因此,装置10将首先检验证书590(1)中的公共密钥,之后检验证书590(2)中的公共密钥等等,直到证书590(9)中的主机公共密钥经检验为止。这接着完成整个证书链590的检验过程。因此,如果主机装置将以与证书链将被检验的次序或序列相同的次序或序列将证书链590发送到存储器装置10,那么存储器装置10可在接收到每一证书时开始检验每一证书,而不必等到已接收链590中的全部9个证书为止。
因此,在一个实施例中,主机装置一次将链590中的一个证书发送到存储器装置10。存储器装置10将接着必须一次存储单一证书。在已检验证书之后,其可由主机所发送的下一证书(链中的最后一个证书除外)重写。以此方式,存储器装置10将需要保留空间以用于在任何时间仅存储单一证书。
存储器装置将需要知道何时已接收整个链590。因此,优选地,最后一个证书590(9)含有这是链中的最后一个证书的指示符或指示。此特征在图25中说明,图25是说明处于证书缓冲器之前的控制扇区中的由主机发送到存储器装置10的信息的表。如图25所示,证书590(9)的控制扇区含有自变量名称“′为最终′旗标”。存储器装置10可接着通过检查“为最终”旗标是否经设定来检验证书590(9)是链中最后一个证书,以确定所接收的证书是否为链中最后一个证书。
在替代实施例中,链590中的证书可不逐个发送,而是以一个、两个或三个证书的群组发送。显然,可使用具有其它数目的证书的群组或群组中相同数目的证书。因此,链590包含证书591、593、595、597和599的五(5)个连续串。所述串的每一者含有至少一个证书。证书的连续串是含有紧接于链中在讨论中的一个串之前的串的证书(开始证书)、紧接于链中一个串之后的串的证书(结束证书),和开始证书与结束证书之间的所有证书的串。举例来说,串593含有所有三个证书590(2),590(3)和590(4)。五个证书串由存储器装置10以以下序列检验:591、593、595、597,并以599结束。因此,如果五个串以与存储器装置10所执行的检验相同的序列发送和接收,那么存储器装置在串已被检验之后将不需要存储串的任一者,且除最后一个串以外的所有串可由从主机到达的下一串重写。如在先前实施例中一样,链中最后一个证书需要含有设定为特定值以指示其为链中最后一个证书的指示符(例如,旗标)。在此实施例中,存储器装置将仅需要保留足以在五个串中存储最大数目的证书的空间。因此,如果主机首先通知存储器装置10其希望发送的最长串,那么存储器装置10将仅需要保留足够的空间用于最长串。
优选地,由主机发送的链中每一证书的长度不大于由证书鉴定的公共密钥的长度的四倍。类似地,由存储器装置10发送到主机装置以鉴定存储器装置的公共密钥的证书的长度优选地不大于由证书鉴定的公共密钥的长度的四倍。
上述用于检验证书链的实施例在图26的流程图中说明,在图26中为了简单起见,每一群组中的证书数目假定为一。如图26所示,主机将链中的证书循序发送到卡。以链中的第一证书(通常是紧跟如上文所阐释的根证书之后的一个证书)开始,卡循序地从正被验证的主机接收证书链(方框602)。卡接着检验所接收的证书的每一者并在证书的任一者未能被检验的情况下中止过程。如果证书的任一者未能被检验,那么卡通知主机(方框604、606)。卡将接着检测最后一个证书是否已被接收和检验(菱形608)。如果最后一个证书未被接收和检验,那么卡接着返回到方框602以继续接收和检验来自主机的证书。如果最后一个证书已被接收和检验,那么卡接着在证书检验之后行进到下一阶段(610)。虽然图26和以下的后续图式中的特征参考存储器卡作为实例,但将了解,这些特征也可应用于具有非存储器卡的物理形式的存储器装置。
当卡正验证主机时主机实行的过程在图27中说明。如图27所示,主机将链中的下一证书发送到卡(方框620)(通常以紧跟根证书之后的一个证书开始)。主机接着确定是否已从卡接收指示验证失败的中止通知(菱形622)。如果已接收中止通知,那么主机停止(方框624)。如果尚未接收中止通知,那么主机通过检查所发送的最后一个证书中是否已设定“为最终旗标”来检查是否已发送链中的最后一个证书(菱形626)。如果已发送最后一个证书,那么主机接着在证书检验之后行进到下一阶段(方框628)。如图22和23中所说明,下一阶段可以是询问响应,之后是对话密钥创建。如果尚未发送链中的最后一个证书,那么主机返回到方框620以发送链中的最后一个证书。
当卡正被验证时卡和主机采取的动作在图28和29中说明。如图28所示,在开始之后,卡等待来自主机的发送链中的证书的请求(方框630、菱形632)。如果未接收到来自主机的请求,那么卡将返回到菱形632。如果接收到来自主机的请求,那么卡将接着发送链中的下一证书,以应发送的第一证书开始(通常以紧跟根证书之后的一个证书开始)(方框634)。卡确定是否已从主机接收失败通知(菱形636)。如果已接收失败通知,那么卡停止(方框637)。如果未接收失败通知,那么卡接着确定是否已发送最后一个证书(菱形638)。如果尚未发送最后一个证书,那么卡返回到菱形632并等待直到其从主机接收到发送链中的下一证书的下一请求为止。如果已发送最后一个证书,那么卡接着行进到下一阶段(方框639)。
图29说明当卡正被验证时主机采取的动作。主机将对链中的下一证书的请求发送到卡,以对待发送的第一证书的请求开始(方框640)。主机接着检验所接收的每一证书,并中止过程且通知卡检验是否失败(方框642)。如果检验通过,那么主机检查是否已接收并成功检验最后一个证书(菱形644)。如果尚未接收和成功检验最后一个证书,那么主机接着返回到方框640以发送对链中的下一证书的请求。如果已接收和成功检验最后一个证书,那么主机接着在证书检验之后行进到下一阶段(方框646)。
证书撤回
当发布证书时,预期其用于其整个有效性周期。然而,各种情形可导致证书在有效性周期期满之前变得无效。此类情形包含名称改变、主题与CA之间的关联改变(例如,职员终止与机构的雇用关系),以及相应专用密钥的泄密或可疑泄密。在此类情形下,CA需要撤回证书。
SSA以不同方式实现证书撤回,每一ACR可经配置以用于特定的撤回证书的方法。ACR可经配置以不支持撤回方案。在此情况下,认为每一证书有效直到其期满日期为止。或者可使用证书撤回列表(CRL)。作为又一替代方案,撤回方案可特定针对特定应用,或为应用特定的,其将在下文中阐释。ACR通过指定撤回值而指定采用三种撤回方案中的哪一种。如果在无撤回方案的情况下创建ACR,那么其有可能采用可由ACR所有者激活的撤回方案。存储器装置证书的撤回由主机而不是由SSA安全性***实行。ACR所有者负责管理主机根证书的撤回,完成此动作所借助的机制是通过更新ACR的凭证来进行。
证书撤回列表(CRL)
SSA***使用撤回方案,其涉及每一CA周期性地发布称为证书撤回列表(CRL)的经签署数据结构。CRL是经时间戳记的列表,其识别由CA(发布讨论中的证书的同一CA)签署的撤回的证书,且可由公众自由使用。每一撤回的证书在CRL中由其证书序列号识别。CRL的大小是任意的且依赖于被撤回的未期满证书的数目。当装置使用证书(例如,用于检验主机的身份)时,装置不仅检查证书签名(和有效性),而且对照通过CRL接收的序列号的列表对其进行检验。如果在由发布证书的CA发布的CRL上发现例如证书的序列号等识别信息,那么这指示证书已被撤回且不再有效。
CRL还将需要被检验为真的以便使其可用于验证证书的目的。使用发布CRL的CA的专用密钥来签署CRL,且可通过使用CA的公共密钥对经签署CRL进行解密而将CRL检验为真的。如果经解密CRL与未经签署的CRL的摘要匹配,那么这意味着CRL尚未被窜改且是真的。CRL使用散列算法频繁地经散列以获得其摘要,且摘要通过CA的专用密钥加密。为了检验CRL是否有效,使用CA的公共密钥解密经签署CRL(即,散列和经加密CRL)以得到经解密和散列的CRL(即,CRL的摘要)。这接着与散列CRL进行比较。因此,检验过程可能频繁地涉及散列CRL以与经解密和散列的CRL进行比较的步骤。
CRL方案的特性之一是,证书的确认(对照CRL)可与获得CRL分离执行。CRL也由相干证书的发布者签署,且以类似于证书的检验的方式使用以上述方式发布CRL的CA的公共密钥而被检验。存储器装置检验签名是CRL的,且CRL的发布者与证书的发布者匹配。CRL方案的另一特性是,可借助与证书本身完全相同的手段,即经由非置信服务器和非置信通信来分布CRL。CRL及其特性在X.509标准中详细阐释。
CRL的SSA基础结构
SSA为使用CRL方案的主机的撤回提供基础结构。当以CRL撤回方案向基于RSA的ACR验证时,主机向设定证书命令添加一个CRL(如果发布者CA未撤回任何证书,那么可能为空的CRL)作为额外字段。此字段将含有由证书的发布者签署的CRL。当此字段存在时,存储器装置10首先检验设定证书命令中的证书。获得和存取CRL储存库完全是主机的责任。CRL以其在期间有效的时间周期(CRL期满时间周期或CET)来发布。在检验期间,如果发现当前时间不在此时间周期内,那么认为CRL有缺陷,且不能用于证书检验。因而结果是,证书的验证失败。
在常规证书检验方法中,验证或检验实体预期拥有或能够从证书授权方(CA)检索证书撤回列表,并对照列表检查经呈现用于验证的证书的序列号以确定所呈现的证书是否已被撤回。在验证或检验实体为存储器装置的情况下,存储器装置可能未独立地用于从CA检索证书撤回列表。如果证书撤回列表预先存储在装置中,那么此列表可变得过期使得安装日期之后撤回的证书将不会出现在列表上。这将使用户能够使用撤回的证书存取存储装置。这是不合需要的。
在一个实施例中,上述问题可由一***解决,其中希望被验证的实体将证书撤回列表连同待验证的证书一起提供到验证实体(其可为存储器装置10)。验证实体接着检验证书和所接收的证书撤回列表的真实性。验证实体通过检查证书的识别信息(例如证书的序列号)是否存在于列表上来检查证书是否在撤回列表上。
鉴于以上内容,不对称验证方案可用于主机装置与存储器装置10之间的相互验证。希望向存储器装置10验证的主机装置将需要提供其证书链和相应CRL两者。另一方面,主机装置已用于连接到CA以获得CRL,使得当存储器装置10将由主机装置验证时,存储器装置不需要将CRL连同其证书或证书链一起呈现给主机装置。
近年来,存在可用于播放内容的扩增数目的不同类型的便携式装置,例如不同内嵌式或独立音乐播放器、mp3播放器、蜂窝式电话、个人数字助理和笔记本计算机。虽然有可能将此类装置连接到环球网以便存取来自证书授权方的证书检验列表,但许多用户通常不每日连接到网络,而是将连接到网络仅为了获得新内容或更新预订(例如每隔几个星期)。因此,此类用户必须较频繁地从证书授权方获得证书撤回列表可能是麻烦的。对于此类用户,证书撤回列表以及(任选地)将需要呈现到存储装置以存取受保护内容的主机证书可存储在存储装置本身的优选未受保护区域中。在许多类型的存储装置(例如,快闪存储器)中,存储装置的未受保护区域由主机装置而不是由存储装置本身管理。以此方式,用户不需要(通过主机装置)必须连接到网络以获得更多最新证书撤回列表。主机装置可简单地从存储装置的未受保护区域检索此类信息,并接着转向且将此类证书和列表呈现到存储装置或存储器装置以存取存储装置中的受保护内容。由于用于存取受保护内容的证书及其相应证书撤回列表通常在某些时间周期内有效,所以只要其仍有效,用户就将不必获得最新证书或证书撤回列表。以上特征使用户能够在适当长的周期期间在证书和证书撤回列表两者均仍有效的情况下便利地存取证书和证书撤回列表,而不必连接到证书授权方来获得更新的信息。
上述过程在图30和31的流程图中说明。如图30所示,主机24从存储器装置10的未受保护的公共区域读取关于主机将呈现给存储器装置以用于验证的证书的CRL(方框652)。由于CRL存储在存储器的未受保护区域中,所以在主机可获得CRL之前不需要验证。因为CRL存储在存储器装置的公共区域中,所以CRL的读取受主机装置24控制。主机又将CRL和待检验的证书一起发送到存储器装置(方框654),且除非其从存储器装置10接收到失败通知,否则行进到下一阶段(方框656)。参看图31,存储器装置从主机接收CRL和证书(方框658)并检查证书序列号是否在CRL上(方框660),以及检查其它方面(例如,CRL是否已期满)。如果发现证书序列号在CRL上或由于其它原因而失败,那么存储器装置接着将失败通知发送到主机(方框662)。以此方式,不同的主机可获得存储在存储器装置的公共区域中的CRL,因为所述同一CRL可用于不同主机的验证。如上所述,为了用户的便利,将使用CRL检验的证书也可与CRL一起优选地存储在存储器装置10的未受保护区域中。然而,证书可用于仅由证书被发布到的主机向存储器装置验证。
在CRL在其字段中含有下一更新的时间(如图32中所说明)的情况下,装置10中的SSA还对照此时间检查当前时间以查看当前时间是否在此时间之后;如果是,那么验证也失败。SSA因此优选地对照当前时间(或对照存储器装置10接收到CRL时的时间)检查下一更新的时间以及CET两者。
如上所述,如果CRL含有被撤回证书的识别信息的长列表,那么处理(例如散列)和搜索列表以获得由主机呈现的证书的序列号可能花费较长时间,尤其是在处理和搜索依序实行的情况下。因此,为了加速过程,这些可同时实行。此外,如果需要在处理和搜索整个CRL之前接收整个CRL,那么过程也可能耗时。申请人认识到,可通过处理和搜索CRL的若干部分(在其被接收时(在进行中))来加速过程,使得当接收到CRL的最后部分时,过程即将完成。
图33和34说明撤回方案的以上特征。在验证实体(例如,存储器装置,比如存储器卡)处,从希望被验证的实体接收证书和CRL(方框702)。处理(例如散列)未加密CRL的若干部分,且对这些部分同时执行搜索以用于所呈现的证书的识别(例如,序列号)。将经处理(例如散列)的CRL部分编译为完整的散列CRL,其与通过用从希望被验证的实体接收的部分编译经解密CRL部分而形成的完整的经解密和散列的CRL进行比较。如果比较指示比较中不存在匹配,那么验证失败。验证实体还对照当前时间检查下一更新的时间以及CET两者(方框706、708)。如果发现所呈现的证书的识别信息在CRL上或当前时间不在CET内,或如果下一更新的CRL的时间已过去,那么验证也失败(方框710)。在一些实施方案中,为编译而存储散列CRL部分和经解密散列CRL部分可能不需要大量存储器空间。
当实体(例如,主机)希望被验证时,其将把其证书和CRL发送到验证实体(方框722),并行进到下一阶段(方框724)。这在图34中说明。
如果实体呈现用于识别的证书链,那么可实施与上文类似的过程。在此情况下,将需要针对链中每一证书以及其相应CRL重复上述过程。每一证书及其CRL可在其被接收时处理,而不用等待接收证书链的其余部分以及其相应CRL。
身份对象(IDO)
身份对象是经设计以允许存储器装置10(例如,快闪存储器卡)存储RSA密钥对或其它类型的密码ID的受保护对象。身份对象包含可用于签署和检验身份以及加密和解密数据的任何类型的密码ID。身份对象还包含来自CA的证书(或来自多个CA的证书链),其鉴定密钥对中的公共密钥为真。身份对象可用于提供外部实体或内部卡实体(即,装置本身、内部应用程序等,称为身份对象的所有者)的身份的证明。因此,卡不使用RSA密钥对或其它类型的密码ID来通过询问响应机制验证主机,而是作为通过签署提供到其处的数据流进行识别的证明。换句话说,身份对象含有其所有者的密码ID。为了存取身份对象中的密码ID,主机将首先需要被验证。如下文所描述,借助ACR来控制验证过程。在主机已被成功验证之后,身份对象所有者可使用密码ID向另一方建立所有者的身份。举例来说,密码ID(例如,公共-专用密钥对的专用密钥)可用于签署由另一方通过主机呈现的数据。代表身份对象所有者向另一方呈现身份对象中的经签署的数据和证书。证书中的公共-专用密钥对的公共密钥由CA(即,置信授权方)鉴定为真,使得另一方可信任此公共密钥为真。另一方可接着使用证书中的公共密钥解密经签署的数据,且将经解密数据与由另一方发送的数据进行比较。如果经解密数据与由另一方发送的数据匹配,那么这展示身份对象的所有者确实能够存取真实的专用密钥,且因此确实是其表现为的实体。
身份对象的第二用途是保护使用密码ID(例如RSA密钥本身)向IDO的所有者指定的数据。所述数据预期使用IDO公共密钥来加密。存储器装置10(例如,存储器卡)将使用所述专用密钥来解密所述数据。
IDO是可针对任何类型的ACR创建的对象。在一个实施例中,ACR可仅具有一个IDO对象。数据签署和保护特征均是SSA***正提供给能够向ACR验证的任何实体的服务。IDO的保护等级与ACR的登录验证方案一样高。可针对必然具有IDO的ACR选择任何验证算法。由创建者(主机)来决定和评估哪一算法可较好地保护IDO使用。具有IDO的ACR响应于获取IDO公共密钥的命令而提供其证书链。
当IDO正用于数据保护时,从卡输出的经解密数据可能需要进一步保护。在此情况下,鼓励主机使用通过可用验证算法的任一者建立的安全通道。
当创建IDO时,选择密钥长度以及PKCS#1版本。在一个实施例中,公共和专用密钥使用如PKCS#1 v2.1中定义的(指数,模数)表示形式。
在一个实施例中,创建IDO期间所包含的数据是选定长度中的RSA密钥对,以及递归地证实公共密钥的真实性的证书链。
拥有IDO的ACR将允许签署用户数据。这通过两个SSA命令来完成:
·设定用户数据:提供待签署的自由格式数据缓冲器。
·获取SSA签名。卡将提供RSA签名(使用ACR专用密钥)。所述签名的格式和大小可依据对象类型根据PKCS#1 V1.5或V2.1来设定。
使用IDO的操作在图35-37中说明,其中存储器装置10为快闪存储器卡,且所述卡是IDO的所有者。图35说明卡签署发送到主机的数据所实行的过程。参看图35,在主机如由上述树结构的节点处的ACR所控制而被验证(方框802)之后,卡等待主机对于证书的请求(菱形804)。在接收到请求之后,卡发送证书并返回到菱形804以进行下一主机请求(方框806)。如果需要发送证书链以证明卡所拥有的IDO的公共密钥,那么重复以上动作直到链中所有证书已发送到主机为止。在每一证书已发送到主机之后,卡等待来自主机的其它命令(菱形808)。如果在预设时间周期内未从主机接收到命令,那么卡返回到菱形804。在从主机接收数据和命令后,卡检查命令是否为签署数据(菱形810)。如果命令是签署数据,那么卡用IDO中的专用密钥签署数据并将经签署数据发送到主机(方框812)且返回到菱形804。如果来自主机的命令不是签署来自主机的数据,那么卡使用IDO中的专用密钥来解密所接收的数据(方框814)并返回到菱形804。
图36说明在卡签署待发送到主机的数据时主机所实行的过程。参看图36,主机将验证信息发送到卡(方框822)。在如由上述树结构的节点处的ACR所控制而成功验证之后,主机将对证书链的请求发送到卡并接收链(方框824)。在已检验卡的公共密钥之后,主机将数据发送到卡以用于签署并接收由卡的专用密钥签署的数据(方框826)。
图37说明当主机使用卡的公共密钥加密数据并将经加密数据发送到卡时主机所实行的过程。参看图37,主机将验证信息发送到卡(方框862)。在由ACR控制的验证成功执行之后,主机将对检验IDO中卡的公共密钥所需的证书链的请求发送到卡(方框864)并将对数据的请求发送到卡。在已检验IDO中卡的公共密钥之后,主机使用卡的经检验公共密钥加密来自卡的数据并将其发送到卡(方框866、868)。
查询
主机和应用程序需要拥有关于正与其一起工作的存储器装置或卡的某些信息以便执行***操作。举例来说,主机和应用程序可能需要知道存储在存储器卡上的哪些应用程序可用于调用。主机所需的信息有时不是公共知识,这意味着并非每个人有权拥有所述信息。因此,为了区分经授权和未经授权用户,需要提供可由主机使用的两种查询方法。
一般信息查询。此查询给出没有限制的***公共信息。存储在存储器装置中的机密信息包括两个部分:共享部分和非共享部分。机密信息的一个部分包含可由个别实体专有的信息,使得应允许每一实体仅存取其自身的专有信息,而不能存取其它方的专有机密信息。此类型的机密信息不共享,且形成机密信息的非共享部分。
通常认为是公共的某些信息在一些情况下可能被视为机密的,例如驻存在卡中的应用程序的名称及其生命周期状态。此情形的另一实例可能是根ACR名称,其被认为是公共的但对于一些SSA使用情况可能是机密的。对于这些情况,***将响应于一般信息查询提供保持此信息仅可由所有经验证用户而不可由未经验证用户使用的选项。此类信息组成机密信息的共享部分。机密信息的共享部分的实例可包含根ACR列表-当前存在于装置上的所有根ACR的列表。
通过一般信息查询对公共信息的存取不需要主机/用户登录到ACR中。因此已知SSA标准的任何人可执行和接收所述信息。根据SSA术语,此查询命令在无对话号的情况下被处置。然而,如果需要实体对机密信息的共享部分的存取,那么所述实体需要首先通过控制对存储器装置中的数据的存取的控制结构的任一者(例如,ACR的任一者)经验证。在成功验证之后,实体将能够通过一般信息查询存取机密信息的共享部分。如上文所阐释,验证过程将产生用于存取的SSA对话号或id。
谨慎信息查询
关于个别ACR及其***存取和资产的专用信息视为谨慎的且需要明确验证。因此,这种查询要求在接收对信息查询的授权之前进行ACR登录和验证(如果验证由ACR指定的话)。此查询需要SSA对话号。
在详细描述两种类型的查询之前,首先描述索引群组的概念作为用于实施查询的实践解决方案将是有用的。
索引群组
主机上的操作***(OS)和***驱动程序请求在潜在SSA主机上运行的应用程序以指定既定被读取的扇区数目。这又意味着主机应用程序需要知道对于每个SSA读取操作需要读取多少扇区。
因为查询操作的性质是供应一般不为请求信息的人知道的信息,所以主机应用程序发布查询和猜测此操作所需的扇区数目较困难。
为了解决此问题,SSA查询输出缓冲器每查询请求仅由一个扇区(512字节)组成。作为输出信息的一部分的对象以称为索引群组的群组来组织。每一类型的对象可具有不同字节大小,这虑及可适合单一扇区的对象的数目。这定义此对象的索引群组。如果对象具有20字节大小,那么此对象的索引群组将含有至多达25个对象。如果存在总共56个此类对象,那么其原本将组织在3个索引群组中,其中对象“0”(第一对象)将开始第一索引群组,对象“25”将开始第二索引群组,且对象50将开始第3(最后一个)索引群组。
***查询(一般信息查询)
此查询提供关于装置中所支持的SSA***和如同在装置上运行的不同树和应用程序被设置的当前***的一般公共信息。类似于下文描述的ACR查询(谨慎查询),***查询将经构造以给出若干查询选项:
·一般-支持SSA的版本。
·SSA应用程序-当前存在于装置上的所有SSA应用程序(包含其运行状态)的列表。
上文列举的信息是公共信息。与ACR查询一样,为了排除主机需要知道针对查询输出缓冲器读取多少扇区,将有一个扇区从装置发送回,同时仍使主机能够进一步查询额外索引群组。因此,如果根ACR对象的数目超过针对索引群组“0”的输出缓冲器大小,那么主机可关于随后的索引群组(“1”)发送另一查询请求。
ACR查询(谨慎信息查询)
SSA ACR查询命令希望向ACR用户供应关于ACR的***资源(比如密钥和应用程序ID、分区和子代ACR)的信息。查询信息仅关于登录的ACR且没有关于***树上的其它ACR的信息。换句话说,存取仅限于机密信息的在所涉及的ACR的许可下可存取的所述部分。
存在用户可查询的三种不同的ACR对象:
分区-名称和存取权(所有者、读取、写入)。
密钥ID和应用程序ID-名称和存取权(所有者、读取、写入)。
子代ACR-直接子代ACR的ACR和AGP名称。
IDO和安全数据对象(下文描述)-名称和存取权(所有者、读取、写入)。
因为与ACR连接的对象的数目可变化且信息可能多于512字节(一个扇区)。在事先不知道对象的数目的情况下,用户没有办法知道需要从装置中的SSA***读取多少扇区以便获取完全列表。因此,SSA***提供的每一对象列表划分为索引群组,类似于上述***查询的情况。索引群组是配合到一个扇区中的对象的数目,即可在一个扇区中将多少对象从装置中的SSA***发送到主机。这使装置中的SSA***发送所请求索引群组的一个扇区。主机/用户将接收所查询对象的缓冲器,缓冲器中的对象的数目。如果缓冲器已满,那么用户可查询下一对象索引群组。
图38是说明涉及一般信息查询的操作的流程图。参看图38,当SSA***从实体接收一般信息查询时(方框902),***确定实体是否已被验证(菱形904)。如果其已被验证,那么***向实体供应公共信息和机密信息的共享部分(方框906)。如果其未被验证,那么***仅向实体供应公共信息(方框908)。
图39是说明涉及谨慎信息查询的操作的流程图。参看图39,当SSA***从实体接收谨慎信息查询时(方框922),***确定实体是否已被验证(菱形924)。如果其已被验证,那么***向实体供应机密信息(方框926)。如果其未被验证,那么***拒绝实体对机密信息的存取(方框928)。
特征集延伸(FSE)
在许多情况下,非常有利的是在卡上的SSA内部运行数据处理活动(例如,DRM许可证对象确认)。所得***相对于其中所有数据处理任务均在主机上执行的替代解决方案来说将较安全、较有效,且较不依赖于主机。
SSA安全性***包括一组验证算法和授权策略,其经设计以控制对由存储器卡存储、管理和保护的对象的集合的存取及其使用。一旦主机获得存取权,主机就将接着对存储在存储器装置中的数据实行处理,其中对存储器装置的存取由SSA控制。然而,假定数据在性质上极大程度上为应用特定的,且因此SSA中未定义数据格式也未定义数据处理,所述SSA不处理存储在装置上的数据。
本发明的一个实施例基于以下认识:SSA***可经增强以允许主机执行通常由主机在存储器卡中执行的功能中的一些功能。因此,主机的一些软件功能可分为两个部分:一个部分仍由主机执行且另一部分现由卡执行。这增强了针对许多应用程序的数据处理的安全性和效率。出于这个目的,可添加称为FSE的机制以增强SSA的能力。FSE中由卡以此方式执行的主机应用程序在本文中也称为内部应用程序或装置内部应用程序。
增强的SSA***提供用以延伸基本SSA命令集的机制,其经由卡应用程序的引入提供对卡的验证和存取控制。假定卡应用程序除了SSA的那些服务以外还实施其它服务(例如,DRM方案、电子商务交易)。SSA特征集延伸(FSE)是经设计以增强具有数据处理软件/硬件模块(其可为专有的)的标准SSA安全性***的机制。由SSA FSE***定义的服务使主机装置除了可使用上述查询获得的信息外还能够向卡查询可用应用程序,选择特定应用程序并与特定应用程序通信。上文描述的一般和谨慎查询可用于此目的。
利用延伸SSA FSE中的卡特征集的两种方法:
·提供服务-通过允许经授权实体使用称为通信管道的命令通道(其可为专有的)直接与内部应用程序通信来启用此特征。
·SSA标准存取控制策略的延伸-通过使内部受保护数据对象(例如,CEK、安全数据对象或下文描述的SDO)与内部卡应用程序相关联来启用此特征。每当存取此对象时,如果满足所定义的标准SSA策略,那么调用相关联的应用程序以借此除了标准SSA策略外还强加至少一个条件。此条件优选地将不与标准SSA策略冲突。仅当同样满足此额外条件时才准予存取权。在进一步详细阐述FSE的能力之前,现将叙述FSE的结构方面以及通信管道和SDO。
SSM模块和相关模块
图40A是连接到主机装置24的存储器装置10(例如,快闪存储器卡)中的***结构1000的功能方框图,其用以说明本发明的一实施例。卡20的存储器装置中的软件模块的主要组件如下:
SSA传送层1002
SSA传送层依赖于卡协议。其在卡10的协议层上处置主机侧SSA请求(命令),且接着将其中继到SSM API。所有主机-卡同步和SSA命令识别均在此模块处完成。传送层还负责主机24与卡10之间的所有SSA数据传递。
安全服务模块核心(SSM核心)1004
此模块是SSA实施方案的重要部分。SSM核心实施SSA结构。更明确地说,SSM核心实施SSA树和ACR***以及上文描述的组成***的所有相应规则。SSM核心模块使用密码库1012来支持SSA安全性和密码特征,例如加密、解密和散列。
SSM核心API 1006
这是其中主机和内部应用程序将与SSM核心介接以实行SSA操作的层。如图40A所示,主机24和内部装置应用程序1010两者将使用相同API。
安全应用程序管理器模块(SAMM)1008
SAMM不是SSA***的一部分,但其是卡中控制与SSA***介接的内部装置应用程序的重要模块。
SAMM管理所有内部装置运行应用程序,其包含:
1.应用程序生命周期监视和控制。
2.应用程序初始化。
3.应用程序/主机/SSM接口。
装置内部应用程序1010
这些是经批准在卡侧运行的应用程序。其由SAMM管理且可能够存取SSA***。SSM核心还提供主机侧应用程序与内部应用程序之间的通信管道。此类内部运行应用程序的实例是DRM应用程序和一次密码(OTP)应用程序,如下文进一步阐释。
装置管理***(DMS)1011
这是含有在运输后(通常称为发布后)模式中更新卡的***和应用程序固件以及添加/去除服务所需的过程和协议的模块。
图40B是SSM核心1004的内部软件模块的功能方框图。如图40B所示,核心1004包含SSA命令处置器1022。处置器1022在源自主机或源自装置内部应用程序1010的SSA命令传递到SSA管理器1024之前解析所述命令。所有SSA安全性数据结构(例如AGP和ACR)以及所有SSA规则和策略均存储在SSA数据库1026中。SSA管理器1024实施由ACR和AGP以及存储在数据库1026中的其它控制结构施加的控制。例如IDO和安全数据对象等其它对象也存储在SSA数据库1026中。SSA管理器1024实施由ACR和AGP以及存储在数据库1026中的其它控制结构施加的控制。不涉及SSA的非安全操作由SSA非安全操作模块1028处置。SSA结构下的安全操作由SSA安全操作模块1030处置。模块1032是将模块1030连接到密码库1012的接口。1034是将模块1026和1028连接到图1中的快闪存储器20的层。
通信(或通过)管道
通过管道对象使经授权主机侧实体能够与如由SSM核心和SAMM控制的内部应用程序通信。主机与内部应用程序之间的数据传递在发送和接收命令(下文定义)上实行。实际命令是应用程序特定的。创建管道的实体(ACR)将需要提供管道名称和其将开放通道到的应用程序的ID。与所有其它受保护对象一样,ACR变成其所有者且被允许根据标准授权规则和限制向其它ACR授权使用权以及所有权。
如果在经验证实体的ACAM中已设定创建_管道许可,那么经验证实体将被允许创建管道对象。仅当在内部应用程序的PCR中已设定写入或读取管道许可时,才允许与内部应用程序的通信。仅当实体是管道所有者或在其PCR中已设定授权存取权时,才允许所有权和存取权授权。与当向另一ACR授权所有权权利时的所有其它许可一样,原始所有者将优选地从所有其对此装置应用程序的许可剥离。
优选地,仅针对特定应用程序创建一个通信管道。创建第二管道并将其连接到已连接的应用程序的尝试将优选地被SSM***1000拒绝。因此,优选地,装置内部应用程序1010的一者与通信管道之间存在一对一关系。然而,多个ACR可与一个装置内部应用程序通信(经由授权机制)。单一ACR可与若干装置应用程序通信(经由授权或连接到不同应用程序的多个管道的所有权)。控制不同管道的ACR优选地位于完全分离的树的节点中,使得通信管道之间不存在串扰。
使用以下命令在主机与特定应用程序之间传递数据:
写入通过(WRITE PASS THROUGH)-将从主机将未格式化数据缓冲器传递到装置内部应用程序。
读取通过(READ PASS THROUGH)-将从主机将未格式化数据缓冲器传递到装置内部应用程序,且一旦内部处理完成,就将未格式化数据缓冲器输出回到主机。
写入和读取通过命令提供主机希望与其通信的装置内部应用程序1008的ID作为参数。将确认实体许可,且如果请求实体(即,代管此实体正使用的对话的ACR)具有使用连接到所请求应用程序的管道的许可,那么数据缓冲器将被解译且执行命令。
此通信方法允许主机应用程序将卖主/专有特定命令通过SSA ACR对话通道传递到内部装置应用程序。
安全数据对象(SDO)
可结合FSE使用的有用对象是SDO。
SDO充当用于敏感信息的安全存储的通用容器。类似于CEK对象,其为ACR所有,且可在ACR之间授权存取权和所有权。其含有根据预定义策略限制而受保护和使用的数据,且任选地具有到装置内部应用程序1008的链接。敏感数据优选地不由SSA***使用或解译,而是由对象的所有者和用户使用或解译。换句话说,SSA***不辨出由其处置的数据中的信息。以此方式,对象中的数据的所有者和用户可较不关注于当在主机与数据对象之间传递数据时由于与SSA***介接而引起的敏感信息的损失。因此,SDO对象由主机***(或内部应用程序)创建,且被指派有串ID,与创建CEK的方式类似。在创建后,主机除了名称外还提供链接到SDO的应用程序的应用程序ID,和将由SSA存储、进行完整性检验以及检索的数据区块。
类似于CEK,优选地仅在SSA对话内创建SDO。用于打开对话的ACR变成SDO的所有者且有权将其删除、写入和读取敏感数据以及向另一ACR(其子代或在同一AGP内)授权所有权和存取SDO的许可。
专门为SDO的所有者保留写入和读取操作。写入操作用所提供的数据缓冲器重写现有SDO对象数据。读取操作将检索SDO的完整数据记录。
向具有适当存取许可的非所有者ACR允许SDO存取操作。定义以下操作:
·设定SDO,应用程序ID已定义:数据将由具有应用程序ID的内部SSA应用程序处理。应用程序通过与SDO的关联而被调用。作为任选结果,应用程序将写入SDO对象。
·设定SDO,应用程序ID为空:此选项无效且将提示非法命令错误。设定命令需要在卡中运行的内部应用程序。
·获取SDO,应用程序ID已定义:请求将由具有应用程序ID的装置内部应用程序处理。应用程序通过与SDO的关联而被调用。输出(尽管未定义)将被发送回到请求者。应用程序将任选地读取SDO对象。
·获取SDO,应用程序ID为空:此选项无效且将提示非法命令错误。获取命令需要在卡中运行的内部应用程序。
·SDO相关许可:ACR可以是SDO所有者或仅具有存取许可(设定、获取或两者)。另外,可准许ACR将其存取权传递到其不拥有的SDO,传递到另一ACR。可明确地准许ACR创建SDO并在其具有ACAM许可的情况下授权存取权。
内部ACR
内部ACR类似于任何具有PCR的ACR,只是装置10的外部实体不能登录到此ACR。事实上,当调用处于其控制下的对象或与其相关联的应用程序时,图40B的SSA管理器1024自动登录到内部ACR。由于试图获取存取权的实体是卡或存储器装置内部的实体,所以不需要验证。SSA管理器1024将简单地将对话密钥传递到内部ACR以启用内部通信。
将使用两个实例说明FSE的能力:一次密码产生和数字权利管理。在描述一次密码产生实例之前,将首先叙述双因素验证的问题。
OTP实施例
双因素验证(DFA)
DFA是验证协议,其经设计以通过将额外秘密“第二因素”添加到标准用户凭证(即,用户名称和密码)来增强向(作为一实例)网络服务服务器的个人登录安全性。第二秘密通常是存储在用户的拥有物中具有的物理安全令牌中的某一内容。在登录过程期间,用户需要提供拥有物的证明作为登录凭证的一部分。证明拥有物的通常使用的方式是使用一次密码(OTP),即仅适于单一登录的密码,其由安全令牌产生并从安全令牌输出。如果用户能够提供正确的OTP,那么其被认为是令牌的拥有物的充分证明,因为其不能以密码方式实行在没有令牌的情况下计算OTP。由于OTP仅适于一次登录,所以用户应在登录时具有令牌,因为从先前登录俘获的旧密码的使用将不再有效。
以下段落中描述的产品利用SSA安全性数据结构,加上一个FSE设计以计算OTP序列中的下一密码,从而以多个“虚拟”安全令牌实施快闪存储器卡,每一“虚拟”安全令牌产生不同序列的密码(其可用于登录到不同网站)。此***的方框图在图41中描绘。
完整的***1050包括验证服务器1052、因特网服务器1054和用户1056以及令牌1058。第一步骤是约定验证服务器与用户之间的共享秘密(也称为种子供应)。用户1056将请求发布秘密或种子且将把它存储在安全令牌1058中。下一步骤是将所发布的秘密或种子与特定网络服务服务器联系。一旦这完成,就可发生验证。用户将指示令牌产生OTP。OTP和用户名称及密码发送到因特网服务器1054。因特网服务器1054将OTP转发到验证服务器1052,从而要求其检验用户身份。验证服务器也将产生OTP,且由于其是从与令牌共享的秘密产生,所以其应与从令牌产生的OTP匹配。如果找到匹配,那么检验用户身份且验证服务器将把肯定确认传回到因特网服务器1054,因特网服务器1054将完成用户登录过程。
用于OTP产生的FSE实施方案具有以下特性:
·OTP种子安全地存储(加密)在卡中。
·在卡内部执行密码产生算法。
·装置10可模仿多个虚拟令牌,其每一者存储不同种子,且可使用不同的密码产生算法。
·装置10提供安全协议以将种子从验证服务器传送到装置中。
用于OTP种子供应和OTP产生的SSA特征在图42中说明,其中实线箭头说明所有权或存取权,且虚线箭头说明关联或链路。如图42所示,在SSA FSE***1100中,可通过由N个应用程序ACR 1106的每一者控制的一个或一个以上通信管道1104存取软件程序代码FSE 1102。在下文描述的实施例中,仅说明一个FSE软件应用程序,且对于每一FSE应用程序,仅存在一个通信管道。然而,将了解,可利用一个以上FSE应用程序。虽然图42中仅说明一个通信管道,但将了解,可使用多个通信管道。所有此类变化均是可能的。参看图40A、40B和42,FSE 1102可以是用于OTP供应的应用程序并形成图40A的装置内部应用程序1010的子集。控制结构(ACR 1101、1103、1106、1110)是SSA中的安全性数据结构的一部分且存储在SSA数据库1026中。例如IDO 1120、SDO对象1122和通信管道1104等数据结构也存储在SSA数据库1026中。
参看图40A和40B,涉及ACR和数据结构的安全性相关操作(例如,对话中的数据传递,和例如加密、解密和散列等操作)由模块1030在接口1032和密码库1012的辅助下处置。SSM核心API 1006不区分涉及与主机交互的ACR(外部ACR)和不与主机交互的内部ACR的操作,且因此不区分涉及主机与装置内部应用程序1010的操作。以此方式,相同控制机制用于控制主机侧实体的存取和装置内部应用程序1010的存取。这提供在主机侧应用程序与装置内部应用程序1010之间划分数据处理的灵活性。内部应用程序1010(例如,图42中的FSE 1102)与内部ACR(例如,图42中的ACR 1103)相关联且通过内部ACR的控制被调用。
此外,具有相关联SSA规则和策略的安全性数据结构(例如,ACR和AGP)优选地控制对例如SDO中的内容或可从SDO中的内容导出的信息等重要信息的存取,使得外部或内部应用程序仅可根据SSA规则和策略存取此内容或信息。举例来说,如果两个不同用户可调用装置内部应用程序1010中的个别一者来处理数据,那么位于单独层级树中的内部ACR用于控制所述两个用户的存取,使得其间没有串扰。以此方式,两个用户可存取装置内部应用程序1010的共同集来处理数据,而不会在SDO中的内容或信息的所有者方面担心失去对内容或信息的控制。举例来说,对存储由装置内部应用程序1010存取的数据的SDO的存取可由位于单独层级树中的ACR控制,使得其间没有串扰。此控制方式类似于上文描述的SSA控制对数据的存取的方式。这向内容所有者和用户提供存储在数据对象中的数据的安全性。
参看图42,OTP相关主机应用程序所需的软件应用程序代码的一部分有可能存储(例如,在存储器卡发布之前预先存储或在存储器卡发布之后加载)在存储器装置10中作为FSE 1102中的应用程序。为了执行此代码,主机将需要首先通过N个验证ACR 1106的一者验证,N是正整数,以便获取对管道1104的存取权。主机还将需要提供应用程序ID以便识别其希望调用的OTP相关应用程序。在成功验证之后,可存取此代码用于通过与OTP相关应用程序相关联的管道1104执行。如上所述,管道1104与特定应用程序(例如,OTP相关内部应用程序)之间优选地存在一对一关系。如图42所示,多个ACR 1106可共享对共同管道1104的控制。ACR也可控制一个以上管道。
图42中说明统称为对象1114的安全数据对象SDO1、SDO2和SDO3,其每一者含有数据,例如用于OTP产生的种子,所述种子有价值且优选经加密。三个数据对象与FSE 1102之间的链路或关联1108说明对象的属性,即当存取对象中的任一者时,具有在SDO的属性中的应用程序ID的FSE 1102中的应用程序将被调用,且所述应用程序将由存储器装置的CPU 12执行而不需要接收任何进一步主机命令(图1)。
参看图42,在用户能够开始OTP过程之前,已创建安全性数据结构(ACR 1101、1103、1106和1110),其PCR用于控制OTP过程。用户将需要具有存取权以通过验证服务器ACR 1106的一者调用OTP装置内部应用程序1102。用户还将需要具有通过N个用户ACR 1110的一者对将产生的OTP的存取权。可在OTP种子供应过程期间创建SDO1114。IDO 1116优选地已创建且由内部ACR 1103控制。内部ACR 1103还在创建SDO1114之后控制所述SDO 1114。当存取SDO 1114时,图40B中的SSA管理器1024自动登录到ACR 1103。内部ACR 1103与FSE 1102相关联。在如虚线1108展示的OTP种子供应过程期间,SDO 1114可变得与FSE相关联。在关联处于适当位置之后,当主机存取SDO时,关联1108将促使调用FSE 1102,而没有来自主机的进一步请求。当通过N个ACR 1106的一者存取通信管道1104时,图40B中的SSA管理器1024也将自动登录到ACR 1103。在两种情况(存取SDO 1114和管道1104)下,SSA管理器将把对话号传递到FSE 1102,所述对话号将识别到达内部ACR 1103的通道。
OTP操作涉及两个阶段:图43中说明的种子供应阶段和图44中说明的OTP产生阶段。还将参看图40-42,其辅助描述。图43是说明种子供应过程的协议图。如图43所示,主机(例如,主机24)以及卡采取各种动作。采取各种动作的卡上的一个实体是图40A和40B的SSM***,包含SSM核心1004。采取各种动作的卡上的另一实体是图42所示的FSE 1102。
在双因素验证中,用户请求发布种子,且一旦发布种子,所述种子就将存储在安全令牌中。在此实例中,安全令牌是存储器装置或卡。用户向图42中的验证ACR 1106的一者验证以获得对SSM***的存取权(箭头1122)。假定验证成功(箭头1124),用户接着请求种子(箭头1126)。主机通过选择用于签署种子请求的特定应用程序1102将签署种子请求的请求发送到卡。如果用户不知道需要调用的特定应用程序ID,那么可(例如)通过对装置的谨慎查询从装置10获得此信息。用户接着输入应调用的应用程序的应用程序ID,借此还选择对应于应用程序的通信管道。用户命令接着在通过命令中通过相应通信管道转发到由来自用户的应用程序ID指定的应用程序(箭头1128)。所调用的应用程序请求借助所指定IDO(例如,图42中的IDO 1112)中的公共密钥进行签名。
SSM***使用IDO的公共密钥签署种子请求并通知应用程序签署完成(箭头1132)。所调用的应用程序接着请求IDO的证书链(箭头1134)。作为响应,SSM***提供由ACR1103控制的IDO的证书链(箭头1136)。所调用的应用程序接着将经签署的种子请求和IDO的证书链通过通信管道提供到SSM***,所述SSM***将其转发到主机(箭头1138)。经签署的种子请求和IDO证书链通过通信管道的发送是通过在图40A的SAMM1008与SSM核心1004之间建立的回叫功能来进行,其中将在下文中详细阐述所述回叫功能。
主机所接收的经签署的种子请求和IDO证书链接着发送到图41所示的验证服务器1052。由卡提供的证书链鉴定经签署的种子请求是源自置信令牌,使得验证服务器1052愿意向卡提供秘密种子。验证服务器1052因此将以IDO的公共密钥加密的种子连同用户ACR信息一起发送到主机。用户信息指示产生用户在其下有权存取OTP的N个用户ACR中的哪一者。主机通过供应应用程序ID来调用FSE 1102中的OTP应用程序,借此还选择对应于应用程序的通信管道,并将用户ACR信息转发到SSM***(箭头1140)。经加密种子和用户ACR信息接着通过通信管道转发到选定的应用程序(箭头1142)。所调用的应用程序将使用IDO的专用密钥解密种子的请求发送到SSM***(箭头1144)。SSM***解密种子并将解密已完成的通知发送到应用程序(箭头1146)。所调用的应用程序接着请求创建安全数据对象和将种子存储在安全数据对象中。其还请求使SDO与用于产生一次密码的OTP应用程序(其可以是正作出请求的同一应用程序)的ID相关联(箭头1148)。SSM***创建SDO 1114的一者并将种子存储在所述SDO内部且使所述SDO与OTP应用程序的ID相关联,并在完成时将通知发送到应用程序(箭头1150)。应用程序接着请求SSM***基于主机供应的用户信息向适当的用户ACR授权内部ACR1103存取SDO 1114的存取权(箭头1152)。在授权已完成之后,SSM***通知应用程序(箭头1154)。应用程序接着通过回叫功能将SDO的名称(槽ID)通过通信管道发送到SSM***(箭头1156)。SSM***接着将其转发到主机(箭头1158)。主机接着使SDO的名称与用户ACR联系,使得用户现可存取SDO。
现将参考图44中的协议图描述OTP产生的过程。为了获得一次密码,用户将登录到其有存取权的用户ACR(箭头1172)。假定验证成功,SSM***通知主机且主机将“获取SDO”命令发送到SSM(箭头1174、1176)。如上所述,存储种子的SDO已与用于产生OTP的应用程序相关联。因此,代替于与之前一样通过通信管道选择应用程序,借助由箭头1176中的命令存取的SDO与OTP产生应用程序之间的关联来调用OTP产生应用程序(箭头1178)。OTP产生应用程序接着请求SSM***从SDO读取内容(即,种子)(箭头1180)。优选地,SSM不知道包含在SDO的内容中的信息,且将简单地如FSE所指示处理SDO中的数据。如果种子经加密,那么这可能涉及如FSE所命令在读取之前解密种子。SSM***从SDO读取种子,并将种子提供到OTP产生应用程序(箭头1182)。OTP产生应用程序接着产生OTP并将其提供到SSM***(箭头1184)。OTP接着由SSM转发到主机(箭头1186),主机又将OTP转发到验证服务器1052以完成双因素验证过程。
回叫功能
在图40A的SSM核心1004与SAMM 1008之间建立一般回叫功能。可以此功能注册不同的装置内部应用程序和通信管道。因此,当调用装置内部应用程序时,应用程序可使用此回叫功能在处理之后将数据通过曾用于将主机命令传递到应用程序的相同通信管道传递到SSM***。
DRM***实施例
图45是说明DRM***的功能方框图,所述DRM***使用通信管道1104′、具有到FSE应用程序1102′的链路1108′的CEK 1114′,以及用于控制实施DRM功能的功能的控制结构1101′、1103′、1106′。如将注意到,图45中的结构相当类似于图42的结构,只是安全性数据结构现包含许可证服务器ACR 1106′和重放ACR 1110′代替验证服务器ACR和用户ACR,且CEK 1114′代替SDO。另外,不涉及IDO,且因此在图45中省略IDO。CEK 1114′可在许可证供应过程中创建。协议图图46说明用于许可证供应和内容下载的过程,其中密钥在许可证对象中提供。如OTP实施例中一样,希望获取许可证的用户将首先需要在N个ACR 1106′的一者以及N个ACR 1110′的一者下获取存取权,使得可借助例如媒体播放器软件应用程序等媒体播放器来呈现内容。
如图46所示,主机向许可证服务器ACR 1106′验证(箭头1202)。假定验证成功(箭头1204),许可证服务器将许可证文件连同CEK(密钥ID和密钥值)一起提供给主机。主机还通过将应用程序ID供应到卡上的SSM***来选择待调用的应用程序。主机还发送播放器信息(例如,关于媒体播放器软件应用程序的信息)(箭头1206)。播放器信息将指示播放器在N个重放ACR 1110′的哪一者下具有存取权。SSM***将许可证文件和CEK通过对应于选定的应用程序的通信管道转发到DRM应用程序(箭头1208)。所调用的应用程序接着请求SSM***将许可证文件写入到隐藏分区(箭头1210)。当已如此写入许可证文件时,SSM***通知应用程序(箭头1212)。DRM应用程序接着请求创建CEK对象1114′并将来自许可证文件的密钥值存储在其中。DRM应用程序还请求CEK对象与检查与所提供的密钥相关联的许可证的DRM应用程序的ID相关联(箭头1214)。SSM***完成这些任务且因此通知应用程序(箭头1216)。应用程序接着请求基于由主机发送的播放器信息向播放器具有存取内容的许可所针对的重放ACR授权对CEK 1114′的读取存取权(箭头1218)。SSM***执行授权且因此通知应用程序(箭头1220)。应用程序通过通信管道将许可证的存储已完成的消息发送到SSM***,且SSM***将其转发到许可证服务器(箭头1222和1224)。回叫功能通过通信管道用于此动作。在接收此通知后,许可证服务器接着提供用提供到卡的CEK中的密钥值加密的内容文件。经加密内容由主机存储在公共卡区域中。经加密内容文件的存储不涉及安全性功能,使得SSM***不参与到所述存储中。
图47中说明重放操作。用户通过主机向适当的重放ACR(即,上文在箭头1152和1154中已将读取权授权到的重放ACR)验证(箭头1242)。假定验证成功(箭头1244),用户接着发送读取与密钥ID相关联的内容的请求(箭头1246)。当接收请求后,SSM***将发现DRM应用程序ID与正被存取的CEK对象相关联,且因此将促使调用经识别的DRM应用程序(箭头1248)。DRM应用程序请求SSM***读取与密钥ID相关联的数据(即,许可证)(箭头1250)。SSM不知道其被请求读取的数据中的信息,且简单地处理来自FSE的执行数据读取过程的请求。SSM***从隐藏分区读取数据(即,许可证)并将数据提供到DRM应用程序(箭头1252)。DRM应用程序接着解译数据并检查数据中的许可证信息以查看许可证是否有效。如果许可证仍有效,那么DRM应用程序将因此通知SSM***批准内容解密(箭头1254)。SSM***接着使用CEK对象中的密钥值解密所请求的内容并将经解密内容供应到主机以进行重放(箭头1256)。如果许可证不再有效,那么拒绝对内容存取的请求。
在来自许可证服务器的许可证文件中未提供密钥的情况下,许可证供应和内容下载将稍许不同于图46中说明的许可证供应和内容下载。此不同方案在图48的协议图中说明。图46与48之间的相同步骤由相同标号识别。因此,主机和SSM***首先参与验证(箭头1202、1204)。许可证服务器将许可证文件和密钥ID(没有密钥值)提供到主机,且主机将把这些与其希望调用的DRM应用程序的应用程序ID一起转发到SSM***。主机还发送播放器信息(箭头1206′)。SSM***接着将许可证文件和密钥ID通过对应于选定的应用程序的通信管道转发到选定的DRM应用程序(箭头1208)。DRM应用程序请求将许可证文件写入到隐藏分区(箭头1210)。当已如此写入许可证文件时,SSM***通知DRM应用程序(箭头1212)。DRM应用程序接着请求SSM***产生密钥值,创建CEK对象,将密钥值存储在其中并使CEK对象与DRM应用程序的ID相关联(箭头1214′)。在已遵照请求之后,SSM***将通知发送到DRM应用程序(箭头1216)。DRM应用程序将接着请求SSM***基于来自主机的播放器信息向重放ACR授权对CEK对象的读取存取权(箭头1218)。当此完成时,SSM***因此通知DRM应用程序(箭头1220)。DRM应用程序接着通知SSM***已存储许可证,其中借助回叫功能通过通信管道发送所述通知(箭头1222)。此通知由SSM***转发到许可证服务器(箭头1224)。许可证服务器接着将与密钥ID相关联的内容文件发送到SSM***(箭头1226)。SSM***在不涉及任何应用程序的情况下用由密钥ID识别的密钥值加密内容文件。如此加密并存储在卡上的内容可使用图47的协议重放。
在上文的OTP和DRM实施例中,FSE 1102和1102′可含有许多不同OTP和DRM应用程序供主机装置选择。用户可具有选择和调用所需装置内部应用程序的选择。然而,SSM模块与FSE之间的总体关系保持相同,使得用户和数据提供者可使用标准集的协议来与SSM模块交互并调用FSE。用户和提供者不必涉及到许多不同装置内部应用程序(其中一些可能为专用的)的特殊性中。
此外,供应协议可能稍许不同,如图46和48中的情况一样。在图46的情况中许可证对象含有密钥值,但在图48的情况中没有密钥值。此差异要求如上文说明的稍许不同的协议。然而,图47中的重放是相同的,不管如何供应许可证。因此,此差异将仅关系到内容提供者和分配者,而通常不关系到消费者,消费者通常仅在重放阶段中涉及。此结构因此为内容提供者和分配者定制协议提供巨大灵活性,同时仍容易由消费者使用。显然,从通过两组以上供应协议供应的数据导出的信息可能仍可使用第二协议存取。
以上实施例提供的另一优点是,虽然例如用户的外部实体与装置内部应用程序可共享由安全性数据结构控制的数据的使用,但用户仅能够存取由装置内部应用程序从所存储数据导出的结果。因此,在OTP实施例中,用户通过主机装置仅能够获得OTP,而不能获得种子值。在DRM实施例中,用户通过主机装置仅能够获得所呈现的内容,而不能获得对许可证文件或密码密钥的存取权。此特征在不危及安全性的情况下为消费者提供便利。
在一个DRM实施例中,装置内部应用程序或主机均不具有对密码密钥的存取权;仅安全性数据结构具有此存取权。在其它实施例中,除安全性数据结构以外的实体也可存取密码密钥。所述密钥也可借助装置内部应用程序产生,且接着由安全性数据结构控制。
对装置内部应用程序以及对信息(例如,OTP和所呈现的内容)的存取由相同安全性数据结构控制。这减小了控制***的复杂性和成本。
通过提供向控制主机对通过调用装置内部应用程序获得的信息的存取的ACR授权来自控制对装置内部应用程序的存取的内部ACR的存取权的能力,此特征使得可能实现上文的特征和功能。
应用程序特定撤回方案
当调用装置内部应用程序时,还可修改安全性数据结构的存取控制协议。举例来说,证书撤回协议可以是使用CRL的标准协议或专用协议。因此,通过调用FSE,标准CRL撤回协议可由FSE专用协议代替。
除了支持CRL撤回方案外,SSA还使驻存在装置中的特定内部应用程序能够通过装置内部应用程序与CA或任何其它撤回授权方之间的专用通信通道调用主机。内部应用程序专用撤回方案在主机-应用程序的关系方面是受限制的。
当配置应用程序特定撤回方案时,SSA***将拒绝CRL(如果提供的话),否则将使用证书和专用应用程序数据(先前通过应用程序特定通信管道提供)来决定是否撤回给定的鉴定。
如上所述,ACR通过指定撤回值来指定采用三种撤回方案(无撤回方案、标准CRL方案和应用程序特定撤回方案)中的哪一种。当选择应用程序特定撤回方案选项时,ACR还将针对负责撤回方案的内部应用程序ID指定一ID,且CET/APP_ID字段中的值将对应于负责撤回方案的内部应用程序ID。当验证装置时,SSA***将接着遵守内部应用程序的专用方案。
代替于用另一协议集代替一个协议集,装置内部应用程序的调用可向SSA已施加的存取控制强加额外存取条件。举例来说,存取CEK中的密钥值的权利可由FSE进一步审查。在SSA***确定ACR具有对密钥值的存取权之后,将在准予存取之前咨询FSE。此特征允许内容所有者控制对内容的存取方面的巨大灵活性。
虽然上文已参考各种实施例描述本发明,但将了解,可在不脱离本发明的范围的情况下作出变化和修改,本发明的范围将仅由所附权利要求书及其等效物界定。