Elliptic-Curves
openSSL ECDH 私鑰大小
當您在 openSSL 中使用 P-256 之類的命名曲線時,ECDH 私鑰密鑰是否有任何標準密鑰大小?
如果您查看
ec_key.c
openSSL 源中的文件,您會看到以下內容:BN_rand_range(priv_key, order)
這裡生成了一個比順序小的加密強隨機數。
是的,P-256 生成 256 位私鑰(給或取一個位)。
這裡的混淆是這個密鑰是 256 位有效的(提供約 128 位的安全性),即使它以零位開始。因此,即使作為大整數的表示可以小於請求的大小,私鑰也是 256 位。這僅僅意味著正在使用完整的密鑰空間。所以有一個相對大的機會(大約 1/256)整數的大端編碼小一個字節。然而,大多數庫需要一個整數到八位字節的字元串原語才能使用(I2OS 或 I2OSP)。這以靜態位數表示私鑰,例如上面的 256。
順便說一句,RSA 也是如此。總是期望數字以隨機數的零位開頭,除非這顯然是不可能的。當然,請注意不要簽署/未簽署的陳述。