用於加密 ECDH 密鑰交換的 ECIES
我開始學習橢圓曲線密碼學,但我不知道我是否理解 ECDH 和 ECIES 之間的區別(即使是 stackexchange 上的其他文章)。
我想知道是否可以使用 ECIES 加密 ECDH 密鑰交換以保證它不存在中間人。我正在考慮像 TLS 一樣,在交換對稱密鑰之前有一個非對稱加密。
簡而言之,類似於:
使用 ECIES 建立安全的客戶端-伺服器會話,並使用 ECDH 生成共享密鑰,以通過伺服器和客戶端之間已建立的安全會話安全地交換資訊。在非對稱加密算法中,發送者需要一個公鑰來加密消息,接收者需要一個私鑰來解密消息,而在對稱加密算法中,發送者和接收者都需要一個對稱會話密鑰來加密和解密數據。這有意義嗎?如果沒有,請幫助我了解 ECIES 和 ECDH 之間的區別以及 ECDH 是否有一些身份驗證。
橢圓曲線集成加密方案 (ECIES) 是一種集成加密方案 (IES),它使用橢圓曲線 Diffie-Hellman (ECDH) 密鑰協議來建立臨時數據密鑰(而不是會話密鑰),然後用於加密使用對稱方案的數據。它在創建密文期間使用臨時密鑰,公鑰與密文一起儲存。通常,接收方/解密實體有一個靜態密鑰對,其公鑰需要被發送方/加密實體信任。
ECIES 當然可以用於對接收者進行身份驗證:您可以使用數據密鑰加密一個臨時密鑰,然後將其發送過來,如果對方能夠解密,那麼您已經對接收者進行了身份驗證。當然,接收方仍然必須表明它現在擁有認證密鑰,例如在雙方都知道的消息上創建 MAC。在 TLS 的情況下,您基本上將用執行橢圓曲線加密的密碼套件替換
RSA_
執行 RSA 加密的密碼套件。ECIES_
這聽起來不錯,但請稍等:雙方現在首先必須建立一個臨時數據密鑰,以加密一個臨時身份驗證密鑰。簡單地使用數據密鑰進行身份驗證會容易得多。**如果您這樣做,那麼您將回到 Diffie-Hellman 密鑰協議。**因此,基本上只有當普通的 DH 密鑰協議能夠——出於某種原因或其他原因——不能直接集成到協議中時,它才會有用。
這是一個範例解釋,不同於此處給出的更早、更簡潔的解釋。一個側重於會話密鑰派生,這一更多是關於可能的實體身份驗證。
有多個版本的 DH 密鑰協議允許身份驗證。大多數可能的方案都記錄在 NIST SP 800-56A 修訂版 3:“使用離散對數加密的成對密鑰建立方案的建議”,第 6 章。
基本上,您需要一個靜態 DH 密鑰來執行身份驗證,然後可以通過驗證使用派生密鑰創建的 MAC 來執行。因此,“1S”方案(S 表示靜態)能夠驗證一個實體,而 2S 方案能夠驗證兩個實體(我將跳過多實體密鑰協議,現在將其保持為一對)。