語義安全在混合密碼系統中重要嗎?
RSA 在未經修改的情況下不提供語義安全性,常用的 PKCS#1 v.1.5 加密填充方案也不提供。
這對混合密碼系統來說是個問題嗎?
我的懷疑是它不是,因為 RSA 加密的明文消息應該是一個隨機字元串,用作用於加密實際消息的對稱密碼的加密密鑰,這將使攻擊者可以通過缺乏獲得優勢語義安全性幾乎可以忽略不計。
我想以這種方式依賴密文的隨機性仍然是一個壞主意,但是據我所知,像 OAEP 這樣更安全的填充方案也需要隨機輸入來保證語義安全,因此通過加密消息在這兩種情況下,沒有好的熵源似乎同樣糟糕。
總結一下我的問題:
- 如果保證非對稱加密方案加密的所有消息的明文是隨機的,是否需要語義安全?
- 當明文結果不如預期的那樣隨機時(例如,由於 RNG 損壞),這是否比可預測的語義安全填充方案的 RNG 輸入更糟糕?
此外,如果是的話,誰能解釋為什麼 PKCS#1 v.1.5 仍然被普遍使用?據我所知,GnuPG 專門將其用於 RSA 加密,而 TLS 也用於其許多密碼套件中的 RSA 密鑰交換。
是的,語義安全 (IND-CPA) 很重要,即使對於公鑰密碼系統和混合密碼系統也是如此。
讓我們關注混合密碼系統,其中一條消息 $ m $ 通過選擇隨機對稱密鑰進行加密 $ k $ , 加密 $ m $ 在下面 $ k $ 使用對稱密鑰算法,並且還加密 $ k $ 使用公鑰算法。在這種情況下,對稱密鑰算法提供語義安全 (IND-CPA) 很重要。一般來說,選擇提供語義安全 (IND-CPA) 的公鑰加密算法也是一個好主意,因為這樣混合密碼系統也將提供語義安全——這才是真正重要的。(技術挑剔:在某些情況下,我想你可能有證據證明混合密碼系統提供語義安全性,即使不知道公鑰加密算法提供語義安全性。這也足夠了。重要的是混合密碼系統,作為一個單元,提供語義安全。)
在大多數應用程序中,您還需要/想要針對選擇密文攻擊 (IND-CCA) 的安全性。
為什麼仍然使用 PKCS #1 v1.5?據我所知,這是(a)慣性和(b)攻擊不夠嚴重,不足以讓人們緊急放棄它。我不會推薦它用於新系統。我會推薦 OAEP 或其他具有強大安全性證明的方案。