欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种数据加解密方法、装置、移动终端和存储介质独创技术58130字

一种数据加解密方法、装置、移动终端和存储介质

2021-03-21 04:22:16

一种数据加解密方法、装置、移动终端和存储介质

  技术领域

  本发明实施例涉及安全技术,尤其涉及一种数据加解密方法、装置、移动终端和存储介质。

  背景技术

  在移动终端中安装的应用在存储具有敏感性质的数据时,为了保护用户的个人隐私,通常使用对称密钥算法、非对称密钥算法等算法对数据进行加密。

  然而,无论加密算法设计得有多么安全和牢固,一旦密钥被泄露,攻击者可以直接使用密钥调用加密算法解密数据,所以,加密算法的安全性的重点之一,在于所使用密钥的安全保存。

  目前,应用的密钥主要是以硬编码方式预埋在应用的代码中,如Android(安卓)的Java层、Native层。为了减轻这种无保护密码存储所受到的威胁,通常使用代码混淆机制,如OLLVM(Obfuscator-LLVM,一个开源的代码混淆编译器),混淆代码逻辑以提高代码逆向阅读的困难度。

  但是,代码混淆机制只能对代码逻辑进行混淆,无法混淆预埋密钥这种数组变量或常量,该类存储方式有以下三个明显缺点:

  (1)密钥无任何单独的安全保护,仅依赖于对代码的安全加固,往往容易被攻击者静态分析提取密钥,攻击者容易通过移动终端的漏洞获取权限。

  (2)可能被攻击者在逆向代码后,不直接提取密钥,使用上层函数代码直接调用启动密钥的函数,对数据直接解密。

  (3)由于不易变更或实行每个应用实例使用不同密钥,所以同一版本的应用或者所有版本的应用预埋的密钥都是一致的,攻击者可以把数据从一个应用导出,放在另一个已被破解的应用上进行数据解密,即数据离开移动终端仍可被解密。

  发明内容

  本发明实施例提供一种数据加解密方法、装置、移动终端和存储介质,以解决如何在维持计算开销、存储开销的情况下,提高移动终端中数据的安全性的问题。

  第一方面,本发明实施例提供了一种数据加密方法,包括:

  在非可信执行环境中,确定应用请求加密的源数据;

  在所述非可信执行环境中,为所述源数据生成本次加密有效的参考数据;

  在可信执行环境中,读取为所述应用生成的主密钥;

  在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  在所述非可信执行环境中,使用所述安全数据将所述源数据加密为目标数据。

  第二方面,本发明实施例还提供了一种数据解密方法,包括:

  在非可信执行环境中,确定应用请求解密的目标数据;

  在非可信执行环境中,读取与所述目标数据关联的、且本次解密有效的参考数据;

  在可信执行环境中,读取为所述应用生成的主密钥;

  在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  在所述非可信执行环境中,使用所述安全数据对所述目标数据进行解密,获得源数据。

  第三方面,本发明实施例还提供了一种数据加密装置,包括:

  源数据确定模块,用于在非可信执行环境中,确定应用请求加密的源数据;

  参考数据生成模块,用于在所述非可信执行环境中,为所述源数据生成本次加密有效的参考数据;

  主密钥读取模块,用于在可信执行环境中,读取为所述应用生成的主密钥;

  安全数据生成模块,用于在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  源数据加密模块,用于在所述非可信执行环境中,使用所述安全数据将所述源数据加密为目标数据。

  第四方面,本发明实施例还提供了一种数据解密装置,包括:

  目标数据确定模块,用于在非可信执行环境中,确定应用请求解密的目标数据;

  参考数据读取模块,用于在非可信执行环境中,读取与所述目标数据关联的、且本次解密有效的参考数据;

  主密钥读取模块,用于在可信执行环境中,读取为所述应用生成的主密钥;

  安全数据生成模块,用于在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  目标数据解密模块,用于在所述非可信执行环境中,使用所述安全数据对所述目标数据进行解密,获得源数据。

  第五方面,本发明实施例还提供了一种移动终端,所述移动终端包括:

  一个或多个处理器;

  存储器,用于存储一个或多个程序;

  当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据加密方法或者如第二方面所述的数据解密方法。

  第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的数据加密方法或者如第二方面所述的数据解密方法。

  本实施例提供数据加解密方法、装置、移动终端和存储介质,首先,可信执行环境是基于硬件级别的安全芯片实现,攻击者难以攻破安全芯片,使得可信执行环境的安全强度高,可以保证主密钥、安全数据的安全性。

  其次,主密钥是针对应用生成的,使得同一版本的应用或者所有版本的应用所使用的主密钥不相同,而参考数据在本次加解密有效,使得基于主密钥与参考数据生成的安全数据具有一次性的特性,该一次性的安全数据不直接存储,而是在可信执行环境生成,满足CPA的安全性,并且,无法被逆向破解。

  由于安全数据具有一次性的特性,其他移动终端无法针对同一个源数据生成相同的安全数据,因此,即便加密之后的目标数据离开移动终端后,也无法被其他移动终端解密。

  再者,基于可信执行环境实施强制访问和无法被非可信执行环境直接访问,因此,即便攻击者无法调用启动主密钥的函数对数据进行解密,从而防止非法调用。

  此外,在可信执行环境中生成安全数据,由于安全数据的数据量少,可以保证在可信执行环境的计算开销低,在非可信执行环境中基于性能比安全芯片更高的处理器、使用安全数据对源数据进行加解密,保证在可信执行环境的计算开销低,从而保证整体的计算开销低。

  最后,可信执行环境、非可信执行环境在大多移动终端有部署,并且,可复用移动终端提供的密码算法,使得兼容性在可接受的程度内,不需要额外部署库文件,存储开销小。

  附图说明

  图1为本发明实施例一提供的一种数据加密方法的流程图;

  图2为本发明实施例一提供的一种移动终端的环境示意图;

  图3为本发明实施例一提供的一种加密的流程示意图;

  图4为本发明实施例一提供的一种KGF算法的示例图;

  图5为本发明实施例一提供的一种AES的加密示意图;

  图6是本发明实施例二提供的一种数据加密方法的流程图;

  图7是本发明实施例三提供的一种数据解密方法的流程图;

  图8为本发明实施例三提供的一种解密的流程示意图;

  图9为本发明实施例三提供的一种AES的解密示意图;

  图10为本发明实施例四提供的一种数据加密装置的结构示意图;

  图11为本发明实施例五提供的一种数据解密装置的结构示意图;

  图12为本发明实施例六提供的一种移动终端的结构示意图。

  具体实施方式

  下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

  实施例一

  图1为本发明实施例一提供的一种数据加密方法的流程图,本实施例可适用于使用一次性的密钥对数据进行加密的情况,该方法可以由数据加密装置来执行,该数据加密装置可以由软件和/或硬件实现,可配置在移动终端中,例如,手机、平板电脑、智能穿戴设备(如智能眼镜、智能手表等),等等。

  在本实施例中,如图2所示,移动终端包括如下两种环境:

  一、非可信执行环境210

  非可信执行环境是移动终端通用的环境,运行通用的操作系统(OperatingSystem,OS),例如,Android(安卓)、iOS、Linux,等等,为上层的第三方应用(application,APP)提供服务。

  非可信执行环境存在一定的安全隐患,如基于OS实现的应用隔离容易被绕过,OS代码庞大,容易出现漏洞(BUG),OS可以看到应用内部的数据,缺乏隔离意味着应用无法安全存储密钥、敏感数据。

  二、可信执行环境220

  其中,可信执行环境是移动终端中处理器上的一个安全区域,提供一个隔离于非可信执行环境的执行环境,独立运行可信操作系统(Trusted OS)。

  隔离是可信执行环境的本质属性,隔离可以是通过软件,也可以是硬件实现,更多的软件、硬件、网际互连协议(Internet Protocol,IP)、总线一体的安全机制。

  对于硬件机制的保护,并不规定某一种硬件实现方法,非可信执行环境不可直接访问可信执行环境,但可作为可信执行环境的客户端(Client)可通过应用程序接口(Application Programming Interface,API)向可信执行环境的Trusted OS请求安全服务。

  可信执行环境由Global Platform(GP)等实现标准化,可在多种平台上移植,GP定义了可信执行环境的保护轮廓(Protection Profile),定义了所需的硬件保护强度。

  可信执行环境对于密钥使用安全存储机制,从而保证认证性、完整性和机密性。

  可信执行环境中可以同时支持安全加载并执行多个可信应用(TrustedApplication,TA),TA之间相互隔离,保证加载到可信执行环境的代码及数据的机密性、完整性,Trusted OS提供可信执行环境中内部的API(Internal API)为TA提供服务。

  针对不同的OS,可信执行环境也有所不同,例如,若OS为iOS系统,则可信执行环境为Secure Enclave,又例如,若OS为Android系统,可信执行环境为TEE(Trusted ExecutionEnvironment),非可信执行环境为REE(Rich Execution Environment)。

  如图1所示,该方法具体包括如下步骤:

  S101、在非可信执行环境中,确定应用请求加密的源数据。

  在非可信执行环境(如REE)中安装一个或多个应用(APP),该应用可以为操作系统的应用,也可以为第三方应用,例如,摄像应用、浏览器、电子邮箱、记事本、通讯录、购物应用、短视频应用,等等,本实施例对此不加以限制。

  应用在运行的过程中,会产生不同安全级别的数据,这些数据通常为明文(plaintext),部分或全部因安全级别较高、业务需求等因素而待生成并存储的数据,可以作为源数据,等待加密。

  需要说明的是,在不同的场景中,源数据的形式有所不同,本实施例对此不加以限制。

  例如,对于浏览器,用户在使用账号、密码(又称口令)登录网站时,浏览器可以记录账号、密码,网站在验证账号、密码成功之后会返回Cookie,账号、密码与Cookie均可以作为源数据加密存储。

  又例如,对于记事本,用户记录一些待处理的事项,这些事项可以作为源数据加密存储。

  又例如,对于通讯录,用户记录联系人信息,如名称、手机号码、头像等,一般情况下,用户解锁移动终端之后可浏览该联系人信息,其他应用在授权的情况下可读取联系人信息,对于部分较为隐私的联系人信息,可作为源数据加密存储。

  当然,上述应用及其待加密的源数据只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他应用及其待加密的源数据,例如,用户身份信息、支付信息、音视频数据,等等,本发明实施例对此不加以限制。另外,除了上述应用及其待加密的源数据外,本领域技术人员还可以根据实际需要采用其它应用及其待加密的源数据,本发明实施例对此也不加以限制。

  S102、在非可信执行环境中,为源数据生成本次加密有效的参考数据。

  如图3所示,在非可信执行环境(如REE)中接收到应用请求加密的源数据之后,可在非可信执行环境中针对源数据生成在本次加密有效的数据,作为参考数据。

  进一步而言,所谓本次加密有效的数据,是指针对本次加密源数据的操作具有唯一性的数据,即参考数据为一次性的数据,并不重复使用。

  在一种方式中,可在非可信执行环境(如REE)中,通过rand()函数等方式随机生成一数值Nonce,作为参考数据。

  为保证安全性,该随机的数值Nonce的长度可选为32字节或大于32字节。

  在另一种方式中,可在非可信执行环境(如REE)中,通过Calendar.getInstance()、new Time()等函数从操作系统中读取当前的时间戳Timestamp,作为参考数据。

  上述两种方式中随机的数值Nonce、时间戳Timestamp,可以单独使用,也可以组合使用,组合使用时,可以保证本实施例的加密机制整体的抗碰撞性和前向性,本实施例对此不加以限制。

  此外,除了上述两种方式之外,还可以使用其他方式生成参考数据,例如,对随机生成的数据进行偏移、异或等操作,通过预设的映射函数将当前的时间戳进行映射,等等,本实施例对此亦不加以限制。

  S103、在可信执行环境中,读取为应用生成的主密钥。

  如图3所示,在可信执行环境(如TEE)中,为非可信执行环境(如REE)中的应用设置有密钥,为便于区分,该密钥可以称之为主密钥SK,该主密钥SK可用于生成本次对源数据加密的安全数据。

  一般情况下,应用与主密钥SK是一一对应的关系,即一个应用对应一个主密钥SK,相应地,可在数据库中建立应用的标识(如包名)与主密钥SK之间的映射关系。

  在对源数据进行加密时,在非可信执行环境(如REE)中可通过可信执行环境(如TEE)提供的API,将应用的标识、参考数据发送至可信执行环境(如TEE)中,请求可信执行环境(如TEE)中的TA使用参考数据生成安全数据,从而使用该安全数据加密源数据。

  此时,可信执行环境(如TEE)中的TA可在数据库中,查找该应用的标识所映射的主密钥SK。

  S104、在可信执行环境中,使用主密钥对参考数据进行加密处理,获得安全数据。

  如图3所示,在可信执行环境(如TEE)中,TA提供密钥生成函数KGF,该密钥生成函数KFG可用于生成安全数据,对此,以参考数据(如随机的数值Nonce、时间戳Timestamp)作为输入,使用主密钥SK对参考数据进行加密处理,将加密处理之后输出的数据设置为安全数据。

  安全数据应用于对称密钥算法,至少包含密钥,为便于区分,该密钥可以称之为副密钥,当然,除了密钥之外,安全数据根据对称密钥算法的不同,还可以包含其他数据,本实施例对此不加以限制。

  需要说明的是,对参考数据进行的加密处理除了包含加密操作之外,为提高安全性,还可以包含其他操作,例如,添加其他维度的数据,执行异或操作,执行偏移操作,等等,本实施例对此不加以限制。

  在本发明的一个实施例中,S104可以包括如下步骤:

  S1041、在可信执行环境中,将参考数据与预设的标签组合为目标数组。

  如图4所示,可以由开发人员自定义一个字符串,作为标签Label,存储在移动终端的可信执行环境(如TEE)中。

  该标签Label为待生成的一次性的安全数据的人为命名,可用于表示安全数据的类型,增加输入数据的维度、以提高安全性,同时也方便开发人员记忆和减少安全数据的误操作。

  在一个示例中,在标签Label为secret时,表示安全数据的类型为密钥,为便于区分,该密钥可以称之为副密钥。

  在另一个示例中,在标签Label为iv时,表示安全数据的类型为密钥、向量。

  在可信执行环境(如TEE)中,TA表现为编码器Encoder的形式,将参考数据(如随机的数值Nonce、时间戳Timestamp)、标签Label按照既定的顺序,粘接编码为一个Hex数组,作为目标数组M。

  示例性地,M=Nonce||Timestamp||Label。

  S1042、在可信执行环境中,使用主密钥将目标数组加密为候选数据。

  如图4所示,可使用可信执行环境(如TEE)提供的安全密码函数,使用主密钥将目标数组M价位为密文形式的数组T,从而作为候选数据,即T=Enc(SK,M)。

  以TEE作为可信执行环境的示例,TEE提供的安全密码函数包括HMAC(Hash-basedMessage Authentication Code,与密钥相关的哈希运算)算法、AES(Advanced EncryptionStandard,高级加密标准)算法、RSA加密算法、ECDSA(椭圆曲线数字签名算法)签名算法、RSA签名算法,等等,HMAC与AES的计算速度较快,可优先选用该两种安全密码函数。

  S1043、在可信执行环境中,对候选数据规整为指定长度的数据,作为与标签匹配的安全数据。

  在可信执行环境(如TEE)中,TA表现为规整器Regulator的形式。

  如图4所示,由于候选数据T可能是任意长度,而后续加密所需的安全数据长度是固定的,规整器Regulator以候选数据T为输入,计算输出指定长度的字符串,作为一次性的安全数据,该安全数据的类型以标签Label定义。

  其中,规整器Regulator可使用单向散列函数将候选数据规整为安全数据,即输出的字符串(摘要数据)为Hash(T),单向散列函数可将任意长度数据计算生成L字节固定长度摘要信息B0B1B2…BL-2BL-1,具体可以包括MD5(Message Digest Algorithm,消息摘要算法第五版)输出16B的摘要数据、SHA(Secure Hash Algorithm,安全哈希算法)1输出20B的摘要数据、SHA224输出28B的摘要数据、SHA256输出32B的摘要数据、SHA384输出48B的摘要数据、SHA512输出64B的摘要数据,等等。

  在具体实现中,安全数据包括副密钥(One-Time Key)和/或向量(One-Time IV)。

  若标签表示第一值(如iv),则在可信执行环境(如TEE)中,使用单向散列函数对候选数据计算指定第一长度的摘要数据,作为副密钥(One-Time Key)、向量(One-Time IV),该副密钥、向量适用于对称密钥算法中的AES算法。

  若标签表示第二值(如Label),则在可信执行环境(如TEE)中,使用单向散列函数对候选数据计算指定第二长度的摘要数据,作为副密钥(One-Time Key),该对称密钥算法中的非AES算法,例如,RC4、Chacha20,等等。

  S105、在非可信执行环境中,使用安全数据将源数据加密为目标数据。

  在本实施例中,如图3所示,可信执行环境(如TEE)中的TA针对应用待加密的源数据生成安全数据之后,将安全数据输出至非可信执行环境(如REE),在非可信执行环境(如REE)中,使用对称密钥算法加密源数据,加密之后的密文即为目标数据。

  在具体实现中,安全数据包括副密钥(One-Time Key)和/或向量(One-Time IV)。

  在一种实施方式中,在非可信执行环境中,调用对称密钥算法中的AES算法、使用向量作为初始化向量IV、与副密钥共同将源数据加密为目标数据。

  如图5所示,在AES算法的CBC模式中,实现分组加密,将源数据切分为多个明文块(如明文块0、明文块1……),针对每个明文块,将明文块与加密向量IV进行异或处理之后,加密器使用副密钥进行加密,从而输出密文块(二进制的数组,如密文块0、密文块1……),密文块组合之后即为目标数据。

  其中,对于第1个明文块(即明文块0),加密向量IV属于初始化向量IV,即为安全数据中的向量,对于第n(n>1)个明文块(即明文块1……),加密向量IV为第n-1个密文块。

  在另一种实施方式中,在非可信执行环境中,调用对称密钥算法中的非AES算法(如RC4、Chacha20等)、使用副密钥将源数据加密为目标数据。

  当然,上述加密算法及其安全参数只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他加密算法及其安全参数,本发明实施例对此不加以限制。另外,除了上述加密算法及其安全参数外,本领域技术人员还可以根据实际需要采用其它加密算法及其安全参数,本发明实施例对此也不加以限制。

  在本实施例中,在非可信执行环境中,确定应用请求加密的源数据,为源数据生成本次加密有效的参考数据,在可信执行环境中,读取为应用生成的主密钥,在可信执行环境中,使用主密钥对参考数据进行加密处理,获得安全数据,使用安全数据将源数据加密为目标数据。

  首先,可信执行环境是基于硬件级别的安全芯片实现,攻击者难以攻破安全芯片,使得可信执行环境的安全强度高,可以保证主密钥、安全数据的安全性。

  其次,主密钥是针对应用生成的,使得同一版本的应用或者所有版本的应用所使用的主密钥不相同,而参考数据在本次加解密有效,使得基于主密钥与参考数据生成的安全数据具有一次性的特性,该一次性的安全数据不直接存储,而是在可信执行环境生成,满足CPA的安全性,并且,无法被逆向破解。

  由于安全数据具有一次性的特性,其他移动终端无法针对同一个源数据生成相同的安全数据,因此,即便加密之后的目标数据离开移动终端后,也无法被其他移动终端解密。

  再者,基于可信执行环境实施强制访问和无法被非可信执行环境直接访问,因此,即便攻击者无法调用启动主密钥的函数对数据进行解密,从而防止非法调用。

  此外,在可信执行环境中生成安全数据,由于安全数据的数据量少,可以保证在可信执行环境的计算开销低,在非可信执行环境中基于性能比安全芯片更高的处理器、使用安全数据对源数据进行加解密,保证在可信执行环境的计算开销低,从而保证整体的计算开销低。

  最后,可信执行环境、非可信执行环境在大多移动终端有部署,并且,可复用移动终端提供的密码算法,使得兼容性在可接受的程度内,不需要额外部署库文件,存储开销小。

  目前,除了将应用的密钥以硬编码方式预埋在应用的代码中之外,还可能存在如下两种方式:

  一、应用使用白盒密码技术对密钥进行加密存储。

  白盒密码技术是指能够抵抗白盒攻击的密码技术,而白盒攻击是指攻击者对移动终端拥有完全的控制能力,能够观测和更改程序运行时的内部数据,这种攻击环境称为白盒攻击环境。

  大多移动终端的环境(如Android、iOS等)在很多情况下就是一个白盒攻击环境,保护密钥安全是白盒密码技术的一个基本需求。白盒密码技术通常使用AES算法,可以保证密钥不以明文形式出现的条件下,对敏感数据完成加解密,提高密钥存储的安全性,适用于移动终端的场景。

  白盒密码技术虽然可以解决密钥被逆向代码静态分析被提取的威胁问题,但是,仍然无法解决密钥硬编码在代码方式的缺点,即使用上层函数代码直接调用启动密钥的函数,对数据直接解密;数据离开移动终端仍可被解密。

  此外,白盒密码技术的库大约需要350KB存储空间,给应用的安装包存储增加了至少350KB,一些对于安装包大小较为敏感的应用难以承受。

  二、在基于硬件安全芯片的可信执行环境对密钥进行加密存储。

  移动终端部署使用了基于安全芯片的可信执行环境,它是CPU上的一块区域,其作用是给数据和代码的执行提供一个更安全的空间,并保证它们的机密性和完整性。

  iOS系统使用的Secure Enclave是一种可信执行环境,Android系统6.0+,APILevel 23+之后,要求移动终端部署可信执行环境TEE及安全硬件芯片。

  目前,一些方案使用基于硬件安全芯片的可信执行环境的AES加密服务,对一些敏感的个人数据直接进行加密存储,比如,人脸模型参数、银行卡信息等。

  但是,安全芯片属于一个独立的硬件,成本高,计算能力有限,使用可信执行环境的加密服务,对于大量的数据和文件直接加密,效率低,时间开销高。

  测试结果表明,对100KB数据,使用TEE的AES-128加解密时间开销为6.2秒,TEE的RSA-2048加解密时间开销为45秒。然而现在个人敏感数据,包含较大的音视频文件,以该方案对大文件或数据加密,时间开销过高难以承受。

  目前TEE的加解密服务,也无法直接支持CPA安全性(即两段内容相同的明文,加密得到两段内容不同的密文),需要每次加密前额外调用一次TEE的密钥生成存储服务实现,更增加了时间开销。

  综合对比应用的密钥以硬编码方式预埋在应用的代码、应用使用白盒密码技术对密钥进行加密存储、在基于硬件安全芯片的可信执行环境对密钥进行加密存储与本实施例,如下所示:

  

  

  其中,安全芯片的安全强度高于AES-128的安全强度,Android 6.0API 23+、所支持的任意密码算法均可使用使得兼容性较好,属于产品可接受的程度。

  综上,本实施例在安全强度、整体安全性、数据离开设备失效、计算开销、存储开销均可表现优良。

  实施例二

  图6为本发明实施例二提供的一种数据加密方法的流程图,本实施例以前述实施例为基础,进一步增加注册主密钥、管理主密钥及参考数据的处理操作,该方法具体包括如下步骤:

  S601、检测在非可信执行环境中安装应用的第一操作。

  若本实施例应用于操作系统,则可以通过调用操作系统的函数监测在非可信执行环境(如REE)中安装应用的第一操作,即第一操作又称安装操作。

  以Android为例,应用在安装的时候,操作系统会发送广播,基于该机制,可以定义表示安装应用的广播,如“应用(以包名表示)被安装”,然后可在AndroidManifest注册表示安装应用的广播,若接收到表示安装应用的广播,则表示检测到在非可信执行环境(如REE)中安装应用的操作。

  若本实施例应用于应用本身,则在应用的安装包被执行时,可以认为检测在非可信执行环境(如REE)中安装应用的第一操作。

  S602、响应于第一操作,在可信执行环境中为应用生成主密钥。

  在非可信执行环境(如REE)中安装应用时,可通过可信执行环境(如TEE)提供的API调用可信执行环境(如TEE)中密钥生成和存储服务,针对该应用生成一个随机的密钥,作为主密钥SK,并在可信执行环境(如TEE)中长期存储,即在可信执行环境(如TEE)的数据库中建立该应用的标识(如包名)与主密钥SK之间的映射关系。

  在具体实现中,主密钥SK可以使HMAC、AES、RSA、ECDSA等算法中的任意一种密钥,具体可以根据后续对源数据进行加密的算法而选择。

  其中,HMAC的密钥长度一般大于或等于16字节,AES的密钥长度一般大于或等于16字节,RSA的密钥长度一般大于或等于256字节,以确保最低等同AES-128的主流商用密码的安全强度。

  S603、在非可信执行环境中,确定应用请求加密的源数据。

  S604、在非可信执行环境中,为源数据生成本次加密有效的参考数据。

  S605、在可信执行环境中,读取为应用生成的主密钥。

  S606、在可信执行环境中,使用主密钥对参考数据进行加密处理,获得安全数据。

  S607、在非可信执行环境中,使用安全数据将源数据加密为目标数据。

  S608、在非可信执行环境中,关联存储目标数据与参考数据。

  在非可信执行环境(如REE)中,在对源数据加密为目标数据之后,在应用的安装目录下,或者,在独立的存储区域中,除了存储目标数据之外,还存储本次加密所使用的参考数据,建立目标数据与参考数据之间的关联关系,该关联关系表示该参考数据用于加密该目标数据。

  需要说明的是,目标数据与参考数据之间的存储结构可以自主定义,例如,利用Nonce、Timestamp加密源数据M得到目标数据C,存储时可以把固定长度的Nonce、Timestamp作为文件头与目标数据C写在一起,即Nonce|Timestamp|C;或者,存储时可以把固定长度的Nonce、Timestamp作为文件尾与目标数据C写在一起,即C|Nonce|Timestamp。

  S609、检测删除目标数据的第二操作。

  S610、响应于第二操作,在非可信执行环境中删除目标数据与参考数据。

  在应用的运行过程中,用户会主动请求删除部分目标数据,或者,应用会自动删除自身的目标数据,或者,第三方应用(如清理应用)也会请求删除应用的目标数据。

  例如,浏览器中的Cookie作为源数据加密为目标数据,浏览器中设置了自动清理过期的cookie的机制,浏览器在检测到cookie过期之后,删除该cookie,即相应地删除该目标数据。

  又例如,记事本中记录的事项作为源数据加密为目标数据,用户在发现该事项已经处理之后,在记事本中删除该事项,即相应地删除该目标数据。

  又例如,通讯录中的联系人信息作为源数据加密为目标数据,清理应用在检测到存在相同的联系人信息之后,删除其中一个联系人信息,即相应地删除该目标数据。

  如果检测到删除目标数据的第二操作,则可以在非可信执行环境(如REE)中查找相应的目标数据,并删除该目标数据,在删除目标数据之后,参考数据失效,此时,可定位该目标数据所映射的参考数据,将该参考数据随同该目标数据删除,保证失效数据及时清理,降低存储开销。

  所谓失效,是指删除与参考数据关联的目标数据之后,使用主密钥与该参考数据也无法对其他目标数据进行解密。

  S611、检测卸载应用的第三操作。

  若本实施例应用于操作系统,则可以通过调用操作系统的函数监测在非可信执行环境(如REE)中卸载应用的第三操作,即第三操作又称卸载操作。

  以Android为例,应用在卸载的时候,操作系统会发送广播,基于该机制,可以定义表示安装应用的广播,如“应用(以包名表示)被卸载”,然后可在AndroidManifest注册表示卸载应用的广播,若接收到表示卸载应用的广播,则表示检测到在非可信执行环境(如REE)中卸载应用的操作。

  若本实施例应用于应用本身,则在应用的卸载程序被执行时,可以认为检测在非可信执行环境(如REE)中卸载应用的第一操作。

  S612、响应于第三操作,在可信执行环境中删除为应用生成的主密钥。

  S613、响应于第三操作,在非可信执行环境中删除所有目标数据与所有参考数据。

  在检测到卸载应用的第三操作之后,主密钥、目标数据与参考数据失效,并不作为配置文件而保留在移动终端中,保证失效数据及时清理,降低存储开销。

  所谓失效,是指在卸载应用完成之后,若重新安装相同的应用,则会重新生成一个新的主密钥、重新针对相同的源数据生成新的参考数据、新的目标数据,使用新的主密钥与新的参考数据无法对原有的目标数据进行解密。

  在具体实现中,一方面,可通过可信执行环境(如TEE)提供的API请求删除在可信执行环境(如TEE)中为应用生成的主密钥,另一方面,在非可信执行环境(如REE)中删除该应用下所存储的所有目标数据与所有参考数据。

  实施例三

  图7为本发明实施例三提供的一种数据解密方法的流程图,本实施例可适用于使用一次性的密钥对数据进行解密的情况,该方法可以由数据解密装置来执行,该数据解密装置可以由软件和/或硬件实现,可配置在移动终端中,例如,手机、平板电脑、智能穿戴设备(如智能眼镜、智能手表等),等等,该移动终端包括非可信执行环境、可信执行环境,该方法具体包括如下步骤:

  S701、在非可信执行环境中,确定应用请求解密的目标数据。

  在非可信执行环境(如REE)中安装一个或多个应用(APP),应用在运行的过程中,会根据不同的业务需求而请求使用相应的数据。

  在本实施例中,该数据以密文的形式存储在非可信执行环境(如REE)中,称之为目标数据,此时,可从在非可信执行环境(如REE)中读取该目标数据,等待解密。

  S702、在非可信执行环境中,读取与目标数据关联的、且本次解密有效的参考数据。

  如图8所示,使用参考数据加密得到目标数据,该目标数据与参考数据关联存储在非可信执行环境(如REE)中。

  在对目标数据解密时,可从非可信执行环境(如REE)中,基于该关联关系查找该目标数据对应的参考数据。

  进一步而言,所谓本次解密有效的数据,是指针对本次解密目标数据的操作具有唯一性的数据,即参考数据为一次性的数据,并不重复使用。

  在一个示例中,该参考数据为随机生成一数值Nonce和/或加密目标数据时的时间戳。

  需要说明的是,目标数据与参考数据之间的存储结构可以自主定义,在解密时,可以按照该存储结构读取参考数据,例如,存储时可以把固定长度的Nonce、Timestamp作为文件头与目标数据C写在一起,即Nonce|Timestamp|C,则在解密时,可先读取文件头固定长度的字符串,作为Nonce和Timstamp,剩余的字符串为C;或者,存储时可以把固定长度的Nonce、Timestamp作为文件尾与目标数据C写在一起,即C|Nonce|Timestamp,则在解密时,可先读取文件尾固定长度的字符串,作为Nonce和Timstamp,剩余的字符串为C。

  S703、在可信执行环境中,读取为应用生成的主密钥。

  如图8所示,在对目标数据进行解密时,在非可信执行环境(如REE)中可通过可信执行环境(如TEE)提供的API,将应用的标识、参考数据发送至可信执行环境(如TEE)中,请求可信执行环境(如TEE)中的TA使用参考数据生成安全数据,从而使用该安全数据解密目标数据。

  此时,可信执行环境(如TEE)中的TA可在数据库中,查找该应用的标识所映射的主密钥SK。

  S704、在可信执行环境中,使用主密钥对参考数据进行加密处理,获得安全数据。

  如图8所示,在可信执行环境(如TEE)中,TA提供密钥生成函数KGF,该密钥生成函数KFG可用于生成安全数据,对此,以参考数据(如随机的数值Nonce、时间戳Timestamp)作为输入,使用主密钥SK对参考数据进行加密处理,将加密处理之后输出的数据设置为安全数据。

  在本发明的一个实施例中,在可信执行环境(如TEE)中,将参考数据与预设的标签组合为目标数组,其中,标签用于表示安全数据的类型。

  在可信执行环境(如TEE)中,使用主密钥将目标数组加密为候选数据。

  在可信执行环境(如TEE)中,对候选数据规整为指定长度的数据,作为与标签匹配的安全数据。

  在一个示例中,安全数据的类型包括副密钥和/或向量,则在本示例中,若标签表示第一值,则在可信执行环境中,对候选数据计算指定第一长度的摘要数据,作为副密钥、向量;或者,若标签表示第二值,则在可信执行环境中,对候选数据计算指定第二长度的摘要数据,作为副密钥。

  在本发明实施例中,由于S704与S104的应用基本相似,所以描述的比较简单,相关之处参见S104的部分说明即可,本发明实施例在此不加以详述。

  S705、在非可信执行环境中,使用安全数据对目标数据进行解密,获得源数据。

  如图8所示,可信执行环境(如TEE)中的TA针对应用待解密的目标数据生成安全数据之后,将安全数据输出至非可信执行环境(如REE),在非可信执行环境(如REE)中,使用对称密钥算法解密目标数据801,解密之后的明文即为源数据802。

  在具体实现中,安全数据包括副密钥(One-Time Key)和/或向量(One-Time IV)。

  在一种实施方式中,在非可信执行环境(如REE)中,调用对称密钥算法中的AES算法、使用该向量作为初始化向量IV、与副密钥共同将目标数据解密为源数据。

  如图9所示,在AES算法的CBC模式中,实现分组解密,将目标数据切分为多个密文块(如密文块0、密文块1……),针对每个密文块,解密器使用副密钥进行解密之后,与加密向量IV进行异或处理之后,从而输出明文块(如明文块0、明文块1……),明文块组合之后即为源数据。

  其中,对于第1个明文块(即明文块0),加密向量IV属于初始化向量IV,即为安全数据中的向量,对于第n(n>1)个明文块(即明文块1……),加密向量IV为第n-1个密文块。

  在另一种实施方式中,在非可信执行环境中,调用对称密钥算法中的非AES算法、使用副密钥将目标数据解密为源数据。

  当然,上述解密算法及其安全参数只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他解密算法及其安全参数,本发明实施例对此不加以限制。另外,除了上述解密算法及其安全参数外,本领域技术人员还可以根据实际需要采用其它解密算法及其安全参数,本发明实施例对此也不加以限制。

  在本实施例中,在非可信执行环境中,确定应用请求解密的目标数据;在非可信执行环境中,读取与目标数据关联的、且本次解密有效的参考数据;在可信执行环境中,读取为应用生成的主密钥;在可信执行环境中,使用主密钥对参考数据进行加密处理,获得安全数据;在非可信执行环境中,使用安全数据对目标数据进行解密,获得源数据。

  首先,可信执行环境是基于硬件级别的安全芯片实现,攻击者难以攻破安全芯片,使得可信执行环境的安全强度高,可以保证主密钥、安全数据的安全性。

  其次,主密钥是针对应用生成的,使得同一版本的应用或者所有版本的应用所使用的主密钥不相同,而参考数据在本次加解密有效,使得基于主密钥与参考数据生成的安全数据具有一次性的特性,该一次性的安全数据不直接存储,而是在可信执行环境生成,满足CPA的安全性,并且无法被逆向破解。

  由于安全数据具有一次性的特性,其他移动终端无法针对同一个源数据生成相同的安全数据,因此,即便加密之后的目标数据离开移动终端后,也无法被其他移动终端解密。

  再者,基于可信执行环境实施强制访问和无法被非可信执行环境直接访问,因此,即便攻击者无法调用启动主密钥的函数对数据进行解密,从而防止非法调用。

  此外,在可信执行环境中生成安全数据,由于安全数据的数据量少,可以保证在可信执行环境的计算开销低,在非可信执行环境中基于性能比安全芯片更高的处理器、使用安全数据对源数据进行加解密,保证在可信执行环境的计算开销低,从而保证整体的计算开销低。

  最后,可信执行环境、非可信执行环境在大多移动终端有部署,并且,可复用移动终端提供的密码算法,使得兼容性在可接受的程度内,不需要额外部署库文件,存储开销小。

  在本发明的一个实施例中,该方法还包括:

  检测在非可信执行环境中安装应用的第一操作;

  响应于第一操作,在可信执行环境中为应用生成主密钥。

  在本发明的一个实施例中,该方法还包括:

  在非可信执行环境中,关联存储目标数据与参考数据。

  在本发明的一个实施例中,该方法还包括:

  检测删除目标数据的第二操作;

  响应于第二操作,在非可信执行环境中删除目标数据与参考数据。

  在本发明的一个实施例中,该方法还包括:

  检测卸载应用的第三操作;

  响应于第三操作,在可信执行环境中删除为应用生成的主密钥;

  响应于第三操作,在非可信执行环境中删除所有目标数据与所有参考数据。

  在本发明实施例中,由于第一操作、第二操作、第三操作的响应与实施例二的应用基本相似,所以描述的比较简单,相关之处参见实施例二的部分说明即可,本发明实施例在此不加以详述。

  实施例四

  图10为本发明实施例四提供的一种数据加密装置的结构示意图,该装置具体可以包括如下模块:

  源数据确定模块1001,用于在非可信执行环境中,确定应用请求加密的源数据;

  参考数据生成模块1002,用于在所述非可信执行环境中,为所述源数据生成本次加密有效的参考数据;

  主密钥读取模块1003,用于在可信执行环境中,读取为所述应用生成的主密钥;

  安全数据生成模块1004,用于在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  源数据加密模块1005,用于在所述非可信执行环境中,使用所述安全数据将所述源数据加密为目标数据。

  在本发明的一个实施例中,所述参考数据生成模块包括:

  随机数值生成子模块,用于在所述非可信执行环境中,随机生成一数值,作为参考数据;

  和/或,

  时间戳读取子模块,用于在所述非可信执行环境中,读取当前的时间戳,作为参考数据。

  在本发明的一个实施例中,所述安全数据生成模块1004包括:

  目标数组组合子模块,用于在所述可信执行环境中,将所述参考数据与预设的标签组合为目标数组,所述标签用于表示安全数据的类型;

  候选数据生成子模块,用于使用所述主密钥将所述目标数组加密为候选数据;

  候选数据规整子模块,用于对所述候选数据规整为指定长度的数据,作为与所述标签匹配的安全数据。

  在本发明的一个实施例中,所述安全数据的类型包括副密钥和/或向量;

  所述候选数据规整子模块包括:

  第一摘要计算单元,用于若所述标签表示第一值,则在所述可信执行环境中,对所述候选数据计算指定第一长度的摘要数据,作为副密钥、向量;

  或者,

  第二摘要计算单元,用于若所述标签表示第二值,则在所述可信执行环境中,对所述候选数据计算指定第二长度的摘要数据,作为副密钥。

  在本发明的一个实施例中,所述安全数据包括副密钥和/或向量;

  所述源数据加密模块1005包括:

  第一对称加密子模块,用于在所述非可信执行环境中,调用对称密钥算法中的AES算法、使用所述向量作为初始化向量IV、与所述副密钥共同将所述源数据加密为目标数据;

  或者,

  第二对称加密子模块,用于在所述非可信执行环境中,调用对称密钥算法中的非AES算法、使用所述副密钥将所述源数据加密为目标数据。

  在本发明的一个实施例中,还包括:

  安装操作检测模块,用于检测在非可信执行环境中安装应用的第一操作;

  主密钥生成模块,用于响应于所述第一操作,在可信执行环境中为所述应用生成主密钥。

  在本发明的一个实施例中,还包括:

  关联存储模块,用于在所述非可信执行环境中,关联存储所述目标数据与所述参考数据。

  在本发明的一个实施例中,还包括:

  删除操作检测模块,用于检测删除所述目标数据的第二操作;

  关联删除模块,用于响应于所述第二操作,在所述非可信执行环境中删除所述目标数据与所述参考数据。

  在本发明的一个实施例中,还包括:

  卸载操作检测模块,用于检测卸载所述应用的第三操作;

  主密钥删除模块,用于响应于所述第三操作,在所述可信执行环境中删除所述应用生成的主密钥;

  全量数据删除模块,用于响应于所述第三操作,在所述非可信执行环境中删除所有所述目标数据与所有所述参考数据。

  本发明实施例所提供的数据加密装置可执行本发明任意实施例所提供的数据加密方法,具备执行方法相应的功能模块和有益效果。

  实施例五

  图11为本发明实施例五提供的一种数据解密装置的结构示意图,该装置具体可以包括如下模块:

  目标数据确定模块1101,用于在非可信执行环境中,确定应用请求解密的目标数据;

  参考数据读取模块1102,用于在非可信执行环境中,读取与所述目标数据关联的、且本次解密有效的参考数据;

  主密钥读取模块1103,用于在可信执行环境中,读取为所述应用生成的主密钥;

  安全数据生成模块1104,用于在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  目标数据解密模块1105,用于在所述非可信执行环境中,使用所述安全数据对所述目标数据进行解密,获得源数据。

  在本发明的一个实施例中,所述安全数据生成模块1104包括:

  目标数组组合子模块,用于在所述可信执行环境中,将所述参考数据与预设的标签组合为目标数组,所述标签用于表示安全数据的类型;

  候选数据生成子模块,用于使用所述主密钥将所述目标数组加密为候选数据;

  候选数据规整子模块,用于对所述候选数据规整为指定长度的数据,作为与所述标签匹配的安全数据。

  在本发明的一个实施例中,所述安全数据的类型包括副密钥和/或向量;

  所述候选数据规整子模块包括:

  第一摘要计算单元,用于若所述标签表示第一值,则在所述可信执行环境中,对所述候选数据计算指定第一长度的摘要数据,作为副密钥、向量;

  或者,

  第二摘要计算单元,用于若所述标签表示第二值,则在所述可信执行环境中,对所述候选数据计算指定第二长度的摘要数据,作为副密钥。

  在本发明的一个实施例中,所述安全数据包括副密钥和/或向量;

  所述目标数据解密模块1105包括:

  第一对称解密子模块,用于在所述非可信执行环境中,调用对称密钥算法中的AES算法、使用所述向量作为初始化向量IV、与所述副密钥共同将所述目标数据解密为源数据;

  或者,

  第二对称解密子模块,用于在所述非可信执行环境中,调用对称密钥算法中的非AES算法、使用所述副密钥将所述目标数据解密为源数据。

  在本发明的一个实施例中,还包括:

  安装操作检测模块,用于检测在非可信执行环境中安装应用的第一操作;

  主密钥生成模块,用于响应于所述第一操作,在可信执行环境中为所述应用生成主密钥。

  在本发明的一个实施例中,还包括:

  关联存储模块,用于在所述非可信执行环境中,关联存储所述目标数据与所述参考数据。

  在本发明的一个实施例中,还包括:

  删除操作检测模块,用于检测删除所述目标数据的第二操作;

  关联删除模块,用于响应于所述第二操作,在所述非可信执行环境中删除所述目标数据与所述参考数据。

  在本发明的一个实施例中,还包括:

  卸载操作检测模块,用于检测卸载所述应用的第三操作;

  主密钥删除模块,用于响应于所述第三操作,在所述可信执行环境中删除所述应用生成的主密钥;

  全量数据删除模块,用于响应于所述第三操作,在所述非可信执行环境中删除所有所述目标数据与所有所述参考数据。

  本发明实施例所提供的数据解密装置可执行本发明任意实施例所提供的数据解密方法,具备执行方法相应的功能模块和有益效果。

  实施例六

  图12为本发明实施例六提供的一种移动终端的结构示意图。如图12所示,该移动终端包括处理器1200、存储器1201、通信模块1202、输入装置1203和输出装置1204;移动终端中处理器1200的数量可以是一个或多个,图12中以一个处理器1200为例;移动终端中的处理器1200、存储器1201、通信模块1202、输入装置1203和输出装置1204可以通过总线或其他方式连接,图12中以通过总线连接为例。

  存储器1201作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例中的数据加密方法、数据解密方法对应的模块(例如,如图10所示的数据加密装置中的源数据确定模块1001、参考数据生成模块1002、主密钥读取模块1003、安全数据生成模块1004与源数据加密模块1005;如图11所示的数据解密装置中目标数据确定模块1101、参考数据读取模块1102、主密钥读取模块1103、安全数据生成模块1104与目标数据解密模块1105)。处理器1200通过运行存储在存储器1201中的软件程序、指令以及模块,从而执行移动终端的各种功能应用以及数据处理,即实现上述的数据加密方法、数据解密方法。

  存储器1201可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据移动终端的使用所创建的数据等。此外,存储器1201可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器1201可进一步包括相对于处理器1200远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

  通信模块1202,用于与显示屏建立连接,并实现与显示屏的数据交互。

  输入装置1203可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。

  输出装置1204可以包括扬声器等音频设备。

  需要说明的是,输入装置1203和输出装置1204的具体组成可以根据实际情况设定。

  处理器1200通过运行存储在存储器1201中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据加密方法、数据解密方法。

  本实施例提供的移动终端,可执行本发明任一实施例提供的数据加密方法、数据解密方法,具体相应的功能和有益效果。

  实施例七

  本发明实施例七还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现一种数据加密方法或数据解密方法。

  该数据加密方法包括:

  在非可信执行环境中,确定应用请求加密的源数据;

  在所述非可信执行环境中,为所述源数据生成本次加密有效的参考数据;

  在可信执行环境中,读取为所述应用生成的主密钥;

  在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  在所述非可信执行环境中,使用所述安全数据将所述源数据加密为目标数据。

  该数据解密方法包括:

  在非可信执行环境中,确定应用请求解密的目标数据;

  在非可信执行环境中,读取与所述目标数据关联的、且本次解密有效的参考数据;

  在可信执行环境中,读取为所述应用生成的主密钥;

  在所述可信执行环境中,使用所述主密钥对所述参考数据进行加密处理,获得安全数据;

  在所述非可信执行环境中,使用所述安全数据对所述目标数据进行解密,获得源数据。

  当然,本发明实施例所提供的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据加密方法、数据解密方法中的相关操作。

  通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台移动终端(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

  值得注意的是,上述数据加密装置、数据解密装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

  注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

《一种数据加解密方法、装置、移动终端和存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)