Elliptic-Curves
EC:如何防止交換運算後發現基點
如果我有一個標量 $ x $ 並指出 $ B $ ,那麼我可以計算 $ X = f(x,B) $
如果函式 $ f $ 是點乘法,即 $ f(x,B) = x \cdot B $ , 然後 $ B $ 可以確定是否 $ X $ 和 $ x $ 是已知的。
在這種情況下 $ x $ 和 $ X $ 會知道,是否可以修改功能 $ f $ 這樣 $ B $ 無法確定?
有必要:
- 功能 $ f $ 是可交換的,即 $ f(x, f(y, B)) = f(y, f(x, B)) $
- $ X $ 不能從 $ x $ .
- 如果多對 ( $ x $ , $ X $ ) 給出,不能推斷任何兩個對是使用相同的基點創建的 $ B $ , 即使 $ B $ 本身是不可確定的。
編輯:限制我們的選擇就好了 $ x $ 如果那會阻止 $ B $ 從被確定。
編輯:使用的曲線是 ed25519
如果你不依賴 EC,這裡有一個簡單的方法:讓 $ N $ 是未知(秘密)分解的複合數;然後:
$$ f(x, B) = B^x \bmod N $$ 既不可逆,又可交換。如果 $ f $ 需要是一個排列(未指定),然後我們可以選擇因子 $ p, q $ 的 $ N $ 英石 $ p-1, q-1 $ 有不小的奇數因子(並限制允許的值 $ x $ 到小的奇數值 $ >1 $ ).
如果您絕對必須做 EC,那麼顯而易見的方法是實際使用偽曲線(即,以標準方式進行 EC 操作,但在環而不是場上工作),環是(是的,你猜對了)整數模 $ N $ (其中的因式分解 $ N $ 是秘密)。是的,操作可能會失敗,但如果以下因素 $ N $ 足夠大,這實際上不會發生。 $ N $ 需要足夠大,以便直接分解 $ N $ 是不可行的(這意味著它比我們通常在 EC 中進行的模數大得多),但它似乎滿足您的要求。請注意,偽曲線上的點計數不起作用(或者我們希望如此;如果確實如此,那麼我們可以分解),因此是反轉點乘法的標準方法(這涉及找到乘法逆模曲線的階數)無法使用。