橢圓曲線中兩個密鑰的不對稱作用是否相同(與 RSA 一樣)?它們可以無差別地互換嗎?
更準確地說,對於 RSA,對於 RSA 來說,用橢圓曲線只知道另一個密鑰是不可行的嗎?還是 EC 在這個問題上的工作方式不同?我的意思只是在數學上(我不是在這裡談論 OpenSSL 將項目保存在文件中以促進公鑰再生的欺騙性能力)。
在 RSA 和通常的¹橢圓曲線密碼學 (ECC) 中,都有一個公鑰和一個私鑰,形成一個匹配對。在簽名中,私鑰用於生成簽名,匹配的公鑰用於簽名驗證。在(通常是混合)加密中,公鑰用於加密,而匹配的私鑰用於解密。這種具有交換公鑰和私鑰使用順序的雙重角色適用於 RSA 和 ECC。
在 RSA 中,還可以在數學上交換公共和私有指數的值 $ e $ 和 $ d $ . 因此,當表示為整數對時,可以交換公鑰和私鑰的值 $ (N,e) $ 和 $ (N,d) $ . 這種價值交換在 RSA 實踐中幾乎從未進行過²。
這種價值交換在 ECC 中是不可能的。這是因為 ECC 私鑰是整數 $ d $ 在 $ [0,n) $ 在哪裡 $ n $ 是生成器的順序 $ G $ 橢圓曲線,公鑰是 $ Q=dG=\underbrace{G+G\cdots+G}_{d\text{ times}} $ 在哪裡 $ + $ 是橢圓曲線組的點加法運算。私鑰和公鑰是不同的數學對象,它們的值不能進行有意義的交換。
使用 ECC,給定私鑰,可以推斷(計算)相應的公鑰,這與 RSA 不同。
**是的,**在適當的假設下:具有非標準格式的 RSA 私鑰,並且具有異常大的公共指數 $ e $ .
在 ECC 中,給定橢圓曲線組³和私鑰 $ d $ ,找到公鑰是一個基本操作:只需計算 $ Q\gets dG $ .
在 RSA 中,當給定私鑰時,並不總是可以計算出匹配的公鑰。具體來說,當私鑰以形式給出時 $ (N,d) $ , 和公共指數 $ e $ 公鑰的 $ (N,e) $ 是一個很大的隨機秘密,發現 $ e $ 很難。然而,發現 $ e $ 當它是私鑰的一部分時是微不足道的,例如因為私鑰是PKCS#1v2 中推薦的 RSA 私鑰格式: $ (N,e,d,p,q,d_p,d_q,q_\text{inv}) $ . 並發現 $ e $ 很容易當 $ e $ 低於某個門檻值,例如 $ e<2^{256} $ ,這也是常見的。
¹ 由SEC1編纂。
² 如果公共/私人指數之一,這種交換是不安全的 $ e $ 和 $ d $ 小於 $ 2^{256} $ ,出於性能原因,這很常見。只有在公共/私人指數中選擇第一個時,交換公共和私人密鑰才是安全的 $ e $ 和 $ d $ 在更大的集合中隨機選擇,或者如果兩者都是秘密的,則否定公鑰加密的好處。
³ 通常是公共參數,例如
secp256k1
任何比特幣。常見的 ECC 組編入SEC2中。