Encryption

對 ECIES 使用 secp256k1 曲線是否安全?

  • March 14, 2020

我讀過SafeCurves,它表明 Secp256k1 按照他們的標準不是 SafeCurve,但比特幣和 ETH 在他們的區塊鏈中使用它。

我進行了更多研究並發現使用Secp256k1 ECDSA(唱歌算法不加密)是安全的並且沒有問題,因為這些標准在ECDSA中並不重要,但在ECIES中

所以我的問題是:

  1. secp256k1 在 ECIES 中使用了多少 Unsafe 以及它暴露了哪些危險/弱點/它使哪些攻擊成為可能
  2. 我應該完全避免 secp256k1(對於 ECIES)還是在某些情況下可以使用
  3. 什麼治療對 ECIES 是安全的(因為 Curve25519 僅適用於 ECDSA)

對 ECIES 使用 secp256k1 有多少 Unsafe 以及它暴露了哪些危險/弱點/它使哪些攻擊成為可能?

讓我們來看看secp256k1根據SafeCurves實現的“失敗”。

  • ECDLP:“圓盤”:這意味著曲線有一個特定的值要小。由於該網站表明這並不是天生的壞事或可利用的,它只是意味著(輕微?)加速搜尋是可能的蠻力搜尋。因為大值在這裡“更安全”,所以曲線必須實現這一點。
  • ECC:“階梯”:這意味著自然快速且抗側通道的標量乘法算法對於該曲線是不可能的。然而,抗側通道的實現仍然是可能的(儘管它需要多一點小心)。
  • ECC:“完成”:這意味著如果要添加兩點,則必須進行大小寫區分 $ P,Q $ (理論上使抗側通道的實現更難)。然而,這在實踐中是無關緊要的,因為 secp256k1 的大小寫區別是“ $ Q=-P $ “ 或者 ” $ Q=P $ “ 或者 ” $ Q\neq \pm P $ " 並且對於任何合理的標量乘法算法,我們實際上可以 100% 準確地預測在任何時候會發生哪種情況,因此區分大小寫的事實並不重要。
  • ECC:“ ind ”:這意味著如果給定一個字元串,您可以有效地決定您是查看隨機字元串還是曲線上的隨機點。除非你有一些超級花哨的協議依賴於這個屬性,否則這對你來說很可能無關緊要,但是 ECDSA 和 ECDH / ECIES 之類的東西不包括在其中。

我應該完全避免 secp256k1 還是可以在某些情況下使用?

對於“標準”案例,即 ECDH / ECIES / ECDSA 和類似的“簡單”應用程序,您可以使用 secp256k1,就像 Curve25519 一樣,假設您有一個安全的實現。唯一不能的地方是當您需要不可區分屬性時,但這裡似乎並非如此。

哪些治療方法對 ECIES 是安全的(因為 Curve25519 僅適用於 ECDSA)?

Curve25519 應該可用於 ECIES,因為 ECIES 本質上是“使用固定公鑰進行 ECDH 密鑰交換,然後散列到共享密鑰以用作對稱密鑰”,並且有時也稱為用於 Diffie-Hellman 的 Curve25519 的標準化版本X25519。

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