Hash

了解雜湊函式符號

  • April 14, 2016

我正在通過參考論文An Efficient Certificateless Encryption for Secure Data Sharing in Public Clouds 來實施無證書加密算法。在這篇論文的第 1 頁。4 在設置階段,他們提到選擇散列函式(在我的例子中是 SHA-256)。但是一些符號讓我感到困惑。

選擇加密雜湊函式:

$ H_1 : {0,1}^* \times Z_p^* {\rightarrow} Z_q^\ H_2 : {0,1}^ \times Z_p^* \times Z_p^* {\rightarrow} Z_q^\ H_3 : {0,1}^ {\rightarrow} Z_q^\ H_4 : Z_p^ {\rightarrow} {0,1}^{n + k_0}\ H_5 : Z_p^* {\rightarrow} {0,1}^{n + k_0}\ H_6 : Z_p^* \times {0,1}^{n + k_0} \times Z_p^* {\rightarrow} Z_q^* $

在哪裡 $ n $ , $ k_0 $ 分別是明文和隨機位串的位長。

誰能解釋一下我如何解釋上述雜湊函式。我對這個算法還有一個疑問,

如果我錯了,請糾正我 $ x $ $ H_1 $ $ (ID_A,w_0) $ 方法 $ x \times H_1(ID_A) \oplus H_1(w_0) $ 在哪裡 $ x \in Z_q^* $

還是有別的意思?

所以讓我們從雜湊函式開始:

$$ H_n:A\times B\times C \rightarrow D $$是數學家對名為的函式的概念 $ H_n $ 從集合中獲取參數 $ A,B,C $ (按此順序)並將其映射到 $ D $ , 在哪裡 $ B,C $ 是可選的。為此,您將面臨三種類型的集合:

  • $ {0,1}^* $ 是任意大小的二進制位串的集合,例如可以表示為位序列的任何數據
  • $ {0,1}^{n+k_0} $ 是長度為二進制位串的集合 $ n+k_0 $ ,例如,任何準確的數據 $ n+k_0 $ 位長。
  • $ \mathbb Z_q^* $ 和 $ \mathbb Z^*_p $ 是所有自然數的集合小於 $ q $ 和 $ p $ 分別。

棘手的部分是現在實例化這些函式。您可以使用 KDF2(結合可選連接)和/或使用 HKDF 或 HMAC 來實例化它們,它們都可以基於 SHA-256。

輸入非常簡單:您只需將數據(以適當的表示形式)輸入 KDF,就完成了。

二進制輸出也很簡單:KDF 可以產生任意大小的輸出,並且您可以截斷過多的輸出(它們通常在內部以某種 CTR 模式執行)。

真正棘手的部分是將二進制雜湊字元串轉換為整數。您可以做的最好的事情是生成一個比模減少所需的字元串稍長(幾位)的字元串,然後應用模減少(例如 $ \bmod q $ ) 轉換為整數。這應該給出一個“足夠好”的分佈

如果我錯了,請糾正我 $ x $ $ H_1 $ $ (ID_A,w_0) $ 方法 $ x \times H_1(ID_A) \oplus H_1(w_0) $ 在哪裡 $ x \in Z_q^* $

不,你應該從字面上理解。你打電話 $ H_1(ID_A,w_0) $ 並將結果相乘(在 $ \mathbb Z^_q $ 根據定義)與 $ x $ 這也是從 $ \mathbb Z^_q $ ,例如 $ x\times H_1(ID_A,w_0) \bmod q $ .

如果我錯了,請糾正我 $ xH_1 $ $ (ID_A,w_0) $ 方法 $ x \times H_1(ID_A) \oplus H_1(w_0) $ 在哪裡 $ x \in Z_q^* $

很難正式回應,因為我無法訪問您提到的論文,但有常識,只需閱讀 $ H_1 $ 定義, $ xH_1 $ $ (ID_A,w_0) $ 方法 $ x \times H_1(ID_A, w_0) $ 在哪裡 $ ID_A \in {0,1}^* $ 和 $ w_0 \in Z_p^* $ . 但是這個符號並不意味著在集合上的 antyhing $ x $ 所以我不知道你為什麼這麼認為 $ x \in Z^*_q $ .

引用自:https://crypto.stackexchange.com/questions/34487