一种数据保密存储方法及客户端的制作方法

文档序号:7997815阅读:536来源:国知局
一种数据保密存储方法及客户端的制作方法
【专利摘要】本申请提供了一种数据保密存储方法及客户端;所述方法包括:当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息;采用用户密码和不同盐值生成至少三个摘要密钥;分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要;用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。本申请能够对用户的敏感数据进行有效的保护及安全同步。
【专利说明】一种数据保密存储方法及客户端

【技术领域】
[0001]本发明涉及网络领域,尤其涉及一种数据保密存储方法及客户端。

【背景技术】
[0002]在信息化高速发展的今天,数据的安全性日益受到重视;怎么保护用户需要保密的敏感数据,成为数据存储中的一个研究重点。
[0003]目前对敏感数据的保护主要基于TrueCrypt技术,TrueCrypt是一个开源的存储安全方案,用来创建和维护一个实时加密卷。该加密卷的整个文件系统都被加密,用户只有输入正确的密码才能开启。一般操作步骤如下:
[0004]首先安装好程序和驱动后,创建一个文件作为内容容器,当用户密码输入正确后驱动可以加载此文件成为一个驱动器盘符,用户可以在该盘下进行与其他盘无二异的文件操作,实际上该盘存储的内容为加密的,因为驱动提供了实时加密(实时加密指的是文件存储前迅速加密,加载前迅速解密的一种技术)操作,用户感受不到使用差异。当用户使用完毕后可以卸载该盘符。
[0005]TrueCrypt加密卷文件开始的65536字节被称为Header (摘要),包含了盐值,数据区密钥,扇区大小等信息;文件末端的65536字节是一个备份Header ;中间的内容为数据区内容。真正对数据区加解密的密钥存储在Header里,用户密钥仅仅是用于解密Header。这里加密卷的加载和卸载都需要靠驱动来完成。
[0006]目前的数据保密存储方案的缺陷主要集中于以下几点:
[0007]有些方案仅能提供本地文件内容的保密;当用户有多台设备时需要对敏感数据进行同步时,以上方案无法满足这类用户的需求。这意味着用户在这些设备同步时需要使用U盘,邮件附件等方式来进行敏感数据的同步,这本身是很不安全的方式。
[0008]另外一些方案虽然能自动将本地保险箱中的敏感数据同步到云端,但只对敏感数据提供本地保护,即敏感数据在云端的存储是明文存储或简单加密(解密手段也在云端,这意味着云端能够解开用户敏感文件),与普通文件在云端的存储无区别,这时云端存储成为了安全弱点。
[0009]在分享敏感数据的处理上,目前的方案可以生成一个分享链接或将敏感数据直接投递给被分享者;被分享者接受后并不需要密码就能够访问分享资料,但没有方式保证只有正确的接收者才能够收到对应的文件且该文件投递到安全存储位置,比如当分享链接被任一个人拿到,他甚至能够在浏览器里访问该敏感内容。
[0010]在数据恢复的处理上,目前的方案对于Header其中之一被损坏的情形能够修复,若Header和备份Header都被损坏需要导入外源Header恢复,而此时若没有及时备份Header则该加密卷无法恢复。若数据区被损坏则基本没有任何手段恢复敏感数据,即关键位置损坏会导致整体不可用。


【发明内容】

