全同态消息认证方法、装置及系统的制作方法

文档序号:9581496阅读:309来源:国知局
全同态消息认证方法、装置及系统的制作方法
【技术领域】
[0001] 本发明实施例涉及计算机信息技术领域,尤其涉及一种全同态消息认证方法、装 置及系统。
【背景技术】
[0002] 全同态加密算法包括一个产生公钥、私钥和计算钥的算法,一个加密算法,一个解 密算法和一个密文计算函数,该全同态加密算法主要用于分布式计算的计算结果的认证, 即全同态消息认证技术。
[0003]目前,全同态消息认证技术的具体实现方式为:终端获取消息认证密钥,该消息认 证密钥包括根据上述全同态加密算法获取的公钥、私钥和计算钥,还包括:第一字符串和第 二字符串,该第一字符串为随机产生的集合{1,2,…,n-1,n}的长度为n/2的子集,该第 二字符串为一个长度为n的0和1组成的随机字符串,其中,n为大于或等于2的整数。终 端根据该消息认证密钥上述全同态加密算法中的加密算法生成待计算的数据中每个比特 的认证指纹,并将该待计算的数据、该认证指纹、该消息认证密钥W及前述全同态加密算法 一起发送给服务器。服务器根据预先配置的用于计算待计算数据的计算函数计算该待计算 的数据,获取计算结果;通过预先配置的哈希函数族计算该计算结果的认证指纹的第一分 量,并对该消息认证密钥中的第一字符串的每个字符,根据该计算结果、待计算的数据中每 个比特的认证指纹和上述计算钥,通过上述全同态加密算法中的密文计算函数进行计算, 获取该计算结果的认证指纹的第二分量,最终获取完整的该计算结果的认证指纹,并将该 计算结果和该计算结果的认证指纹返回给终端。终端首先根据预先配置的哈希函数族重新 计算该计算结果的认证指纹的第一分量,W确认该重新计算的该计算结果的认证指纹的第 一分量与服务器返回的认证指纹的第一分量相同;再进行进一步认证,针对待计算数据的 第j个比特,终端第一字符串中的第i个字符,根据预先配置的伪随机函数生成伪随机串 rand(i,j);并将0和该rand(i,j)输入上述加密算法获取0在伪随机串rand(i,j)下的 加密密文;并根据该加密密文、预先配置的用于计算待计算数据的计算函数和上述计算钥, 通过全同态加密算法中的密文计算函数进行计算,获取该计算结果的认证指纹的第i个第 二分量,根据上述方法进行n/2此次计算,获取该计算结果的认证指纹的全部第二分量,然 后比较服务器发送来的该计算结果的认证指纹的第二分量与终端获取的该计算结果的认 证指纹的第二分量是否相同。若服务器发送来的该计算结果的认证指纹与终端重新计算的 该计算结果的认证指纹相同,则确定该计算结果正确。针对待计算数据的每一个比特,都按 照上述方法进行计算结果的验证。
[0004] 但是,由于消息认证密钥中的第一字符串是由长度为n/2的{1,2,…,n-1,n}的 子集组成的,因此,在计算待计算数据的每个比特的认证指纹时,计算复杂,且在终端认证 服务器返回的计算结果时,需要重新计算计算结果,并需要对待计算数据的每个比特进行 n/2次计算,才能获取计算结果对应的认证指纹的第二分量,W与第二认证指纹的第二分量 进行对比认证,使得计算量较大,验证效率低。

【发明内容】

