对我来说,椭圆曲线是否可以互换还不清楚? 可以说鲍勃有prime256v1,爱丽丝有prime521v1密钥。他们能够以加密方式相互通信吗?
同样的问题是,不同的原点椭圆曲线是否可以相互通信。 primve256v1可以与BrainpoolP521t1进行通信吗?
Afaik应当能够在diffie hellman序列中达成密钥协议,因为派生密钥可以由共享公钥的标量积创建。但是在开始部分,双方都同意算法尚不清楚。它们是否在起点处交换椭圆曲线?如果可以,怎么办?
有没有好的代码示例,例如为Java实现这种方法?
答案 0 :(得分:1)
ECDH公式为shared_coordinate = your_private_coefficient * their_public_coordinate
。如果双方使用不同的曲线,则它们的公共坐标将毫无意义。
爱丽丝逻辑上以dAlice * dBob * GBob
结尾,而鲍勃以dBob * dAlice * GAlice
结尾。代数上,这些仅在GAlice == GBob
时是相同的。
虽然两条曲线可能与其他不同的参数具有相同的G值,但由于a / b / n / {p | m,f(x)}参数与两方都不匹配,因此无法进行数学运算没有使用相同的加/乘定义,并且上面的符号变得毫无意义。