從下午茶開始的同態加密 Homomorphic Encryption

picture

2025-06-07

從下午茶開始的同態加密 Homomorphic Encryption

從下午茶聊起

你是公司下午茶的固定採購,有天,同事邊吃著綠逗薏人過來問你:

「誒?你那碗料怎麼這麼多,是不是偷偷加料?」

「沒有啊,大家都一樣,一碗 90。」

「我不信,拿收據來!」

你遞上會計工讀生開的收據,上面只寫著:

2607 + 6435 = 9042
By 會計工讀生

這三小?你是不是在唬爛作假賬?

同事感到非常奇怪,直接對你發起質疑。 別急,這是用 Paillier 加密的收據。數學公式是這樣的。

# 加密公式
c = (m + k * p) mod n

# 解密公式
m = c mod p

其中:

  • m:原始金額
  • k:隨機鹽
  • p:密鑰
  • n:加鹽

我們的密鑰是 211,來驗算總金額:

m = c mod p = 9042 mod 211 = 180

你看,1 碗 90,2 碗總金額是 180,對上了吧。

李組長眉頭一皺,發現案情並不單純

雖然同事暫時被唬住,但他還是不死心去問工讀生

「欸你下午茶金額怎麼輸入的?180 是怎麼來的?」

工讀生一臉黑人問號

「180?我只是照著 2607 和 6435 加的啊,總和就是 9042。」

同事震驚

「你手上根本沒有原始金額也能做帳?有這麼神奇?」

同事依舊不放棄向你提出質疑

「2607 和 6435 兩碗金額根本不同!」

「哎呀,你誤會我了,公式裡面不是有 n 嗎?每個數字加密用的 n 都不一樣,算出來當然不同啊」

年底會計師來查帳了

會計師看著報表皺著眉頭叫你進來

「兩碗綠逗薏人 9042 元?這報銷你解釋一下。」

「這是加密的資料啦,實際金額是 180,我馬上解給你看。」

你打開區塊鏈記錄,指出密鑰 p = 211,並開始計算:

# 第一碗:金額 75, n = 12
c1 = 75 + 12 * 211 = 2607

# 第二碗:金額 105, n = 30
c2 = 105 + 30 * 211 = 6435

# 加總密文
c_add = c1 + c2 = 9042

# 解密加總
m_add = c_add mod p = 9042 mod 211 = 180

「75 + 105 = 180,帳完全對得上!」

會計師點頭,叫你回去。你剛走出會議室,你的同事在門外堵你,他非常火大。

「兵不厭詐,這叫同態加密」

luphia_avatar

Luphia

杂务跑腿操作员

赌一杯贵州茅台,你念不出我的名字,输的喝。

查看作者的其他文章

分享到

回上页