[0005] 本发明实施例提供一种全同态消息认证方法、装置及系统,有效降低验证过程中 的计算量,提高对服务器的计算结果的验证效率。
[0006] 本发明第一方面提供一种全同态消息认证算法,所述方法应用于终端,包括:
[0007] 获取消息认证密钥,所述消息认证密钥包括公钥、第一字符串和第二字符串,所述 第一字符串为长度为n的0和1的字符串,且所述第一字符串中字符为1的个数为化/3 ; 所述第二字符串为长度为n的0和1的字符串,且在所述第二字符串中,与所述第一字符串 中的为1的字符对应的位置上的字符包括n/3个0,其中,n为大于或等于2的整数;
[0008] 根据第一输入字符、所述公钥和伪随机串生成待计算的数据中的第i个比特对应 的n个密文中的一个,确定所述n个密文为所述第i个比特对应的认证指纹的第二分量,其 中,若所述第一字符串中的第j个字符为0,则所述第一输入字符为所述第i个比特,或者, 若所述第一字符串中的第j个字符为1并且所述第二个字符串中的第j个字符为0,则所述 第一输入字符为0,或者,若所述第一字符串中的第j个字符为1并且所述第二个字符串中 的第j个字符为1,则所述第一输入字符为1 ;所述第i个比特对应的认证指纹还包括第一 分量;其中,i为整数,大于或等于1,且小于或等于所述待计算的数据的总比特数t,t大于 或等于1 ;j为整数,大于或等于1,且小于或等于n;
[0009] 向服务器发送计算请求,所述计算请求包括:所述待计算的数据,所述待计算的数 据中的每个比特对应的所述认证指纹、预先配置的全同态加密算法、W及所述消息认证密 钥;
[0010] 接收所述服务器返回的所述待计算的数据的计算结果W及所述计算结果对应的 认证指纹,并根据接收到的所述计算结果对应的认证指纹对所述计算结果进行正确性认 证。
[0011] 结合第一方面,在第一方面的第一种可能的实施方式中,所述所述第i个比特对 应的认证指纹由W下步骤生成,包括:
[0012] 根据预先配置的伪随机函数和所述待计算的数据中的第i个比特的标签生成所 述第i个比特对应的认证指纹的第一分量;
[0013] 根据所述伪随机函数生成与所述待计算的数据中的第i个比特对应的n个伪随机 串;
[0014] 根据所述第一字符串、所述第二字符串和所述n个伪随机串生成所述第i个比特 对应的n个密文作为所述第i个比特对应的认证指纹的第二分量,其中,若所述第一字符串 中的第j个字符为0,则将所述第i个比特、所述公钥和所述第j个伪随机串输入预先配置 的加密算法生成一个密文;若所述第一字符串中的第j个字符为1并且所述第二个字符串 中的第j个字符为0,则将0、所述公钥和所述第j个伪随机串输入所述预先配置的加密算 法生成一个密文;若所述第一字符串中的第j个字符为1并且所述第二个字符串中的第j 个字符为1,则将1、所述公钥和所述第j个伪随机串输入所述预先配置的加密算法生成一 个密文。
[0015] 结合第一方面或第一方面的第一种可能的实施方式,在第一方面的第二种可能的 实施方式中,根据接收到的所述计算结果对应的认证指纹对所述计算结果进行正确性认 证,包括:
[0016] 获取重新计算的所述计算结果对应的认证指纹的第一分量;
[0017] 比较所述接收到的所述计算结果对应的认证指纹的第一分量与所述重新计算的 所述计算结果对应的认证指纹的第一分量是否相等;
[0018] 若所述接收到的所述计算结果对应的认证指纹的第一分量与所述重新计算的所 述计算结果对应的认证指纹的第一分量相等,则继续对所述计算结果进行正确性认证;若 二者不相等,则确定所述计算结果不正确。
[0019] 结合第一方面的第二种可能的实施方式,在第一方面的第H种可能的实施方式 中,所述获取重新计算的所述计算结果对应的认证指纹的第一分量,包括:
[0020] 根据所述待计算的数据的t个比特对应的t个所述认证指纹的第一分量,采用用 于计算所述待计算的数据的计算函数,获取重新计算的所述计算结果对应的认证指纹的第 一分量;
[0021] 其中,所述用于计算待计算的数据的计算函数为哈希树,所述哈希树包括;t个输 入,1个输出,且所述哈希树中的各个节点均为预先配置的安全哈希函数。
[0022] 结合第一方面的第二种可能的实施方式,在第一方面的第四种可能的实施方式 中,所述获取重新计算所述计算结果对应的认证指纹的第一分量,包括:
[0023] 将所述待计算数据的t个比特对应的t个所述认证指纹的第一分量发送给第H方 设备,W使所述第H方设备根据接收的所述待计算的数据的t个比特对应的t个所述认证 指纹的第一分量,采用预先配置的用于计算待计算的数据的计算函数,获取重新计算的所 述计算结果对应的认证指纹的第一分量;
[0024] 接收所述第H方设备返回的所述重新计算的所述计算结果对应的认证指纹的第 一分量;
[0025] 其中,所述用于计算待计算的数据的计算函数为哈希树,所述哈希树包括;t个输 入,1个输出,且所述哈希树中的各个节点均为所述安全哈希函数。
[0026] 结合第一方面的第二至第四种中的任一种可能的实施方式,在第一方面的第五种 可能的实施方式中,所述消息认证密钥还包括私钥,所述接收到的所述计算结果对应的认 证指纹的第一分量与所述重新计算的所述计算结果对应的认证指纹的第一分量相等,则继 续对所述计算结果进行正确性认证,包括:
[0027] 根据所述私钥,分别计算所述接收到的所述计算结果对应的认证指纹的n个第二 分量对应的n个明文;
[0028] 若所述n个明文全部与所述计算结果相同,则确定所述计算结果正确。
[0029] 本发明第二方面提供一种全同态消息认证方法,所述方法应用于服务器,包括:
[0030] 接收终端发送的计算请求,所述计算请求包括;待计算的数据,所述待计算的数据 中的每个比特对应的认证指纹、全同态加密算法、W及消息认证密钥;
[0031] 根据预先配置的用于计算待计算的数据的计算函数W及所述待计算的数据,计算 所述待计算的数据的计算结果;
[0032] 根据所述预先配置的用于计算待计算的数据的计算函数、所述待计算的数据的计 算结果、所述待计算的数据中的每个比特对应的认证指纹,所述预先配置的全同态加密算 法W及所述消息认证密钥,计算所述计算结果对应的认证指纹;
[0033] 将所述待计算的数据的计算结果W及所述计算结果对应的认证指纹返回终端,W 供所述终端根据接收到的所述计算结果对应的认证指纹对所述计算结果进行正确性认证。
[0034] 结合第二方面,在第二方面的第一种可能的实施方式中,所述根据预先配置的用 于计算待计算的数据的计算函数W及所述待计算的数据,计算所述待计算的数据的计算结 果,包括:
[0035] 根据所述待计算的数据的t个比特,采用所述预先配置的用于计算待计算的数据 的计算函数,获取所述待计算的数据的计算结果;
[0036] 其中,所述预先配置的用于计算待计算的数据的计算函数为哈希树,所述哈希树 包括:t个输入,1个输出,且所述哈希树中的各个节点均为预先配置的安全哈希函数;t为 所述待计算的数据的总比特数。
[0037] 结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式 中,所述待计算的数据中的每个比特对应的认证指纹包括第一分量和n个第二分量,且所 述消息认证密钥还包括计算钥,则所述根据所述预先配置的用于计算待计算的数据的计算 函数、所述待计算的数据的计算结果、所述待计算的数据中的每个比特对应的认证指纹,所 述预先配置的全同态加密算法W及所述消息认证密钥,计算所述计算结果对应的认证指 纹,包括:
[0038] 根据所述待计算的数据的t个比特对应的t个所述认证指纹的第一分量,采用所 述预先配置的用于计算待计算的数据的计算函数,获取所述计算结果对应的认证指纹的第 一分量;
[0039] 根据所述计算结果、所述待计算的数据的每个比特对应的认证指纹的n个第二分 量和所述计算钥,采用所述预先配置的全同态加密算法中的密文计算函数,获取所述计算 结果对应的认证指纹的n个第二分量。
[0040] 本发明实施例第H方面提供一种全同态消息认证装置,包括:
[0041] 获取模块,用于获取消息认证密钥,所述消息认证密钥包括公钥、第一字符串和第 二字符串,所述第一字符串为长度为n的0和1的字符串,且所述第一字符串中字符为1的 个数为化/3 ;所述第二字符串为长度为n的0和1的字符串,且在所述第二字符串中,与所 述第一字符串中的为1的字符对应的位置上的字符包括n/3个0,其中,n为大于或等于2 的整数;
[0042] 生成模块,用于根据第一输入字符、所述公钥和伪随机串生成待计算的数据中的 第i个比特对应的n个密文中的一个,确定所述n个密文为所述第i个比特对应的认证指 纹的第二分量,其中,若所述第一字符串中的第j个字符为0,则所述第一输入字符为所述 第i个比特,或者,若所述第一字符串中的第j个字符为1并且所述第二个字符串中的第j 个字符为0,则所述第一输入字符为0,或者,若所述第一字符串中的第j个字符为1并且所 述第二个字符串中的第j个字符为1,则所述第一输入字符为1 ;所述第i个比特对应的认 证指纹还包括第一分量;其中,i为整数,大于或等于1,且小于或等于所述待计算的数据的 总比特数t,t大于或等于1;j为整数,大于或等于1,且小于或等于n;
[0043] 收发模块,用于向服务器发送计算请求,所述计算请求包括;所述待计算的数据, 所述待计算的数据中的每个比特对应的所述认证指纹、预先配置的全同态加密算法、W及 所述消息认证密钥;
[0044] 所述收发模块还用于接收所述服务器返回的所述待计算的数据的计算结果W及 所述计算结果对应的认证指纹;
[0045] 处理模块,用于根据所述收发模块接收到的所述计算结果对应的认证指纹对所述 计算结果进行正确性认证。
[0046] 结合第H方面,在第H方面的第一种可能的实施方式中,所述消生成模块具体用 于:
[0047] 根据预先配置的伪随机函数和所述待计算的数据中的第i个比特的标签生成所 述第i个比特对应的认证指纹的第一分量;
[0048] 根据所述伪随机函数生成与所述待计算的数据中的第i个比特对应的n个伪随机 串;
[0049] 根据所述第一字符串、所述第二字符串和所述n个伪随机串生成所述第i个比特 对应的n个密文作为所述第i个比特对应的认证指纹的第二分量,其中,若所述第一字符串 中的第j个字符为0,则将所述第i个比特、所述公钥和所述第j个伪随机串输入预先配置 的加密算法生成一个密文;若所述第一字符串中的第j个字符为1并且所述第二个字符串 中的第j个字符为0,则将0、所述公钥和所述第j个伪随机串输入所述预先配置的加密算 法生成一个密文;若所述第一字符串中的第j个字符为1并且所述第二个字符串中的第j 个字符为1,则将1、所述公钥和所述第j个伪随机串输入所述预先配置的加密算法生成一 个密文。
[0050] 结合第H方面和第H方面的第一种可能的实施方式,在第H方面的第二种可能的 实施方式中,所述处理模块具体用于:
[0051] 获取重新计算的所述计算结果对应的认证指纹的第一分量;
[0052] 比较所述接收到的所述计算结果对应的认证指纹的第一分量与所述重新计算的 所述计算结果对应的认证指纹的第一分量是否相等;
[0053] 若所述接收到的所述计算结果对应的认证指纹的第一分量与所述重新计算的所 述计算结果对应的认证指纹的第一分量相等,则继续对所述计算结果进行正确性认证;若 二者不相等,则确定所述计算结果不正确。
[0054] 结合第H方面的第二种可能的实施方式,在第H方面的第H种可能的实施方式 中,所述处理模块还用于根据获取的所述待计算的数据的t个比特对应的t个所述认证指 纹的第一分量,采用用于计算待计算的数据的计算函数,获取重新计算的所述计算结果对 应的认证指纹的第一分量;
[0055] 其中,所述用于计算待计算的数据的计算函数为哈希树,所述哈希树包括;t个输 入,1个输出,且所述哈希树中的各个节点均为预先配置的安全哈希函数。
[0056] 结合第H方面的第二种可能的实施方式,在第H方面的第四种可能的实施方式中 所述收发模块还用于:
[0057] 将所述待计算数据的t个比特对应的t个所述认证指纹的第一分量发送给第H方 设备,W使所述第H方设备根据接收的所述待计算的数据的t个比特对应的t个所述认证 指纹的第一分量,采用预先配置的用于计算待计算的数据的计算函数,获取重新计算的所 述计算结果对应的认证指纹的第一分量;
[0058] 接收所述第H方设备返回的所述重新计算的所述计算结果对应的认证指纹的第 一分量;
[0059] 其中,所述用于计算待计算的数据的计算函数为哈希树,所述哈希树包括;t个输 入,1个输出,且所述哈希树中的各个节点均为所述安全哈希函数。
[0060] 结合第H方面的第二至第四种中的任一种可能的实施方式,在第H方面的第五种 可能的实施方式中,所述消息认证密钥还包括私钥,所述处理模块还用于:
[0061] 根据所述私钥,分别计算所述接收到的所述计算结果对应的认证指纹的n个第二 分量对应的n个明文;
[0062] 判断
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1