Eliptik Eğrilere Ekleme
Feragatname: Bu, eliptik eğrilerin zengin konusuyla ilgili herhangi bir adalet sağlamaz. Çok basitleştirildi. Eliptik eğriler son zamanlarda şifreleme bağlamında medyanın dikkatini çektiği için, eliptik bir eğri üzerinde "hesaplama" işleminin gerçekte nasıl çalıştığı hakkında küçük bir fikir vermek istedim.
Giriş
Eliptik eğriler (x,y), form düzlemindeki nokta kümeleridir y^2 = x^3+Ax+B. (Ayrıca, 4A^3+27B^2 ≠ 0kötü tekillikleri önlemek için.) Bu eğrileri herhangi bir alanda düşünebilirsiniz. Gerçek sayılar alanını kullanırsanız, eğriler görselleştirilebilir ve şöyle görünürler:
Bu eğriler hakkındaki özel şey , eklemelerin analogu olan yerleşik bir aritmetik işlem yapmalarıdır . Puan ekleyip çıkarabilirsiniz ve bu işlem hem birleştirici hem de değişmelidir (bir abelyan grubu).
Ekleme nasıl çalışır?
Not: eliptik eğrilere noktaların eklenmesi sezgisel değildir. Bu tür bir ekleme, bazı güzel özelliklere sahip olması nedeniyle olduğu gibi tanımlanır. Garip ama işe yarıyor.
Eliptik eğriler bir grup oluştururken, 0'a eşdeğer ek bir kimlik vardır. Yani, 0herhangi bir noktaya eklemek sonucu değiştirmeyecektir. Bu katkı kimliği sonsuzdaki "nokta" dır. Düzlemdeki tüm çizgiler, sonsuzluktaki bu noktayı içerir, dolayısıyla eklemek hiçbir fark yaratmaz.
Diyelim ki herhangi bir çizgi eğriyi üç noktada kesiyor, ki 0bu üç noktanın toplamı 0. Bunu akılda tutarak, bu resme bir bakın.
Şimdi, doğal soru şudur, nedir P+Q? Peki, eğer P+Q+R = 0öyleyse P+Q = -R(alternatif olarak yazılmıştır R'). Nerede -R? Burada It R + (-R) = 0x-eksenin diğer tarafında olan, Rsadece kesen, içlerinden hattı dik olacak şekilde R, -Rve 0. Bunu, görüntünün ilk bölümünde görebilirsiniz:
Bu görüntülerde görebileceğiniz bir diğer şey, bir noktanın kendisinin toplamının çizginin eğriye teğet olduğu anlamına gelmesidir.
Çizgilerin ve eliptik eğrilerin kesişme noktalarında nasıl bulunur
İki ayrı nokta olması durumunda
Genellikle iki noktadan tam olarak bir çizgi vardır P=(x0,y0), Q=(x1,y1). Düşey olmadığını ve iki noktanın farklı olduğunu varsayarsak, şunu yazabiliriz y = m*x+q. Eliptik eğri ile kesişme noktalarını bulmak istediğimizde yazabiliriz.
0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2
bu üçüncü derece bir polinomdur. Bunlar genellikle çözülmesi o kadar kolay değildir, ancak biz zaten bu polinomun iki xsıfırını biliyoruz: x0, x1Eklemek istediğimiz iki noktanın iki koordinatı !
Bu şekilde biz doğrusal faktörlerin dışında faktörü (x-x0)ve (x-x1)ve kimin köküdür üçüncü doğrusal bir faktör kalır xnoktasının -coordinate R. ( -Rsimetri nedeniyle de. Dikkat edin o R = (x2,y2)zaman eğer -R = (x2,-y2). -Gruptan; vektörel bir eksi değil.)
PKendisine bir nokta ekleme durumunda
Bu durumda, eğrinin tanjantını hesaplamak zorundayız P=(x0,y0). Doğrudan yazabiliriz mve qaçısından A,B,x0,y0:
3*x0^2 + A
m = ------------
2*y0
-x0^3 + A*x0 + 2*B
q = --------------------
2*y0
Denklemi elde ederiz y = m*x+qve yukarıdaki paragrafta olduğu gibi devam edebiliriz.
Tam bir vaka ağacı
Bu, tüm bu davaların nasıl ele alınacağının tam bir listesidir:
P,QEliptik eğri üzerinde puanlar olsun ("sonsuzluk" noktası dahil 0)
- Eğer
P = 0yaQ = 0, o zamanP+Q = QyaP+Q = Psırasıyla - Başka
P ≠ 0veQ ≠ 0, öyleyse bırakP = (x0,y0)veQ = (x1,y1):- Eğer
P = -Q(bu aygıtınx0 = x1vey0 = -y1daha sonra)P+Q = 0 - Başka
P ≠ -Q- Eğer
x0 = x1öyleyse, almakP=Qiçin teğeti hesaplar (yukarıdaki bölüme bakınız) hesaplarızR. SonraP+Q = P+P = 2P = -R - Başka:
y = m*x+yHesaplamak için bu iki noktadan (yukarıdaki bölüme bakınız) formun bir çizgisini oluşturabilirizR. SonraP+Q=-R
- Eğer
- Eğer
Sonlu alanlar
Bu meydan okuma için sadece büyüklükte alanlar dikkate alacaktır pnerede pasal (çünkü bazı detayların p ≠ 2, p ≠ 3). Bunun basitçe hesaplayabileceğiniz bir avantajı vardır mod p. Diğer alanlardaki aritmetik çok daha karmaşık.
Bu örnekte belirlediğimiz p = 5ve burada tüm eşitlikler uygunluktur mod 5.
2+4 ≡ 6 ≡ 1
2-4 ≡ -2 ≡ 3
2*4 ≡ 8 ≡ 3
2/4 ≡ 2*4 ≡ 3 because 4*4 ≡ 16 ≡ 1, therefore 1/4 ≡ 4
Meydan okuma
A,BBir eliptik eğrinin parametreleri göz önüne alındığında , bir asal alan karakteristiği pve P,Qeliptik eğride iki nokta varsa , bunların toplamını döndürür.
- Parametrelerin
A,Bgerçekte eliptik bir eğri tanımladığını varsayabilirsiniz , yani bu4A^3+27B^2 ≠ 0. - Bunun
P,Qaslında eliptik eğrideki veya noktanın üzerindeki noktalar olduğunu varsayabilirsiniz0. - Bunun
p ≠ 2,3asal olduğunu varsayabilirsin .
Test Kılıfları
MATLAB / Octave'da kendi test vakalarınız için kullanabileceğiniz (çok şık olmayan) bir uygulama yaptım : ideone.com Umarım doğrudur. En azından elle yaptığım birkaç hesaplamayı yaptı.
Burada düşündüğümüz tüm eğriler için işe yarayan önemsiz test durumlarına dikkat edin:
Sıfır P+0 = P
ekleme: Ters ekleme:(x,y) + (x,-y) = 0
İçin p = 7, A = 0, B = 5iki nokta P = (3,2)ve Q = (6,2)eliptik bir eğri üzerinde bulunmaktadır. Sonra aşağıdaki tutar:
2*Q = Q+Q = P
2*P = P+P = (5,2)
3*P = P+P+P = (5,2)+P = (6,5)
4*P = P+P+P+P = (5,2)+(5,2) = (6,5)+(5,2) = Q
Eliptik eğrideki tüm noktalar (3,2),(5,2),(6,2),(3,5),(5,5),(6,5),0
İçin p = 13, A = 3, B = 8aldığımız
(1,8)+(9,7) = (2,10)
(2,3)+(12,11) = (9,7)
2*(9,6) = (9,7)
3*(9,6) = 0
İçin p = 17, A = 2, B = 2ve P=(5,1) biz
2*P = (6,3)
3*P = (10,6)
4*P = (3,1)
5*P = (9,16)
6*P = (16,13)
7*P = (0,6)
8*P = (13,7)
9*P = (7,6)
10*P = (7,11)
Eğer gerçekten hırslıysan, al
p = 1550031797834347859248576414813139942411
A = 1009296542191532464076260367525816293976
x0 = 1317953763239595888465524145589872695690
y0 = 434829348619031278460656303481105428081
x1 = 1247392211317907151303247721489640699240
y1 = 207534858442090452193999571026315995117
ve nböyle bir doğal sayı bulmaya çalışın n*(x0,y0) = (x1,y1). Daha fazla bilgi burada.
apandis
Öncelikle büyük bir taslak benim gözden geçirme ve düzenleme için @ El'endiaStarman teşekkür ederim!
Neden eliptik eğriler?
Eh, bir çeşit keyfi denklem gibi görünebilir, ama bu pek de genel değil: Genel olarak projektif düzlemde bu geometrik "şekilleri" göz önünde bulunduruyoruz ("sonsuzluğun" nereden geldiğidir). Her şeyin homojen olduğunu düşünüyoruz. 3. derece polinomlar . (Daha düşük veya daha yüksek dereceye sahip olanlar incelemek için çok zor veya sadece önemsizdir.) İstediğimiz güzel özellikleri elde etmek için bazı kısıtlamalar uyguladıktan sonra ve bu polinomları dehomojenizasyondan sonra (üç afin düzleminden birine yansıtma) ) gibi denklemlerle sonuçlanırızy^2+a*x*y+b*y = x^3+c*x^2+d*x+eBu, uzun Weierstrass formunda eliptik bir eğridir. Bunlar temelde düşündüğümüz eğrilerle aynı, ancak biraz eğri. Doğrusal bir koordinat dönüşümü ile kolayca kısa bir Weierstras denklemini bunun dışında yapabilirsiniz. Tüm ilginç özellikleri hala tutan örnek .
Neden dışladık p=2,3?
Bu, kısa Weierstrass formu 4A^3+27B^2 ≠ 0için tekilliklerden kaçınmak için kısıtlamaya ihtiyacımız olduğu gerçeğiyle ilgilidir (aşağıda daha fazlası). Sahip olduğumuz bir karakteristik 2 4 = 0alanında ve sahip olduğumuz karakteristik 3 alanında, 27 = 0bu tür alanlar için kısa ot biçimli eğrilerin olması imkansız kılmaktadır.
Tekillikler nelerdir?
Eğer denklem 4A^3+27B^2=0geçerliyse, aşağıdaki gibi tekilliklere sahibiz: Bu noktalarda gördüğünüz gibi bir türev bulamıyorsunuz ve bu nedenle işlemi "öldüren" teğet yok. Denklemlere bakabilir y^2 = x^3veyay^2 = x^3-3*x+2
Neden onlar yine de eliptik eğri olarak adlandırılıyor ?
Bunun nedeni, bu şeklin denklemlerinin eliptik integrallerde ortaya çıkmasıdır, örneğin, örneğin bir elipsin yayını tıkamak istediğinizde ne elde edersiniz. Adın kökeni hakkında kısa bir slayt gösterisi.
Kriptografiyle ne ilgisi var?
nP = P+P+...+PÇok verimli hesaplamanın yolları var . Bu, örneğin Diffie Hellman anahtar değişiminde kullanılabilir . Modüler aritmetik, burulma alt gruplarına eklenerek değiştirilebilir, bunlar sadece sonlu sıraya sahip eğrideki noktalardır. (Bu mP = 0, bazıları miçin temelde sadece hesap yapan anlamına gelir mod m).



y^2 = x^3 + xgeçerli bir eliptik eğri olduğunu ve eğri(0,0) ≠ 0üzerinde bir nokta olduğunu unutmayın !)