Elliptic-Curves

將 X,Y 轉換為 EC 點的雅可比表示時,是否有任何理由搜尋 1 以外的 Z 值?

  • February 8, 2022

交換公鑰時,我通常會收到一些壓縮形式的X,Y座標。要使用一些加速,我需要以 Jacobeanx,y,z形式表示。

Z=1滿足一切並查看速度提升(https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates,http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian.html)我看不出為什麼會比其他任何東西都慢(或快?)的明顯原因,這是一個合理的問題嗎?您能否指出一些關於“尋找 1 以外的內容是否有意義?”的方向。Z=1``Z``Z

加倍點(Wiki 連結)需要Z^4並且當與加倍算法(公共點計算、ECDH 和基於 EC 的簽名所需)一起使用時,使用 $ Z=1 $ 簡化計算,Z^4否則可能需要 3 次加倍。res不固定的雙加法以節省時間。雙加維基百科版本

let bits = bit_representation(s) # the vector of bits (from MSB to LSB) representing s
let res = O # point at infinity
for bit in bits:
   res = res + res # double
   if bit == 1:            
       res = res + P # add
   i = i - 1
return res

這是漫長故事的開始。“ m-fold double”(重複加倍)計算 $ [2^m]P $ 並且只計算Z^4一次。當你需要 $ [k]P $ ,你可能需要代表 $ k $ 在二進制形式中,然後在必要時使用 m 倍加倍。要從中受益,必須在決定是否使用 m-fold double 之前計算成本。

答案並不簡單和完整,因為需要額外的 Wiki 版本是有Z1=Z2 成本的。仍然有乘法,如果它的成本為零。5M + 2S``12M + 4S``5M + 2S``Z1``Z1=1

在一個簡短的句子中,一般來說,Z1=1簡化了方程。

自從 $ (X_1:Y_1:Z_1) $ 代表 $ (Z/Z^2,Y/Z^3) $ 和 $ (X_1:Y_1:Z_1) $ 是一個等價關係$$ (X_1:Y_1:Z_1) \sim (\lambda X_1:\lambda Y_1:\lambda Z_1) $$可以簡單地轉換 $ Z_1 =1 $ 和$$ (X_1/Z_1:Y_1/Z_1:1) $$

請記住,這1/Z1不是除法,而是Z1定義欄位的倒數。

Z1另一方面,是不留在那裡與下Z1=1操作。要從中受益,必須找到逆並執行兩次乘法。另一方面,求逆是我們不想要的,因為它代價高昂。

因此,至少在標量乘法開始時有好處。

引用自:https://crypto.stackexchange.com/questions/98587