SRP 可以與橢圓曲線一起使用嗎?
我確信它可以,因為 SRP(安全遠端協議)可以在 Diffie-Hellman 工作的任何地方實現,但我需要一個證明才能將這方面放入維基百科。
編輯:好的,它可以至少部分移動到橢圓曲線嗎?
SRP 需要的不僅僅是一個組,它還需要一個欄位。見規範:第二個使用者發送 $ B = v + g^b $ . 這需要兩個操作,加法和乘法。您不能輕易地將其添加到僅提供一種操作的組上,例如橢圓曲線。
已經提出了使用橢圓曲線的 SRP變體,但似乎還沒有得到廣泛接受,甚至還沒有得到實質性的審查。參見例如這個建議。此外,本文還提供了一些細節(例如,它聲稱打破了先前關於基於 EC 的 SRP 變體的提議)。
SRP 算法中的 DH 操作不能簡單地用“等效的”ECDH 操作代替。
在 DH 中,我們
A
從私鑰生成公鑰,a
如下所示:A=pow(g, a, n)
其中
pow(g, a, n)
是 g^a mod N,並且 g 和 N 是已知常數在 ECDH 中,我們
A
從私鑰生成公鑰,a
如下所示:A=point_mult(a, g)
其中
point_mult
表示EC點乘法,a是標量,g是橢圓曲線上的已知生成點。讓我們看看如果我們簡單地嘗試
A=pow(g, a, n)
用 ECDH 替換 SRP 算法中的每個 DH 實例會發生什麼A=point_mult(a, g)
。在 SRP 算法中,伺服器生成伺服器會話密鑰如下:
S_s = pow(A * pow(v, u, N), b, N)
其中 A 先前計算為
A=pow(g, a, n)
, v 先前計算為v=g^x
。所以上式可以寫成:S_s = pow(pow(g, a, n) * pow(g^x, u, N), b, N)
或者
S_s = pow(pow(g, a, n) * pow(g, u*x, N), b, N)
只關注
pow(g, a, n) * pow(g, u*x, N)
上面的等式,如果我們用它們的“等效”ECDH 操作替換這個表達式中的 DH 操作,我們將有:point_mult(a, g) * point_mult(ux * g)
而且,問題就在這裡。上面的表達式是橢圓曲線上兩點的乘積。但是,在橢圓曲線數學中,沒有辦法將兩個點相乘。我們可以添加兩個點,我們可以將一個點乘以一個標量 - 但我們不能將一個點乘以另一個點。