為什麼要採用如此復雜的輔因子清除方式?
在我閱讀這篇文章之前,我以為我理解了輔助因子清除,這通常看起來很受歡迎(許多其他網站連結到它) -輔因子解釋:清除橢圓曲線的骯髒小秘密
假設您有一組非主要訂單,例如說 $ 44 $ . 現在, $ 44 = 11 * 4 $ . 我們有興趣在素數子群中工作——即序子群 $ 11 $ - IE $ [0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40] $
如果我從組中選擇一個隨機元素 $ 44 $ ,我可以通過將元素乘以輔因子的標量輕鬆地將其映射到素數階子組( $ 4 $ )。可以很容易地證明,這個操作將群的任何元素映射到素數次子群的元素。這稱為輔因子清除(根據我讀過的其他文本)。
然而,這篇文章(我在開始時連結的那個)提出了一種非常複雜的輔助因子清除方法。
他首先表達了一個元素 $ E $ 該組的 $ E = 4.a + 11.b $ & 做一些事情來清除輔因子。我花了很長時間仔細研究它,我無法弄清楚他為什麼要這樣做?
我的問題不是關於他如何進行輔因子清除,而是關於他為什麼要做這些複雜的事情而不是僅僅乘以 $ 4 $ . 我的問題也不在於我理解為什麼需要清除輔因子。
你的論點是,如果你選擇一個非素數組的均勻隨機元素並乘以輔因子,你將得到素數子組的一個均勻隨機元素。這是真的,你可以通過論證這個乘法的核心的陪集形成群的一個分區來證明這一點。
但是,如果一個循環群 $ C $ 有訂單 $ np $ 為了 $ p $ 素數和 $ gcd(n,p)=1 $ , 那麼它可以寫成 $ C\cong C_n\times C_p $ ,即兩個環狀基團的乘積。所以任何元素 $ g\in C $ 可以寫成對 $ (g_n,g_p) $ . 僅乘以輔因子 $ n $ 映射我們 $ (g_n,g_p) $ 至 $ (0,ng_p) $ . 這清除了輔因子部分,但它改變了素數部分。如果我們不想這樣呢?如果我們想從 $ (g_n,g_p) $ 至 $ (0,g_p) $ ? 我們想投影到一個組件(幾乎就像乘以 $ (0,1) $ ,但這些是加法組,所以我們不能像這樣乘以元素)。看到這一點的一種方法是,在我們乘以 $ n $ (清除第一個組件)我們需要乘以清除 $ n $ 在第二個組件中。自從 $ gcd(n,p)=1 $ , 有一些 $ n’\equiv n^{-1}\mod p $ ,所以乘以 $ nn’ $ 成功了。
我們可以通過另一種方式看到這一點,注意到我們有一個投影 $ P:C_n\times C_p\rightarrow C_n\times C_p $ 這樣 $ P(a,b)=(0,b) $ ,我們要創建一個地圖 $ \tilde{P}:C\rightarrow C $ 這樣 $ \tilde{P} $ 具有相同的作用 $ P $ 給定同構 $ C_n\times C_p $ 至 $ C $ . 原貼在評論中給出了明確的同構,如 $ f(a,b)=an + bp $ . 然後你可以證明乘以 $ nn’ $ 在 $ C $ 確實有投射到的效果 $ C_p $ 在 $ C_n\times C_p $ .
但我不知道我們為什麼要這樣做。我嘗試閱讀其餘部分,但我仍然不明白為什麼。這是我最好的猜測:後來他們說出於各種原因,我們希望將公鑰輸出為 Curve25519 上的均勻隨機點,即使我們只在素數子組上進行密鑰交換。因此,我們需要在輔因子組中添加一個隨機點。也就是說,愛麗絲的“真實”公鑰將是某個點 $ (0,p_A)=(0,s_Ap) $ ,但她將其修改為 $ (r_A,p_A) $ 通過添加一個隨機輔因子點 $ r_A $ (這裡使用上面的產品符號)。
他們解釋的方式,雙方已經將 4 的輔因子乘以他們的私鑰,因此乘以他們的私鑰將自動清除組的輔因子部分,例如,如果 Bob 的密鑰 $ s_B $ 可以被 $ 4 $ , 然後 $ s_B(r_A,p_A)=(s_Br_A,s_Bp_A)=(0,s_Bp_A) $ ,因為它應該是。
假設我將我的密鑰儲存為 $ s_B’\in {0,1,\dots,p-1} $ ,所以我的公鑰是 $ (0,s_B’p) $ . 然後如果我乘以這個密鑰,我會得到 $ (s_B’r_A,s_B’p_A) $ 在哪裡 $ s_B’r_A $ 不一定 $ 0 $ . 我想在不修改的情況下清除它 $ s_B’p_A $ 以任何方式。因此,我使用文章中顯示的更複雜的輔因子清除。
在我看來,一種更簡單的方法是在任何標量乘法開始時強制乘以輔因子,但我可能遺漏了一些微妙的問題,或者我完全錯誤地認為我們會這樣做這個。