如果我們使用不同的密鑰但具有相同的模數兩次應用 Pohlig-Hellman 密碼,加密是否更安全?
加密消息 $ M $ , 我們計算 $ C=M^k \bmod p $ 並解密我們計算的密文 $ M=C^{k^{−1} \bmod (p−1)} \bmod p $
但是如果我們兩次使用 Pohlig Hellman $ C_1=M^k \bmod p $ , 接著 $ C_2=C_1^k \bmod p $ , 那麼這是否比只做一次或不做更安全。
如果我們像 Cascade 一樣多次執行呢?
那麼這是否比只做一次或不做更安全。
TL;博士; 不,多重加密等於單一加密,這並不比單一加密好
建立 Pohlig-Hellman Cipher;
- 選擇一個大的素數模數,比如說 $ p $ ,
- 然後選擇一個公共模數 $ e $ 和 $ \gcd(e,\varphi(p))=1 $ 否則沒有唯一的解密。
- 所以,我們有一個公鑰 $ (e,p) $ .
- 你的私鑰是元組 $ (d,p) $ 這樣 $ e \cdot d \equiv 1 \bmod \varphi(p) $ .
加密消息 Alice 接收消息 $ m < p $ ,然後用$$ c = m^e \pmod p $$
一次,你得到你解密的消息$$ c^d = m^{e\cdot d} \equiv m \pmod p $$借助小費馬定理。
例子:
- p = 3001
- e = 37
- d = 973
讓 $ m = 57 $ 然後 $ c = 57^{37} \equiv 2778 \pmod{3001} $
和 $ c = 2778 $ 然後 $ m = 2778^{973} = 57 \pmod{3001} $
級聯屬性:雙重加密就是單一加密
為了顯示級聯屬性,我們將使用具有不同參數的相同模數。這將表明雙重加密等於單一加密。
讓 $ p $ 是模數, $ (e_1,p) $ 和 $ (d_1,p) $ 是對應的對和 $ (e_2,p) $ 和 $ (d_2,p) $ 成為另一對。讓加密消息 $ m $ 使用第一個公鑰,然後使用第二個公鑰。
$$ c_1 = m^{e_1} \pmod p $$然後 $$ c_2 = c_1^{e_2} = (m^{e_1})^{e_2} = m^{e_1 \cdot e_2} \bmod p $$
讓我們打電話 $ e’ = e_1 \cdot e_2 \pmod{\varphi(p)} $ 和 $ d = e’^{-1} \pmod{\varphi(p)} $
所以 $ (e’,d’) $ 將是雙重加密的單一密鑰
例子:
繼續前面的例子 $ (31,3001) $ 和 $ (871,3001) $ 作為第二個公鑰和私鑰。
$$ 2778^{31} \equiv 197 \pmod{3001} $$
$$ e’ = 31*37 \equiv 1147 \pmod{3000} $$
$$ d’ = 1483 \pmod{3000} $$
現在,解密 $ d’ $
$$ 197^{1483} \equiv 57 \pmod{3001} $$
關於 Pohlig-Hellman 密碼的一些註釋
- 它容易受到 KPA 的影響。
- 它不是 IND-CPA 安全的
- 它是乘法的
- 沒有機率加密。
- 安全性依賴於離散對數
- 素數 $ p $ 必鬚根據Pohlig-Hellmans 算法正確選擇安全素數*以查找離散對數。
*安全素數是 2p + 1 形式的素數,其中 p 也是素數
不,如果我們使用相同的公共質數,使用(教科書) Pohlig-Hellman的雙重加密不會提高安全性 $ p $ . 即使我們使用不同的鍵也是如此 $ k_1 $ , $ k_2 $ 對於兩個加密(如問題的標題)。
理由:如果 $ C_1=M^{k_1} \bmod p $ , 和 $ C_2={C_1}^{k_2} \bmod p $ , 然後 $ C_2=M^{k_1,k_2\bmod(p-1)} \bmod p $ ,因此這兩種加密等價於密鑰下的單一加密 $ k’=k_1,k_2\bmod(p-1) $ . 陳述同一事實的另一種方式是 Pohlig-Hellman 加密變換形成一個群 同構於 $ \Bbb Z_{p-1}^* $ .
如果我們用 $ k_1=k=k_2 $ (如在問題的正文中),安全性甚至略有降低,因為可能的加密轉換的數量趨於減少。這增加了加密離開的機會 $ C_2=M $ ,或者重複將密文送出給加密預言機最終會對其進行解密,這對於人為的小參數來說是一個問題。
注意:(教科書)Pohlig-Hellman 容易受到選擇明文攻擊和已知明文攻擊,因為它是乘法同態和確定性的。它主要用作其他加密原語或協議中的建構塊。對於標準 128 位安全性(在上述限制範圍內), $ p $ 應該是至少 2048 位或 3072 位(取決於估計)的素數,而不是特殊形式 $ r^e\pm s $ 在哪裡 $ r $ 和 $ s $ 很小,並且有 $ p-1 $ 具有至少 256 位的素因子(後者是保險的,而前者是 $ p $ 是一個安全的素數)。