Elliptic-Curves

SRP 可以與橢圓曲線一起使用嗎?

  • May 21, 2020

我確信它可以,因為 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)

而且,問題就在這裡。上面的表達式是橢圓曲線上兩點的乘積。但是,在橢圓曲線數學中,沒有辦法將兩個點相乘。我們可以添加兩個點,我們可以將一個點乘以一個標量 - 但我們不能將一個點乘以另一個點。

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