派勒密碼系統安全
我正在研究可以計算大公司不同職位的平均工資的系統,我想使用 pailler 模式進行此類計算。
我有 3 個要加密的欄位:公司名稱、職位名稱、資歷和薪水
假設我有 3 家不同的公司想要計算不同職位的平均工資,但他們不想在它們之間共享數據。我們有這樣的數據集
A、B 和 C 公司在將數據發送到我的系統之前使用 Pailler 對它們進行加密(他們都使用相同的密鑰),而不是將其發送到我的系統。我的系統只知道公鑰,因此它可以計算特定職位的平均工資,然後我的系統可以將加密結果發送給所有公司,然後他們可以使用私鑰對其進行解密並檢查特定職位的平均工資,同時考慮到工資其他公司。
為了避免頻率攻擊,我也想使用 pailler 加密文本數據(公司名稱和職位)。我可以假設公司名稱和職位不超過 20 個字節。現在我的問題是:您認為該系統安全嗎?我的系統以加密形式儲存所有資訊,但不知道私鑰,因此無法解密。假設在我的系統中發生了數據洩漏,並且有人以加密形式擁有所有資訊(私鑰未洩露),您認為他可以執行任何攻擊來解密數據嗎?職稱主要是字典數據。薪水和資歷這是一個狹窄的數字範圍。你怎麼看?提前感謝您的任何意見!
我的系統只知道公鑰,因此它可以計算特定職位的平均工資
實際上,您可以計算總和;計算平均值,即值 $ \text{Encrypt}_k( \lfloor sum / n \rfloor ) $ 是相當棘手的(並且地板操作是必要的,如果 $ sum $ 不一定是 $ n $ 值的數量)。
這可以通過任一計算來處理 $ \text{Encrypt}_k( sum ) $ ,並發送它和值 $ n $ 到A、B、C公司(可以解密再分)。或者,通過讓每家公司隱含地將他們加密的每個薪水乘以 $ k! $ (對於一個合理的價值 $ k $ ); 那麼(假設 $ n $ 不是太大),我們可以計算 $ \text{Encrypt}_k( n^{-1} \cdot sum ) $ ,這將是我們想要的值(隱含的比例因子仍然存在)。
為了避免頻率攻擊,我也想使用 pailler 加密文本數據(公司名稱和職位)。
公司會加密職位還是你會加密?如果他們對其進行了加密,您將無權訪問它,因此您不知道該求和。
另一方面,如果他們清楚地提供了職位並且您對其進行了加密,那很好(如果在我看來,這有點毫無意義)。
但是,您的問題確實是:
假設在我的系統中發生了數據洩漏,並且有人以加密形式擁有所有資訊(私鑰未洩露),您認為他可以執行任何攻擊來解密數據嗎?
沒問題 - 使用 Paillier,攻擊者無法從密文中檢索任何資訊(假設在加密過程中使用的私鑰和隨機值是安全的);即使他知道明文是兩個值之一,他仍然無法確定它是哪個值。
關於平均值,我正在考慮將每個條目乘以 $ 2 $ 以確保它是均勻的。所有元素的數量在我的服務中是已知的,因此我可以將加密的數字除以非加密的值。然後可以將加密結果發送給所有公司,他們可以將其除以 $ 2 $ 得到最終的結果,你覺得這樣好嗎?
關於第二點,是的,我忘記了使用 Pailler 無法知道兩個職位是否相等。以前我在考慮儲存雜湊,但由於不同作業名稱的數量有限,因此很容易受到攻擊。我必須為此找到更好的算法。