这个问题有点复杂,目的是澄清问题。
假设n是循环组的顺序。It n - 1是所有可能的私钥数。
n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
我们还知道,每个私钥和公钥都有它的模逆。要获得私钥的模逆,我们需要从n中减去私钥。
要得到公钥的模逆,我们必须将它的y坐标乘以-1,模乘以有限域的p阶。
模组反转公钥具有与原始公钥相同的x坐标,但具有不同的y坐标,并且y坐标的极性总是不同的。如果原始y是奇数,则在模倒键中它将是偶数,反之亦然。
问题是,如果公钥的y坐标为偶数,是否意味着相应的私钥值小于n/2?如果y是奇数,那么私钥比n/2更多?
y (或x)坐标的均匀度/奇性与相应私钥的值之间有什么关系吗?
在不知道私钥本身的情况下,是否有任何方法知道私钥比n/2更多或更少?
发布于 2022-09-18 11:11:24
用Sagemath测试前10个整数作为私钥;
#secp256k1
p = Integer("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F")
a = Integer("0x0000000000000000000000000000000000000000000000000000000000000000")
b = Integer("0x0000000000000000000000000000000000000000000000000000000000000007")
K = GF(p)
E = EllipticCurve(K,[a,b])
Gx = Integer(0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)
Gy = Integer(0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)
G = E(Gx, Gy)
# Check the point
#prime curve
n = E.order()
for i in range(1,10):
A = i* G
print(A[0],A[1])
下面是输出(x,y);
55066263022277343669578718895168534326250603453777594175500187360389116729240 32670510020758816978083085130507043184471273380659243275938904335757337482424
89565891926547004231252920425935692360644145829622209833684329913297188986597 12158399299693830322967808612713398636155367887041628176798871954788371653930
112711660439710606056748659173929673102114977341539408544630613555209775888121 25583027980570883691656905877401976406448868254816295069919888960541586679410
103388573995635080359749164254216598308788835304023601477803095234286494993683 37057141145242123013015316630864329550140216928701153669873286428255828810018
21505829891763648114329055987619236494102133314575206970830385799158076338148 98003708678762621233683240503080860129026887322874138805529884920309963580118
115780575977492633039504758427830329241728645270042306223540962614150928364886 78735063515800386211891312544505775871260717697865196436804966483607426560663
41948375291644419605210209193538855353224492619856392092318293986323063962044 48361766907851246668144012348516735800090617714386977531302791340517493990618
21262057306151627953595685090280431278183829487175876377991189246716355947009 41749993296225487051377864631615517161996906063147759678534462689479575333124
78173298682877769088723994436027545680738210601369041078747105985693655485630 92362876758821804597230797234617159328445543067760556585160674174871431781431
正如我们所看到的,在这个范围内,X和Y坐标有偶数和奇数的情况。由此得出结论,没有%100的关系。
它真的很难分辨,我想是的,但是,我既不能证明它,也不能计算它!
对于我们拥有的前100万个私钥的运行;
Number of odd X'es 499822
Number of odd Y'es 499944
正如我们所看到的,非常接近一半。
作为一个特别的注意:点的坐标不应用于随机性,因为它们是不均匀的。
https://crypto.stackexchange.com/questions/101939
复制相似问题