CN112688999B - 云存储模式下基于TrustZone的密钥使用次数管理方法及系统 - Google Patents

云存储模式下基于TrustZone的密钥使用次数管理方法及系统 Download PDF

Info

Publication number
CN112688999B
CN112688999B CN202011501954.2A CN202011501954A CN112688999B CN 112688999 B CN112688999 B CN 112688999B CN 202011501954 A CN202011501954 A CN 202011501954A CN 112688999 B CN112688999 B CN 112688999B
Authority
CN
China
Prior art keywords
key
file
module
fek
tsk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011501954.2A
Other languages
English (en)
Other versions
CN112688999A (zh
Inventor
任正伟
李鑫
陈小双
李晓娟
张凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Science and Engineering WUSE
Original Assignee
Wuhan University of Science and Engineering WUSE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University of Science and Engineering WUSE filed Critical Wuhan University of Science and Engineering WUSE
Priority to CN202011501954.2A priority Critical patent/CN112688999B/zh
Publication of CN112688999A publication Critical patent/CN112688999A/zh
Application granted granted Critical
Publication of CN112688999B publication Critical patent/CN112688999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明提供一种云存储模式下基于TRUSTZONE的密钥使用次数管理方法及系统,基于TRUSTZONE技术在数据属主DO端和数据使用者DU端分别构建以Linux为普通执行环境REE和以OP‑TEE为可信执行环境TEE的系统环境,私密信息及相关操作都由运行在TEE中的可信应用TA处理,其他的非敏感操作和文件由运行在REE中的客户端应用CA处理,CA使用API与TA通信;在密钥使用方面,将密钥使用次数与安全文件读取次数相绑定,并且通过对密钥使用次数进行安全存储和完整性校验防止被破坏,确保解决密钥分发之后因无限制使用导致的安全问题。本发明能在云存储模式下,有效保证密钥的安全存储和文件的机密性、控制和管理授权用户对密钥的使用次数,防止用户对密钥的无保护、无限制使用而破坏文件的机密性。

Description

云存储模式下基于TrustZone的密钥使用次数管理方法及 系统
技术领域
本发明涉及计算机信息安全技术领域,主要内容为在云存储模式下基于TrustZone来管理数据加密密钥,利用TrustZone实现密钥在数据使用者端的安全存储和使用次数受限制,从而保护外包数据的机密性。
背景技术
作为云计算的重要组成部分,云存储专注于向用户提供以互联网为基础的在线存储服务。在云存储模式下,存储即服务,用户无需考虑物理设备的存储类型、存储方式以及数据的可用性、可靠性等具体的技术细节,却能按需从云服务提供商(Cloud ServiceProvider,CSP)处获得相应的服务,随时随地访问自己的数据。云存储能在提高IT效率、成本节省以及绿色计算等方面带来机遇,同时也面临着一些安全挑战。
在云存储模式下,数据托管存储于第三方CSP处,脱离了数据属主(Data Owner,DO)的控制范围,其安全性高度依赖于CSP。考虑到CSP不可信,为保护数据的机密性,DO可先对明文数据加密,再将密文数据存储于CSP处,密钥则由DO自己保管。此时,密钥的安全存储和使用就是保护数据机密性的关键所在。首先,密钥在DO端和数据使用者(Data User,DU)端都应当是安全存储的,防止因密钥泄漏而导致数据机密性被破坏。其次,密钥在DU端的使用应当是受限制的,即应控制DU对密钥的使用,防止因DU对密钥的无限制使用而可能导致安全策略被破坏或数据泄露。
专利文献CN103138939B提出了一种云存储模式下基于可信平台模块的密钥使用次数管理方法,在数据拥有者Owner端设置可信平台模块TPMo、密钥管理守护进程模块KMD和加密模块DE,数据使用者User端设置可信平台模块TPMu、虚拟计数器管理模块VCM和密钥管理模块KM;数据拥有者Owner对数据进行加密处理,并将加密后的密文数据上传到云服务提供商CSP的服务器中;数据使用者User端对密钥使用次数进行管理。
该发明利用可信平台模块的密钥管理和安全存储功能,使得密钥能够安全存储和传输;利用可信平台模块的单调计数器功能,通过对密钥的使用次数与单调递增的虚拟计数器值的绑定和判断,管理和控制密钥的使用次数,从而有效解决了密钥的无限制使用而导致的安全问题。
但是,其不足在于:其一,实现该方法的基础是可信平台模块TPM,但TPM是一个外置在计算机主板上的芯片,有些用户设备可能没有TPM芯片;其二,受制于价格和工艺等因素,TPM只提供了少量的硬件计数器,而且对TPM硬件计数器的快速连续更新会造成阻塞,降低程序性能。虽然该方法采用虚拟计数器的方式解决了TPM硬件计数器数量少的问题,但是每一次对虚拟计数器的更新操作依然会更新TPM硬件计数器,依然存在着性能下降明显的问题;其三,在该方法中,数据密钥的加解密在TPM内部完成,但是使用密钥解密来自云服务器的密文数据是在普通内存环境中完成的,来自操作系统或者具有更高权限的程序的攻击可能会导致密钥泄漏。
因此,本领域亟待新的云存储模式下密钥使用次数管理技术方案出现。
发明内容
本发明要解决的技术问题是:提供一种云存储模式下基于TrustZone的密钥使用次数管理方法及系统,该方法及其系统实现能够有效地保证密钥的安全存储和数据的机密性、控制和管理授权用户对密钥的使用,防止用户对密钥的无保护、无限制使用而破坏数据的机密性。
本发明解决其技术问题采用的技术方案是一种云存储模式下基于TrustZone的密钥使用次数管理方法,基于TrustZone技术在数据属主DO端和数据使用者DU端分别构建以Linux为普通执行环境REE和以OP-TEE为可信执行环境TEE的系统环境,私密信息及相关操作都由运行在TEE中的可信应用TA处理,其他的非敏感操作和文件则由运行在REE中的客户端应用CA处理,CA使用OP-TEE提供的应用编程接口API与TA通信,以确保CA不会破坏TA中文件和应用的完整性和机密性;在密钥使用方面,将密钥的使用次数与安全文件的读取次数相绑定,并且通过对密钥使用次数进行安全存储和完整性校验防止被破坏,从而确保解决密钥分发之后因无限制使用而导致的安全问题。
而且,所述数据属主DO端设置密钥守护进程模块KDM、密钥迁出模块KMOM、文件加密模块FEM和文件上传模块FUM,密钥守护进程模块KDM和文件加密模块FEM位于DO端的可信应用TA中,密钥迁出模块KMOM和文件上传模块FUM位于DO端的客户端应用CA中;所述数据使用者DU端设置安全文件管理模块SFMM、密钥处理模块KPM、密钥迁入模块KMIM、文件解密模块FDM和文件处理模块FPM;安全文件管理模块SFMM、密钥处理模块KPM和文件解密模块FDM位于DU端的可信应用TA中,密钥迁入模块KMIM和文件处理模块FPM位于DU端的客户端应用CA中。
而且,所述数据属主DO端中,
密钥守护进程模块KDM,用于生成对称的文件加密密钥FEK和可信应用存储密钥TSK_DO,将FEK传递给文件加密模块FEM;将FEK与文件进行关联,用TSK_DO对FEK进行加密和解密,将FEK与文件的对应关系、密文状态下的文件加密密钥ETSK_DO(FEK)传递给密钥迁出模块KMOM,或从KMOM接收FEK与文件的对应关系、ETSK_DO(FEK);接收来自密钥迁出模块KMOM的非对称密钥,用非对称密钥对FEK及最大使用次数TIMES加密,将加密后的FEK及TIMES传递给密钥迁出模块KMOM;
密钥迁出模块KMOM,用于与密钥守护进程模块KDM交互,与本地文件系统交互,将从密钥守护进程模块KDM传出的ETSK_DO(FEK)存储到本地文件系统,或从本地文件系统读取ETSK_DO(FEK)并传递给密钥守护进程模块KDM;与数据使用者DU端的密钥迁入模块KMIM交互,接收密钥迁入模块KMIM发出的密钥迁移请求,将加密后的FEK及最大使用次数TIMES传递给密钥迁入模块KMIM,实现FEK及TIMES的迁出;
文件加密模块FEM,用于与密钥守护进程模块KDM交互获得文件加密密钥FEK,用对称加密算法和FEK对来自文件上传模块FUM的明文数据进行加密,将密文数据返回给FUM;
文件上传模块FUM,用于读取存储在本地文件系统中的明文数据,并将明文数据传递给文件加密模块FEM,从FEM处获得加密后的密文数据,将密文数据上传给云服务提供商CSP。
而且,所述数据使用者DU端中,
安全文件管理模块SFMM,用于管理和操作安全文件SF包括为每个FEK创建一个相对应的SF,并返回SF的标识符SF_ID;根据SF_ID获取对应SF的当前读取次数SF_VALUE;对SF的当前读取次数SF_VALUE进行步长为1的累加;从密钥迁入模块KMIM处获得SF,并从SF中读取密文状态下的FEK及TIMES信息ETSK_DU(KeyInfo);将ETSK_DU(KeyInfo)写入SF,并将SF传给密钥迁入模块KMIM;销毁SF_ID对应的SF;
密钥处理模块KPM,用于生成非对称的公私钥对,用非对称密钥对来自于密钥迁入模块KMIM的处于密文状态下的FEK及最大使用次数TIMES进行解密;接受来自文件解密模块FDM的解密请求,并将请求传递给KMIM;生成对称的可信应用存储密钥TSK_DU,用TSK_DU对FEK及TIMES进行加密和解密;与安全文件管理模块SFMM交互,将ETSK_DU(KeyInfo)传递给安全文件管理模块SFMM,或从SFMM接收ETSK_DU(KeyInfo),从SFMM处获取FEK对应的安全文件SF的当前读取次数;对FEK的使用条件进行判断,若FEK能够用,则将FEK传递给文件解密模块FDM,并在使用完后用TSK_DU对FEK及TIMES再次进行加密,若FEK的使用条件不满足,则将FEK对应的安全文件SF的标识SF_ID传递给SFMM,向SFMM发出销毁MC的指令,并向FDM返回密钥加载失败的信息;
密钥迁入模块KMIM,用于与DO端的密钥迁出模块KMOM交互,向KMOM发出密钥迁移请求;与密钥处理模块KPM交互,将加密后的FEK及MAX_TIMES传递给密钥处理模块KP,实现FEK及TIMES的迁入;将来自于安全文件管理模块SFMM的安全文件存储到本地文件系统;接收来自密钥处理模块KPM的密钥加载请求,将从本地文件系统读取的安全文件传递给SFMM;
文件解密模块FDM,用于与密钥处理模块KPM交互获得FEK,用对称加密算法和FEK对来自于文件处理模块FPM的密文数据进行解密,将明文数据返回给FPM;
文件处理模块FPM,用于与云服务提供商CSP交互,从CSP处获得密文数据;与文件解密模块FDM交互,将密文数据传递给FDM,并接收FDM返回的明文数据。
而且,在数据属主DO端对数据的处理阶段,数据属主DO对数据进行加密处理,并将加密后的数据上传到云服务提供商CSP的服务器中,采用以下子步骤实现,
A1)文件上传模块FUM从本地文件系统读取待加密的明文文件File,将其标识符记为IDFile,将IDFile及File发送给文件加密模块FEM,请求FEM对File加密;
A2)文件加密模块FEM将IDFile传递给密钥守护进程模块KDM,请求KDM为IDFile对应的文件File生成对称的文件加密密钥;
A3)密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成一个长度为128比特的对称的文件加密密钥FEK,并且同时生成一个长度为128比特的对称的可信应用存储密钥TSK_DO,KDM将FEK传给文件加密模块FEM;
A4)文件加密模块FEM采用AES加密算法的GCM模式通过FEK加密File,得到密文文件EFEK(File),KDM将EFEK(File)传递给文件上传模块FUM;
A5)文件上传模块FUM将密文文件EFEK(File)及标识IDFile上传到云服务提供商CSP的服务器中;
A6)密钥守护进程模块KDM采用AES加密算法的ECB模式通过TSK_DO加密FEK,得到密文文件ETSK_DO(FEK),KDM将IDFile与ETSK_DO(FEK)进行关联,并将IDFile与ETSK_DO(FEK)传给密钥迁出模块KMOM;
A7)密钥迁出模块KMOM按照对应关系将IDFile与ETSK_DO(FEK)存储在本地文件系统中。
而且,在密钥从数据属主DO端迁移到数据使用者DU端阶段,将文件加密密钥FEK及最大使用次数TIMES从数据属主DO端迁移到数据使用者DU端,采用以下子步骤实现,
B1)DO端的密钥迁出模块KMOM验证DU的身份和访问权限,若验证通过,KMOM为DU生成文件访问授权证书CertFile,并向DU端的密钥迁入模块KMIM发送准备密钥迁移的信息;
B2)DU端的密钥迁入模块KMIM向DU端的KPM密钥处理模块KPM发起文件加密密钥迁入请求;
B3)DU端的密钥处理模块KPM调用OP-TEE提供的非对称密钥生成方法tee_cryp_obj_rsa_keypair_attrs()生成非对称密钥对AsyKey,并将AsyKey的公钥部分AsyKey_pub返回给KMIM;
B4)DU端的密钥迁入模块KMIM将AsyKey_pub发送给数据属主DO端的密钥迁出模块KMOM;
B5)DO端的密钥迁出模块KMOM根据IDFile从本地文件系统中读取对应的密文状态下的文件加密密钥ETSK_DO(FEK),将ETSK_DO(FEK)和AsyKey_pub一起传给DO端的密钥守护进程模块KDM;
B6)DO端的密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DO,采用AES加密算法的ECB模式通过TSK_DO解密ETSK_DO(FEK),得到明文状态下的文件加密密钥FEK,KDM根据DO的指定为FEK生成其最大使用次数TIMES,将FEK与TIMES进行串联得到FEK||TIMES;
B7)DO端的密钥守护进程模块KDM用AsyKey_pub对FEK||TIMES加密,得到密文文件EAsyKey_pub(FEK||TIMES);
B8)DO端的密钥迁出模块KMOM将CertFile、IDFile和EAsyKey_pub(FEK||TIMES)发送给DU端的密钥迁入模块KMIM;
B9)DU端的密钥迁入模块KMIM将CertFile、IDFile进行关联后存储在本地文件系统中,将IDFile、EAsyKey_pub(FEK||TIMES)传给DU端的密钥处理模块KPM。
而且,在密钥在数据使用者DU端的使用阶段,分为密钥预处理阶段和密钥受限使用阶段,通过密钥绑定安全文件子流程、密钥加载子流程和密钥存储子流程实现,
所述密钥预处理阶段,包括DU端与DO端交互执行完密钥迁移流程后,DU端执行一次密钥绑定安全文件子流程,并接着执行一次密钥存储子流程;
所述密钥受限使用阶段,包括DU端在执行密钥迁移流程和密钥预处理阶段后,执行密钥加载子流程,
若密钥加载成功,则DU端的密钥处理模块KPM将FEK传给DU端的文件解密模块FDM,DU端的文件解密模块FDM采用AES加密算法的GCM模式通过FEK解密得到明文文件File,将File返回给DU端的文件处理模块FPM,并向DU端的密钥处理模块KPM反馈文件访问成功的信息;DU端执行密钥存储子流程;
若密钥加载失败,并且密钥加载失败的相关信息为密钥已经超过最大使用次数,则需需重新执行密钥迁移流程从DO端获取密文形式的FEK,并通过密钥预处理阶段在本地安全存储密钥。
而且,所述密钥绑定安全文件子流程程,包括以下步骤,
C1)DU端的密钥处理模块KPM利用AsyKey的私钥AsyKey_pri解密EAsyKey_pub(FEK||TIMES)得到FEK和TIMES,通过释放内存的方式销毁AsyKey_pri;
C2)DU端的密钥处理模块KPM向DU端的安全文件管理模块SFMM发起创建安全文件SF的请求;
C3)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件创建方法g_SecStorCa_CreateFile()为FEK创建一个安全文件SF,并创建变量SF_VALUE以记录SF的当前读取次数;SFMM将SF_VALUE的初始值置为0,并将SF的标识SF_ID和SF_VALUE值传给DU端的密钥处理模块KPM;
C4)DU端的密钥处理模块KPM创建变量VALUE_THIS以记录安全文件SF的读取次数,并将获得的SF_VALUE值赋值给VALUE_THIS;
所述密钥加载子流程,包括以下步骤,
D1)DU端的密钥迁入模块KMIM根据IDFile从本地文件系统中读取对应的安全文件SF;若安全文件SF读取失败,则返回对应的密钥加载失败信息;否则将安全文件SF及其标识SF_ID一起传给DU端的安全文件管理模块SFMM;
D2)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件读取方法g_SecStorCa_ReadFile()读取安全文件SF内的ETSK_DU(KeyInfo),并将SF_ID和ETSK_DU(KeyInfo)传给DU端的密钥处理模块KPM;
D3)DU端的密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU解密ETSK_DU(KeyInfo),得到FEK、TIMES、VALUE_THIS、SF_ID和digest;
D4)DU端的密钥处理模块KPM计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest’=hash(FEK||TIMES||VALUE_THIS||SF_ID);KPM判断digest’与digest是否相同,若digest’不等于digest,说明文件系统中的文件被损坏了,返回对应的密钥加载失败信息;否则,执行D5);
D5)DU端的密钥处理模块KPM将SF_ID传递给DU端的安全文件管理模块SFMM;
D6)DU端的安全文件管理模块SFMM获取SF_ID对应的安全文件SF的当前读取次数SF_VALUE,将SF_VALUE返回给DU端的密钥处理模块KPM;
D6)DU端的密钥处理模块KPM比较刚获得的SF的读取次数SF_VALUE与先前存储的值VALUE_THIS,若SF_VALUE不等于VALUE_THIS,说明受到了重放攻击,返回对应的密钥加载失败信息;否则,执行D8);
D8)DU端的密钥处理模块KPM比较SF_VALUE和TIMES,若SF_VALUE>TIMES,说明FEK当前的使用次数已经超过了其最大使用次数,返回对应的密钥加载失败信息;否则,返回密钥加载成功信息,并将FEK传给DU端的文件解密模块FDM;
所述密钥存储子流程,包括以下步骤,
E1)DU端的密钥处理模块KPM将安全文件SF的标识SF_ID传递给DU端的安全文件管理模块SFMM;
E2)DU端的安全文件管理模块SFMM将SF_ID对应的安全文件SF的读取次数SF_VALUE的值加1,并将增加后的SF_VALUE值传给KPM;
E3)DU端的密钥处理模块KPM将获得的SF_VALUE值赋值给VALUE_THIS,并计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest=hash(FEK||TIMES||VALUE_THIS||SF_ID);
E4)DU端的KPM密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU加密FEK、TIMES、VALUE_THIS、SF_ID和digest,得到ETSK_DU(KeyInfo);KPM将IDFile、SF_ID、ETSK_DU(KeyInfo)关联后一起传给DU端的安全文件管理模块SFMM;
E5)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件写入方法g_SecStorCa_WiteFile()将ETSK_DU(KeyInfo)写入安全文件SF,从而覆盖安全文件原有内容,并将安全文件SF及其标识SF_ID与IDFile关联后一起传给DU端的密钥迁入模块KMIM;
E6)DU端的密钥迁入模块KMIM按照对应关系将IDFile、SF_ID和安全文件SF存储在本地文件系统中。
本发明的另一目的在于提供一种实现所述云存储模式下基于TrustZone的密钥使用次数管理方法的系统,包括数据属主DO端和数据使用者DU端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述云存储模式下基于TrustZone的密钥使用次数管理方法。
本发明与现有技术相比具有以下的主要优点:
(1)克服现有技术局限,首次提出将TrustZone技术应用到云存储模式下的密钥管理和数据处理中,在TrustZone的安全世界SW中构建可信执行环境TA,密钥的生成、密封、解密封、使用都是由TA在TEE中处理的,从而有效地保护了密钥及实现了密钥的安全存储。在专利文献CN103138939B所述方法中,密钥的加解密是在TPM内部完成,但是受限于TPM的运算能力,密钥的使用(即使用密钥解密来自云服务的数据)过程是在普通内存中进行的,来自操作系统或者具有更高权限的程序的攻击可能会导致密钥泄漏。本发明中,不仅密钥的加解密是在可信执行环境中进行的,密钥的使用也是在可信执行环境中进行,从而增强了系统的安全性。
(2)专利文献CN103138939B将密钥的使用次数与单调递增的虚拟计数器相绑定,虽然能够解决密钥分发之后因无限制使用而导致的安全问题,但是使用虚拟计数器依赖于物理计数器来保证其单调性和安全性,本发明将密钥的使用次数与安全文件读取次数相绑定并且通过对使用次数进行安全存储和完整性校验使得其不被破坏,从而确保了密钥的使用是受限制的,通过可信执行环境中的安全文件管理模块SFMM实现密钥使用次数的限制,不依赖于其他外置芯片,提高了可移植性。
总之,本发明利用TrustZone技术构建可信执行环境和可信应用,使得密钥能够安全存储和使用;利用TrustZone提供的安全文件功能,通过对密钥的使用次数与安全文件当前读取次数的绑定和判断,管理和控制密钥的使用次数,从而有效解决了密钥的无限制使用而导致的安全问题。
附图说明
图1是本发明实施例的云存储模式下基于TrustZone的密钥使用次数管理系统框架图。
图2是本发明实施例的密钥迁移过程图。
图3是本发明实施例的密钥在DU端的使用流程图。
图4是本发明实施例的密钥绑定安全文件子流程图。
图5是本发明实施例的密钥加载子流程图。
图6是本发明实施例的密钥存储子流程图。
具体实施方式
以下结合附图和实施例具体说明本发明技术方案。
本发明考虑到现有技术缺陷,提出将TrustZone技术应用到云存储模式下的密钥管理和数据处理中。
本发明注意到,TrustZone技术是ARM公司提出的一种硬件安全扩展技术,支持用户自主开发、设计特定的安全系统,目前被移动嵌入式设备广泛支持。TrustZone技术通过处理器扩展将整个ARM片上系统划分为2个物理隔离的执行区域:正常世界(Normal World,NW)和安全世界(Secure World,SW),并通过安全监视器(secure monitor)控制NW和SW的切换。NW和SW具有独立的系统资源,包括寄存器、物理内存、外设,但SW具有更高特权级,SW中的代码和资源受到严格的访问控制策略保护。SW通常用于实现可信执行环境(TrustedExecution Environment,TEE)、执行定制的安全操作系统(Operation System,OS)以及运行少量敏感的安全任务;而NW用于实现普通执行环境(Rich Execution Environment,REE),可以运行通用OS和普通应用程序。运行在TEE中的应用称之为可信应用(TrustedApplication,TA),运行在REE中的应用称之为客户端应用(Client Application,CA)。CA通过规范的TEE客户端命令接口与TA通信,并且从TA获取安全服务,从而避免系统中恶意软件的攻击,保护文件及计算的完整性和机密性。
因此,本发明提出,基于TrustZone技术在在数据属主DO端和数据使用者DU端分别搭建了以Linux为普通执行环境(Rich Execution Enviroment,REE)和以OP-TEE(Open-source Portable Trusted Execution Environmen)为可信执行环境(Trusted ExecutionEnviroment,TEE)的系统环境,设计并实现了运行在REE中的客户端应用CA、运行在TEE中的可信应用TA。私密信息及其相关操作都由TA处理,包括密钥的生成、密封、解密封,用密钥明文加解密文件等;其他的非敏感操作和文件则由CA处理,包括网络交互、本地文件系统的访问等。CA使用OP-TEE提供的应用编程接口(Application Programming Interface,API)与TA通信,以确保CA不会破坏TA中文件和应用的完整性和机密性。
本发明提出了一种云存储模式下基于TrustZone的密钥使用次数管理方法,包括数据属主DO、云服务提供商CSP、数据使用者DU这3个参与方,总体流程为:数据使用者DU需要访问DO存储于CSP处的文件时,向DO发起文件访问请求,从DO处获取授权证书、密钥及其最大使用次数。DU将授权证书出示给CSP,从CSP处获取到密文文件。DU端在解密文件前,对密钥的使用条件进行判断,如果密钥当前使用次数未超过其最大使用次数,则密钥可以被使用,并用密钥解密文件,将明文文件返回给应用程序。如果密钥已经超过了预定的最大使用次数,密钥将被安全地删除,并返回密钥加载失败信息,从而实现了对密钥使用次数的控制和文件机密性的保护。本发明提出的云存储模式下基于TrustZone的密钥使用次数管理方法及系统的架构如图1所示,主要包括以下模块:
密钥守护进程模块(Key Daemon Module,KDM)、密钥迁出模块(Key Migration-Out Module,KMOM)、文件加密模块(File Encryption Module,FEM)、文件上传模块(FileUpload Module,FUM)、安全文件管理模块(Security File Management Module,SFMM)、密钥处理模块(Key Processing Module,KPM)、密钥迁入模块(Key Migration-In Module,KMIM)、文件解密模块(File Decryption Module,FDMFDM)、文件处理模块(FileProcessing Module,FPM)。
其中:
数据属主DO端设置密钥守护进程模块KDM、密钥迁出模块KMOM、文件加密模块FEM、文件上传模块FUM;并且,KDM和FEM位于DO端的可信应用TA中,KMOM和FUM位于DO端的客户端应用CA中。和CN103138939B所述的方法相比,本发明在DO端模块设置不同。在CN103138939B中,密钥管理守护进程模块KMD不仅需要执行密钥迁移协议将密钥发送给数据使用者User,还需要提供密钥生成功能,此时密钥生成于普通执行环境,来自操作系统或者具有更高权限的程序的攻击可能会导致密钥泄漏,本发明添加了密钥迁出模块KMOM,实现DO端的密钥迁移过程,并且将密钥守护进程模块KDM和文件加密模块FEM置于可信执行环境中,密钥的生成和使用都是在可信执行环境中完成,进一步提高安全性。
数据使用者DU端设置安全文件管理模块SFMM、密钥处理模块KPM、密钥迁入模块KMIM、文件解密模块FDM和文件处理模块FPM;并且,SFMM、KPM和FDM位于DU端的可信应用TA中,KMIM和FPM位于DU端的客户端应用CA中。专利文献CN103138939B中密钥管理模块KM不仅需要执行密钥迁移协议从数据拥有者Owner处获取密钥,还需要提供解密功能,此时在普通执行环境中进行解密会将文件加密密钥暴露于普通执行环境,来自操作系统或者具有更高权限的程序的攻击可能会导致密钥泄漏,相对于专利文献CN103138939B,本发明增加了密钥迁入模块KMIM,实现DU端的密钥迁移过程,并且将安全文件管理模块SFMM、密钥处理模块KPM和文件处理模块FPM置于可信执行环境中,密钥的加载和使用过程在可信执行环境进行,进一步提高安全性。
上述各功能模块的主要功能为:
密钥守护进程模块KDM:生成对称的文件加密密钥(File Encryption Key,FEK)和可信应用存储密钥TSK_DO(Trusted Applicant Storage Key),将FEK传递给文件加密模块FEM;将FEK与文件进行关联,用TSK_DO对FEK进行加密和解密,将FEK与文件的对应关系、密文状态下的FEK(即ETSK_DO(FEK))传递给密钥迁出模块KMOM,或从KMOM接收FEK与文件的对应关系、ETSK_DO(FEK);接收来自密钥迁出模块KMOM的非对称密钥,用非对称密钥对FEK及其最大使用次数TIMES(TIMES由DO根据需要指定)加密,将加密后的FEK及TIMES传递给KMOM。在CN103138939B中,密钥管理守护进程模块KMD所处的执行环境为普通执行环境。而在本发明中,密钥守护进程模块KDM位于可信执行环境,这样设计的好处是密钥明文不会暴露在普通内存环境中,能更有效地防止密钥泄漏。
密钥迁出模块KMOM:与密钥守护进程模块KDM交互,与本地文件系统交互,将从KDM传出的ETSK_DO(FEK)存储到本地文件系统,或从本地文件系统读取ETSK_DO(FEK)并传递给KDM;与DU端的密钥迁入模块KMIM交互,接收KMIM发出的密钥迁移请求,将加密后的FEK及TIMES传递给KMIM,实现FEK及TIMES的迁出。和现有技术CN103138939B现有技术相比,本发明在DO端添加了密钥迁出模块KMOM。因为密钥守护进程模块KDM位于可信执行环境内,由于可信执行环境TEE的安全性设计,其不能直接和文件系统交互,所以需要处于普通内存环境中的KMOM来传递数据。
文件加密模块FEM:与密钥守护进程模块KDM交互获得FEK,用对称加密算法和FEK对来自文件上传模块FUM的明文文件进行加密,将密文文件返回给FUM。在专利文献CN103138939B中,对应的数据加密模块DE位于普通执行环境中,本发明将FEM放置于可信执行环境中,能够有效地提高密钥的安全性。
文件上传模块FUM:读取存储在本地文件系统中的明文数据并将明文文件传递给文件加密模块FEM,从FEM处获得加密后的密文文件,将密文文件上传给云服务提供商CSP。在密文数据上传至CSP后,将明文数据从本地文件系统删除。和现有技术相比,FUM是本发明在DO端添加的一个模块。在CN103138939B中,数据加密模块位于普通内存环境,可以直接和文件系统交互,但也导致密钥使用环境不安全。在本发明中,文件加密模块FEM在可信执行环境中,不能直接和文件系统交换数据,需要FUM来协助完成它们之间的数据传递。
在专利文献CN103138939B中,密钥管理守护进程模块KMD提供密钥生成功能,接受数据使用者User的密钥请求,并与User的密钥管理模块KM交互执行密钥迁移协议将密钥发送给User,数据加密模块DE,提供数据加密功能,将数据用对称密码加密后上传给云服务提供商CSP。本发明将各模块功能进一步划分,将密钥生成功能放在密钥守护进程模块KDM中,将文件加密功能放在文件加密模块FEM中,KDM和FEM都处于可信执行环境中,在隔离机制的保护下,能够为密钥生成和文件加密提供更高的安全性。
安全文件管理模块SFMM:用来管理和操作安全文件(Security File,SF),包括:为每个FEK创建一个相对应的SF,并返回SF的标识符SF_ID;根据SF_ID获取对应SF的当前读取次数SF_VALUE;对SF的当前读取次数SF_VALUE进行步长为1的累加;从密钥迁入模块KMIM处获得SF,并从SF中读取密文状态下的FEK及TIMES信息(即ETSK_DU(KeyInfo));将ETSK_DU(KeyInfo)写入SF,并将SF传给密钥迁入模块KMIM;销毁SF_ID对应的SF。在专利文献CN103138939B中,虚拟计数器依赖于物理计数器来保证其单调性和安全性,本发明将密钥的使用次数与安全文件读取次数相绑定,并且通过对安全文件读取次数进行安全存储和完整性校验使得其不被破坏,从而确保了密钥的使用是受限制的,通过可信执行环境中的安全文件管理模块SFMM实现密钥使用次数的限制,不依赖于其他外置芯片,提高了可移植性。
密钥处理模块KPM:生成非对称的公私钥对,用非对称密钥对来自于密钥迁入模块KMIM的处于密文状态下的FEK及其最大使用次数TIMES进行解密;接受来自文件解密模块FDM的解密请求,并将请求传递给KMIM;生成对称的可信应用存储密钥TSK_DU,用TSK_DU对FEK及TIMES进行加密和解密;与安全文件管理模块SFMM交互,将ETSK_DU(KeyInfo)传递给安全文件管理模块SFMM,或从SFMM接收ETSK_DU(KeyInfo),从SFMM处获取FEK对应的安全文件SF的当前读取次数;对FEK的使用条件进行判断,若FEK可用,则将FEK传递给文件解密模块FDM,并在使用完后用TSK_DU对FEK及TIMES再次进行加密,若FEK的使用条件不满足,则将FEK对应的安全文件SF的标识SF_ID传递给SFMM,向SFMM发出销毁MC的指令,并向FDM返回密钥加载失败的信息。和现有技术将密钥管理模块置于普通内存环境中相比,本发明将密钥处理模块放置于可信执行环境中,因此密钥明文不会出现在普通执行环境中,提高了密钥的机密性,进而提高了数据的机密性。
密钥迁入模块KMIM:与DO端的密钥迁出模块KMOM交互,向KMOM发出密钥迁移请求;与密钥处理模块KPM交互,与本地文件系统交互,将加密后的FEK及TIMES传递给KPM,实现FEK及TIMES的迁入;将来自于安全文件管理模块SFMM的安全文件存储到本地文件系统;接收来自密钥处理模块KPM的密钥加载请求,将从本地文件系统读取的安全文件传递给SFMM。和现有技术相比,本发明在DU端添加了密钥迁入模块KMIM。因为密钥处理模块KPM位于可信执行环境内,由于可信执行环境TEE的安全性设计,其不能直接和文件系统交互,所以需要处于普通内存环境中的KMIM来传递数据。
文件解密模块FDM:与密钥处理模块KPM交互获得FEK,用对称加密算法和FEK对来自于文件处理模块FPM的密文文件进行解密,将明文文件返回给FPM。和现有技术相比,使用密钥执行解密操作发生在可信执行环境中而不是在普通执行环境,密钥明文不会出现在普通执行环境中,提高了密钥的机密性。
文件处理模块FPM:与云服务提供商CSP交互,从CSP处获得密文文件;与本地文件系统交互,将从CSP获得的密文数据存储在本地文件系统中,后续DU需要解密密文数据时,则直接从本地文件系统中读取密文数据;与文件解密模块FDM交互,将密文文件传递给FDM,并接收FDM返回的明文文件。和现有技术相比,FPM是本发明在DU端添加的一个模块。在CN103138939B中,数据加密模块位于普通内存环境,可以直接和文件系统交互,但也导致密钥使用环境不安全。在本发明中,文件解密模块FDM在可信执行环境中,不能直接和文件系统交换数据,需要FPM来协助完成它们之间的数据传递。
本发明的系统工作流程在现有技术基础上进行了改进,为了实现云存储模式下的密钥使用次数管理,流程框架类似,如图1所示包括以下步骤:
1)数据使用者DO对数据进行加密处理,并将加密后的数据上传到云服务提供商CSP的服务器中。
2)当数据使用者DU要使用数据属主DO存储在云服务提供商CSP处的数据时,向DO发起文件访问请求。
3)数据属主DO验证数据使用者DU的身份和访问权限,如DU为非法用户或者对其不拥有访问权限的数据发起访问请求,则不响应DU的请求;否则,DO向DU颁发文件访问授权证书,并将文件访问授权证书、密钥及其最大使用次数等信息发送给DU。
4)数据属主DO将数据使用者DU的身份和访问权限等信息发送给云服务提供商CSP。
5)数据使用者DU向云服务提供商CSP发起文件访问请求,并将数据属主DO颁发的文件访问授权证书出示给CSP。
6)CSP根据DO提供的DU身份和访问权限,以及DU的文件访问请求及授权证书判断DU是否可以访问数据。若DU可以访问数据,则将密文数据发送给DU;否则,不响应DU的文件访问请求。
7)数据使用者DU从云服务提供商CSP处获取到密文数据后,通过从数据属主DO处获得的密钥解密访问数据。
但基于本发明提出的新的系统结构,本发明进一步提出:将密钥生成和加密解密等操作置于可信执行环境TEE中进行,普通执行环境REE进行文件的交换等操作,当CPU将操作环境切换为可信执行环境TEE时,普通执行环境REE将处于停滞状态,处于普通执行环境REE中的恶意程序无法访问可信执行环境TEE里面的内容,保证了敏感文件的机密性。
参见图2-6,本发明实施例所提供方法的工作流程作进一步说明。
1.数据属主DO端对数据的处理阶段:
上述系统工作流程中的1)为数据属主DO对数据的处理阶段,主要包括以下几个步骤:
1-1)文件上传模块FUM从本地文件系统读取待加密的明文文件File,将其标识符记为IDFile,将IDFile及File发送给文件加密模块FEM,请求FEM对File加密。
1-2)文件加密模块FEM将IDFile传递给密钥守护进程模块KDM,请求KDM为IDFile对应的文件File生成对称的文件加密密钥。
1-3)密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成一个长度为128比特的对称的文件加密密钥FEK,并且同时生成一个长度为128比特的对称的可信应用存储密钥TSK_DO(Trusted Applicant Storage Key)。KDM将FEK传给文件加密模块FEM。
1-4)文件加密模块FEM采用AES加密算法的GCM模式(Galois/Counter Mode)通过FEK加密File,得到密文文件EFEK(File)。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域加密方法TEE_CipherDoFinal()。KDM将EFEK(File)传递给文件上传模块FUM。
1-5)文件上传模块FUM将密文文件EFEK(File)及其标识IDFile上传到云服务提供商CSP的服务器中。
1-6)密钥守护进程模块KDM采用AES加密算法的电码本模式(ElectronicCodebook Book,ECB)通过TSK_DO加密FEK,得到密文文件ETSK_DO(FEK)。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域加密方法TEE_CipherDoFinal()。KDM将IDFile与ETSK_DO(FEK)进行关联,并将IDFile与ETSK_DO(FEK)传给密钥迁出模块KMOM。
1-7)密钥迁出模块KMOM按照对应关系将IDFile与ETSK_DO(FEK)存储在本地文件系统中。
和现有技术CN103138939B相比,在数据属主DO端对数据的处理阶段本发明的主要不同点在DO端程序的架构设计方面。CN103138939B中Owner端的密钥生成操作和使用密钥加密数据是在普通执行环境中执行的,只有在将密钥存储到本地文件系统的时候才会将密钥导入可信安全模块TPMo中进行加密然后将密钥密文保存。在本发明中,密钥的生成、密钥的使用以及密钥的加密存储都是在可信执行环境中执行,只有加密后的密钥密文才会传递到普通执行环境中存储到本地文件系统的操作,密钥明文不会暴露在普通执行环境中。另外,出于安全性设计的原因可信执行环境不能直接和文件系统交互,所以本发明在DO端还设计添加了一个密钥迁出模块KMOM,其位于普通执行环境中。基于同样的原因,本发明在DO端也设计了文件上传模块FUM来实现和可信执行环境中的文件加密模块FEM的数据交换。由FUM、KMOM和本地文件系统交互,完成数据存储。
2.密钥从数据属主DO端迁移到数据使用者DU端阶段:
上述系统工作流程的3)将文件加密密钥FEK及其最大使用次数TIMES从数据属主DO端迁移到数据使用者DU端,主要包括以下几个步骤,如图2所示:
3-1)DO端的密钥迁出模块KMOM验证DU的身份和访问权限,若DU为非法用户或者对其不拥有访问权限的文件发起访问请求,则验证失败,不响应DU的请求。若验证通过,KMOM为DU生成文件访问授权证书CertFile,并向DU端的密钥迁入模块KMIM发送准备密钥迁移的信息。
3-2)DU端的密钥迁入模块KMIM向DU端的KPM密钥处理模块KPM发起文件加密密钥迁入请求。
3-3)DU端的密钥处理模块KPM调用OP-TEE提供的非对称密钥生成方法tee_cryp_obj_rsa_keypair_attrs()生成非对称密钥对AsyKey,并将AsyKey的公钥部分AsyKey_pub返回给KMIM。
3-4)DU端的密钥迁入模块KMIM将AsyKey_pub发送给数据属主DO端的密钥迁出模块KMOM。
3-5)DO端的密钥迁出模块KMOM根据IDFile从本地文件系统中读取对应的密文状态下的文件加密密钥FEK,也即ETSK_DO(FEK),将ETSK_DO(FEK)和AsyKey_pub一起传给DO端的密钥守护进程模块KDM。
3-6)DO端的密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DO,采用AES加密算法的ECB模式通过TSK_DO解密ETSK_DO(FEK),得到明文状态下的文件加密密钥FEK。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域解密方法TEE_CipherDoFinal()。KDM根据DO的指定为FEK生成其最大使用次数TIMES,将FEK与TIMES进行串联得到FEK||TIMES。
3-7)DO端的密钥守护进程模块KDM用AsyKey_pub对FEK||TIMES加密,得到密文文件EAsyKey_pub(FEK||TIMES)。其中,加密过程依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的非对称加密方法TEE_AsymmetricEncrypt()。KDM将EAsyKey_pub(FEK||TIMES)返回给DO端的密钥迁出模块KMOM。
3-8)DO端的密钥迁出模块KMOM将CertFile、IDFile和EAsyKey_pub(FEK||TIMES)发送给DU端的密钥迁入模块KMIM。
3-9)DU端的密钥迁入模块KMIM将CertFile、IDFile进行关联后存储在本地文件系统中,将IDFile、EAsyKey_pub(FEK||TIMES)传给DU端的密钥处理模块KPM。
在专利文献CN103138939B中可信平台模块TPMu生成一个非对称密钥AsyKey,非对称密钥AsyKey的父密钥为可信平台模块TPMu的存储根密钥SRK,通过密钥迁移协议完成密钥的传输后,可信平台模块TPMo生成绑定密钥BindKey可信平台模块TPMo用绑定密钥BindKey的公钥BindKey_pub对字符串N||DEK加密,用公钥AsyKey_pub对绑定密钥BindKey加密,并通过密钥管理守护模块KMD发送给User端的密钥管理模块KM,完成加密密钥DEK的传输,整个过程需要依赖于TPM外置芯片来保证数据及密钥的机密性。本发明在密钥处理模块KPM中使用TrustZone架构下的API函数生成可靠的非对称密钥,在密钥守护进程模块KDM中使用AsyKey_pub对FEK||TIMES加密,整个过程在可信执行环境中完成,能够保证数据及密钥的机密性,且整个过程无需依赖TPM外置芯片,提高了整个系统方法的可移植性。
3.密钥在数据使用者DU端的使用阶段:
上述系统工作流程中的7)为文件加密密钥FEK在数据使用者DU端的安全存储和受限使用阶段,分为密钥预处理阶段和密钥受限使用阶段,包含了密钥绑定安全文件子流程、密钥加载子流程和密钥存储子流程。其中,密钥绑定安全文件子流程只有在DU端与DO端交互执行完密钥迁移流程后才会被执行一次,以将FEK与其对应的安全文件相绑定;在访问数据时则需要通过密钥加载子流程获得FEK的明文形式,以便对密文文件EFEK(File)进行解密;每次访问完数据后都需要执行密钥存储子流程以在本地安全存储FEK,需要指出的是,在执行完密钥绑定安全文件子流程后,也需要执行一次密钥存储子流程,以将FEK与IDFile进行关联后安全存储在本地文件系统中,在密钥受限使用阶段通过IDFile即可从本地文件系统中查找对应的密文状态下的FEK。
和现有技术CN103138939B相比,本发明在完成密钥迁移后,DU端需要先执行密钥预处理操作。在CN103138939B中,利用非对称密钥AsyKey完成密钥迁移操作后,还需要继续保留AsyKey用于User端对密钥的加密和解密操作。在本发明中,为了实现特定的功能使用特定的密钥,在完成密钥迁移后,DU端会销毁迁移密钥AsyKey。在预处理阶段,DU端会为密钥FEK绑定安全文件,并对FEK执行加密操作后保存到DU端本地文件系统。
3.1密钥预处理阶段
DU端与DO端交互执行完密钥迁移流程后需执行一次密钥绑定安全文件子流程,并接着执行一次密钥存储子流程,以从密文EAsyKey_pub(FEK||TIMES)中得到FEK和TIMES,并与安全文件进行绑定和以密文形式存储在本地文件系统中,该阶段是密钥迁移完成后必须进行的一个阶段,但尚未涉及到文件的访问,且在后续文件访问过程中不再被执行,因此可称之为密钥预处理阶段。其主要过程为:
7-0-1)DU端执行密钥绑定安全文件子流程,其过程为7-0-1-1)—7-0-1-4)。
7-0-2)DU端执行密钥存储子流程,其过程为7-9-1)—7-9-6)。
3.2密钥受限使用阶段
DU端在执行密钥迁移流程和密钥预处理阶段后,即在本地文件系统中安全存储了文件加密密钥FEK及其最大使用次数TIMES,之后便可在受限的条件下通过密钥访问文件。在访问文件的过程中,若发现密钥的使用条件不满足,即FEK当前使用次数已经超过了TIMES,则与FEK相绑定的安全文件将被安全销毁,FEK将无法加载成功。此时,若DU仍要访问文件,则需重新执行密钥迁移流程从DO端获取密文形式的FEK,并通过密钥预处理阶段在本地安全存储密钥。其工作流程如图3所示:
7-1)DU端的文件处理模块FPM将密文文件EFEK(File)及其标识IDFile传给DU端的文件解密模块FDM。
7-2)DU端的文件解密模块FDM将IDFile传给DU端的KPM密钥处理模块KPM,请求EFEK(File)对应的文件加密密钥FEK。
7-3)DU端的密钥处理模块KPM将IDFile传给DU端的密钥迁入模块KMIM。
7-4)DU端执行密钥加载子流程,其过程为7-4-1)—7-4-8)。在此过程中,若密钥加载成功,则转7-7)。若密钥加载失败,并且密钥加载失败的相关信息为密钥已经超过最大使用次数,则转7-5),否则转7-10)。
7-5)DU端的KPM密钥处理模块KPM将安全文件SF的标识SF_ID传给DU端的安全文件管理模块SFMM。
7-6)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件删除方法g_SecStorCa_DeleteFile()将SF_ID对应的安全文件SF删除,转7-10)。
7-7)DU端的密钥处理模块KPM将FEK传给DU端的文件解密模块FDM。
7-8)DU端的文件解密模块FDM采用AES加密算法的GCM模式通过FEK解密得到明文文件File。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域解密方法TEE_CipherDoFinal()。FDM将File返回给DU端的文件处理模块FPM,并向DU端的密钥处理模块KPM反馈文件访问成功的信息。
7-9)DU端执行密钥存储子流程,其过程为7-9-1)—7-9-6)。
7-10)文件访问流程结束。
和现有技术CN103138939B相比,本发明在DU端实现了对密钥使用环境与普通执行环境相隔离,以保护密钥的机密性。本发明中DU端解密数据的操作在可信执行环境内的文件解密模块FDM中执行,而在CN103138939B中User端对数据解密发生在普通执行环境中。为了支持向可信执行环境中的密钥处理模块KPM导入加密后的密钥,向可信执行环境中的文件解密模块FDM导入密文数据,本发明在普通执行环境中增添了密钥迁入模块KMIM和文件处理模块FPM,以此实现可信执行环境和本地文件系统之间的数据交互。
1)密钥绑定安全文件子流程,包括以下几个步骤,如图4所示:
7-0-1-1)DU端的密钥处理模块KPM利用AsyKey的私钥AsyKey_pri解密EAsyKey_pub(FEK||TIMES)得到FEK和TIMES。其中,解密过程依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的非对称解密方法TEE_AsymmetricDecrypt()。KPM通过释放内存的方式销毁AsyKey_pri。
7-0-1-2)DU端的密钥处理模块KPM向DU端的安全文件管理模块SFMM发起创建安全文件SF的请求。
7-0-1-3)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件创建方法g_SecStorCa_CreateFile()为FEK创建一个安全文件SF,并创建变量SF_VALUE以记录SF的当前读取次数。SFMM将SF_VALUE的初始值置为0,并将SF的标识SF_ID和SF_VALUE值传给DU端的密钥处理模块KPM。
7-0-1-4)DU端的密钥处理模块KPM创建变量VALUE_THIS以记录安全文件SF的读取次数,并将获得的SF_VALUE值赋值给VALUE_THIS。
在专利文献CN103138939B中虚拟计数器管理模块VCM创建虚拟单调计数器,依赖于外置TPM芯片提供的物理单调计数器,本发明使用安全文件管理模块SFMM创建安全文件SF,将密钥的使用次数与安全文件读取次数相绑定,并且通过对安全文件读取次数进行安全存储和完整性校验使得其不被破坏,从而确保了密钥的使用是受限制的,通过可信执行环境中的安全文件管理模块SFMM实现密钥使用次数的限制,不依赖于其他外置芯片,提高了可移植性。
2)密钥加载子流程,包括以下几个步骤,如图5所示:
7-4-1)DU端的密钥迁入模块KMIM根据IDFile从本地文件系统中读取对应的安全文件SF。若安全文件SF读取失败,则返回对应的密钥加载失败信息;否则将安全文件SF及其标识SF_ID一起传给DU端的安全文件管理模块SFMM。
7-4-2)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件读取方法g_SecStorCa_ReadFile()读取安全文件SF内的ETSK_DU(KeyInfo),并将SF_ID和ETSK_DU(KeyInfo)传给DU端的密钥处理模块KPM。
7-4-3)DU端的密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU解密ETSK_DU(KeyInfo),得到FEK、TIMES、VALUE_THIS、SF_ID和digest。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域解密方法TEE_CipherDoFinal()。
7-4-4)DU端的密钥处理模块KPM计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest’=hash(FEK||TIMES||VALUE_THIS||SF_ID)。其中,哈希值计算方法为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的数据填充方法TEE_DigestUpdate()、OP-TEE提供的数据计算方法TEE_DigestDoFinal()。KPM判断digest’与digest是否相同,若digest’不等于digest,说明文件系统中的文件被损坏了,返回对应的密钥加载失败信息;否则,执行7-4-5)。
7-4-5)DU端的密钥处理模块KPM将SF_ID传递给DU端的安全文件管理模块SFMM。
7-4-6)DU端的安全文件管理模块SFMM获取SF_ID对应的安全文件SF的当前读取次数SF_VALUE,将SF_VALUE返回给DU端的密钥处理模块KPM。
7-4-6)DU端的密钥处理模块KPM比较刚获得的SF的读取次数SF_VALUE与先前存储的值VALUE_THIS。若SF_VALUE不等于VALUE_THIS,说明受到了重放攻击,返回对应的密钥加载失败信息:否则,执行7-4-8)。
7-4-8)DU端的密钥处理模块KPM比较SF_VALUE和TIMES。若SF_VALUE>TIMES,说明FEK当前的使用次数已经超过了其最大使用次数,返回对应的密钥加载失败信息;否则,返回密钥加载成功信息,并将FEK传给DU端的文件解密模块FDM。
在密钥加载阶段,现有技术CN103138939B在User端的可信平台模块TPMu内部执行密文密钥的解密操作后,需要将密钥明文发送到普通执行环境中,然后判断密钥使用条件、使用或删除删除密钥,普通执行环境的安全性难以保证。在本发明中,对密钥的解密、密钥使用条件的判断、密钥删除都是在可信执行环境中完成,其安全性更高。
3)密钥存储子流程,包括以下几个步骤,如图6所示:
7-9-1)DU端的密钥处理模块KPM将安全文件SF的标识SF_ID传递给DU端的安全文件管理模块SFMM。
7-9-2)DU端的安全文件管理模块SFMM将SF_ID对应的安全文件SF的读取次数SF_VALUE的值加1,并将增加后的SF_VALUE值传给KPM。
7-9-3)DU端的密钥处理模块KPM将获得的SF_VALUE值赋值给VALUE_THIS,并计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest=hash(FEK||TIMES||VALUE_THIS||SF_ID)。其中,哈希值计算方法为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的数据填充方法TEE_DigestUpdate()、OP-TEE提供的数据计算方法TEE_DigestDoFinal()。
7-9-4)DU端的KPM密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU加密FEK、TIMES、VALUE_THIS、SF_ID和digest,得到ETSK_DU(KeyInfo)。其中,AES加密算法的实现为依次调用OP-TEE提供的句柄分配方法TEE_AllocateOperation()、OP-TEE提供的临时object空间分配方法TEE_AllocateTransientObject()、OP-TEE提供的结构体变量初始化方法TEE_InitRefAttribute()、OP-TEE提供的临时object空间填充方法TEE_PopulateTransientObjeck()、OP-TEE提供的操作句柄填充方法TEE_SetOperationKey()、OP-TEE提供的数据区域初始化方法TEE_CipherInit()、OP-TEE提供的数据区域填充方法TEE_CipherUpdate()、OP-TEE提供的数据区域加密方法TEE_CipherDoFinal()。KPM将IDFile、SF_ID、ETSK_DU(KeyInfo)关联后一起传给DU端的安全文件管理模块SFMM。
7-9-5)DU端的安全文件管理模块SFMM调用g_SecStorCa_WiteFile()方法将ETSK_DU(KeyInfo)写入安全文件SF,从而覆盖安全文件原有内容,并将安全文件SF及其标识SF_ID与IDFile关联后一起传给DU端的密钥迁入模块KMIM。
7-9-6)DU端的密钥迁入模块KMIM按照对应关系将IDFile、SF_ID和安全文件SF存储在本地文件系统中。
和现有技术CN103138939B相比,在密钥存储阶段,本发明对安全文件和明文密钥的处理都是在可信执行环境内完成,而且对密钥的加密和解密不需要在本地文件系统上存储额外的密钥数据;在CN103138939B中,对明文密钥DEK和已使用次数VC以及指定使用次数N使用哈希函数hash()计算摘要是在TPMu外完成的,可能导致密钥泄漏。而且对于密钥的安全存储和加载还需要在本地存储额外的密钥数据EAsyKey_pub(BindKey),如果EAsyKey_pub(BindKey)丢失则会导致密钥加载失败。
具体实施时,本发明技术方案提出的方法可由本领域技术人员采用计算机软件技术实现自动运行流程,实现方法的系统装置例如存储本发明技术方案相应计算机程序的计算机可读存储介质以及包括运行相应计算机程序的计算机设备,也应当在本发明的保护范围内。
在一些可能的实施例中,提供一种实现所述云存储模式下基于TrustZone的密钥使用次数管理方法的系统,包括数据属主DO端和数据使用者DU端。进一步地,所述数据属主DO端设置密钥守护进程模块KDM、密钥迁出模块KMOM、文件加密模块FEM和文件上传模块FUM,密钥守护进程模块KDM和文件加密模块FEM位于DO端的可信应用TA中,密钥迁出模块KMOM和文件上传模块FUM位于DO端的客户端应用CA中;所述数据使用者DU端设置安全文件管理模块SFMM、密钥处理模块KPM、密钥迁入模块KMIM、文件解密模块FDM和文件处理模块FPM;安全文件管理模块SFMM、密钥处理模块KPM和文件解密模块FDM位于DU端的可信应用TA中,密钥迁入模块KMIM和文件处理模块FPM位于DU端的客户端应用CA中。具体实现参见前文,本发明不予赘述。
在一些可能的实施例中,提供提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述云存储模式下基于TrustZone的密钥使用次数管理方法。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (7)

