system: [SYSTEM]

user: 3. 基于TCM的数据存储位置保障方法 本文采用物理机器中的TCM芯片作为验证数据存储位置的可信根。绑定有地理位置信息的TCM芯片在认证机构(Certification Authority， CA)中注册。用户运行虚拟机中的客户端软件来初始化一个证明协议，通过这个协议清楚地识别TCM的身份并且在CA的协助下验证位置。此外，此证明协议可以保证虚拟机上运行的软件组件(BIOS、bootloader、hypervisor等)没有受到任何损害。 3.1. 整体框架 图1展示了基于TCM的数据存储位置保障整体框架。虚拟机VM 1 运行在云存储提供商提供的位于某个特定地理位置的一台机器上，此台机器含有TCM芯片并安装了云存储服务。某用户的数据通过使用云存储服务存储在 上。虚拟机监视器运行在硬件之上并负责执行所有的虚拟机。LICT模块提供了位置验证、完整性检查以及TCM驱动的功能。LICT位于虚拟机监视器中，它管理位置验证请求对TCM的访问并实现上文中提出的IMA的必要部分，来保证虚拟机监视器以及LICT模块没有受到损害。运行在虚拟机监视器上的所有虚拟机通过LICT模块访问TCM芯片。虚拟机中的LocCheck模块通过LICT 图1. 整体框架 模块获取TCM身份。绑定物理机器位置信息的TCM芯片在CA中注册。我们假设可信服务提供商或者CA执行定期系统检查来验证物理机器的位置。例如，依据标准ISO/IEC 27001，位置验证是一个需要定期执行的安全审计。简单起见，我们还需假设CA维护了一个IMA要求的可信软件组件的指纹数据库。可以通过与CA通信来验证TCM以及机器的地理位置。在本文中，我们还假定用户、云存储提供商以及CA之间的通信是安全的。 3.2. 详细设计 本文的原型分为两个部分：初始化阶段和验证阶段。初始化阶段只执行一次，当云存储提供商提供一个新的绑定有TCM芯片的机器，并将此机器以及其位置信息在CA中注册时，执行初始化协议。平台身份证书在此阶段生成。在初始化阶段，CA通过证明协议验证机器的可信性。当CA验证了机器位置信息的正确性并且系统是可信的，此机器的用户就可以通过执行验证阶段来验证位置了。 初始化阶段：当云存储供应商提供一台新的机器M时，需执行下面几步进行初始化，如表1所示。 首先，LICT模块执行TCM_TakeOwnership命令来初始化TCM，设置访问TCM的用户密码，并将此密码存储在LICT模块中。然后，执行TCM_MakeIdentity命令使TCM生成PIK密钥对(PIK priv ， PIK pub )。每一个这样的SM2密钥对都与一个健柄h PIK 绑定，因为在一个TCM内部可以生成多个不同的PIK。在生成PIK的同时，用来访问EK priv 的密码pass PIK 也被设置。 TCM生成一个PIK请求(PIK-Request， PR)并使用PIK priv 对PR进行签名，此请求包含PIK pub ，背书证书EC，平台证书PC，一致性证书CC。TCM使用PIK priv 对PR进行签名并将此签名与PR发送到LICT模块，由LICT模块发送到CA。由于背书证书包含背书公钥EK pub ，PIK密钥对唯一地绑定到特定TCM，因此，LICT模块存储访问TCM的用户密码、h PIK 、pass PIK 、PIK pub 以及所有的证书，以便使用。 收到消息之后，CA验证证书和签名的有效性。若验证通过，CA生成一个平台身份证书(Platform IdentityCredential， PIC)并且使用CA的私钥对PIK pub 签名。采用对称加密方案Sym_Enc用生成的会话密钥K对PIC加密。会话密钥K本身采用SM2算法用EK pub 加密后与PIC一起被发送到LICT模块。 Table 1 Initialization phase step 步骤 执行模块 命令 1a. LICT→TCM: TCM_TakeOwnership 1b. LICT→TCM: TCM_MakeIdentity 1c. TCM Generate (PIK priv ， PIK pub ) 1d. TCM PR = PIK pub ， EC， PC， CC 1d. TCM SM2_Sign (PR|PIK priv ) = Sig 2. LICT→CA: PR， Sig 3a. CA Verify Credentials 3b. CA Verify SM2_Verify(Sig|EK pub ) = PR 3c. CA Generate PIC 3d. CA Generate K 3e. CA SM2_Enc(K|EK pub ) 3f. CA Sym_Enc(PIC|K) 4. CA→LICT: SM2(K|EK pub )， Enc(PIC|K) 5a. LICT→TCM: TCM_ActivateIdentity 5b. TCM Decrypt K 5c. TCM Decrypt PIC 6a. LICT→TCM: TCM_Quote(h PIK ， pass PIK ， loc M ， S PCR ) 6b. TCM SM2_Sign(loc M ， S PCR |PIK priv ) = SigL 6c. LICT→CA: loc M ， PCR[S PCR ]， SML， SigL 7a. CA Verify SigL 7b. CA Verify platform integrity 7c. CA Verify loc M 7d. CA Mark loc M of M as verified 表1. 初始化阶段步骤 LICT模块调用TCM_ActivateIdentity命令使用EK priv 解密会话密钥K。这个操作保证了在后续步骤中只有TCM可以解密PIC。 此时，LICT模块开始在CA注册物理机器M的地理位置loc M 。如上文3.1中所说，我们将位置注册与平台完整性验证、CA验证机器M没有收到任何损害，BIOS、Bootloader、Hypervisor、LICT模块是可信的结合起来。TCM激活TCM_Quote命令，使用PIK priv 对loc M 以及相应的用于启动过程完整性验证的PCR值S PCR 进行签名。参数h PIK 用来指定正确的PIK，pass PIK 用来获取此PIK密钥的使用权。发送到CA的消息包括位置loc M 、设置的PCR的值PCR[S PCR ]、存储度量日志SML以及签名SigL。 当CA收到消息之后，它首先使用PIK pub 验证签名的有效性。然后比较PCR值与SML的一致性来验证平台可信性。当位置信息被某外部机构(任何形式的审计)验证之后，CA认为这台机器(包括它所绑定的TCM)及其位置是可信的。 当初始化阶段结束之后，绑定到云存储供应商提供的机器上的TCM的身份标识密钥PIK以及它目前的位置就成功在CA中注册了并可以被下文的验证阶段所使用。 验证阶段：验证阶段的协议步骤如表2所示。 当用户U想要验证他的数据存储实际位置是否与供应商声称的位置信息一致时，用户向存储数据的虚拟机VM 1 发出验证请求。位于虚拟机VM 1 中的LocCheck模块选择几块随机的内存区域 ，并将指针MA指向此内存区域。将这些随机内存区域应用在验证阶段，可防止供应商的重放攻击。 接下来，LocCheck模块向LICT模块请求TCM的身份标识公钥PIK pub 并将PIK pub 以及内存区域的哈希 发送到CA来请求确认位置。其中，PIK pub 用来标识TCM身份。 当CA接收到PIK pub 后，从数据库中查找验证机器M平台完整性的PCR值并将S PCR 返回LocCheck模块。LocCheck模块将S PCR 以及内存区域指针MA发送到LICT模块。 LICT模块计算 并请求TCM使用TCM_Quote命令用PIK priv 对 和S PCR 签名。同样，参数h PIK 用来指定正确的PIK，pass PIK 用来获取此PIK密钥的使用权。TCM将签名SigMA、PCR值PCR[S PCR ]发送到CA。 CA验证签名的有效性、平台完整性、验证的loc M 与注册的一致性以及LocCheck模块计算出的所选内存区块的哈希与LICT模块签名的一致性。如果所有的验证均通过，CA使用自身的私钥对loc M 的确认信息进行签名并将其发送到LocCheck模块，由LocCheck模块将此信息发送给用户。最后，用户使用CA Table 2 Validation phase ste 步骤 执行模块 命令 0. User→LocCheck: Memory areas MA 1a. LocCheck→LICT: Request PIK 1b. LICT→LocCheck: PIK pub 1c. LocCheck Generate hash (MA) 1d. LocCheck→CA: Hash (MA)， PIK pub 2a. CA Select S PCR 2b. CA→LocCheck: S PCR 2c. LocCheck→LICT: MA， S PCR 3a. LICT Generate hash (MA) 3a. LICT→TCM: TCM_Quote(h PIK ， pass PIK ， hash(MA)， S PCR ) 3b. TCM SM2(hash(MA)， S PCR |PIK priv ) = SigMA 3c. TCM→LICT PCR[S PCR ] 4a. LICT→LocCheck: PCR[S PCR ]， SML， SigMA 4b. LocCheck→CA: PCR[S PCR ]， SML， SigMA 5a. CA Verify SigMA 5b. CA Verify platform integrity 5c. CA Verify loc M marked as verified 5d. CA Verify hash(MA) 6a. CA→LocCheck: Location loc M confirmed 6b. LocCheck→User: Location loc M confirmed 表2. 验证阶段步骤 的公钥验证确认信息的签名并验证位置loc M 是否正确。