Homomorphic-Encryption
具有同態加密的 OTP 是微不足道的嗎?
如果我的密鑰大小與我正在編碼的數據一樣大,那麼為整數(或任何具有順序的有限/無限組)設計一個理論上安全的同態加密方案是否很簡單? $ + $ 作為對加密數據的操作?如果您的方案計算成本低或易於理解,則加分。
正式地, $ e(k,a+b) $ 可以快速計算出 $ e(k,a) $ 和 $ e(k,b) $ 在哪裡 $ k $ 是關鍵。理論上安全意味著不可能確定任何 $ a_i $ ,給定大量樣本 $ e(k,a_i) $ 除非 $ k $ 是已知的。還 $ e(k,a) $ 不應該是已知的可構造的 $ a $ 除非你知道 $ k $
我試著想出一個例子,我做不到,但它看起來確實很可行。
一個案例可以說是安全的線上投票,其中投票計數是一個小數據值,但如果可以由本身無權訪問投票計數的伺服器添加投票,那將是一件好事。
用於通過問題符號所建議的確定性函式進行加密 $ e(k,a) $ ,所要求的*“完美安全”*是不可能的,因為同態屬性允許破譯許多密文。特別是,如果我們知道 $ 1 $ ,我們可以用它來找到加密的 $ 2=1+1 $ ,從而破譯唯一密文 $ 2 $ ,並且擴展到每個正整數。請注意,One Time Pad 加密也不是確定性函式(多次加密相同的明文通常會產生不同的結果)。
這是一個同態和資訊理論上安全的簡單方案,從某種意義上說,密文不會洩露它所傳達的價值,即使是對任意強大的對手也是如此。
- 明文由 $ b $ -bit 位串,同化為範圍內的整數 $ [-2^{b-1},2^{b-1}) $ 每二進制補碼。一切都是大端的。
- Key 是 One Time Pad $ 2^k,b $ 位,足夠 $ 2^k $ 加密。
- 對於加密,它被消耗 $ b $ 來自 OTP/密鑰的位,這些是模加的 $ 2^b $ 與明文。密文由它組成,然後是編碼 $ k $ 先前產生多少密文的位。
- 兩個密文的加法是加法模 $ 2^b $ 他們的第一個 $ b $ 位,然後是剩餘內容的串聯。
- 解密取密文,提取第一個 $ b $ 位作為整數,並從中重複減去模 $ 2^b $ 這 $ b $ - 位整數位置 $ i,b $ 在 OTP/key 中,對於每個整數 $ i $ 的 $ k $ 從其餘部分解析的位。
這符合所有問題的明確目標。但是請注意(正如 Ella Rose 的評論所指出的)
- 密文是通過加密生成的(然後是按順序生成的)還是同態生成的(然後是如何生成的)在該密文中是很清楚的,並且可以與隨機區分開來,這與例如Paillier 加密相反,其中密文在計算上與隨機區是無法區分的。
- 當一個明文從另一個同態獲得時,同態屬性創建了明文之間的連結,並且我們相應地失去了洩漏明文不會洩漏任何其他內容的資訊論屬性。
擴展:
- 的極限 $ 2^k $ 可以使用更複雜的編碼方案來免除加密 $ i $ ,當然還有任意長度的密鑰/OTP。
- 對於某些案例,可以壓縮加密計數之後的內容。例如,在添加投票計數時,禁止多次添加相同的加密計數是有意義的。這允許對加密計數之後的內容使用固定大小的點陣圖,並將不相交的點陣圖與按位或相結合。正常點陣圖可以進一步壓縮。