Cryptography 公钥超过Mod P?关于离散对数问题的澄清要求
我试图观察/实现离散对数问题,但我注意到了一些问题;但在我开始之前,让我澄清一下,这是可以纠正的 a=b^x模p 何处为 a=地址的公钥 b=secp256k1 koblitz曲线的生成点(这是 上下文中的曲线) x=离散对数 p=模整数 我耦合了以下所有参数: A= 044F355BDCB7CC0AF728EF3CCEB9615D90684BB5B2CA5F859AB0F0B704075871AA385B6B1B8EAD809CA67454D9683FCF2BA03456D6FE2C4ABE2B07F0FBB2F1C1 (未压缩公钥)Cryptography 公钥超过Mod P?关于离散对数问题的澄清要求,cryptography,compression,public-key-encryption,secp256k1,Cryptography,Compression,Public Key Encryption,Secp256k1,我试图观察/实现离散对数问题,但我注意到了一些问题;但在我开始之前,让我澄清一下,这是可以纠正的 a=b^x模p 何处为 a=地址的公钥 b=secp256k1 koblitz曲线的生成点(这是 上下文中的曲线) x=离散对数 p=模整数 我耦合了以下所有参数: A= 044F355BDCB7CC0AF728EF3CCEB9615D90684BB5B2CA5F859AB0F0B704075871AA385B6B1B8EAD809CA67454D9683FCF2BA03456D6FE2C4ABE2
034f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa: (压缩公钥) B=04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DC28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8(未压缩发生器点) 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DC28D9 59F2815B 16F81798(压缩生成器点) X= p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE FFF C2F 我实际上不知道应该使用哪部分参数(压缩或未压缩) 注意:我尝试将未压缩的公钥转换为Mod p,但未压缩的公钥的大小超过了Mod p 我该怎么办 a=b^x模p,其中为 a=地址的公钥 b=secp256k1 koblitz曲线的生成点(这是 上下文中的曲线) x=离散对数 p=模整数 我们给出了一个离散对数问题(DLOG)(也称为指数演算);这是给定的
a,b,
和P
查找x
,从而保持a=b^x mod P
。上面实际上是OP使用的有限域DLOG的乘法表示法。ECC DLOG是加法的,并且有不同的表示法
- 即给定点
和基A
查找B
,从而x
保持在曲线E(FP)上A=[x]B
仅表示将点[x]B
x倍添加到自身B
compression并选择02
y
压缩并选择03
-y
无压缩04
y
,将x
放入曲线方程中,并使用Tonelli-Shanks算法求解二次剩余
在你的情况下,两者都给出了,没问题。使用未压缩的公钥 Aleksander Zieniewic于2020年6月16日提供的secp256k1当前记录为114位。因此,如果没有一个较低的目标,就无法打破离散日志 我尝试将未压缩公钥转换为Mod p,但未压缩公钥的大小超过了Mod p 椭圆曲线中的一个点
Q
当使用仿射坐标系时,它有两个坐标,即定义字段中的Q=(x,y)
,其中x,y
。检查点Q是否在曲线上时,将x
和y
放入曲线方程y^2=x^3+ax+b
,并检查是否相等
要解压缩,请将x
的值插入方程x^3+ax+b mod p
中,以获得假设值a
,然后使用Tonelli-Shanks算法在该方程y^2=a mod p
中找到y
和-y
。根据压缩值选择y
或-y
按评论更新
我尝试使用压缩公钥,但它仍然比mod p大
压缩点需要关于什么是压缩的信息。现在您已经给出了两种形式的公钥a
A = 04
4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1
04
-y
,因为从03
a
混淆
A = 04
4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1
您可以使用曲线方程,通过选择的-y
您可以将坐标值与
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a = 0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
if a>p:
print("a")
或者用你的眼睛和头脑
P = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
x(A)= 4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa
y(A)= 385b6b1b8ead809ca67454d9683fcf2ba03456d6fe2c4abe2b07f0fbdbb2f1c1
我还在这个问题上。我尝试使用压缩公钥,但它仍然比mod p大。我想这是因为当A作为一个点被生成时,它是这样的:A=G^x。没有一个mod p可以掉入有限域。但是我们能做些什么呢?为什么它应该比
P
更大呢。EC点是成对的(x,y)
,因此x
和y
在Zp中,它们必须满足曲线方程。我知道,对吗?这是指向曲线参数的链接。这里,我的A比P本身大。未压缩和压缩分别为:044F355BDCB7CC0AF728EF3CCEB9615D90684BB5B2CA5F859AB0F0B704075871AA385B6B1B8EAD809CA67454D9683FCF2BA03456D6FE2C4ABE2B07F0FBDBF1C1 034F355BDCB7CC0AF728EF3CCEB9615D90684BB5B2CA5B59AB0F0B704075871ADONE。下一步是什么?哇,我没看到。现在天气很晴朗。谢谢