一种基于密文索引的数据查询方法

文档序号:10655938阅读:203来源:国知局
一种基于密文索引的数据查询方法
【专利摘要】本发明提供一种基于密文索引的数据查询方法,包括如下步骤:向数据提供模块发送查询请求;接收数据提供模块对第一签名信息验证后产生的第一随机数Ry;对第一随机数Ry和查询索引ID进行哈希计算,同时生成第二随机数Rx,接收数据提供模块发送的查询结果信息和第二签名信息;对第二签名信息验证后,使用私钥对查询结果信息进行解密以获取查询结果。本发明通过数据提供模块和查询模块分别指定一个随机变量,并进行重新运算,如果结果正确表明双方知道密文对应的ID;同时使用各自的公私钥进行签名和加密,保证数据传输的保密性和不可抵赖性,进而提高数据查询的安全性。
【专利说明】
一种基于密文索引的数据查询方法
技术领域
[0001]本发明涉及数据安全技术领域,尤其涉及一种基于密文索引的数据查询方法。
【背景技术】
[0002]当数据提供机构发布信息ID的HASH密文进行索引时,虽然可以有效保障信息不被泄密,但是,同时也会引起以下数据安全问题:其一是存在数据查询者乱查询,即使不知道密文索引的含义也来查询获取数据,从而使得数据提供机构会时刻担心数据受到泄露;其二是数据提供机构提供的不是真实数据,而是抄袭其他数据提供机构发布的有效ID的HASH来作为索引,伪造数据,从而损害数据查询者利益。

【发明内容】

