Encryption

非對稱密鑰密碼學

  • January 20, 2022

在非對稱密鑰加密中,每個人都可以使用公鑰。如果攻擊者加密了另一個使用者發送的消息,那麼接收者可能會收到該消息。那麼在這種情況下如何建立安全性。

不是;攻擊者可以加密任何消息。您必須在明文或密文中添加消息完整性和真實性。為此,發件人需要能夠對發送的消息進行身份驗證。這顯然不可能僅使用公開可用的加密密鑰。


當我們談論單獨的消息(例如文件保護)時,通常使用簽名然後加密來執行。在這裡,發件人在使用自己的私鑰加密消息之前對消息進行簽名。接收方然後使用發送方的公鑰在解密後驗證消息。當然,發送者的這個公鑰需要被信任才能使這個方案起作用。

由於公鑰加密對於較大的消息不是很有效,並且由於簽名(和元資訊)通常會擴展消息,因此通常需要使用混合加密來進行簽名然後加密才能工作。在這種情況下,加密方案也可以使用密鑰封裝方法,例如 RSA-KEM 或 (EC)IES。

原則上,也可以使用 MAC(消息驗證碼),但這需要預先共享的密鑰,這會破壞首先使用公鑰加密的優勢。


在傳輸模式安全(例如 TLS、SSH)中,公鑰加密通常用於在消息通過傳輸通道發送之前在各方之間建立秘密。在這種情況下,消息由會話密鑰加密並使用身份驗證標籤進行保護。可以使用 MAC(例如 HMAC)或使用經過身份驗證的加密模式(例如 ChaCha20/Poly1305)來計算此標籤。

為此,雙方都需要進行身份驗證,否則發送方不知道誰在接收數據,接收方也不知道誰在發送數據。因此,儘管消息本身受到不同的保護,但密鑰管理類似於保護單獨的消息。

引用自:https://crypto.stackexchange.com/questions/98212