1.一种密文相似度计算方法,应用于服务器,其特征在于,所述服务器预先存储每个用户的客户端发送的密文,任意两个需要进行密文比较的用户分别为第一用户和第二用户,第一用户的密文为第一密文,第二用户的密文为第二密文,所述方法包括:将第一密文的第一部分和第二密文的第二部分发送给第一用户的客户端,以使第一用户的客户端根据第一用户的私钥、第一密文的第一部分和第二密文的第二部分,计算第一授权陷门;
将第二密文的第一部分和第一密文的第二部分发送给第二用户的客户端,以使第二用户的客户端根据第二用户的私钥、第二密文的第一部分和第一密文的第二部分,计算第二授权陷门;
接收第一用户的客户端发送的第一授权陷门和第二用户的客户端发送的第二授权陷门;
若第一密文与第二密文符合第一预设条件,则根据第一密文、第二密文、第一授权陷门和第二授权陷门,计算得到密文相似度计算结果,所述符合第一预设条件是指以下两个等式均成立:e(C5,g2)=e(H3(C1,C2,C3,1,C4,1,…,C3,n,C4,n),C2)e(C′5,g2)=e(H3(C′1,C′2,C′3,1,C′4,1,…,C′3,n,C′4,n),C′2)其中,C1、C2、C3,i、C4,i、C5为第一密文的第一部分、第二部分、第三部分、第四部分和第五部分,C′1、C′2、C′3,i、C′4,i、C′5为第二密文的第一部分、第二部分、第三部分、第四部分和第五部分,1≤i≤n;g2为群生成元,H3(·)为哈希函数,e(·,·)为双线对运算;
将密文相似度计算结果发送给相应用户的客户端;
所述根据第一密文、第二密文、第一授权陷门和第二授权陷门,计算得到密文相似度计算结果,具体为:Li=e(C4,i/H2(e(C3,i,Td2)),C′2)/Td1
L={L1,L2,…,Ln}
L′i=e(C′4,i/H2(e(C′3,i,Td′2)),C2)/Td′1L′={L′1,L′2,…,L′n}
其中,L为第一中间向量,由字符L1,L2,…,Ln组成;L′为第二中间向量,由字符L′1,L′2,…,L′n组成;n为消息长度,v为阈值,C2、C3,i与C4,i为第一密文的第二部分、第三部分和第四部分,C′2、C′3,i与C′4,i为第二密文的第二部分、第三部分和第四部分,H2(·)为哈希函数,e(·,·)为双线对运算,Td1与Td2为第一授权陷门的第一部分和第二部分,Td′1与Td′2为第二授权陷门的第一部分和第二部分;
计算L与L′的编辑距离d,若d/n≤v,则判断第一密文与第二密文相似,将密文相似度计算结果设置为“1”;否则,判断第一密文与第二密文不相似,将密文相似度计算结果设置为“0”;
所述根据第一用户的私钥、第一密文的第一部分和第二密文的第二部分,计算第一授权陷门,如下式:其中,C1为第一密文的第一部分,C′2为第二密文的第二部分,e(·,·)为双线对运算,sk1与sk2为第一用户的私钥的第一部分和第二部分,Td1与Td2为第一授权陷门的第一部分和第二部分;
所述根据第二用户的私钥、第二密文的第一部分和第一密文的第二部分,计算第二授权陷门,如下式:其中,C′1为第二密文的第一部分,C2为第一密文的第二部分,e(·,·)为双线对运算,sk′1与sk′2为第二用户的私钥的第一部分和第二部分,Td′1与Td′2为第二授权陷门的第一部分和第二部分。
2.一种密文相似度计算装置,应用于服务器,其特征在于,所述服务器预先存储每个用户的客户端发送的密文,任意两个需要进行密文比较的用户分别为第一用户和第二用户,第一用户的密文为第一密文,第二用户的密文为第二密文,所述装置包括:第一发送模块,用于将第一密文的第一部分和第二密文的第二部分发送给第一用户的客户端,以使第一用户的客户端根据第一用户的私钥、第一密文的第一部分和第二密文的第二部分,计算第一授权陷门;
第二发送模块,用于将第二密文的第一部分和第一密文的第二部分发送给第二用户的客户端,以使第二用户的客户端根据第二用户的私钥、第二密文的第一部分和第一密文的第二部分,计算第二授权陷门;
接收模块,用于接收第一用户的客户端发送的第一授权陷门和第二用户的客户端发送的第二授权陷门;
计算模块,用于若第一密文与第二密文符合第一预设条件,则根据第一密文、第二密文、第一授权陷门和第二授权陷门,计算得到密文相似度计算结果,所述符合第一预设条件是指以下两个等式均成立:e(C5,g2)=e(H3(C1,C2,C3,1,C4,1,…,C3,n,C4,n),C2)e(C′5,g2)=e(H3(C′1,C′2,C′3,1,C′4,1,…,C′3,n,C′4,n),C′2)其中,C1、C2、C3,i、C4,i、C5为第一密文的第一部分、第二部分、第三部分、第四部分和第五部分,C′1、C′2、C′3,i、C′4,i、C′5为第二密文的第一部分、第二部分、第三部分、第四部分和第五部分,1≤i≤n;g2为群生成元,H3(·)为哈希函数,e(·,·)为双线对运算;
第三发送模块,用于将密文相似度计算结果发送给相应用户的客户端;
所述根据第一密文、第二密文、第一授权陷门和第二授权陷门,计算得到密文相似度计算结果,具体为:Li=e(C4,i/H2(e(C3,i,Td2)),C′2)/Td1
L={L1,L2,…,Ln}
L′i=e(C′4,i/H2(e(C′3,i,Td′2)),C2)/Td′1L′={L′1,L′2,…,L′n}
其中,L为第一中间向量,由字符L1,L2,…,Ln组成;L′为第二中间向量,由字符L′1,L′2,…,L′n组成;n为消息长度,v为阈值,C2、C3,i与C4,i为第一密文的第二部分、第三部分和第四部分,C′2、C′3,i与C′4,i为第二密文的第二部分、第三部分和第四部分,H2(·)为哈希函数,e(·,·)为双线对运算,Td1与Td2为第一授权陷门的第一部分和第二部分,Td′1与Td′2为第二授权陷门的第一部分和第二部分;
计算L与L′的编辑距离d,若d/n≤v,则判断第一密文与第二密文相似,将密文相似度计算结果设置为“1”;否则,判断第一密文与第二密文不相似,将密文相似度计算结果设置为“0”;
所述根据第一用户的私钥、第一密文的第一部分和第二密文的第二部分,计算第一授权陷门,如下式:其中,C1为第一密文的第一部分,C′2为第二密文的第二部分,e(·,·)为双线对运算,sk1与sk2为第一用户的私钥的第一部分和第二部分,Td1与Td2为第一授权陷门的第一部分和第二部分;
所述根据第二用户的私钥、第二密文的第一部分和第一密文的第二部分,计算第二授权陷门,如下式:其中,C′1为第二密文的第一部分,C2为第一密文的第二部分,e(·,·)为双线对运算,sk′1与sk′2为第二用户的私钥的第一部分和第二部分,Td′1与Td′2为第二授权陷门的第一部分和第二部分。
3.一种密文相似度计算系统,其特征在于,所述系统包括服务器和多个客户端,所述多个客户端分别与服务器相连,每个客户端由一个用户使用;
所述服务器,用于执行权利要求1所述的密文相似度计算方法。
4.根据权利要求3所述的密文相似度计算系统,其特征在于,所述客户端用于生成用户的公钥与私钥;生成随机数,根据用户的公钥与待加密的数据,生成密文;将密文发送给服务器;以及用于从服务器获取密文;若密文符合第二预设条件,根据密文和字符集计算中间参数集;根据字符集、中间参数集、用户的私钥和密文计算得到解密的数据,并输出该数据。
5.根据权利要求4所述的密文相似度计算系统,其特征在于,所述密文符合第二预设条件是指以下等式成立:e(C5,g2)=e(H3(C1,C2,C3,1,C4,1,…,C3,n,C4,n),C2)其中,C1、C2、C3,i、C4,i、C5为密文的第一部分、第二部分、第三部分、第四部分和第五部分,g2为群生成元,H3(·)为哈希函数,e(·,·)为双线对运算。
6.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1所述的密文相似度计算方法。