Pgp
PGP雙重加密而不是簽名?
所以,也許這是一個愚蠢的問題,或者它可能是某人已經做過的事情並且它真的很常見,但無論如何,這裡是:
為什麼我們用我們的私鑰簽署消息,然後用我們聯繫人的公鑰加密它,而不是用我們的私鑰加密我們的消息,然後用我們聯繫人的公鑰再次加密?
後者不是更好嗎?
一般來說,數字簽名背後的高級思想就是你提到的(說服驗證者擁有密鑰)。在我們關心機密性的加密方案中,我們必須小心,並且消息對惡意使用者保持安全,而在簽名方案中,真實性很重要並且消息是公開的。
讓我們看看 RSA 加密方案和 RSA 簽名方案有什麼區別。
RSA加密方案:
設置:
- 選擇兩個大素數 $ p $ 和 $ q $ .
- 計算 $ n=pq $ 和 $ \phi=(q-1)(p-1) $ .
- 選擇 $ 1<e<\phi $ 這樣 $ \gcd(e,\phi)=1 $ .
- 計算 $ d $ 這樣, $ d\cdot e = 1 \mod(\phi) $ .
- 那麼這對公鑰是 $ (n,e) $ 而密鑰是 $ d $ .
加密:
- 留言 $ m $ 計算 $ c=m^e \mod(n) $ .
解密:
- 對於給定的密文 $ c $ 擁有密鑰的有效接收者 $ d $ 可以計算 $ m=c^d \mod(n) $ .
RSA簽名方案:
設置:
- 選擇兩個大素數 $ p $ 和 $ q $ .
- 計算 $ n=pq $ 和 $ \phi=(q-1)(p-1) $ .
- 選擇 $ 1<e<\phi $ 這樣 $ \gcd(e,\phi)=1 $ .
- 計算 $ d $ 這樣, $ d\cdot e = 1 \mod(\phi) $ .
- 那麼這對公鑰是 $ (n,e) $ 而密鑰是 $ d $ .
簽署:
- 留言 $ m $ 計算 $ sig=m^d \mod(n) $ 並發出 $ (m,sig) $ .
確認:
- 對於給定的消息和簽名對,驗證者通過獲取這對公鑰可以檢查 $ sig^e \mod(n)\stackrel{?}{=}m $ .
如您所見,兩種方法都遵循相同的想法,但在簽名方案中,我們相反地使用密鑰。但是我們從不使用帶有密鑰的加密術語來進行數字簽名,因為加密的要點是消息的機密性,而在簽名中消息必須與簽名一起發布。
RSA 簽名只是一個範例,而我們知道如果對手擁有兩個有效簽名並將它們相乘以獲得第三個有效簽名,則該方案是可偽造的。