Aes
ECIES-AES 加密如何使用 AES 不支持的密鑰大小?
我目前正在研究和實現 ECC 算法,但遇到了一個問題。我想使用 Secp521r1 生成共享密鑰並使用 AES256 使用 ECIES 進行加密,但 AES-256 需要 256 位密鑰,而共享密鑰是 521 位。如何使用 521 位共享密鑰通過 ECIES AES-256 進行加密?
它應該被散列嗎?如果是這樣,如果我想專業地使用 AES128,我可以使用 md5 來散列共享密鑰,但 md5 不被認為不安全使用嗎?
這麼多操作不會影響ECIES的速度嗎?
我的另一個問題是文件:SEC,ver 1.9,在 MAC 世代的第 34 頁上說:
- 使用第 2.3.2 節中指定的轉換常式將 M 轉換為位串 M 並將 K 轉換為位串 K。
我不明白為什麼我應該將共享密鑰轉換為位字元串,而 HMAC_SHA512 將密鑰輸入作為字節數組。該文件還對第 3.8.3 節中指定的加密提出了相同的建議。
共享密鑰為 521 位
共享密鑰是一個橢圓曲線點,所以熵不是均勻分佈的。因此,無論如何,您都需要在共享密鑰上使用 HKDF。您可以使用基於 SHA256 的 HKDF 生成 256 位密鑰,並在必要時截斷結果以獲得 128 位密鑰。
這麼多操作不會影響ECIES的速度嗎?
與生成共享密鑰所需的 EC 標量乘法相比,散列的成本很小。
將 M 轉換為位串 M 和 K 轉換為位串 K
他們談論位字元串的唯一原因是為了確保他們 100% 清楚地知道在必要時應該如何將八位字節字元串截斷為更短的八位字節字元串。