瞬态存储设备的安全配置
背景
近年来,瞬态存储设备(TSD)已经广泛地用于便携式计算机数据存储。TSD可采取通用串行总线(USB)闪存驱动器,和用于移动电话的、数码相机、个人数字助理、数字音乐播放器(例如,MP3播放器)、外部硬件驱动器和其他可携带设备的存储卡和“棒”的形式。由于大存储容量以及去往和来自TSD的高速数据传输,TSD上存储的可以去往或来自TSD可连接到的主机设备的数据的安全性是已认识到的问题。用于TSD的电气和电子工程师协会(IEEE)1667标准通过出于对TSD上的用户数据的访问进行认证和随后的授权的目的包括证书筒仓(silo)的定义来解决该问题。
然而,该标准缺少通用设备配置机制。当前IEEE 1667标准的约束下的设备配置的实现是复杂的,因为该规范提供了如证书筒仓所实现的一组有限的认证和证书存储管理操作。在IEEE 1667标准规范中没有出于设备配置的目的的操作。具体地,没有用于配置TSD的预配(provisioning)级的构造。然而,任何配置解决方案将需要在当前IEEE 1667标准规范的参数和要求下进行操作。
概述
当在当前IEEE 1667标准的约束下操作时,使用TSD的认证筒仓中的预配证书的扩展字段来提供用于TSD的安全配置选项。在一个实现中,在预配证书的扩展字段中设定存储设备的可配置的设置的不变值。随后将预配证书安装在存储设备上。该方法以唯一的方式利用了对IEEE 1667证书筒仓规范和ITU-T X.509证书规范是唯一的属性。该方法被实现的同时满足设备配置的安全要求,并且利用了按原样的现有标准定义而无需修改。特别地,该方法允许启用或禁用设备固件中存在的特定特征。具体地,该方法允许用户或管理员在若干设备设置中选择,这些设备设置例如,可寻址命令目标(ACT)的数量、总数据存储区中分配给每个ACT的部分、以及访问设置。该方法使这些特征能由用户在零售后以安全方式来实现。
出于该规范的目的,术语“瞬态存储设备”和“TDS”涵盖了可向其应用IEEE1667标准的任何设备、以及可类似地接受支持可扩展字段的预配证书的等效物的任何存储设备,例如高级技术附件(ATA)设备。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。所要求保护主题的其他特征、细节、用途、以及优点将从如附图中进一步示出的以及在所附权利要求中所定义的以下更具体描写的各实施例和实现的详细描述中变得显而易见。
附图简述
图1是瞬态存储设备的若干协议层的示意图,它指示瞬态存储设备的可能配置的一个实现。
图2是瞬态存储设备的认证筒仓和使用预配证书中的可扩展字段来配置瞬态存储设备的实现的示意图。
图3是用也配置设备的证书来预配瞬态存储设备的实现的流程图。
详细描述
设备设置是一特权操作,设备的用户可能没有被授权来执行该特权操作。因此,它必须在提升的上下文中执行以便是安全的而防止未授权的执行。设备配置可以按违反关于设备做出的先前假设的方式来更改设备的行为。例如,可以将数据放置到设备上预期有持续的安全访问的安全区域中。然而,在设备经历了配置设置的改变之后,数据可能不再安全。因此,设备配置需要在不可变的初始化阶段期间发生,使得将来对配置的改变不会违反设备行为假设。
瞬态存储设备100或TSD在功能上被分成若干不同的组件,如图1所示。TSD 100具有允许TSD连接到主机设备并与其通信的物理接口102。例如,通用串行总线(USB)闪存驱动器(UFD)通常具有合形的接触接口,该盒形接触接口具有位于绝缘体上且由矩形触点所围绕的4个附加接触迹线。TSD 100还包括在执行TSD 100的数据传送、设备配置和其他功能的嵌入固件106的控制下操作的处理器104。每个TSD 100可具有至少一个且可能更个别地被认证的存储区,每一存储区通过概念上类似于其他存储系统中的“逻辑单元”的“可寻址命令目标”(ACT)层来访问。图1描绘了具有第一ACT 108a和第二ACT108b的TSD 100。注意,“认证”与“授权”是分开的概念,并且访问特定存储区的授权被分开地处理。
每个ACT 108a、108b实现IEEE 1667规范中被称为“筒仓”的若干功能单元,这些筒仓包括至少一个探测筒仓110a、110b和认证筒仓112a、112b。每个ACT 108a、108b可实现附加的制造商或用户定义的筒仓114a、114b。ACT104和对应的筒仓提供了对TSD 110上的数据存储区116的配置和认证控制。
探测筒仓110a、110b由经由物理接口102连接的主机用来询问ACT 108a、108b并标识可用的功能单元。TSD 100中的探测筒仓108a、108b接收操作系统和在主机设备上运行或存在的IEEE 1667版本的标识。探测筒仓108a、108b返回在每个ACT 1108a、108b上实现的筒仓的数量、类型和版本。对探测筒仓110a、110b的询问必须在对任何其他筒仓采取进一步动作之前发生。
一旦探测筒仓108a、108b接收且返回了必需的设备信息,每个ACT 108a、108b的验证筒仓112a、112b就提供认证证书的双向认证和管理所需的功能。认证筒仓112a、112b使用证书来认证主机和每个ACT 108a、108b,并且还管理证书。探测筒仓110a、110b、认证筒仓112a、112b、以及其他筒仓114a、114b中的每一个是相应的ACT 108a、108b专用的。一般地,数据存储区116首先被认为是IEEE 1667标准下的单个ACT或“逻辑单元”,并且由此作为整体来服从置于其中且由原始或第一个认证通常112a来处理的任何制造商证书或预配证书。然而,第一认证筒仓112a可根据此处描述的方法来操纵以便将初始数据存储区116划分成多个ACT 108a、108b,它们具有为了方便以例如LUN0116a和LUN0116b等逻辑单元号(LUN#)的构造所标识的可分开访问的存储区,如图1中所示。
图2中描绘了认证筒仓200的功能组件的实现的更具体的描述。在IEEE1667标准下,定义五个不同类型的证书:制造商证书202、预配证书204、认证证书链206、主机证书208、以及用户证书210。制造商证书202是强制的,并且证明TSD的身份。制造商证书202包括TSD的唯一标识符以及可用于质询TSD的公钥。每个ACT的认证筒仓200可各自带有唯一的制造商证书202,它具有来自唯一的密钥对的唯一的公钥。然而,要求是所有的制造商证书链到相同的直接父证书。
预配证书204授予对认证筒仓200的管理性访问,并且向管理员提供管理其余证书的能力。用户仅可以添加、移除、或替换能访问认证筒仓200中存储的预配证书204所签署的证书的主机上的认证证书。初始ACT的预配证书204是不变的,并且可用于创建随着TSD用初始预配证书204来预配而重新初始化成包含多个ACT的新状态的TSD。预配证书204的扩展字段212可用于指定该新状态的细节,如以下进一步描述的。可提供专用于初始预配证书204所创建的附加ACT的附加预配证书。
一旦预配了ACT,TSD就可存储认证筒仓证书链206。用户可使用该链来创建与具有相同制造商和产品标识号的所有其他设备分开的个性化设备。主机可使用证书链206的内容来认证ACT并且授权对ACT中的存储的访问。以下将进一步描述在此处所公开的技术的上下文中对证书链206的使用。
在TSD被附连时,主机证书208向TSD认证主机。可将对应于其中认证TSD的多个主机设备的多个主机证书208添加到该TSD。在IEEE 1667标准下,如果认证筒仓200中没有存储主机证书,则TSD可自动将主机作为已认证来对待,指示不旨在限制对特定主机的访问。这在制造商需要主机认证来作为数据访问的先决条件时简化了TSD的配置。在主机呈现了由认证筒仓中的主机证书之一所签署的证书时,ACT将转换到已认证状态。
用户证书210也可放置在认证筒仓中。用户证书210不由认证筒仓200来管理。在IEEE 1667标准下,任何应用程序可存储这些证书或从认证筒仓200中移除这些证书。没有进一步的主机证书208或用户证书210可被添加到TSD,除非主机或用户证书持有者使用预配者放置在TSD上的预配证书204成功地进行了认证。
在IEEE 1667标准下,在TSD可用于提供对数据存储区中所存储的数据的安全访问之前,它必须经历为该目所准备的一组操作。IEEE 1667标准将该过程指定为预配。TSD的预配者不必是该TSD的用户。预配者实际上是TSD的管理员且可以是用户、系统管理员、或制造商。
在实践中,TSD以非预配状态来自制造商,其具有至少一个ACT,该初始ACT(0)包含认证筒仓200。除了ACT专用设置以外,该ACT(0)的第一预配者可为该TSD指定设备全局设置。全局TSD设置仅在第一预配操作期间可配置。一旦被放置在TSD上,初始预配证书204保持有效,并且不能被替换,除非设备被明确地重新初始化(即,被复位到原始制造状态)。由此,一旦指定了配置设置,它们就决不能被改变,除非TSD被复位回到制造的状态。预配证书204的该复位毁坏了所有受保护的数据,所以该数据保持安全,并且将任何TSD配置设置复位回到如制造时的初始状态。在成功的第一预配之后,TSD现在可以处于表现不同或展示初始ACT以上或以外的附加ACT的状态。其他预配证书对其他ACT的进一步预配决不能影响初始预配证书204所设置的TSD的全局设置,仅能影响ACT专用设置。由于初始预配证书204的约束,TSD和其上的ACT保持安全。
下面呈现用于表示遵循国际电信联盟ITU-T X.509标准的证书的自治系统号ASN.1数据类型。这是用于根据IEEE 1667标准预配TSD设备的预配证书204的格式。如所指示的,该数据类型提供了对接近证书结尾的扩展字段的使用。然而,该扩展被认为是可任选的,并且不进一步被定义。注意,为允许证书中存在扩展字段,版本字段必需被设定为版本3(v3)。
Certificate::=SIGNED{SEQUENCE{
version[0]Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueIdentifier[1]IMPLICIT UniqueIdentifier OPTIONAL,
--如果存在,则版本应为v2或v3
subjectUniqueIdentifier[2]IMPLICIT UniqueIdentifier OPTIONAL,
--如果存在,则版本应为v2或v3
extensions[3]Extensions OPTIONAL
--如果存在,则版本应为v3--}}
Version::=INTEGER{v1(0),v2(1),v3(2)}
CertificateSerialNumber::=INTEGER
AlgorithmIdentifier::=SEQUENCE{
algorithm ALGORITHM.&id({SupportedAlgorithms}),
parameters ALGORITHM.&Type({SupportedAlgorithms}{algorithm})OPTIONAL}
--下面的信息对象集的定义可能被推迟到标准化简档
--或协议实现遵从陈述。要求该集合
--指定对AlgorithmIdentifier的参数分量的表格约束
--SupportedAlgorithms ALGORITHM::={…}
Validity::=SEQUENCE{
notBefore Time,
notAfter Time}
SubjectPublicKeyInfo::=SEQUENCE{
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING}
Time::=CHOICE{
utcTime UTCTime,
generalizedTime GeneralizedTime}
Extensions::=SEQUENCE OF Extension
Extension::=SEQUENCE{
extnId EXTENSION.&id({ExtensionSet}),
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
--包含由extnId标识的扩展对象的
--类型&扩展类型的值的DER编码--}}
ExtensionSet EXTENSION::={…}
本技术利用预配证书204中的可任选扩展字段212来表示设备配置设置。尽管预配了TSD,但是预配者可选择启用或禁用支配TSD的行为和性能的各种设备设置。预配者经由预配证书204中的ITU-T X.509证书扩展字段212来传递这些设置。ACT在设定证书命令期间接收这些设置。这些设置的真实性可由证书签名字段在TSD上验证,如果发生篡改,则该证书签名字段将与期望值不匹配。
预配者可通过检索不可变且总是可访问的制造商证书202来发现可用的所支持的TSD配置设置。制造商证书在该证书的扩展字段212中指示允许的配置设置集。预配者可解析这些设置来确定在将预配证书204放置在TSD上的期间将哪一个设置(如果有的话)包括在预配证书204的扩展字段212中。预配证书204的扩展字段212中的配置设置将胜过制造者证书202中的任何默认设置。扩展字段212中的配置设置是不可变值,这表现在它们不能被改变,除非移除预配证书204,这导致所有的数据和证书从存储设备中被擦除。
现在描述可放置在预配证书204的扩展字段212中的示例性配置设置。数据存储区将默认地作为单个逻辑单元来对待。配置设置允许管理员在若干设备设置中进行选择,这些设备设置例如,ACT的数量、总数据存储区中分配给每个ACT的部分、以及访问设置。这些配置可由此由用户在零售之后以安全方式在预配证书实现。划分扩展设置214可用于将数据存储区划分成多个逻辑单元(如图1所描绘的)。用于使用预配证书204的扩展字段212在TSD中创建多个逻辑单元的示例性划分扩展设置214可以如下:
extnid=urn:oid:2.25.329800735698586629295641978511506172918
critical=00
extnValue=03
其中extValue指示分配了3个ACT。
还可能需要公共/受保护扩展设置216来将整个TSD或个别ACT指定为可公共访问的、或由例如通行短语等质询所保护的。如果TSD被指定为受保护的,则主机可返回向用户请求用于访问TSD或其ACT的通行短语的界面。或者,可能需要该通行短语以便将某些数据从TSD传送到主机。TSD的其他功能组件也可以被指定为受保护的或公共的。例如,如果在预配过程中放置了主机证书208或用户证书210或其中的某一些,则这些证书将被指定为受保护的且不可移除的。用于使用预配证书204的扩展字段212来分别地认证TSD中的多个逻辑单元的示例性公共/受保护扩展设置216可以如下:
extnid=urn:oid:2.25.329800735698586629295641978511506172919
critical=00
extnValue=00,01
其中extnValue指示ACT0是安全的(而ACT1和ACT2保持为公共的)。比特-字段位置值对应于ACT序数。2个八位组的十六个可能的比特位置允许为设备上最大16个可能的ACT指定受保护/公共(1/0)值。
在另一示例中,可在扩展字段212中提供允许的认证尝试扩展设置218。该设置可提供在尝试从TSD或特定ACT中读取数据或将数据写入其中时用户或主机可向TSD呈现认证证书或授权标识的最大次数。对访问的重复尝试而没有认证或授权可能指示了出于恶意目的获得对数据的未授权访问的尝试。一旦达到最大尝试限制,预配证书204就可以例如拒绝在没有管理证书的情况下访问TSD上的数据的任何进一步尝试。使用预配证书204的扩展字段212的示例性认证尝试扩展设置218可以如下:
extnid=urn:oid:2.25.329800735698586629295641978511506172920
critical=00
extnValue=FF
其中extValue指示255是所允许的尝试的最大数量。
在又一示例中,可以在扩展字段212中提供主机动作扩展设置222以便在TSD连接到主机时触发主机执行某一动作。例如,主机动作扩展设置222可使得主机自动播放TSD上所存储的某一文件,例如,应用程序的安装文件、音乐回放程序的启动、或关于TSD上的数据的使用的音频/视频教程。使用预配证书204的扩展字段212的示例性主机动作扩展设置222可以如下:
extnid=urn:oid:2.25.329800735698586629295641978511506172921
critical=00
extnValue=5C,61,75,74,6F,70,6C,61,79,5C,72,65,63,2E,65,78,65,0D,0A
其中extnValue是指向“\autoplay\rec.exe”的文件系统路径。
图3中呈现了用于实现初始预配证书的扩展字段中的配置设置的示例性配置过程300。在访问操作302中,主机访问TSD上的探测筒仓以向探测筒仓询问筒仓的数量、类型以及版本。主机同时提供特定于主机设备的操作系统和IEEE 1667版本信息。使用该筒仓信息,主机接着在第二访问操作304中基于探测筒仓所提供的标识信息来访问认证筒仓。假设这是预配操作,则管理员或预配者接下来确定TSD上是否已经存在预配证书,如查询操作306中所指示的。
如果TSD上已经存在预配证书,则在查询操作308中质询预配者来确认先前的预配证书应被移除并且TSD应被复位到原始制造规范。回想,预配证书的移除将擦除TSD上当前所存储的任何数据和证书。这是非常激烈的操作,并且因此提供高级别的安全来阻止对可能已在先前的预配证书中应用的配置设置的改变。如果预配者决定不移除当前预配证书,则预备配置方法300终止。如果预配者决定移除先前的预配证书并且用新的预配证书来替换它,则TSD被复位到初始状态,并且从TSD中擦除除了制造者证书以外的所有数据和证书,如复位操作308所指示的。配置过程300随后返回到第一访问操作302来开始预配过程。
返回到第一查询操作306,如果确定不存在预配证书,这或是由于这是首次预配TSD、或是由于先前的预配证书被移除,则配置过程300继续。在询问操作312中,预配者可首先询问制造商证书来确定什么功能可用于特定TSD并且返回默认设置。作为设定预配证书的一部分,预配者随后另外设定预配证书的扩展字段中的值来提供将控制对TSD的功能的访问的配置设置,如在设定操作314中所指示的。最后,将包括所填入的扩展字段的所完成的预配证书安装在TSD上的认证筒仓上,如在提供操作316中所指示的。现在完成了TSD的预配和安全配置。
如上所述,在IEEE 1667标准下,预配证书中的配置设置一旦设定就是不可变的,除非预配证书被完全移除,这进而将擦除TSD上的所有数据。预配证书的扩展字段中的扩展设置提供了配置高度安全的TSD的能力,它允许一定范围的访问,取决于其中使用TSD的主机设备。不能改变预配证书、以及如果移除预配证书则TSD上发生的激烈效应确保了根据本方法所提供的配置设置也是不可变的且受保护以防任何未来的改变。
此处所描述的技术可在一个或多个系统中被实现为逻辑操作和/或模块。逻辑操作可被实现为在一个或多个计算机系统中执行的处理器实现的步骤的序列以及在一个或多个计算机系统中的互连机器或电路模块。同样地,各组件模块的描述可以按照由模块执行或实现的操作来提供。所得的实现是取决于实现所描述的技术的底层系统的性能要求的选择问题。从而,组成此处所述的技术的实施例的逻辑操作被不同地称为操作、步骤、对象或模块。此外,应该理解,除非以其他方式明确地要求保护或权利要求语言固有地需要一特定的次序,否则逻辑操作可以按任何次序来执行。
在一些实现中,提供作为计算机程序产品的制品。在一个实现中,计算机程序产品作为计算机可读介质来提供,该计算机可读介质存储计算机系统可执行的已编码计算机程序指令。计算机程序产品的另一实现可由计算系统在载波内具体化并编码计算机程序的计算机数据信号来提供。在此还描述和列举了其他实现。
以上说明、示例和数据提供了对本发明的各示例性实施例的结构和使用的全面描述。尽管以上带着一定程度的特殊性或对一个或多个单独实施例的参考描述了本发明的各实施例,但是本领域的技术人员能够对所公开的实施例做出多种更改而不背离本发明的精神或范围。更具体地,应该理解,所描述的技术可以独立于个人计算机来采用。因此构想了其他实施例。其目的是以上描述中所包含以及在附图中所示出的所有一切应当解释为仅仅是说明了特定实施例而非限制。可以对细节或结构做出改变而不背离如所附权利要求书中定义的本发明的基本要素。