[0011]本申请要解决的技术问题是如何对用户的敏感数据进行有效的保护及安全同步。
[0012]为了解决上述问题,本申请提供了一种数据保密存储方法,包括:
[0013]当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息;
[0014]采用用户密码和不同盐值生成至少三个摘要密钥;
[0015]分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要;
[0016]用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
[0017]进一步地,所述的方法还包括:
[0018]采用校验算法分别计算各加密的摘要的校验值;保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到云端;
[0019]使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏。
[0020]进一步地,所述的方法还包括:
[0021]当判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息;
[0022]使用该用户密码和盐值产生的摘要密钥重新加密该摘要的明文信息,用加密后的摘要覆盖损坏的摘要。
[0023]进一步地,所述的方法还包括:
[0024]当判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息;
[0025]使用该用户密码和两种新盐值分别生成两个摘要密钥,分别加密所得到的摘要的明文信息,得到两份加密的摘要,分别覆盖加密卷文件摘要和备份摘要。
[0026]进一步地,所述的方法还包括:
[0027]当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;
[0028]加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。
[0029]进一步地,所述的方法还包括:
[0030]当创建加密卷文件时,如果判断该用户账号的其它设备已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
[0031]进一步地,采用初始密码创建加密卷文件;
[0032]所述方法还包括:
[0033]当加密卷文件创建后,导出初始密码摘要,采用校验算法计算该初始密码摘要的校验值,将该校验值和该初始密码摘要一起发送到云端;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要。
[0034]进一步地,所述的方法还包括:
[0035]当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘要的明文信息;采用所述最新的用户密码和不同盐值生成两个摘要密钥;分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
[0036]进一步地,所述的方法还包括:
[0037]当收到云端推送的摘要更新消息时、或与网络断开连接时强制关闭本地的加密卷文件。
[0038]进一步地,所述的方法还包括:
[0039]当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端;
[0040]当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
[0041]本申请还提供了一种客户端,包括:
[0042]导出模块,用于当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息;
[0043]密钥生成模块,用于采用用户密码和不同盐值生成至少三个摘要密钥;
[0044]加密模块,用于分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要;
[0045]更新模块,用于用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
[0046]进一步地,所述的客户端还包括:
[0047]计算模块,用于采用校验算法分别计算各加密的摘要的校验值;
[0048]所述更新模块还用于保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到云端;
[0049]判断模块,用于使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏。
[0050]进一步地,所述的客户端还包括:
[0051]数据恢复模块,用于当所述判断模块判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息;指示所述密钥生成模块使用用户密码和盐值产生摘要密钥;指示所述加密模块使用所述密钥生成模块产生的摘要密钥重新加密摘要的明文信息;用加密后的摘要覆盖损坏的摘要。
[0052]进一步地,所述的客户端还包括:
[0053]数据恢复模块,用于当所述判断模块判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息;指示所述密钥生成模块使用该用户密码和两种新盐值分别生成两个摘要密钥;指示所述加密模块使用所述密钥生成模块产生的两个摘要密钥分别加密所得到的摘要的明文信息;用两份加密的摘要分别覆盖加密卷文件摘要和备份摘要。
[0054]进一步地,所述的客户端还包括:
[0055]数据恢复模块,用于当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。
[0056]进一步地,所述的客户端还包括:
[0057]创建模块,用于当创建加密卷文件时,如果判断该用户账号的其它设备已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
[0058]进一步地,所述创建模块还用于采用初始密码创建加密卷文件;
[0059]所述导出模块还用于当加密卷文件创建后,导出初始密码摘要;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要;
[0060]所述计算模块还用于采用校验算法计算该初始密码摘要的校验值;
[0061]所述更新模块还用于将该初始密码摘要和其校验值一起发送到云端。
[0062]进一步地,所述更新模块还用于当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘要的明文信息;指示所述密钥生成模块采用所述最新的用户密码和不同盐值生成两个摘要密钥;指示所述加密模块分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
[0063]进一步地,所述的客户端还包括:
[0064]所述更新模块还用于当收到云端推送的摘要更新消息时或与网络断开连接时强制关闭本地的加密卷文件。
[0065]进一步地,所述的客户端还包括:
[0066]发送模块,用于当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端;
[0067]接收模块,用于当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
[0068]本申请的至少一个实施例对于敏感数据进行本地加密后再同步到云端,云端无法对其进行解密,保证了云端安全存储要求,因此能够对用户的敏感数据进行有效的保护,包括用户主机本地的数据以及云端对应数据;还能够在用户不同设备之间进行敏感数据的同步。本申请的优化方案保证只有正确的接收者有权接受对应的文件,并且能将敏感数据分享或投递到对方的安全存储位置,实现可靠的分享投递。本申请的又一优化方案具备强大的数据恢复能力,Header不论如何损坏都能恢复成功,并且加密卷数据区不论如何被损坏云端敏感数据都能够在本地恢复成功。本申请的又一优化方案在第一次创建时使用预定密码作为初始密码,让用户在忘记密码或审计时有能力恢复保险箱内容,从而提高了敏感数据的恢复能力。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。

【专利附图】

【附图说明】
[0069]图1是实施例一的数据保密存储方法的流程示意图;
[0070]图2是实施例一中保险箱同步的流程示意图;
[0071]图3是实施例一中保险箱加载的流程示意图;
[0072]图4是实施例一中加密卷更新的流程示意图;
[0073]图5是实施例一中扩容/缩容的流程示意图;
[0074]图6是实施例一中加密卷本地及云端修复的流程示意图;
[0075]图7是实施例一中加密卷整体修复的流程示意图;
[0076]图8是投递敏感数据的流程示意图;
[0077]图9是实施例二中客户端的示意框图。