1.一种云存储模式下基于TrustZone的密钥使用次数管理方法,其特征在于:基于TRUSTZONE技术在数据属主DO端和数据使用者DU端分别构建以Linux为普通执行环境REE和以OP-TEE为可信执行环境TEE的系统环境,私密信息及相关操作都由运行在TEE中的可信应用TA处理,其他的非敏感操作和文件则由运行在REE中的客户端应用CA处理,CA使用OP-TEE提供的应用编程接口API与TA通信,以确保CA不会破坏TA中文件和应用的完整性和机密性;在密钥使用方面,将密钥的使用次数与安全文件的读取次数相绑定,并且通过对密钥使用次数进行安全存储和完整性校验防止被破坏,从而确保解决密钥分发之后因无限制使用而导致的安全问题;
所述数据属主DO端设置密钥守护进程模块KDM、密钥迁出模块KMOM、文件加密模块FEM和文件上传模块FUM,密钥守护进程模块KDM和文件加密模块FEM位于DO端的可信应用TA中,密钥迁出模块KMOM和文件上传模块FUM位于DO端的客户端应用CA中;所述数据使用者DU端设置安全文件管理模块SFMM、密钥处理模块KPM、密钥迁入模块KMIM、文件解密模块FDM和文件处理模块FPM;安全文件管理模块SFMM、密钥处理模块KPM和文件解密模块FDM位于DU端的可信应用TA中,密钥迁入模块KMIM和文件处理模块FPM位于DU端的客户端应用CA中;
所述数据属主DO端中,
密钥守护进程模块KDM,用于生成对称的文件加密密钥FEK和可信应用存储密钥TSK_DO,将FEK传递给文件加密模块FEM;将FEK与文件进行关联,用TSK_DO对FEK进行加密和解密,将FEK与文件的对应关系、密文状态下的文件加密密钥ETSK_DO(FEK)传递给密钥迁出模块KMOM,或从KMOM接收FEK与文件的对应关系、ETSK_DO(FEK);接收来自密钥迁出模块KMOM的非对称密钥,用非对称密钥对FEK及最大使用次数TIMES加密,将加密后的FEK及TIMES传递给密钥迁出模块KMOM;
密钥迁出模块KMOM,用于与密钥守护进程模块KDM交互,与本地文件系统交互,将从密钥守护进程模块KDM传出的ETSK_DO(FEK)存储到本地文件系统,或从本地文件系统读取ETSK_DO(FEK)并传递给密钥守护进程模块KDM;与数据使用者DU端的密钥迁入模块KMIM交互,接收密钥迁入模块KMIM发出的密钥迁移请求,将加密后的FEK及最大使用次数TIMES传递给密钥迁入模块KMIM,实现FEK及TIMES的迁出;
文件加密模块FEM,用于与密钥守护进程模块KDM交互获得文件加密密钥FEK,用对称加密算法和FEK对来自文件上传模块FUM的明文数据进行加密,将密文数据返回给FUM;
文件上传模块FUM,用于读取存储在本地文件系统中的明文数据,并将明文数据传递给文件加密模块FEM,从FEM处获得加密后的密文数据,将密文数据上传给云服务提供商CSP;所述数据使用者DU端中,
安全文件管理模块SFMM,用于管理和操作安全文件SF包括为每个FEK创建一个相对应的SF,并返回SF的标识符SF_ID;根据SF_ID获取对应SF的当前读取次数SF_VALUE;对SF的当前读取次数SF_VALUE进行步长为1的累加;从密钥迁入模块KMIM处获得SF,并从SF中读取密文状态下的FEK及TIMES信息ETSK_DU(KeyInfo);将ETSK_DU(KeyInfo)写入SF,并将SF传给密钥迁入模块KMIM;销毁SF_ID对应的SF;
密钥处理模块KPM,用于生成非对称的公私钥对,用非对称密钥对来自于密钥迁入模块KMIM的处于密文状态下的FEK及最大使用次数TIMES进行解密;接受来自文件解密模块FDM的解密请求,并将请求传递给KMIM;生成对称的可信应用存储密钥TSK_DU,用TSK_DU对FEK及TIMES进行加密和解密;与安全文件管理模块SFMM交互,将ETSK_DU(KeyInfo)传递给安全文件管理模块SFMM,或从SFMM接收ETSK_DU(KeyInfo),从SFMM处获取FEK对应的安全文件SF的当前读取次数;对FEK的使用条件进行判断,若FEK能够用,则将FEK传递给文件解密模块FDM,并在使用完后用TSK_DU对FEK及TIMES再次进行加密,若FEK的使用条件不满足,则将FEK对应的安全文件SF的标识SF_ID传递给SFMM,向SFMM发出销毁MC的指令,并向FDM返回密钥加载失败的信息;
密钥迁入模块KMIM,用于与DO端的密钥迁出模块KMOM交互,向KMOM发出密钥迁移请求;与密钥处理模块KPM交互,将加密后的FEK及MAX_TIMES传递给密钥处理模块KP,实现FEK及TIMES的迁入;将来自于安全文件管理模块SFMM的安全文件存储到本地文件系统;接收来自密钥处理模块KPM的密钥加载请求,将从本地文件系统读取的安全文件传递给SFMM;
文件解密模块FDM,用于与密钥处理模块KPM交互获得FEK,用对称加密算法和FEK对来自于文件处理模块FPM的密文数据进行解密,将明文数据返回给FPM;
文件处理模块FPM,用于与云服务提供商CSP交互,从CSP处获得密文数据;与文件解密模块FDM交互,将密文数据传递给FDM,并接收FDM返回的明文数据。
2.根据权利要求1所述云存储模式下基于TrustZone的密钥使用次数管理方法,其特征在于:在数据属主DO端对数据的处理阶段,数据属主DO对数据进行加密处理,并将加密后的数据上传到云服务提供商CSP的服务器中,采用以下子步骤实现,
A1)文件上传模块FUM从本地文件系统读取待加密的明文文件File,将其标识符记为IDFile,将IDFile及File发送给文件加密模块FEM,请求FEM对File加密;
A2)文件加密模块FEM将IDFile传递给密钥守护进程模块KDM,请求KDM为IDFile对应的文件File生成对称的文件加密密钥;
A3)密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成一个长度为128比特的对称的文件加密密钥FEK,并且同时生成一个长度为128比特的对称的可信应用存储密钥TSK_DO,KDM将FEK传给文件加密模块FEM;
A4)文件加密模块FEM采用AES加密算法的GCM模式通过FEK加密File,得到密文文件EFEK(File),KDM将EFEK(File)传递给文件上传模块FUM;
A5)文件上传模块FUM将密文文件EFEK(File)及标识IDFile上传到云服务提供商CSP的服务器中;
A6)密钥守护进程模块KDM采用AES加密算法的ECB模式通过TSK_DO加密FEK,得到密文文件ETSK_DO(FEK),KDM将IDFile与ETSK_DO(FEK)进行关联,并将IDFile与ETSK_DO(FEK)传给密钥迁出模块KMOM;
A7)密钥迁出模块KMOM按照对应关系将IDFile与ETSK_DO(FEK)存储在本地文件系统中。
3.根据权利要求2所述云存储模式下基于TrustZone的密钥使用次数管理方法,其特征在于:在密钥从数据属主DO端迁移到数据使用者DU端阶段,将文件加密密钥FEK及最大使用次数TIMES从数据属主DO端迁移到数据使用者DU端,采用以下子步骤实现,
B1)DO端的密钥迁出模块KMOM验证DU的身份和访问权限,若验证通过,KMOM为DU生成文件访问授权证书CertFile,并向DU端的密钥迁入模块KMIM发送准备密钥迁移的信息;
B2)DU端的密钥迁入模块KMIM向DU端的KPM密钥处理模块KPM发起文件加密密钥迁入请求;
B3)DU端的密钥处理模块KPM调用OP-TEE提供的非对称密钥生成方法tee_cryp_obj_rsa_keypair_attrs()生成非对称密钥对AsyKey,并将AsyKey的公钥部分AsyKey_pub返回给KMIM;
B4)DU端的密钥迁入模块KMIM将AsyKey_pub发送给数据属主DO端的密钥迁出模块KMOM;
B5)DO端的密钥迁出模块KMOM根据IDFile从本地文件系统中读取对应的密文状态下的文件加密密钥ETSK_DO(FEK),将ETSK_DO(FEK)和AsyKey_pub一起传给DO端的密钥守护进程模块KDM;
B6)DO端的密钥守护进程模块KDM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DO,采用AES加密算法的ECB模式通过TSK_DO解密ETSK_DO(FEK),得到明文状态下的文件加密密钥FEK,KDM根据DO的指定为FEK生成其最大使用次数TIMES,将FEK与TIMES进行串联得到FEK||TIMES;
B7)DO端的密钥守护进程模块KDM用AsyKey_pub对FEK||TIMES加密,得到密文文件EAsyKey_pub(FEK||TIMES);
B8)DO端的密钥迁出模块KMOM将CertFile、IDFile和EAsyKey_pub(FEK||TIMES)发送给DU端的密钥迁入模块KMIM;
B9)DU端的密钥迁入模块KMIM将CertFile、IDFile进行关联后存储在本地文件系统中,将IDFile、EAsyKey_pub(FEK||TIMES)传给DU端的密钥处理模块KPM。
4.根据权利要求3所述云存储模式下基于TrustZone的密钥使用次数管理方法,其特征在于:在密钥在数据使用者DU端的使用阶段,分为密钥预处理阶段和密钥受限使用阶段,通过密钥绑定安全文件子流程、密钥加载子流程和密钥存储子流程实现,
所述密钥预处理阶段,包括DU端与DO端交互执行完密钥迁移流程后,DU端执行一次密钥绑定安全文件子流程,并接着执行一次密钥存储子流程;
所述密钥受限使用阶段,包括DU端在执行密钥迁移流程和密钥预处理阶段后,执行密钥加载子流程,
若密钥加载成功,则DU端的密钥处理模块KPM将FEK传给DU端的文件解密模块FDM,DU端的文件解密模块FDM采用AES加密算法的GCM模式通过FEK解密得到明文文件File,将File返回给DU端的文件处理模块FPM,并向DU端的密钥处理模块KPM反馈文件访问成功的信息;DU端执行密钥存储子流程;
若密钥加载失败,并且密钥加载失败的相关信息为密钥已经超过最大使用次数,则需重新执行密钥迁移流程从DO端获取密文形式的FEK,并通过密钥预处理阶段在本地安全存储密钥。
5.根据权利要求4所述云存储模式下基于TrustZone的密钥使用次数管理方法,其特征在于:所述密钥绑定安全文件子流程,包括以下步骤,
C1)DU端的密钥处理模块KPM利用AsyKey的私钥AsyKey_pri解密EAsyKey_pub(FEK||TIMES)得到FEK和TIMES,通过释放内存的方式销毁AsyKey_pri;
C2)DU端的密钥处理模块KPM向DU端的安全文件管理模块SFMM发起创建安全文件SF的请求;
C3)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件创建方法g_SecStorCa_CreateFile()为FEK创建一个安全文件SF,并创建变量SF_VALUE以记录SF的当前读取次数;SFMM将SF_VALUE的初始值置为0,并将SF的标识SF_ID和SF_VALUE值传给DU端的密钥处理模块KPM;
C4)DU端的密钥处理模块KPM创建变量VALUE_THIS以记录安全文件SF的读取次数,并将获得的SF_VALUE值赋值给VALUE_THIS;
所述密钥加载子流程,包括以下步骤,
D1)DU端的密钥迁入模块KMIM根据IDFile从本地文件系统中读取对应的安全文件SF;若安全文件SF读取失败,则返回对应的密钥加载失败信息;否则将安全文件SF及其标识SF_ID一起传给DU端的安全文件管理模块SFMM;
D2)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件读取方法g_SecStorCa_ReadFile()读取安全文件SF内的ETSK_DU(KeyInfo),并将SF_ID和ETSK_DU(KeyInfo)传给DU端的密钥处理模块KPM;
D3)DU端的密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU解密ETSK_DU(KeyInfo),得到FEK、TIMES、VALUE_THIS、SF_ID和digest;
D4)DU端的密钥处理模块KPM计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest’=hash(FEK||TIMES||VALUE_THIS||SF_ID);KPM判断digest’与digest是否相同,若digest’不等于digest,说明文件系统中的文件被损坏了,返回对应的密钥加载失败信息;否则,执行D5);
D5)DU端的密钥处理模块KPM将SF_ID传递给DU端的安全文件管理模块SFMM;
D6)DU端的安全文件管理模块SFMM获取SF_ID对应的安全文件SF的当前读取次数SF_VALUE,将SF_VALUE返回给DU端的密钥处理模块KPM;
D6)DU端的密钥处理模块KPM比较刚获得的SF的读取次数SF_VALUE与先前存储的值VALUE_THIS,若SF_VALUE不等于VALUE_THIS,说明受到了重放攻击,返回对应的密钥加载失败信息;否则,执行D8);
D8)DU端的密钥处理模块KPM比较SF_VALUE和TIMES,若SF_VALUE>TIMES,说明FEK当前的使用次数已经超过了其最大使用次数,返回对应的密钥加载失败信息;否则,返回密钥加载成功信息,并将FEK传给DU端的文件解密模块FDM;
所述密钥存储子流程,包括以下步骤,
E1)DU端的密钥处理模块KPM将安全文件SF的标识SF_ID传递给DU端的安全文件管理模块SFMM;
E2)DU端的安全文件管理模块SFMM将SF_ID对应的安全文件SF的读取次数SF_VALUE的值加1,并将增加后的SF_VALUE值传给KPM;
E3)DU端的密钥处理模块KPM将获得的SF_VALUE值赋值给VALUE_THIS,并计算FEK、TIMES、VALUE_THIS、SF_ID的哈希值digest=hash(FEK||TIMES||VALUE_THIS||SF_ID);
E4)DU端的KPM密钥处理模块KPM调用OP-TEE提供的对称密钥生成方法tee_fs_fek_crypt()生成可信应用存储密钥TSK_DU,采用AES加密算法的ECB模式通过TSK_DU加密FEK、TIMES、VALUE_THIS、SF_ID和digest,得到ETSK_DU(KeyInfo);KPM将IDFile、SF_ID、ETSK_DU(KeyInfo)关联后一起传给DU端的安全文件管理模块SFMM;
E5)DU端的安全文件管理模块SFMM调用OP-TEE提供的安全文件写入方法g_SecStorCa_WiteFile()将ETSK_DU(KeyInfo)写入安全文件SF,从而覆盖安全文件原有内容,并将安全文件SF及其标识SF_ID与IDFile关联后一起传给DU端的密钥迁入模块KMIM;
E6)DU端的密钥迁入模块KMIM按照对应关系将IDFile、SF_ID和安全文件SF存储在本地文件系统中。
6.一种实现权利要求1~5任意一项所述云存储模式下基于TrustZone的密钥使用次数管理方法的系统,包括数据属主DO端和数据使用者DU端。
7.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1~5任意一项所述的云存储模式下基于TrustZone的密钥使用次数管理方法。
CN202011501954.2A 2020-12-18 2020-12-18 云存储模式下基于TrustZone的密钥使用次数管理方法及系统 Active CN112688999B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011501954.2A CN112688999B (zh) 2020-12-18 2020-12-18 云存储模式下基于TrustZone的密钥使用次数管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011501954.2A CN112688999B (zh) 2020-12-18 2020-12-18 云存储模式下基于TrustZone的密钥使用次数管理方法及系统

