Public-Key
使用 OpenSSL 創建 ECDH
出於學術原因,我正在使用 OpennSSL 1.0.2g。我測試了 RSA 加密/解密。我與 DHKE 創建了密鑰交換。但我正在努力尋找一種方法,只使用 OpenSSL 創建 ECDH。是否可以僅使用 OpenSSL 創建這樣的密鑰交換?
ECDH 包含在密碼套件中,所以唯一的答案是:是的,這應該是可能的。
對於您的進一步研究,了解 Crypto.SE 具有許多與“ OpenSSL ECDH ”相關的問答可能會有所幫助。
另請參閱OpenSSL wiki 上的相關文件,了解實際程式碼範例,展示如何在 OpenSSL 中使用 ECDH、如何使用低級 API 來實現相同目的,以及有關如何處理 ECDH 和命名曲線的資訊。
你沒有提到你的學術項目是 C 程式碼還是命令行工具就足夠了?由於 OpenSSL 兩者都提供,因此最簡單的啟動方式是使用 OpenSSL 命令行工具。OpenSSL wiki 很有用:
https://wiki.openssl.org/index.php/Command_Line_Elliptic_Curve_Operations
簡而言之,使用 OpenSSL 命令行工俱生成:
- EC 名稱曲線參數文件
- EC 密鑰對(使用 EC 命名曲線參數文件作為輸入)
- 從密鑰對中提取公鑰。這是您需要與對方共享的密鑰。
- 使用對等方的公鑰和您生成的密鑰對派生共享密鑰。導出的值很可能是二進制的,所以在Linux/mac機器上可以使用該
xxd
工具以十六進制列印請記住,ECDH 被設計為在不安全通道上的密鑰協議協議。因此,您不應使用派生共享密鑰作為實際密鑰。那是您需要添加真實性步驟的地方。我在派生的共享密鑰上使用了 HMAC-SHA-256。這意味著雙方都需要一個預先商定的 HMAC 密鑰來完成該過程,否則您可能不知道與誰交換消息。