【具体实施方式】
[0078]下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
[0079]需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0080]实施例一,一种数据保密存储方法,如图1所示,包括:
[0081]S101、当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息;
[0082]S102、采用用户密码和不同盐值生成至少三个摘要密钥;
[0083]S103、分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要;
[0084]S104、用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
[0085]本实施例中,由于云端摘要是在本地用用户密码加密过的,因此无法在云端解密该摘要,进而无法解开加密卷文件数据区中的数据,因此确保了云端的安全存储。
[0086]本实施例中,加密卷可采用TrueCrypt的格式,当然也可以采用其它已有或自定义的格式;在所采用的各格式中,加密卷文件本身包括数据区、摘要(Header)和备份Header ;Header用于保存加密卷文件的数据区密钥、盐值及扇区大小等。本实施例中,用于产生摘要密钥的盐值不同,导致了摘要密钥也不相同;所以虽然保存的信息一致,但是因为摘要密钥不一样,因此加密的Header呈现出来的内容各不相同。
[0087]本实施例中,用户密码更改后会有一份新的加密的摘要同步到云端,将覆盖云端之前保存的Header(即旧的用户密码和盐值生成的摘要密钥所加密的Header);也就是说云端里用户密码对应的Header有且仅有一份,以保证只有采用最新用户密码和盐值加密的Header存在于云端。云端当加密卷文件的摘要被更新后,可以推送摘要更新消息给该加密卷文件所属用户账户的所有设备。
[0088]本实施例的一种备选方案中,所述方法还可以包括:
[0089]采用校验算法分别计算各加密的摘要的校验值;保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到云端;
[0090]使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏。
[0091]如果加密卷文件的摘要是否受损坏则进行修复;云端摘要的校验值可用于判断传输时是否受损坏,若是则进行重传。
[0092]所述校验算法可以但不限于为MD5 (消息摘要算法第5版),还可以为sha (安全散列算法)、RIPEMD (原始完整性校验消息摘要)等。
[0093]本备选方案的一种实施方式中,所述方法还可以包括:
[0094]当判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息;使用该用户密码和盐值产生的摘要密钥重新加密该摘要的明文信息,用加密后的摘要覆盖损坏的摘要。
[0095]本备选方案的一种实施方式中,所述方法还可以包括:
[0096]当判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息;使用该用户密码和两种新盐值分别生成两个摘要密钥,分别加密所得到的摘要的明文信息,得到两份加密的摘要,分别覆盖加密卷文件摘要和备份摘要。
[0097]本实施例的一种备选方案中,所述方法还可以包括:
[0098]当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;
[0099]加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。本实施例的一种备选方案中,所述方法还可以包括:
[0100]当创建加密卷文件时,如果判断该用户账号的其它设备已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
[0101]可以是在登录用户账号时云端主动查询是否该用户账号已创建过加密卷文件(在别的设备上创建过、或是在本设备上创建过当由于重装系统等原因导致不存在),或是创建时去云端进行查询。
[0102]本实施例的一种备选方案中,所述方法还可以包括:
[0103]当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘要的明文信息;采用所述最新的用户密码和不同盐值生成两个摘要密钥;分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
[0104]所述最新的用户密码可由用户主动输入或在需要用时弹出对话框要求用户输入。
[0105]本实施例的一种备选方案中,所述方法还可以包括:
[0106]当收到云端推送的摘要更新消息时、或与网络断开连接时强制关闭本地的加密卷文件。
[0107]这样当一设备处于不安全的状态下(比如被窃)时,可以通过在属于同一用户账户的另一设备上更改加密卷文件的用户密码,来强制关闭不安全设备中已加载的加密卷文件,保证了数据安全。
[0108]本实施例的一种备选方案中,采用初始密码创建加密卷文件;所述方法还包括:
[0109]当加密卷文件创建后,导出初始密码摘要,采用校验算法计算该初始密码摘要的校验值后,将该校验值和该初始密码摘要一起发送到云端;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要。
[0110]本实施例的一种备选方案中,所述方法还可以包括:
[0111]当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端;
[0112]当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
[0113]该备选方案中,作为发送方的客户端可以选择投递服务(什么文件,投递给谁),然后云端生成临时密钥,并可通过手机或邮件的方式将临时密钥发送给接收方;当接收方使用临时密钥解密加密数据保存进自己的加密卷数据区后,云端可删除使用临时密钥加密的敏感数据。
[0114]下面用几个具体的应用场景的例子来详细说明本实施例;这些应用场景中以保险箱作为加密卷文件来进行说明;在实际应用中,加密卷文件时的名称并不只限于保险箱,还可以包括密盘、云盘、文件保险柜、虚拟盘等,其实质都是一样的。校验算法以MD5为例,实际应用时不限于此。
[0115](一)保险箱同步过程。
[0116]主要包括保险箱在设备上的创建,摘要的同步,必要信息存储在数据库里的过程等等。如图2所示,包括步骤201?208。
[0117]201、当用户登录账号后,选择开启保险箱功能,意味着他希望在本地开启保险箱服务。这时客户端先判断本地是否已存在保险箱,若存在则进入载入过程(后续介绍)。若不存在则需在本地创建保险箱。
[0118]202、为此客户端会向云端查询该用户账号之前是否在其他设备上已经创建过保险箱,具体是查询云端是否存在本用户账号对应的Header、或本用户账号的用户保险箱id(标识)是否已存在,若存在则说明这个用户账号已经创建过保险箱,进入步骤206 ;若不存在则说明当前是该用户账号第一次创建保险箱,进入步骤203。这里需要注意的是,同一用户账号在不同设备中的保险箱Header基本相同,比如数据区密钥一致,这是为了同步与敏感数据的加密传输而考虑的。因此在云端仅需保存一份用户Header (这里具体是指由用户密码及盐值生成的密钥加密的Header)即可。
[0119]203、若是用户第一次创建保险箱,则需要选择保险箱加密卷文件保存的位置,力口密卷容量大小以及用户密码(用来加密Header)等等。然后按照选择的路径大小使用初始密码(比如1234)进行加密卷文件的创建(创建结果是一个符合用户要求和加密卷文件格式规范的文件),并导出初始密码Header (即:采用初始密码和盐值生成的摘要密钥加密的Header),计算该Header对应的Md5值(导出的意思是将计算出一份独立于加密卷文件Header数据)。接着使用用户密码更新加密卷的Header和备份Header,即先将导出的初始密码的Header解密得到原始Header (即Header的明文信息),然后用用户密码和盐值生成的摘要密钥加密该原始Header,用加密后的Header替换加密卷的Header和备份Header。替换后Header里面的实际内容不变,只不过用于加密Header的摘要密钥改变导致Header呈现出的内容变化,此摘要密钥为Header盐值和用户密码混合而成,加密后的Header是以密文形式呈现的。另外,采用用户密码和另一盐值产生一摘要密钥,加密Header (这里加密后得到的Header在后文称为用户密码Header)并计算加密的Header对应的Md5值,之后将初始密码Header、用户密码Header及各自对应的Md5值同步到云端。
[0120]保存初始密码的Header的目的是若用户忘记用户密码后或以后有审计需求被要求查看保险箱资料时,可以申请使用初始密码恢复,此时客户端可使用初始密码Header更新加密卷使得用户可以使用初始密码(比如1234)访问加密卷文件,并在随后可以更改加密卷文件的用户密码(初始密码Header只有此种情况下有用,一般说的云端Header指的是用户密码Header)。这里需要注意的是保存相同信息的Header每一个版本都是不同的,因为盐值或用户密码不同都会导致用于加密Header的摘要密钥各不相同。比如更新后的加密卷文件Header、备份Header以及同步到云端的用户密码Header三个保存的信息一致,但是因为用于加密Header的密钥不一样使得呈现内容各不相同。
[0121]204、当云端接收到用户账号第一次创建保险箱的所需提交的Header,立即判断云端是否可以赋予新的保险箱id(即用户保险箱id是否已存在,可能用户在另一台设备上刚刚创建成功,此情形下id已存在),若可以赋予id的话保存客户端提交的信息并返回保险箱id。
[0122]205、若返回保险箱id成功,第一个创建加密卷文件的设备(后文称为设备A)的客户端会保存此id及相关信息,包括:加密卷路径,大小以及加密卷Header和备份Header对应的Md5值等到本地数据库中(此处Md5值用于加载保险箱时判断保险箱Header是否受损,具体详见后续的加载过程的描述),进入步骤207。如果没有成功返回保险箱id,则说明此次创建保险箱操作失败,加密卷文件被删除,附属信息不保存在本地数据库中。
[0123]206、若该用户账号已经在其他设备上成功创建了保险箱,则本设备只需从云端同步下来该用户账号对应的Header,待用户选输入正确的用户密码,Header被解密后并选择本地保险箱存储位置,客户端可自动根据解密后的Header里面内含的信息自动创建出一个没有内容的加密卷文件。
[0124]同样的,若用户接下来开启了第一个创建加密卷文件的设备之外的其它设备(后文称为设备B),此时云端会推送消息说明已有保险箱创建,询问用户是否将其同步到本设备,若选择同意则也是进行该步骤,即云端传送给客户端相应用户账号对应的Header,用户输入正确的用户密码后解密云端传送的Header,并根据解密后的Header创建一个空的加密卷文件到指定位置。
[0125]207、当用户成功创建了保险箱加密卷后,若此时他觉得自己的用户密码不安全时,他可以选择更改保险箱的用户密码,这个过程会使用新的用户密码和两种盐值分别组合成新的摘要密钥,分别对Header加密,并替换加密卷的Header和备份Header。即用户更改密码并非更改数据区密码,而是用于加密Header的摘要密码。然后再将一份新用户密码和另一份盐值所生成的摘要密钥所加密的Header数据同步到云端,覆盖之前云端保存的旧的用户密码Header,也就是说云端里用户密码对应的Header有且仅有一份(版本号表明Header的新旧程度),以保证只有最新的用户密码的Header存在才是正确的。
[0126]208、假设用户在设备B上更改用户密码成功后,在此时若设备A中保险箱处于开启状态,云端会立即推送保险箱云端Header更新的信息,该信息会促发设备A中保险箱立即被关闭(即保险箱对应的盘符被驱动卸载,考虑到用户修改用户密码的动机,保险箱被强制关闭是为了安全上的考虑)。若用户需要开启保险箱,客户端会同步下来云端最新的Header,此时用户输入在设备B上更改后的用户密码后进入加密卷本地更新过程(会在后续详细介绍),然后在保险箱加载过程中将开启保险箱。用户在设备A上更改用户密码,设备B中保险箱处于开启状态时的情况也是一样的。
[0127]还可以设置成:若在用户需要输入用户密码的阶段重复输入错误超过预定次数,客户端也会强制关闭并在本地数据库清除用户账户的免登信息(比如说token和refreshToken),这么做的原因在于可能有人控制了用户的主机并企图获取保险箱的访问权,此时关闭客户端使其连操作客户端的权限都没(这样无法免登进入web端或者通过修改删除本地数据达到修改云端数据的目的)。
[0128]另外还可以设置成:保险箱只在与云端联通的状态下才能正常操作;没有网络连接或保险箱没有被读取或写入达到预定时长时保险箱会自动关闭。在现有的等本地数据保险方案中,考虑到黑客获取用户主机控制权,且此时保险箱处于打开状态或者知晓用户密码的话就能获取敏感数据访问了。而此时用户没有办法对自己的敏感数据进行有效保护。而在本例子中,假如黑客获取了一台用户设备,当他取走时没有网络连接保险箱会自动关闭,或者此设备是与云端相连,此时用户在其他设备上修改用户密码后此被获取的设备检测到云端Header版本更新消息同样会强制自动关闭,若要重新载入必须输入最新的用户密码。这里用户修改用户密码需要同时输入旧的用户密码与新的用户密码。若黑客通过修改用户密码的方式防止用户强制关闭保险箱,用户可以使用禁用保险箱的功能使得保险箱立即失效(所有设备上的保险箱强制关闭),该功能需要用户提供自己的个人信息到云端进行验证。
[0129]( 二)保险箱加载过程。如图3所示,包括步骤301?306。
[0130]301、用户选择开启保险箱功能并输入用户密码之后,首先客户端会读取数据库里保险箱信息,包括大小,路径和前后Md5值。
[0131]302、客户端判断当前路径是否存在匹配的加密卷文件,若存在则对当前路径上的加密卷文件进行加载操作;若否则需用户选择对应的路径,客户端判断是否为符合规则的加密卷文件,若该文件符合规则更新数据库的路径信息,并对最新路径对应的加密卷文件进行加载操作。
[0132]303、客户端判断当前加密卷文件是否与数据库记录的大小一致,若不一致直接进入加密卷文件整体修复过程(会在后续详细介绍),整体修复结束会继续执行步骤304。若一致则直接执行步骤304。
[0133]304、客户端向云端请求云端Header版本信息,并比较返回的版本与本地Header版本,若云端Header比本地的新,则对加密卷文件进行本地更新操作(会在后续详细介绍),本地更新之后会继续执行步骤305。若版本一样则直接执行步骤305 ;由于本地更新Header时也会发送到云端(见上文的步骤207),所以一般不会出现本地Header版本比云端新的情况,如果出现,也可以继续执行步骤305,并参照上文的步骤207、208进行同步。
[0134]305、客户端读取加密卷文件Header与备份Header数据域内容并计算Md5值,将计算结果与数据库保存的Md5值比较,若都匹配则进行步骤306;若有一个不匹配则进入加密卷摘要本地修复过程;若两个都不匹配则进入加密卷摘要云端修复过程。(这与TrueCrypt不同,TrueCrypt是在加载时先尝试解Header,若Header解不开则解备份Header,若备份Header能解开即说明Header已损坏但TrueCrypt并不作自动修复)。
[0135]306、客户端开始加载加密卷文件成为盘符,若加载失败且不为密码错误则进入加密卷文件整体修复过程。若成功则当前流程结束。
[0136](三)保险箱敏感数据同步过程。
[0137]保险箱敏感数据同步过程开始于保险箱加密卷加载成功后,当保险箱加密成功后即成为了云盘多源同步的一个新同步源。这里的问题是加密卷盘符里面的文件被读取或写入是以明文的形式,但是云端存储的是密文的形式。可采用专利申请201210157295.4中披露的方案进行敏感数据的增量同步。这里增量同步指的是当本地敏感数据被修改后,对修改的内容片段进行加密并传输到云端存储,同时云端更新文件结构;或云端敏感数据版本更新时,本地下载云端更改的内容片段解密后与本地内容融合为最新版本的文件,最后保存在本地保险箱中。
[0138]敏感数据同步过程剩下的问题就是敏感数据的本地加密,这里的重点在于敏感数据加密采用的算法和密钥,本例子采用的是AES加密算法,密钥从加密卷数据密钥中生成,针对加解密的内容单位为文件块,因此同一用户的不同设备都能在同步的过程中进行解密,因为不同设备中加密卷的数据密钥都相同。
[0139]在增量同步中首先计算中需要传输的文件块,若为下载则下载该文件块后对其进行解密,若为上传读取其文件块内容进行加密然后上传。
[0140](四)保险箱本地加密卷更新过程。
[0141]在保险箱开启状态下或者加载保险箱过程中发现了云端Header版本比本地的新(比如开启状态下收到云端推送Header更新的消息),本地保险箱会进入更新过程。如图4所示,包括步骤401?404。
[0142]401、客户端向云端申请获得云端Header及对应的Md5值。
[0143]402、客户端计算从云端返回的Header数据的Md5值,并判断与从云端获得的是否一致,若否,则申请重传云端Header及对应的Md5值,返回步骤402。若一致,则进行步骤403。
[0144]403、客户端使用新的用户密码解Header,然后比较云端Header里包含的加密卷大小与本地数据库保存的加密卷大小,若匹配则说明更新仅仅为用户密码修改,进行步骤404;若不匹配说明用户在其他设备上对加密卷进行了扩容/缩容操作,此时会进入本地保险箱的扩容/缩容过程;扩容/缩容完成后进行步骤404。
[0145]404、使用新的用户密码更新加密卷的本地Header。
[0146](五)保险箱本地加密卷扩容/缩容过程。
[0147]保险箱本地加密卷的扩容/缩容过程有两个方案可以完成。
[0148]方案一针对扩容操作:通过修改文件系统参数并直接修改加密卷文件(在备份Header前插入随机数据扩大容量),此方案不需要加载加密卷文件。
[0149]方案二:此方案需要加载加密卷文件,可同时用于扩容、缩容操作。如图5所示,包括步骤501?504。
[0150]501、首先根据云端Header创建一个新的加密卷文件并加载。
[0151]502、加载旧加密卷。
[0152]503、两个加密卷都载入后将旧加密卷里面的内容复制或移动到新加密卷中,完成之后卸载两个加密卷。
[0153]504、删除旧加密卷文件同时更新数据库里面相关信息。
[0154](六)加密卷修复过程。
[0155](I)当本地Header数据损坏时的修复过程如图6所示,包括步骤601?605。
[0156]601、当客户端计算加密卷文件Header与备份Header的Md5值,并发现计算结果与数据库保存的Md5值不同时,判断是否Header和备份Header的Md5值均与保存的不同;如果只有一个不同,则进入步骤602 ;如果两个都不同,则进入步骤604。
[0157]602、加密卷本地修复过程,根据保存在本地的Md5比较判断是Header还是备份Header损坏(即:是头Header还是尾Header损坏),哪个与保存的不同就是哪个损坏;
[0158]603、使用用户密码解开未损坏的Header,并用用户密码和盐值产生的摘要密钥重新加密该Header,用加密后的Header覆盖损坏Header。
[0159]加密卷本地修复过程结束。
[0160]604、加密卷云端修复过程,客户端向云端申请获得云端Header及对应的Md5值。
[0161]605、客户端计算从云端返回的Header数据的Md5值,并判断与从云端获得的是否一致,若否则申请重传云端Header及对应的Md5值,返回步骤605。若一致,则进行步骤606。
[0162]606、客户端使用用户密码解开云端Header,并使用用户密码和两种新盐值生成加密密钥并加密Header后,用加密的Header分别覆盖本地加密卷文件的Header和备份Header数据域。
[0163]加密卷云端修复过程结束。
[0164](2)加密卷整体修复过程。
[0165]这种情况发生在加密卷数据域已损坏的情况下,这里敏感数据的修复针对已同步成功的敏感数据而言,若刚将敏感数据写入保险箱不等同步完成就立即破坏加密卷文件是无法对该敏感数据进行恢复的。如图7所示,包括步骤701?703。
[0166]701、客户端会向云端申请获得云端Header即对应的Md5值。
[0167]702、客户端计算从云端返回的Header数据的Md5值,并判断与从云端获得的是否一致,若否则申请重传云端Header及对应的Md5值,返回步骤702。若一致,则进行步骤703。
[0168]703、客户端使用用户密码解云端Header,然后提示用户是否修复敏感数据,若否则加载操作取消;若选择修复则加载数据保险箱,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;客户端将云端对应的加密卷文件作为新的同步源,将云端敏感数据同步到所创建的本地保险箱中,若同步完成则整体修复过程成功结束。
[0169](七)保险箱敏感数据投递过程。
[0170]当用户I需要投递某个敏感数据给用户2时就涉及敏感数据投递;为了保证敏感数据投递的目的地是安全的,用户2必须拥有保险箱,该敏感数据会被传送到用户2设备的保险箱里。如图8所示,包括步骤801?808。
[0171]801、用户I加载自己的保险箱,并通过客户端I选择敏感数据投递给用户2。客户端I随机生成临时密钥,加密待投递的敏感数据后,按同步敏感文件的步骤准备将该文件上传至云端,不过此时加密密钥是临时密钥,不为用户敏感数据的加密密钥。
[0172]802、客户端I将此加密文件和临时密钥发送到云端。
[0173]803、当用户2有设备的客户端2连至云端时,云端主动推送此投递信息;也可以用户2开启客户端2后主动查询有无此类投递信息。
[0174]804、客户端2提示用户2是否接受,等待用户2的选择结果;
[0175]805、若用户2选择接受则客户端2返回接受的消息给云端。
[0176]806、云端将临时密钥通过手机短信或邮件的方式发送给用户2。
[0177]807、用户2的客户端2提示用户2输入该临时密钥和用户2的保险箱的用户密码。若皆对,用户2的客户端2会向云端申请接受敏感数据。
[0178]808、云端传送用户I的客户端I采用所述临时密钥加密后的待投递敏感数据给用户2的客户端2 ;客户端2使用临时密钥解密该敏感数据保存至自己的保险箱中;最后云端删除所述待投递敏感数据。
[0179]实施例二,一种客户端,如图9所示,包括:
[0180]导出模块91,用于当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息;
[0181]密钥生成模块92,用于采用用户密码和不同盐值生成至少三个摘要密钥;
[0182]加密模块93,用于分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要;
[0183]更新模块94,用于用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
[0184]本实施例的一种备选方案中,所述的客户端还可以包括:
[0185]计算模块,用于采用校验算法分别计算各加密的摘要的校验值;
[0186]判断模块,用于使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏;
[0187]所述更新模块94还用于保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到云端。
[0188]所述校验算法可以但不限于为MD5 (消息摘要算法第5版),还可以为sha (安全散列算法)、RIPEMD (原始完整性校验消息摘要)等。
[0189]该备选方案的一种实施方式中,所述的客户端还包括:
[0190]数据恢复模块,用于当所述判断模块判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息,指示所述密钥生成模块92使用用户密码和盐值产生摘要密钥;指示所述加密模块93使用所述密钥生成模块产生的摘要密钥重新加密摘要的明文信息;用加密后的摘要覆盖损坏的摘要。
[0191]该备选方案的一种实施方式中,所述数据恢复模块还可以用于当所述判断模块判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息;指示所述密钥生成模块92使用该用户密码和两种新盐值分别生成两个摘要密钥;指示所述加密模块93使用所述密钥生成模块产生的两个摘要密钥分别加密所得到的摘要的明文信息;用两份加密的摘要分别覆盖加密卷文件摘要和备份摘要。
[0192]该备选方案的一种实施方式中,所述数据恢复模块还可以用于当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。
[0193]本实施例的一种备选方案中,所述的客户端还包括:
[0194]创建模块,用于当创建加密卷文件时,如果判断该用户账号已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
[0195]可以是在登录用户账号时云端主动查询是否该用户账号已创建过加密卷文件(在别的设备上创建过、或是在本设备上创建过当由于重装系统等原因导致不存在),或是创建时去云端进行查询。
[0196]本实施例的一种备选方案中,所述更新模块94还用于当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘要的明文信息;指示所述密钥生成模块92采用所述最新的用户密码和不同盐值生成两个摘要密钥;指示所述加密模块93分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
[0197]所述最新的用户密码可由用户主动输入或在需要用时弹出对话框要求用户输入。
[0198]本实施例的一种备选方案中,所述更新模块94还用于当收到云端推送的摘要更新消息时或与网络断开连接时强制关闭本地的加密卷文件。
[0199]这样当一设备处于不安全的状态下(比如被窃)时,可以通过在属于同一用户账户的另一设备上更改加密卷文件的用户密码,来强制关闭不安全设备中的加密卷文件,保证了数据安全。
[0200]本实施例的一种备选方案中,所述的客户端还包括:
[0201]发送模块,用于当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端;
[0202]接收模块,用于当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
[0203]该备选方案中,发送模块可以选择投递服务(什么文件,投递给谁),然后云端生成临时密钥,并可通过手机或邮件的方式将临时密钥发送给接收方;待接收方保存好投递的密码数据后,云端可删除使用临时密钥加密的敏感数据。
[0204]本实施例的一种备选方案中,所述创建模块还用于采用初始密码创建加密卷文件;
[0205]所述导出模块91还用于当加密卷文件创建后,导出初始密码摘要;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要;
[0206]所述计算模块还用于采用校验算法计算该初始密码摘要的校验值;
[0207]所述更新模块94还用于将该初始密码摘要和其校验值一起发送到云端。
[0208]当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
【权利要求】
1.一种数据保密存储方法,其特征在于,包括: 当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息; 采用用户密码和不同盐值生成至少三个摘要密钥; 分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要; 用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
2.如权利要求1所述的方法,其特征在于,还包括: 采用校验算法分别计算各加密的摘要的校验值;保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到云端; 使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏。
3.如权利要求2所述的方法,其特征在于,还包括: 当判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息; 使用该用户密码和 盐值产生的摘要密钥重新加密该摘要的明文信息,用加密后的摘要覆盖损坏的摘要。
4.如权利要求2所述的方法,其特征在于,还包括: 当判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息; 使用该用户密码和两种新盐值分别生成两个摘要密钥,分别加密所得到的摘要的明文信息,得到两份加密的摘要,分别覆盖加密卷文件摘要和备份摘要。
5.如权利要求1所述的方法,其特征在于,还包括: 当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件; 加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。
6.如权利要求1所述的方法,其特征在于,还包括: 当创建加密卷文件时,如果判断该用户账号的其它设备已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
7.如权利要求1所述的方法,其特征在于: 采用初始密码创建加密卷文件; 所述方法还包括: 当加密卷文件创建后,导出初始密码摘要,采用校验算法计算该初始密码摘要的校验值,将该校验值和该初始密码摘要一起发送到云端;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要。
8.如权利要求1所述的方法,其特征在于,还包括: 当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘要的明文信息;采用所述最新的用户密码和不同盐值生成两个摘要密钥;分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
9.如权利要求1所述的方法,其特征在于,还包括: 当收到云端推送的摘要更新消息时、或与网络断开连接时强制关闭本地的加密卷文件。
10.如权利要求1所述的方法,其特征在于,还包括: 当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端; 当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
11.一种客户端,其特征在于,包括: 导出模块,用于当创建加密卷文件后或更改加密卷文件的用户密码后,导出该加密卷文件的摘要的明文信息; 密钥生成模块,用于采用用户密码和不同盐值生成至少三个摘要密钥; 加密模块,用于分别用不同的摘要密钥加密所导出的摘要的明文信息,得到至少三份加密的摘要; 更新模块,用于用两份加密的摘要分别替换所述加密卷文件本地的摘要和备份摘要;将第三份加密的摘要同步到云端,作为该加密卷文件在云端的摘要。
12.如权利要求8所述的客户端,其特征在于,还包括: 计算模块,用于采用校验算法分别计算各加密的摘要的校验值; 所述更新模块还用于保存本地摘要和备份摘要的校验值,将云端摘要的校验值同步到~.丄山
; 判断模块,用于使用本地摘要和备份摘要的校验值分别判断加密卷文件的摘要和备份摘要是否损坏。
13.如权利要求12所述的客户端,其特征在于,还包括: 数据恢复模块,用于当所述判断模块判断加密卷文件的摘要和备份摘要中有一个损坏时,使用用户密码解开未损坏的摘要,得到摘要的明文信息;指示所述密钥生成模块使用用户密码和盐值产生摘要密钥;指示所述加密模块使用所述密钥生成模块产生的摘要密钥重新加密摘要的明文信息;用加密后的摘要覆盖损坏的摘要。
14.如权利要求12所述的客户端,其特征在于,还包括: 数据恢复模块,用于当所述判断模块判断加密卷文件的摘要和备份摘要都损坏时,获取云端摘要;使用用户密码解开云端摘要,得到摘要的明文信息;指示所述密钥生成模块使用该用户密码和两种新盐值分别生成两个摘要密钥;指示所述加密模块使用所述密钥生成模块产生的两个摘要密钥分别加密所得到的摘要的明文信息;用两份加密的摘要分别覆盖加密卷文件摘要和备份摘要。
15.如权利要求11所述的客户端,其特征在于,还包括: 数据恢复模块,用于当加密卷文件的数据区损坏时,获取云端对应的加密卷文件的摘要;使用用户密码解开所获取的摘要,根据得到的摘要的明文信息在本地创建数据区空白的加密卷文件;加载云端对应的加密卷文件作为同步源,将云端的敏感数据同步到所创建的本地加密卷文件的数据区中。
16.如权利要求11所述的客户端,其特征在于,还包括: 创建模块,用于当创建加密卷文件时,如果判断该用户账号的其它设备已创建过加密卷文件,则获取云端摘要,采用用户密码解密该云端摘要,得到摘要的明文信息;根据该摘要的明文信息创建加密卷文件。
17.如权利要求11所述的客户端,其特征在于: 所述创建模块还用于采用初始密码创建加密卷文件; 所述导出模块还用于当加密卷文件创建后,导出初始密码摘要;所述初始密码摘要是指由所述初始密码和盐值生成的摘要密钥加密后的摘要; 所述计算模块还用于采用校验算法计算该初始密码摘要的校验值; 所述更新模块还用于将该初始密码摘要和其校验值一起发送到云端。
18.如权利要求11所述的客户端,其特征在于: 所述更新模块还用于当收到云端推送的摘要更新消息时,或当加载加密卷文件时发现云端摘要比本地摘要及备份摘要的版本新时,获取云端摘要;采用最新的用户密码解密该云端摘要,得到摘 要的明文信息;指示所述密钥生成模块采用所述最新的用户密码和不同盐值生成两个摘要密钥;指示所述加密模块分别用所生成的两个摘要密钥加密所述摘要的明文信息,得到两个加密的摘要;用两个加密的摘要分别更新本地摘要和备份摘要。
19.如权利要求11所述的客户端,其特征在于,还包括: 所述更新模块还用于当收到云端推送的摘要更新消息时或与网络断开连接时强制关闭本地的加密卷文件。
20.如权利要求11所述的客户端,其特征在于,还包括: 发送模块,用于当加载加密卷文件后需要投递敏感数据给指定用户时,使用生成的临时密钥加密待发送的敏感数据,将加密后的敏感数据及临时密钥发送给云端; 接收模块,用于当加载加密卷文件后需要接收敏感数据时,输入从云端获得的临时密钥后从云端接收敏感数据;采用所述临时密钥解密所述敏感数据后保存在所述加密卷文件中。
【文档编号】H04L29/08GK104079539SQ201310105415
【公开日】2014年10月1日 申请日期:2013年3月28日 优先权日:2013年3月28日
【发明者】王含章 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1