全同態消息認證方法、裝置及系統的制作方法
【技術領域】
[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] 判斷