一种用户数据查询方法、系统和可信单元与流程

文档序号:32388367发布日期:2022-11-30 07:11阅读:50来源:国知局
一种用户数据查询方法、系统和可信单元与流程

1.本说明书实施例属于计算机技术领域,尤其涉及一种用户数据查询方法、系统和可信单 元。


背景技术:

2.目前,监管部门对于涉及重大交易的机构通常要求其履行反洗钱的义务。相关部门在处 理金融案件的过程中,可能需要从机构查询嫌疑用户的交易数据。然而,如何在不泄露信息 的同时从机构查询到用户数据,是目前反洗钱方案中需要解决的问题。


技术实现要素:

3.本发明的目的在于提供一种用户数据查询方案,通过结合查询设备、可信单元和机构设 备实施不经意传输算法,从机构设备查询用户数据,保护了机密数据和隐私数据。
4.本说明书第一方面提供一种用户数据查询方法,包括:
5.查询设备将第一密文查询数据发送给可信单元,所述可信单元用于进行隐私计算,所述 第一密文查询数据通过对第一查询数据进行加密而获得,所述第一查询数据中包括k个用户 的用户标识、k个用户标识的第一顺序信息、用于指示所述k个用户中的待查询的第一用户 的指示信息和随机数,所述可信单元中预先存储有所述第一用户对应的目标机构的k个公钥 及所述k个公钥的第二顺序信息;
6.所述可信单元对所述第一密文查询数据解密,得到所述第一查询数据,根据所述第一顺 序信息和所述第二顺序信息确定所述k个公钥中与所述指示信息对应的第一公钥,使用所述 第一公钥对所述随机数加密,得到第一字符串,对第二查询数据加密,得到第二密文查询数 据,所述第二查询数据中包括所述k个用户的用户标识、所述第一顺序信息及所述第一字符 串;将所述第二密文查询数据发送给所述目标机构的机构设备;
7.所述机构设备对所述第二密文查询数据解密,得到所述第二查询数据,获取所述k个用 户的用户数据,通过不经意传输ot算法基于所述第一字符串、所述目标机构的k个私钥及所 述k个私钥的第三顺序信息对所述k个用户的用户数据进行处理,得到k个转换用户数据; 将所述k个转换用户数据及其第四顺序信息发送给所述查询设备,所述第三顺序信息和所述 第四顺序信息与所述第二顺序信息对应;
8.所述查询设备通过ot算法基于所述随机数、所述指示信息、所述k个转换用户数据和所 述第四顺序信息,获取所述第一用户的用户数据。
9.本说明书第二方面提供一种用户数据查询方法,由可信单元执行,包括:
10.接收第一密文查询数据,所述第一密文查询数据通过对第一查询数据进行加密而获得, 所述第一查询数据中包括k个用户的用户标识、k个用户标识的第一顺序信息、用于指示所 述k个用户中的待查询的第一用户的指示信息和随机数,所述可信单元中预先存储有所述第 一用户对应的目标机构的k个公钥及所述k个公钥的第二顺序信息;
11.对所述第一密文查询数据解密,得到所述第一查询数据;
12.根据所述第一顺序信息和所述第二顺序信息确定所述k个公钥中与所述指示信息对应的 第一公钥;
13.使用所述第一公钥对所述随机数加密,得到第一字符串,对第二查询数据加密,得到第 二密文查询数据,所述第二查询数据中包括所述k个用户的用户标识、所述第一顺序信息及 所述第一字符串;
14.将所述第二密文查询数据发送给所述目标机构的机构设备。
15.本说明书第三方面提供一种用户数据查询系统,包括查询设备、可信单元和目标机构的 机构设备,
16.查询设备用于将第一密文查询数据发送给可信单元,所述可信单元用于进行隐私计算, 所述第一密文查询数据通过对第一查询数据进行加密而获得,所述第一查询数据中包括k个 用户的用户标识、k个用户标识的第一顺序信息、用于指示所述k个用户中的待查询的第一 用户的指示信息和随机数,所述可信单元中预先存储有所述第一用户对应的目标机构的k个 公钥及所述k个公钥的第二顺序信息;
17.所述可信单元用于对所述第一密文查询数据解密,得到所述第一查询数据,根据所述第 一顺序信息和所述第二顺序信息确定所述k个公钥中与所述指示信息对应的第一公钥,使用 所述第一公钥对所述随机数加密,得到第一字符串,对第二查询数据加密,得到第二密文查 询数据,所述第二查询数据中包括所述k个用户的用户标识、所述第一顺序信息及所述第一 字符串;将所述第二密文查询数据发送给所述目标机构的机构设备;
18.所述机构设备用于对所述第二密文查询数据解密,得到所述第二查询数据,获取所述k 个用户的用户数据,通过不经意传输ot算法基于所述第一字符串、所述目标机构的k个私钥 及所述k个私钥的第三顺序信息对所述k个用户的用户数据进行处理,得到k个转换用户数 据;将所述k个转换用户数据及其第四顺序信息发送给所述查询设备,所述第三顺序信息和 所述第四顺序信息与所述第二顺序信息对应;
19.所述查询设备还用于通过ot算法基于所述随机数、所述指示信息、所述k个转换用户数 据和所述第四顺序信息,获取所述第一用户的用户数据。
20.本说明书第四方面提供一种可信单元,包括:
21.接收单元,用于接收第一密文查询数据,所述第一密文查询数据通过对第一查询数据进 行加密而获得,所述第一查询数据中包括k个用户的用户标识、k个用户标识的第一顺序信 息、用于指示所述k个用户中的待查询的第一用户的指示信息和随机数,所述可信单元中预 先存储有所述第一用户对应的目标机构的k个公钥及所述k个公钥的第二顺序信息;
22.解密单元,用于对所述第一密文查询数据解密,得到所述第一查询数据;
23.确定单元,用于根据所述第一顺序信息和所述第二顺序信息确定所述k个公钥中与所述 指示信息对应的第一公钥;
24.加密单元,用于使用所述第一公钥对所述随机数加密,得到第一字符串,对第二查询数 据加密,得到第二密文查询数据,所述第二查询数据中包括所述k个用户的用户标识、所述 第一顺序信息及所述第一字符串;
25.发送单元,用于将所述第二密文查询数据发送给所述目标机构的机构设备。
26.本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所
述计算 机程序在计算机中执行时,令计算机执行第二方面所述的方法。
27.本说明书第六方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执 行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
28.在本说明书实施例中,通过由查询设备、可信单元和机构设备基于不经意传输算法执行 用户数据查询方法,机构设备不能获知查询设备是查询哪个用户的用户数据,而查询设备侧 由于没有机构设备的k个私钥,也无法获取k个用户中除目标用户之外的其他用户的用户数据, 因此保护了机密数据不泄露,同时也保护了用户隐私数据。
附图说明
29.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附 图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对 于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其 他的附图。
30.图1为本说明书实施例中的系统示意图;
31.图2为本说明书实施例中服务器验证机构或部门身份的方法流程图;
32.图3为本说明书实施例中客户端设备侧获取用户标识的方法流程图;
33.图4为本说明书实施例中的用户数据查询方法流程图;
34.图5为本说明书另一实施例中的用户数据查询方法流程图;
35.图6为本说明书实施例中的一种可信单元的架构图。
具体实施方式
36.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施 例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施 例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域 普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书 保护的范围。
37.在相关部门办理金融案件的过程中,嫌疑用户的交易数据是整个链路中的重要证据。相 关部门拥有从各个金融机构查询交易数据的权限,可要求金融机构提供嫌疑用户的交易数据。 同时,各个金融机构基于反洗钱合规要求保存有各个用户的交易数据。目前,很多国家央行、 很多大的金融机构都有在反洗钱领域利用区块链来提升效率和准确性并满足监管的尝试。同 时,数据作为一种资源,其流动性和可获取性是很多数据应用和产业发展的基础,但数据交 换过程中的隐私保护、机密信息保护一直是产业发展的一大挑战。下面仍以上述的反洗钱领 域为例加以说明。
38.反洗钱(anti-money laundering,aml)是指预防通过各种方式掩饰、隐瞒毒品犯罪、 黑社会性质的组织犯罪、恐怖活动犯罪、走私犯罪、贪污贿赂犯罪、破坏金融管理秩序犯罪 等犯罪所得及其收益的来源和性质的洗钱活动的措施。常见的洗钱途径广泛涉及银行、保险、 证券、房地产等各种领域。大多数反洗钱工作都包括三个核心的事项:
39.1、客户身份识别制度。反洗钱义务主体在与客户建立业务关系或者与其进行交易时,应 当根据真实有效地身份证件,核实和记录其客户的身份,并在业务关系存续期间及
时更新客 户的身份信息资料。
40.2、大额和可疑交易报告(suspicious transaction report,str)制度。非法资金流动 一般具有数额巨大、交易异常等特点,因此,法律规定了大额和可疑交易报告制度,要求金 融机构对数额达到一定标准的交易和缺乏合法目的的异常交易应当及时向反洗钱行政主管部 门报告,以作为追查违法犯罪行为的线索。
41.3、客户身份资料和交易记录保存制度客户身份资料和交易记录保存,是指金融机构依法 采取必要措施将客户身份资料和交易信息保存一定期限,可以为追查违法犯罪行为提供证据 支持。
42.客户身份识别制度也就是通常所说的“了解你的客户”(know your customer,kyc), 指的是获取客户相关识别信息,包括与客户建立业务时了解客户的身份、了解交易的目的、 了解资金的来源和去向、以及了解客户的长经营活动和金融交易情况等,是反洗钱的基础。
43.在相关方案中,相关部门的办案人员需要通过线下流程分别从各个金融机构获取嫌疑用 户的交易数据,获取效率低下,并且存在信息泄露风险,在信息泄露的情况下,嫌疑用户可 能提前获知消息,导致办案难度增加。
44.图1为本说明书实施例中的系统示意图。如图1所示,查询设备100、机构设备200和机构 设备300可以分别为例如相关部门、机构b和机构c的计算设备,所述机构b和机构c例如可以为 金融机构、保险机构、交易机构等机构中的任一机构。可以理解,图中示出两个机构设备作 为示例,在实际中可包括其他数目的多个机构设备。机构设备中可安装反洗钱平台的客户端, 各个机构设备可以直接接收用户的信息,从而客户端基于这些用户信息完成一定的处理工作, 如审查可疑交易,从而获得各个用户的风险标签。查询设备中也可以安装反洗钱平台的客户 端,以用于通过平台查询各个机构设备中的用户交易数据。所述反洗钱平台例如由图1中的服 务器400提供。
45.服务器400中包括可信单元40,所述可信单元可以为任何可以进行隐私数据或机密数据处 理、保护数据不泄露的计算单元,所述可信单元例如包括可信执行环境(trusted executionenvironment,tee)、可信机构中的计算设备等。查询设备100可将查询请求发送给服务器400, 该查询请求经可信单元40处理而发送给对应的机构设备,从而使得机构设备向服务器返回查 询结果数据,之后,服务器400将查询结果数据返回给查询设备100。其中,服务器400和可信 单元40可与区块链500连接,结合区块链500进行本说明书实施例中的用户数据查询方案。可 以理解,图1中虽然示出可信单元位于服务器400内部,本说明书实施例不限于此,可信单元 也可以位于另一个计算设备中,服务器400可通过与该计算设备连接而连接到该可信单元。
46.通过图1所示的系统架构,各政府部门不需要与各个机构一一对接,从现有的多对多对接 模式变为多对一一对多的模式,提高了系统效率。
47.在本说明书实施例中,可以通过dis结合区块链的方式为各个机构或各个部门创建一个数 字身份。区块链可以提供去中心化(或弱中心化)的、不可篡改(或难以篡改)的、可信的 分布式账本,并可以提供安全、稳定、透明、可审计且高效的记录交易以及数据信息交互的 方式。区块链网络可以包括多个节点。一般来说区块链的一个或多个节点归属于一个参与方。 笼统的说,区块链网络的参与方越多,参与方越权威,区块链网络的可信程度越
高。这里称 多个参与方构成的区块链网络为区块链平台。借助区块链平台,可以帮助机构或部门验证身 份。
48.为了使用区块链平台提供的分布式数字身份服务,机构或部门可以将自身的身份在区块 链平台中登记。例如,机构或部门可以创建一对公钥和私钥,私钥保密存储,并可以创建一 个分布式数字身份(也称为去中心化标识符,decentralized identitfiers,did)。可以由 机构或部门自己创建did,也可以请求分布式身份服务(decentralized identity service, dis)系统来创建did。dis是一种基于区块链的身份管理方案,可以提供数字身份的创建、验 证和管理等功能,从而实现规范化地管理和保护实体数据,同时保证信息流转的真实性和效 率,并可以解决跨机构的身份认证和数据合作等难题。dis系统可以与区块链平台相连。通过 dis系统可以为机构或部门创建一个did,并将该did和所述公钥发送至区块链平台保存,还将 该创建的did返回给机构或部门。所述公钥可以包含到did文档(diddoc)中,所述diddoc可 以存储于区块链平台中。dis可以基于机构或部门发来的公钥为机构或部门创建did,例如采 用hash函数对所述机构或部门的公钥进行计算后创建,也可以根据机构或部门的其它信息(可 以包括所述公钥或不包括所述公钥)创建。后者可能需要机构或部门提供一些公钥之外的信 息。之后,机构或部门可以提供验证功能,从而向其它方证明自身是机构或部门。图2为本说 明书实施例中服务器验证机构或部门身份的方法流程图,包括:
49.s201:机构或部门的客户端设备向dis发起did创建请求,所述请求中包括所述机构或部 门的公钥。
50.s203:响应于所述创建请求,所述dis在对机构或部门的信息(例如资质、证件等)验证 通过之后,为所述机构或部门创建did及对应的diddoc,并将该did及对应的diddoc发送至区 块链平台保存。所述diddoc中包括所述机构或部门的公钥。所述diddoc中还包括对机构或部 门的身份的可验证证明的下载地址等信息。
51.s205:区块链平台接收服务器发来的验证请求,所述验证请求中包括所述机构或部门的 did。
52.s207:区块链平台从自身存储中取出所述did对应的diddoc并返回至所述服务器。
53.s209:服务器生成一个字符串,并将所述字符串发送至所述机构或部门的客户端设备。
54.s211:所述客户端设备用机构或部门的私钥对所述字符串签名并返回至所述服务器。
55.s213:所述服务器用前述接收到的所述diddoc中的公钥验证所述返回的签名是否正确, 如果正确,则确认所述机构或部门的身份。
56.服务器在确认机构或部门的身份之后,可与查询设备和机构设备一起执行本说明书实施 例中的用户数据查询方案。
57.相关部门的查询设备在向服务器发送查询请求之前,可以对用户的身份信息进行脱敏, 得到用户标识,并在查询请求中包括用户标识。各个机构的机构设备也可以对本机构的用户 的身份信息进行脱敏,获取用户的身份信息与用户标识的映射表,从而可根据该映射表确定 查询请求中的用户标识对应的用户身份信息。
58.图3为本说明书实施例中客户端设备侧获取用户标识的方法流程图。所述客户端
设备可以 为查询设备100、或者可以为图1中的多个机构设备中的任一机构设备。下文中以查询设备100 为例进行描述。
59.如图3所示,首先,在步骤s301,查询设备100获取用户身份信息。
60.在查询设备100对应的相关部门中,业务人员可根据查询需要在查询设备100中生成用户 信息文件,该文件中包括一个或多个用户的身份信息。其中,身份信息例如包括姓名、证件 号等信息。在相关部门需要基于不经意传输查询用户数据时,为了查询目标用户的数据,需 要向服务器提供多个(例如k个)用户的用户标识,该多个用户中包括目标用户,在该情况下, 在用户信息文件中可包括多个用户各自的身份信息。具体是,用户信息文件中可包括多行, 每行可以为如下的形式:“name/certtype/certnum”,其中name为用户姓名,certtype为证 件类型,certnum为证件号,这三者构成了用户身份信息的三要素。
61.业务人员在查询设备100中生成用户信息文件之后,将用户信息文件上传至客户端的存储 中。客户端在监听到用户信息文件更新之后,例如可逐行读取文件,从而可获取各个用户的 身份信息。
62.在步骤s303,查询设备100确定本地是否存储有身份信息对应的用户id。
63.为了保护用户的隐私,需要对用户信息文件中的用户身份信息进行脱敏处理,即不能在 从查询设备100发送出去的查询数据中直接包括用户的身份信息。具体是,查询设备100中的 客户端对于用户信息文件中的一行中的用户身份信息,首先确定本地是否存储有该身份信息 对应的用户id。例如,客户端可确定硬盘中的预设地址的映射表中是否包括该身份信息及对 应的用户id。如果不包括,则客户端可执行步骤s305,向服务器400请求该用户的用户id。
64.在步骤s305,查询设备100向服务器400请求用户的用户id。
65.具体是,由于服务器400也是不完全可信的,查询设备100在向服务器400请求用户id时也 需要对用户的三要素信息进行脱敏。具体是,查询设备100可计算三要素信息的哈希值 hash1=hash(name+certtype+certnum),其中,“+”可表示对前后两项数据的顺序拼接,之后, 查询设备100可将该哈希值hash1发送给服务器400,以请求与该哈希值对应的用户id。
66.在步骤s307,服务器400向查询设备100返回用户的用户id。
67.服务器400在接收到hash1之后,可使用预设规则计算hash1对应的id。
68.在一种实施方式中,为了进一步加强数据安全防护,服务器400可对hash1采取加盐操作, 例如通过计算hash(hash1+salt),将得到的哈希值作为用户id,其中,salt(盐值)为服 务器预先生成的一个值。通过对hash1采取加盐操作得到用户id,可避免恶意方推测hash1对 应的三要素信息。
69.服务器在确定用户id之后,将该用户id返回给查询设备100。
70.在步骤s309,查询设备100关联存储用户身份信息和用户id。
71.通过在查询设备100中关联存储用户身份信息和用户id,查询设备100在下次查询该用户 的数据时,可直接从本地获取该用户对应的用户id。
72.在步骤s311,查询设备100获取用户id。
73.查询设备100在步骤s303中确定本地(例如上述映射表中)存储有身份信息对应的用户id 的情况中,可直接执行步骤s311。或者,查询设备100在执行步骤s309之后可执行步
骤s311。 查询设备100在获取到用户id之后,可用于生成本说明书实施例中查询请求,该具体过程将在 下文详细描述。
74.图4为本说明书实施例中的用户数据查询方法流程图。
75.如图4所示,在步骤s401,查询设备100生成查询数据,该查询数据包括k个用户的用户标 识和对应标号、待查询用户的标号n和随机数q,对查询数据加密,得到第一密文查询数据。
76.所述用户标识例如通过图3所示方法生成的脱敏用户标识,或者可以为用户的身份标识等 可以唯一标识用户的信息。所述k个用户标识与k个标号1~k一一对应,即,每个用户标识对 应于一个标号,其中查询设备100希望查询的用户(本文中称为待查询用户)例如与标号1~k 中的标号n对应。查询设备100还生成随机数q,以用于进行不经意传输算法。之后,查询设备 100可将k个用户的用户标识、各个用户标识对应的标号、待查询用户的标号n和随机数进行拼 接,得到查询数据,对该查询数据加密,得到第一密文查询数据。具体是,查询设备100可使 用可信单元的公钥对查询数据加密,得到第一密文查询数据。
77.其中,可信单元例如包括tee。tee是基于cpu硬件的安全扩展,且与外部完全隔离的可信 执行环境。目前工业界十分关注tee的方案,几乎所有主流的芯片和软件联盟都有自己的tee 解决方案,比如软件方面的tpm(trusted platform module,可信赖平台模块)以及硬件方 面的intel sgx(software guard extensions,软件保护扩展)、arm trustzone(信任区) 和amd psp(platform security processor,平台安全处理器)等。tee可以起到硬件黑箱作 用,在tee中执行的代码和数据即便是操作系统层都无法偷窥,只有通过代码中预先定义的接 口才能对其进行操作。在效率方面,由于tee的黑箱性质,在tee中进行运算的是明文数据, 而不是同态加密中复杂的密码学运算,计算过程效率几乎没有损失。
78.以intel sgx(以下简称sgx)技术为例。区块链节点可以基于sgx技术创建enclave(围 圈或飞地)作为tee。其中,服务器可利用cpu中新增的处理器指令,在内存中可以分配一部 分区域epc(enclave page cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的enclave。 上述epc对应的内存区域被cpu内部的内存加密引擎mee(memory encryption engine)加密, 该内存区域中的内容(enclave中的代码和数据)只有在cpu内核中才能够被解密,且用于加 解密的密钥只有在epc启动时生成并存储在cpu中。可见,enclave的安全边界只包含其自身和 cpu,无论是特权或非特权软件都无法访问enclave,即便是操作系统管理员和vmm(virtualmachine monitor,虚拟机监视器;或称为hypervisor)也无法影响enclave中的代码和数据, 因而具有极高的安全性,并且在上述安全性保障的前提下,cpu能够在enclave中对明文形式 的数据进行处理,具有极高的运算效率,从而兼顾了数据安全性和计算效率。而对于进、出 tee的数据,可以是加密的,从而保障数据的隐私。
79.所述tee在被使用前,可以向使用者证明自身是可信的。证明自身可信的过程可能涉及远 程证明报告。远程证明报告产生于对tee的远程证明过程中。远程证明报告可以由权威的认证 服务器对tee产生的自荐信息进行验证后生成。该远程证明报告可以用于表明tee可信任。
80.例如,查询设备100在使用tee的公钥进行加密之前,可以首先验证tee是否可信。具体的, 查询设备100可以向tee发起挑战,并接收tee返回的远程证明报告。查询设备100
在获取远程 证明报告后,可以根据权威认证服务器的公钥对该远程证明报告的签名进行验证,如果验证 通过则可以确认tee是可信的。具体是,tee在接收所述验证请求之后,基于其内部机制生成 认证信息,并将该认证信息及tee的硬件公钥发送给查询设备100。所述认证信息例如包括所 述tee的签名信息、硬件信息和软件信息等。其中,所述签名信息例如通过tee的硬件密钥生 成;所述硬件信息例如包括,各种硬件的指标,比如cpu主频,内存容量等等;所述软件信息 包括各个程序的代码哈希值、代码名称、版本、运行日志等。如本领域技术人员所知,tee 可通过内存硬件执行对其中运行程序的“测量”,例如获取该程序的代码哈希值、该程序在 特定执行点的内存占有的哈希值等等,并在所述认证信息中包括对所述程序的“测量”信息, 由于该“测量”信息由该tee自身实体(内存硬件)执行,而不涉及任何软件、操作系统,因 此是真实可信的。查询设备100在接收到所述认证信息之后,可把所述认证信息发送给tee的 远程认证服务器,从而从所述服务器接收到对所述tee的远程证明报告。所述远程证明报告包 括所述tee的身份验证、及对所述tee内部执行程序的验证等等。从而,查询设备100基于该远 程证明报告可确定tee是可信的,通过该tee的查询结果是可信的。同时,查询设备100可在本 地保存tee的硬件公钥,以用于后续对tee的签名的验证。其中,tee中存储一对公私钥,私钥 妥善保管在tee中。所述tee传出的内容,可以用所述tee内保存的私钥来签名,从而证明是由 该tee执行的结果。
81.可以理解,查询设备100不限于使用可信单元的公钥对查询数据进行加密,例如,可信单 元与查询设备之间可协商其他非对称密钥或对称密钥,以用于对查询数据加密。
82.在步骤s403,查询设备100将第一密文查询数据发送给服务器400。
83.具体是,查询设备100可使用自己的私钥对第一密文查询数据签名,将查询设备100的did (例如dida)、第一密文查询数据及签名发送给服务器400。服务器400可使用预先获取的查 询设备100的公钥对签名进行验证,在验证通过之后,可确定第一密文查询数据是由相关部门 发送。
84.在步骤s405,服务器400向可信单元提供第一密文查询数据和目标机构的k个公钥及对应 标号。
85.在一种实施方式中,所述目标机构可以为约定好的一个或多个机构。在另一种实施方式 中,查询设备100还可以将特定目标机构的机构标识与第一密文查询数据一起发送给服务器 400。该目标机构例如包括机构b,机构b中可在机构设备200中初始化k对公私钥,每对公私钥 对应于标号1~k中的一个标号,以用于进行不经意传输。
86.服务器400可在通过图3所示过程对机构b的did验证通过之后,可在验证的过程中从区块 链中获取机构b的didb的公钥,另外,服务器400还从机构设备200接收上述k对公私钥。
87.在一种实施方式中,为了向可信单元提供第一密文查询数据和k个公钥及其标号,服务器 400可向区块链发送交易tx1,该交易tx1中包括第一密文查询数据和目标机构的k个公钥及其 对应标号,区块链中对交易tx1执行成功之后,存储交易tx1,将交易tx1的哈希值返回给服务 器400。之后,服务器400可将交易tx1的哈希值发送给可信单元,从而可信单元可基于该哈希 值从区块链获取第一密文查询数据和k个公钥及其标号。通过这种方式,机构设备200也可以 从区块链获取交易tx1,并验证k个公钥及其标号是否正确,从而保证了服务器400向可信单元 提供正确的k个公钥及其标号。
88.在另一种实施方式中,服务器400可将第一密文查询数据和目标机构的k个公钥及其标号 存储到存储设备中,并将存储地址提供给可信单元40,从而可信单元40可从该存储地址读取 到第一密文查询数据和目标机构的k个公钥及其标号。可信单元40还可以同时将第一密文查询 数据和目标机构的k个公钥及其标号存证到区块链中,以使得机构设备200可验证验证k个公钥 及其标号是否正确,从而保证了服务器400向可信单元40提供正确的k个公钥及其标号。
89.在步骤s407,可信单元40对第一密文查询数据解密,得到查询数据,使用第n个公钥对随 机数q加密,得到字符串p,对包括k个用户的用户标识及其标号和字符串p的数据加密,得到 第二密文查询数据。
90.以可信单元40为tee为例,第一密文查询数据可如前文所述通过使用tee的公钥加密而生 成,tee可使用自己的私钥对第一密文查询数据解密,得到查询数据。之后,tee可根据查询 数据中的待查询用户的标号n,使用k个公钥中的第n个公钥对随机数q加密,得到字符串p。之 后,tee可对“k个用户的用户标识及其对应标号‖字符串p”进行加密,得到第二密文查询数 据,其中“‖”表示对数据的拼接。具体是,tee可使用预先获取的机构设备200的didb的公 钥对上述数据进行加密,得到第二密文查询数据。其中,例如可通过服务器400预先向tee提 供机构设备200的didb的公钥。
91.在步骤s409,可信单元40将第二密文查询数据提供给服务器400。
92.具体是,可信单元40可将第二密文查询数据存储到存储设备中,并将存储地址发送给服 务器400,从而使得存储400从该存储地址读取到第二密文查询数据。或者,可信单元40可将 第二密文查询数据直接发送给服务器400。
93.在步骤s411,服务器400将第二密文查询数据发送给机构设备200。
94.可以理解,这里以机构设备200为例进行描述,在目标设备为多个的情况中,服务器400 可使用各个目标设备的公钥对数据加密,得到多个第二密文查询数据,并将各个第二密文查 询数据分别发送给对应的目标设备,以使得各个目标设备分别进行不经意传输过程。
95.在步骤s413,机构设备200对第二密文查询数据解密,得到“k个用户的用户标识及其对 应标号‖字符串p”,使用上述k个公私钥对中的k个私钥分别对字符串p解密,得到k个字符串 si(i∈1~k),其中,i为各个私钥的标号(即k个私钥的顺序信息),根据k个用户的用户 标识获取k个用户的用户数据mi,基于si对mi进行处理,得到k个转换用户数据msi。在如此生成 k个转换用户数据msi之后,i也成为各个转换用户数据的标号。
96.其中,在k个字符串si中,由于字符串p是使用第n个公钥进行加密得到,因此,使用第n 个私钥对字符串p解密,得到的字符串sn=q,k个转换用户数据msi中的msn为通过基于q对mn进行 处理得到的转换用户数据。上述处理例如为异或处理或者其他运算或组合运算处理,在此不 作限定。在用户标识为通过图3所示过程获得的脱敏用户标识的情况中,机构设备200还可以 根据预先存储的用户身份信息与用户标识的映射表获取用户标识对应的用户身份信息,并基 于用户身份信息获取用户的用户数据。
97.在步骤s415,机构设备200将k个转换用户数据msi及其对应的标号i发送给服务器400。
98.机构设备200也可以使用查询设备100的公钥对k个转换用户数据msi及其对应的
标号i进 行加密,将加密得到的密文数据发送给服务器400。
99.在步骤s417,服务器400将k个转换用户数据msi及其对应的标号i发送给查询设备100。
100.在步骤s419,查询设备100在接收到k个转换用户数据msi及其对应的标号i之后,读取其 中的msn,基于随机数q对msn进行处理,得到第n个用户的用户数据。该处理为上述步骤s413 中的处理(例如异或运算)的逆运算,以用于基于随机数q从msn还原出第n个用户的用户数据。 对于除msn之外的其他转换用户数据,由于查询设备100中没有与其他转换用户数据对应的字 符串si(i为1~k中除n以外的值),因此也就不能获得与该转换用户数据对应的原始用户数 据,即查询设备100只能读取到目标用户的用户数据。
101.在本说明书实施例中,通过结合服务器和tee基于不经意传输算法执行用户数据查询方法, 机构设备不能获知查询设备是查询哪个用户的用户数据,而查询设备侧由于没有k个私钥,也 无法获取到k个字符串si中除q之外的字符串,因此也就不能还原出k个用户中除第n个用户之 外的其他用户的用户数据,因此保护了机密数据不泄露,同时也保护了用户隐私数据。
102.图4中虽然示出了通过结合服务器和可信单元执行本说明书实施例中的用户数据查询方 案,本说明书实施例不限于此,例如也可以包括如图5所示的通过查询设备100和机构设备200 之间的可信单元执行用户数据查询方法。
103.图5为本说明书实另一施例中的用户数据查询方法的流程图。
104.如图5所示,首先在步骤s501,查询设备100生成查询数据,该查询数据包括k个用户的用 户标识及所述k个用户标识的顺序信息、待查询用户的指示信息和随机数q,对查询数据加密, 得到第一密文查询数据。
105.参考上文中对步骤s401的描述,所述k个用户标识的顺序信息例如可通过标号1~k来体现, 待查询用户的指示信息例如可以为标号1~k中的标号n,以用于指示k个用户标识中的第n个用 户标识为待查询用户的用户标识。
106.在步骤s503,查询设备100将第一密文查询数据发送给可信单元40。
107.查询设备100可直接将第一密文查询数据发送给可信单元40,或者可将第一密文查询数据 存储到存储设备中,将存储地址发送给可信单元40,以使得可信单元40可基于该地址读取到 第一密文查询数据。
108.在步骤s505,可信单元40对第一密文查询数据解密,得到查询数据,根据所述指示信息 从机构设备的k个公钥中确定出用于加密的公钥,以对随机数加密,得到字符串p,对包括k 个用户的用户标识、其顺序信息和字符串p的数据加密,得到第二密文查询数据。
109.可信单元40可预先从区块链获取机构b的didb的公钥,从机构设备200获取k个公私钥对中 的k个公钥及该k个公钥的顺序信息,该顺序信息例如也可以是标号1~k。可信单元根据指示 信息“标号n”可以确定使用k个公钥中的第n个公钥,从而可使用第n个公钥对随机数q加密, 得到字符串p,并可以使用机构b的didb的公钥对“k个用户的用户标识及其对应标号‖字符串 p”进行加密,得到第二密文查询数据。
110.在步骤s507,可信单元40将第二密文查询数据发送给机构设备200。
111.在步骤s509,机构设备200对第二密文查询数据解密,得到“k个用户的用户标识及其对 应标号‖字符串p”,获取k个用户的用户数据mi,基于k个私钥及其顺序信息、字符串p
对k个 用户数据mi进行处理,得到k个转换用户数据msi。
112.具体是,机构设备使用上述k个公私钥对中的k个私钥分别对字符串p解密,得到k个字符 串si(i∈1~k),其中,i为各个私钥的标号(即各个私钥的顺序信息),k个私钥的标号与 其对应的k个公钥的标号分别一致。根据k个用户的用户标识获取k个用户的用户数据mi,基于 si对mi进行处理,得到k个转换用户数据msi。其中,k个转换用户数据msi中的“i”也即k个转 换用户数据的顺序信息(即标号),该标号与各个转换用户数据对应的私钥的标号一致。该 处理例如为异或处理等运算处理。
113.在步骤s511,机构设备200将k个转换用户数据msi及其顺序信息发送给查询设备100。
114.其中,k个转换用户数据msi的顺序信息也可以通过标号i来标识,该标号与该k个转换用 户数据msi分别对应的k个私钥的标号相同,也即与该k个私钥分别对应的k个公钥的标号相同。
115.在步骤s513,查询设备基于随机数q、待查询用户的指示信息、k个转换用户数据msi及其 对应的顺序信息,获取待查询用户的用户数据。
116.具体是,查询设备100在接收到k个转换用户数据msi及其对应的标号i之后,读取其中的 msn,基于随机数q对msn进行处理,得到第n个用户的用户数据。其中,该步骤中的处理为步骤 s509中的处理的逆处理,例如为异或运算的逆运算。
117.在本说明书实施例中,通过可信单元基于不经意传输算法执行用户数据查询方法,机构 设备不能获知查询设备是查询哪个用户的用户数据,而查询设备侧由于没有k个私钥,也无法 获取到k个字符串si中除q之外的字符串,因此也就不能还原出k个用户中除第n个用户之外的 其他用户的用户数据,因此保护了机密数据不泄露,同时也保护了用户隐私数据。
118.图6为本说明书实施例中的一种可信单元的架构图,所述可信单元用于执行如图3或图4 所示方法,包括:
119.接收单元61,用于接收第一密文查询数据,所述第一密文查询数据通过对第一查询数据 进行加密而获得,所述第一查询数据中包括k个用户的用户标识、k个用户标识的第一顺序 信息、用于指示所述k个用户中的待查询的第一用户的指示信息和随机数,所述可信单元中 预先存储有所述第一用户对应的目标机构的k个公钥及所述k个公钥的第二顺序信息;
120.解密单元62,用于对所述第一密文查询数据解密,得到所述第一查询数据;
121.确定单元63,用于根据所述第一顺序信息和所述第二顺序信息确定所述k个公钥中与所 述指示信息对应的第一公钥;
122.加密单元64,用于使用所述第一公钥对所述随机数加密,得到第一字符串,对第二查询 数据加密,得到第二密文查询数据,所述第二查询数据中包括所述k个用户的用户标识、所 述第一顺序信息及所述第一字符串;
123.发送单元65,用于将所述第二密文查询数据发送给所述目标机构的机构设备。
124.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算 机程序在计算机中执行时,令计算机执行如图2至图5所示的方法。
125.本说明书实施例还提供一种tee,包括存储器和处理器,所述存储器中存储有可执
行代码, 所述处理器执行所述可执行代码时,实现如图2至图5所示的方法。
126.本说明书实施例还提供一种服务器,包括存储器和处理器,所述存储器中存储有可执行 代码,所述处理器执行所述可执行代码时,实现如图2至图4所示的方法。
127.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二 极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而, 随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计 人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不 能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件 (programmable logic device,pld)(例如现场可编程门阵列(field programmable gatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员 自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专 用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻 辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似, 而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescription language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedboolean expression language)、ahdl(altera hardware description language)、confluence、 cupl(cornell university programming language)、hdcal、jhdl(java hardware descriptionlanguage)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language) 等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware descriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述 语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
128.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及 存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、 逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编 程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、 atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还 可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程 序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、 开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这 种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为 硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软 件模块又可以是硬件部件内的结构。
129.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者 由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本技术不排除随 着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计 算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、 导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设 备的组合。
130.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于 常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅 为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执 行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多 线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他 变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅 包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产 品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方 法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表 示名称,而并不表示任何特定的顺序。
131.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明 书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同 一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性 的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。 另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置 或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
132.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和 /或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和 /或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指 令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一 个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流 程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
133.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工 作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制 造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指 定的功能。
134.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或 其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编 程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多 个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、 输入/输出接口、网络接口和内存。
135.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失 性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
136.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术 来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机 的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、
动态随机 存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程 只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多 功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设 备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计 算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
137.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序 产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软 件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中 包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光 学存储器等)上实施的计算机程序产品的形式。
138.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描 述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、 程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实 施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在 分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
139.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相 参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而 言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分 说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、
ꢀ“
具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、 材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示 意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特 点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下, 本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征 进行结合和组合。
140.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或 多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。 凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求 范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1