在关于曲线25519的文件中,公钥q的集合是\{q : q\in \{ 0,1,2,...,2^{256} - 1\}\},私钥的集合n是\{n : n\in 2^{254} + 8 \cdot \{ 0,1,2,...,2^{251} - 1\}\}。
我的主要问题是:为什么公钥和私钥的结构是这样的?
我不明白的是:在定理2.1中,q被定义为F_p的一个元素,q也是Curve25519函数中的一个参数:Curve25519(n,q) = X_0(nQ) = s和X_0 (Q) = q。那么为什么一组公钥不等于\{q : q\in \{ 0,1,2,...,F_p - 1\}\}呢?
发布于 2020-07-01 15:21:03
来自同一份文件:
第一种方法是使标量乘法始终具有相同的循环迭代次数,这是由于常数时间的原因。第二种方法确保得到的点属于素数阶子群:如果有人发送一个小阶点,那么标量乘法的结果将自动为0,因为密钥是辅助因子的倍数(见本文第8页)。
对于公钥,只有任何值q对应于属于曲线或其二次扭曲点的有效x-coordinate。当然,您只能在[0,2^{255}-20]中使用它们,但重点是它适合于32字节,并且任何32-byte值都是有效的。
https://crypto.stackexchange.com/questions/81657
复制相似问题