[0003]本发明的目的在于提供一种基于密文索引的数据查询方法,用以解决现有技术中数据查询的安全问题。
[0004]本发明的第一个方面是提供一种基于密文索引的数据查询方法,包括如下步骤:
[0005]向数据提供模块发送查询请求,查询请求中包括查询索引ID和查询模块的第一签名信息;
[0006]接收数据提供模块对第一签名信息验证后产生的第一随机数Ry;
[0007]对第一随机数Ry和查询索引ID进行哈希计算,同时生成第二随机数Rx,向数据提供模块发送计算结果和第二随机数Rx;
[0008]接收数据提供模块对计算结果和第二随机数Rx验证后发送的与查询索引ID对应的查询结果信息和第二签名信息;
[0009]对第二签名信息验证后,使用私钥对查询结果信息进行解密以获取查询结果。
[0010]进一步的,向数据提供模块发送查询请求之前还包括:
[0011]获取数据提供模块发布的信息索引ID的哈希值。
[0012]本发明的另一个方面是提供一种基于密文索引的数据查询方法,包括如下步骤:
[0013]接收查询模块发送的查询请求,查询请求中包括查询索引ID和查询模块的第一签名信息;
[0014]对第一签名信息进行验证,验证正确后产生第一随机数Ry,并向查询模块发送第一随机数Ry;
[0015]接收查询模块对第一随机数Ry和查询索引ID进行哈希计算后的计算结果以及查询模块生成的第二随机数Rx;
[0016]对计算结果和第二随机数Rx进行验证,若验证通过则向查询模块发送与查询索引ID对应的查询结果信息和第二签名信息,以使查询模块对第二签名信息进行验证后,使用私钥对查询结果信息进行解密以获取查询结果。
[0017]进一步的,接收查询模块发送的查询请求之前还包括:
[0018]发布信息索引ID的哈希值。[OO19]进一步的,对计算结果和第二随机数Rx进行验证具体包括:
[°02°]在本地对第一随机数Ry和查询索引ID进行哈希计算,以获取本地计算结果;
[0021]若本地计算结果与查询模块的计算结果一致,则通过第二随机数Rx对第一随机数Ry和查询索引ID进行哈希计算;
[0022]将与查询索引ID对应的查询结果信息进行加密,并携带第二签名信息后返回至查询丰吴块。
[0023]采用上述本发明技术方案的有益效果是:通过数据提供模块指定一个随机变量,让查询模块将密文对应的ID和随机变量进行重新运算,如果结果正确表明查询模块知道密文对应的ID;同样,查询模块也指定另外一个随机变量让数据提供模块与密文对应的ID重新计算,通过计算结果的匹配来确认数据提供模块是否真正知道密文对应的ID,同时使用各自的公私钥进行签名和加密,保证数据传输的保密性和不可抵赖性,进而提高数据查询的安全性。
【附图说明】
[0024]图1为本发明的一种基于密文索引的数据查询方法的流程图;
[0025]图2为本发明的另一种基于密文索引的数据查询方法的流程图。
【具体实施方式】
[0026]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0027]本发明实施例公开了一种基于密文索引的数据查询方法,如图1所示,当数据查询模块需要进行查询时,具体包括如下步骤:
[0028]需要说明的是,本发明实施例的执行主体是查询模块,在密文索引的情况下,必须要有一种机制保证双方都了解密文的真正含义的前提下,才能进行数据查询。在本发明中,数据查询模块X和数据提模块Y分别具有各自的公私钥对(Px,KX),(Py,Ky),使用公钥P加密信息A记为P(A),使用私钥K对信息A进行签名记为K(A)。
[0029]步骤SlOl,获取数据提供模块发布的信息索引ID的哈希值;
[0030]在本实施例中,为了确保双方都准确了解ID的值,数据提供模块会发布信息索引ID的哈希HASH值,以便查询模块可以获取ID的HASH值,通常记为HASH(ID)。
[0031 ]步骤S102,向数据提供模块发送查询请求;
[0032]在本实施例中,查询请求中包括查询索引ID和查询模块的第一签名信息,具体可以是HASH( ID)+Kx(HASH( ID))。
[0033]步骤S103,接收数据提供模块对第一签名信息验证后产生的第一随机数Ry;
[0034]数据提供模块收到查询请求后,对查询请求中的第一签名信息进行验证,验证正确后,生成一个随机数Ry,发送给数据查询模块。
[0035]步骤S104,对第一随机数Ry和查询索引ID进行哈希计算,同时生成第二随机数Rx,向数据提供模块发送计算结果和第二随机数Rx;
[0036]数据查询模块接收到随机数Ry后,计算HASH(ID+Ry),同时也产生一个随机数Rx,将计算结果和新随机数一起HASH(ID+Ry)+RX+KX(HASH(ID+Ry)+RX)发送给数据提供模块。
[0037]步骤S105,接收数据提供模块对计算结果和第二随机数Rx验证后发送的与查询索引ID对应的查询结果信息和第二签名信息;
[0038]数据提供模块本地计算HASH(ID+Ry),并将本地计算结果与数据查询模块发送过来的HASH( ID+Ry)对比,如果结果一致,表明数据查询模块知晓ID原文信息,则利用查询模块发送过来的Rx计算HASH(ID+Rx),并将与查询索引ID对应的查询结果信息A加密后一同发送给数据查询模块,并在返回信息中加入第二签名信息,信息组成为HASH(ID+RX)+PX(A) +Ky(HASH(ID+Rx)+Px(A))。
[0039]步骤S106,对第二签名信息验证后,使用私钥对查询结果信息进行解密以获取查询结果。
[0040]数据查询模块收到信息后,首先本地计算HASH(ID+Rx),并将计算结果与数据提供模块发来的HASH(ID+Rx)对比,如果一致表明数据提供模块的信息ID与希望查询的ID—致;其次,验证数据提供模块的签名是否正确;最后使用自己的私钥Kx解密Px(A),从而获取到真正的查询结果信息A。
[0041]本发明还公开了一种基于密文索引的数据查询方法,如图2所示,具体包括如下步骤:
[0042]步骤S201,发布信息索引ID的哈希值;
[0043]需要说明的是,本发明实施例的执行主体是数据提供模块,在本实施例中,为了确保双方都准确了解ID的值,数据提供模块会发布信息索引ID的哈希HASH值,以便查询模块可以获取ID的HASH值,通常记为HASH(ID)。
[0044]步骤S202,接收查询模块发送的查询请求;
[0045]在本实施例中,查询请求中包括查询索引ID和查询模块的第一签名信息,具体可以是HASH( ID)+Kx(HASH( ID))。
[0046]步骤S203,对第一签名信息进行验证,验证正确后产生第一随机数Ry,并向查询模块发送第一随机数Ry;
[0047]数据提供模块收到查询请求后,对查询请求中的第一签名信息进行验证,验证正确后,生成一个随机数Ry,发送给数据查询模块。
[0048]步骤S204,接收查询模块对第一随机数Ry和查询索引ID进行哈希计算后的计算结果以及查询模块生成的第二随机数Rx;
[0049]数据查询模块接收到随机数Ry后,计算HASH(ID+Ry),同时也产生一个随机数Rx,将计算结果和新随机数一起HASH(ID+Ry)+RX+KX(HASH(ID+Ry)+RX)发送给数据提供模块。
[0050]步骤S205,对计算结果和第二随机数Rx进行验证,若验证通过则向查询模块发送与查询索引ID对应的查询结果信息和第二签名信息,以使查询模块对第二签名信息进行验证后,使用私钥对查询结果信息进行解密以获取查询结果。
[0051]数据提供模块本地计算HASH(ID+Ry),并将本地计算结果与数据查询模块发送过来的HASH( ID+Ry)对比,如果结果一致,表明数据查询模块知晓ID原文信息,则利用查询模块发送过来的Rx计算HASH(ID+Rx),并将与查询索引ID对应的查询结果信息A加密后一同发送给数据查询模块,并在返回信息中加入第二签名信息,信息组成为HASH(ID+RX)+PX(A) +Ky(HASH(ID+Rx)+Px(A))。
[0052]数据查询模块收到信息后,首先本地计算HASH(ID+Rx),并将计算结果与数据提供模块发来的HASH(ID+Rx)对比,如果一致表明数据提供模块的信息ID与希望查询的ID—致;其次,验证数据提供模块的签名是否正确;最后使用自己的私钥Kx解密Px(A),从而获取到真正的查询结果信息A。
[0053]本发明的方法通过数据提供模块指定一个随机变量,让查询模块将密文对应的ID和随机变量进行重新运算,如果结果正确表明查询模块知道密文对应的ID;同样,查询模块也指定另外一个随机变量让数据提供模块与密文对应的ID重新计算,通过计算结果的匹配来确认数据提供模块是否真正知道密文对应的ID,同时使用各自的公私钥进行签名和加密,保证数据传输的保密性和不可抵赖性,进而提高数据查询的安全性。
[0054]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0055]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种基于密文索引的数据查询方法,其特征在于,包括如下步骤: 向数据提供模块发送查询请求,所述查询请求中包括查询索引ID和查询模块的第一签名信息; 接收数据提供模块对所述第一签名信息验证后产生的第一随机数Ry; 对所述第一随机数Ry和查询索引ID进行哈希计算,同时生成第二随机数Rx,向所述数据提供模块发送计算结果和所述第二随机数Rx; 接收数据提供模块对所述计算结果和第二随机数Rx验证后发送的与所述查询索引ID对应的查询结果信息和第二签名信息; 对所述第二签名信息验证后,使用私钥对所述查询结果信息进行解密以获取查询结果O2.根据权利要求1所述的基于密文索引的数据查询方法,其特征在于,所述向数据提供模块发送查询请求之前还包括: 获取数据提供模块发布的信息索引ID的哈希值。3.一种基于密文索引的数据查询方法,其特征在于,包括如下步骤: 接收查询模块发送的查询请求,所述查询请求中包括查询索引ID和查询模块的第一签名信息; 对所述第一签名信息进行验证,验证正确后产生第一随机数Ry,并向所述查询模块发送所述第一随机数Ry; 接收所述查询模块对所述第一随机数Ry和查询索引ID进行哈希计算后的计算结果以及所述查询模块生成的第二随机数Rx; 对所述计算结果和第二随机数Rx进行验证,若验证通过则向所述查询模块发送与所述查询索引ID对应的查询结果信息和第二签名信息,以使所述查询模块对所述第二签名信息进行验证后,使用私钥对所述查询结果信息进行解密以获取查询结果。4.根据权利要求3所述的基于密文索引的数据查询方法,其特征在于,所述接收查询模块发送的查询请求之前还包括: 发布信息索引ID的哈希值。5.根据权利要求3或4所述的基于密文索引的数据查询方法,其特征在于,所述对所述计算结果和第二随机数Rx进行验证具体包括: 在本地对所述第一随机数Ry和查询索引ID进行哈希计算,以获取本地计算结果; 若所述本地计算结果与所述查询模块的计算结果一致,则通过所述第二随机数Rx对第一随机数Ry和查询索引ID进行哈希计算; 将与所述查询索引ID对应的查询结果信息进行加密,并携带第二签名信息后返回至所述查询模块。
【文档编号】G06F21/60GK106022145SQ201610327978
【公开日】2016年10月12日
【申请日】2016年5月17日
【发明人】韩洪慧, 张鹏, 刘春梅
【申请人】上海凭安网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1