讓我們首先快速回想一下RSA如何工作,省略一些瑣碎的細節。請記住,我們經常使用一個數字對一些數字取模,而并不是所有的整數。這里的等式“a +b≡c(mod n)”,等價于“(a + b)%n = c%n”。注意,“(mod n)”部分不適用于右側“c”,但實際上適用于“≡”和所有其他“≡”上面。這使得它很難閱讀,但我保證會謹慎使用它。現在回到RSA:
證明者提出以下數字:
p,q:兩個隨機的私密素數n := p qd:1 < d < n – 1 的隨機數e:d e ≡ 1 (mod (p-1)(q-1)) 公鑰是 (e,n),私鑰是 d。素數 p 和 q 可以丟棄,但是不能暴露。
消息m通過下面公式加密
E(m):= m e%n 并且c = E(m)通過解密
D(c):= c d%n。 因為cd≡(me%N)d≡med(mod n),m的指數就是對(P-1)(Q-1)這組數取模,我們得到med ≡m(mod n)。此外,RSA的安全性依賴于這樣的假設:n不能輕易被因式分解,因此d不能從e計算(如果我們知道p和q,這將是容易的)。
RSA 的一個牛逼的特性是同態乘法。通常來講,如果你可以交換兩個操作的順序而不影響計算結果,那么我們就說這兩個操作是同態的。在同態加密中,這就是你可以對加密數據進行計算的一個屬性。完全同態加密是存在的,但是現在還沒有應用到實際中,它能夠對任何基于加密數據的程序完成計算。在這里對于 RSA 來說,我們只討論組乘法。更正式地:E(x)E(y)≡xe y e ≡(xy)e≡E(xy)(mod n),文字描述就是:兩個加密消息的的乘積等于兩個信息乘機的加密。
這種同態性已經允許某種零知識的乘法證明:證明者知道一些秘密數字x和y并計算它們的乘積,但只發送加密版本a= E(x),b = E(y)和c = E(xy)到驗證者。驗證者現在檢查(ab)%n≡c%n 是否成立,此時驗證者只知道加密版的乘積以及乘積是否被正確的計算,但是她不知道兩個乘數和真正的乘積。如果你用加法來替代乘法,那就是一個主要操作為添加余額的
區塊鏈方向了。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。