Public-Key
SSL - 用私鑰加密,然後用公鑰加密?
假設有 2 方希望進行通信: side
A
和 sideB
。假設我們正在查看邊A
發送消息。在 SSL 協議中建立連接時,協議是否總是要求消息首先使用側
A's
私鑰加密(所以側B
知道只能A
對其進行加密)然後使用B's
公鑰加密?這樣就只能B
解密了?在什麼情況下
A
僅使用公鑰對消息進行側面加密B's
然後發送?
您不能使用私鑰“加密”。
加密提供加密消息的機密性。
如果公鑰執行解密,並且公鑰是公開的,那麼任何人都可以解密消息。所以“用私鑰加密”是不可能的。
這個概念可能很流行,但它是不正確的。
它源於這樣一個事實,即使用教科書 RSA 簽署消息相當於反向完成的公鑰加密。但是,這樣做有很多問題:
- 教科書 RSA 不提供安全的簽名/加密方案,因此未使用
- 填充和散列確保簽名過程實際上與反向完成的加密過程不同。
- 很少,如果有的話,其他算法甚至以類似的方式執行。例如,存在無法加密的簽名方案,因此“使用私鑰加密”的簽名甚至不是一個模糊正確的類比。
所以你的問題可以被翻譯成更準確的東西:
在 SSL 協議中建立連接時,協議是否總是要求首先使用 A 方的私鑰對消息進行簽名(因此 B 方知道只有 A 可以對其進行簽名)然後使用 B 的公鑰加密,這樣只有 B可以解密嗎?
建立連接時,假定 A 的公鑰已經由證書頒發機構(已審查 A 的身份)簽署。首先將證書和公鑰呈現給B。B預先安裝了證書頒發機構的公鑰驗證密鑰,可以用它來驗證證書和公鑰上的簽名。在我們的資訊安全姊妹網站上有一個很好的流程大綱。
在什麼情況下,A 方會僅使用 B 的公鑰加密消息然後發送?
消息未簽名的情況包括:
易受中間人攻擊的損壞協議
當 A 和 B 已經相互共享公鑰時
- 初始密鑰交換可以使用簽名,但實際來回發送的消息可能只使用 MAC 而不是簽名。
當 A 想要否認已將消息發送給 B 時