Public-Key

使用 OpenSSL 創建 ECDH

  • January 3, 2017

出於學術原因,我正在使用 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 密鑰來完成該過程,否則您可能不知道與誰交換消息。

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