Publications (2)

Publication Number Publication Date
CN112688999A CN112688999A (zh) 2021-04-20
CN112688999B true CN112688999B (zh) 2022-10-11

Family

ID=75449145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011501954.2A Active CN112688999B (zh) 2020-12-18 2020-12-18 云存储模式下基于TrustZone的密钥使用次数管理方法及系统

Country Status (1)

Country Link
CN (1) CN112688999B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113642018A (zh) * 2021-08-11 2021-11-12 永旗(北京)科技有限公司 一种基于区块链密钥管理方法
CN115277078A (zh) * 2022-06-22 2022-11-01 抖音视界(北京)有限公司 用于处理基因数据的方法、装置、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106063185A (zh) * 2014-03-31 2016-10-26 英特尔公司 用于安全地共享数据的方法和装置
CN106464488A (zh) * 2015-08-28 2017-02-22 华为技术有限公司 信息传输方法及移动设备
CN110326266A (zh) * 2017-09-18 2019-10-11 华为技术有限公司 一种数据处理的方法及装置
CN110519049A (zh) * 2019-08-07 2019-11-29 赤峰学院 一种基于可信执行环境的云端数据保护系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106063185A (zh) * 2014-03-31 2016-10-26 英特尔公司 用于安全地共享数据的方法和装置
CN106464488A (zh) * 2015-08-28 2017-02-22 华为技术有限公司 信息传输方法及移动设备
CN110326266A (zh) * 2017-09-18 2019-10-11 华为技术有限公司 一种数据处理的方法及装置
CN110519049A (zh) * 2019-08-07 2019-11-29 赤峰学院 一种基于可信执行环境的云端数据保护系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Limited Times of Data Access Based on SGX in Cloud Storage;Zhengwei Ren,;《IEEE》;20220106;全文 *
Man in the Cloud (MITC) Defender: SGX-Based User Credential Protection for Synchronization Applications in Cloud Computing Platform;Xueping Liang;《IEEE》;20170911;全文 *

