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 ≠ 0
kö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, 0
herhangi 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 0
bu üç 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) = 0
x-eksenin diğer tarafında olan, R
sadece kesen, içlerinden hattı dik olacak şekilde R
, -R
ve 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 x
sıfırını biliyoruz: x0, x1
Eklemek 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 x
noktasının -coordinate R
. ( -R
simetri nedeniyle de. Dikkat edin o R = (x2,y2)
zaman eğer -R = (x2,-y2)
. -
Gruptan; vektörel bir eksi değil.)
P
Kendisine bir nokta ekleme durumunda
Bu durumda, eğrinin tanjantını hesaplamak zorundayız P=(x0,y0)
. Doğrudan yazabiliriz m
ve q
açı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+q
ve 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,Q
Eliptik eğri üzerinde puanlar olsun ("sonsuzluk" noktası dahil 0
)
- Eğer
P = 0
yaQ = 0
, o zamanP+Q = Q
yaP+Q = P
sırasıyla - Başka
P ≠ 0
veQ ≠ 0
, öyleyse bırakP = (x0,y0)
veQ = (x1,y1)
:- Eğer
P = -Q
(bu aygıtınx0 = x1
vey0 = -y1
daha sonra)P+Q = 0
- Başka
P ≠ -Q
- Eğer
x0 = x1
öyleyse, almakP=Q
iç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+y
Hesaplamak 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 p
nerede p
asal (çü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 = 5
ve 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,B
Bir eliptik eğrinin parametreleri göz önüne alındığında , bir asal alan karakteristiği p
ve P,Q
eliptik eğride iki nokta varsa , bunların toplamını döndürür.
- Parametrelerin
A,B
gerçekte eliptik bir eğri tanımladığını varsayabilirsiniz , yani bu4A^3+27B^2 ≠ 0
. - Bunun
P,Q
aslında eliptik eğrideki veya noktanın üzerindeki noktalar olduğunu varsayabilirsiniz0
. - Bunun
p ≠ 2,3
asal 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 = 5
iki 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 = 8
aldığı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 = 2
ve 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 n
bö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+e
Bu, 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 ≠ 0
iç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 = 0
alanında ve sahip olduğumuz karakteristik 3 alanında, 27 = 0
bu 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=0
geç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^3
veyay^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ı m
için temelde sadece hesap yapan anlamına gelir mod m
).
y^2 = x^3 + x
geçerli bir eliptik eğri olduğunu ve eğri(0,0) ≠ 0
üzerinde bir nokta olduğunu unutmayın !)