ECDSA 中的生成點和 Mod P
我最近一直在閱讀離散對數問題,我決定自己嘗試一小部分數字,在觀看此影片後,我實際上陷入了精神僵局。
在影片中,他使用作為素數的 mod p 來找到一個特定的生成點(也是素數),它可以迭代所有可能的點(我知道它
G
在整個曲線中是恆定的。但是為什麼要使用曲線的順序來找到一個合適的發電機點。)。而且他還提到,有些數字不能提供可以遍歷所有可能值的所有可能數字。
secp256k1
但最讓我困惑的是,像生成點和曲線順序這樣的真實值secp192ri
是/不是素數。我有沒有提到線上離散對數問題的所有答案都有素數生成點,曲線的階數也是素數。我可以了解正在發生的事情嗎?任何意見將不勝感激。
影片(至少,問題連結的地方)說明了乘法組模中的Baby-step/Giant-step Discrete Logarithm 方法 $ p $ , 對於素數 $ p $ . 那是套裝 $ {1,2,\ldots,p-2,p-1} $ ,在內部運算乘法模下 $ p $ .
該組基本上與橢圓曲線組無關。Baby-step/Giant-step的原理是一樣的,不分群,但是操作類似於模乘法 $ p $ 在橢圓曲線組中是非常不同的。
生成的組的順序對安全性很重要 $ g $ (即,不同值的數量 $ g^x\bmod p $ 可以取) 是素數,或者至少有一個很大的素因數。在乘法組模中工作時 $ p $ , 全組的順序為 $ p-1 $ , 和的順序 $ g $ 是其中的一些除數。一種選擇是選擇 $ p $ 這樣 $ (p-1)/2 $ 是素數 ( $ p $ 是所謂的安全素數)。現在我們可以採取任何 $ g $ 除了 $ g=1 $ 和 $ g=p-1 $ ,它的順序是 $ p-1 $ 或者 $ (p-1)/2 $ , 兩者都有很大的素因數 $ (p-1)/2 $ .
選擇發電機沒有絕對的理由 $ g $ 那是主要的。碰巧的是 $ 2 $ 和 $ 3 $ 很受歡迎,而且很重要;有些人已經找到滿意的選擇 $ g $ 主要。
擔心素數的理由就更少了 $ g $ 在 ECC 組中。在 secp256k1 中,兩個 $ x $ 和 $ y $ 生成點的座標是大的偶數,因此不是素數。重要的是生成的組的順序 $ g $ . 注意到 $ n $ , 曲線參數通常選擇為 $ n $ 是素數。