Also Published As

Publication number Publication date
CN112688999A (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
US10462114B2 (en) System and associated software for providing advanced data protections in a defense-in-depth system by integrating multi-factor authentication with cryptographic offloading
WO2021164166A1 (zh) 一种业务数据保护方法、装置、设备及可读存储介质
US8391494B1 (en) Systems and methods for protecting enterprise rights management keys
US8261320B1 (en) Systems and methods for securely managing access to data
US6615349B1 (en) System and method for manipulating a computer file and/or program
US9473297B2 (en) Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters
CN1535411B (zh) 用于在使用附属的存储设备的计算机系统中提升安全性的方法和系统
US9135464B2 (en) Secure storage system for distributed data
US20090276829A1 (en) System for copying protected data from one secured storage device to another via a third party
CN104618096B (zh) 保护密钥授权数据的方法、设备和tpm密钥管理中心
US6986041B2 (en) System and method for remote code integrity in distributed systems
US20090276474A1 (en) Method for copying protected data from one secured storage device to another via a third party
US9961048B2 (en) System and associated software for providing advanced data protections in a defense-in-depth system by integrating multi-factor authentication with cryptographic offloading
WO2022028289A1 (zh) 数据加密方法、数据解密方法、装置、终端和存储介质
US20080235521A1 (en) Method and encryption tool for securing electronic data storage devices
WO2007089266A2 (en) Administration of data encryption in enterprise computer systems
JPH11149414A (ja) データの保存方法およびシステム並びにデータ保存処理用記録媒体
US10346319B1 (en) Separate cryptographic keys for protecting different operations on data
CN112613048A (zh) 云存储模式下基于sgx的密钥使用次数管理方法及系统
US20140281499A1 (en) Method and system for enabling communications between unrelated applications
WO2021129003A1 (zh) 一种密码管理方法及相关装置
CN112688999B (zh) 云存储模式下基于TrustZone的密钥使用次数管理方法及系统
KR101107056B1 (ko) 클라우드 컴퓨팅 환경에서 가상 머신의 보안 정보 처리 방법
KR20160146623A (ko) 휴대용 단말에서 컨텐츠를 보호하는 방법, 상기 방법을 컴퓨터 프로그램으로 기록하기 위한 기록매체, 및 휴대단말 보안 시스템
CN101763319A (zh) 一种磁盘全盘加密系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant