Eliptik Eğriler Teorisi

Kübik eğrilerin gizli simetrileri: Grup teorisi, kriptografi ve Fermat'ın son teoremi

y² = x³ + ax + b
# Eliptik eğrinin kalbindeki güzellik

Eliptik Eğrilere Giriş

Eliptik eğriler, y² = x³ + ax + b biçimindeki kübik denklemlerle tanımlanan cebirsel eğrilerdir. Adlarının aksine elips ile ilgili değildirler; isim, eliptik integrallerin hesaplanması sırasında ortaya çıkmalarından gelir. Modern matematiğin en derin ve en güzel yapılarından biridir.

Neden Önemlidir?
Eliptik eğriler, grup teorisi, sayılar teorisi, kriptografi ve hatta Fermat'ın son teoreminin ispatı gibi çok farklı alanlarda kritik rol oynar. Modern kriptografi sistemlerinin (Bitcoin, SSL) temelini oluşturur.
Temel Denklem:
y² = x³ + ax + b

Burada a, b sabitler ve diskriminant Δ = -16(4a³ + 27b²) ≠ 0 olmalıdır (singülerliği önlemek için).

Temel Kavramlar: Grup, Halka, Cisim

Eliptik eğrileri anlamak için cebirsel yapıları bilmek gerekir.

Grup

Grup (G, ∗): Bir küme ve üzerinde tanımlı bir işlem olup şu özellikleri sağlar:
  • Kapalılık: ∀a,b ∈ G, a ∗ b ∈ G
  • Birleşme: (a ∗ b) ∗ c = a ∗ (b ∗ c)
  • Birim Eleman: ∃e ∈ G: e ∗ a = a ∗ e = a
  • Ters Eleman: ∀a ∈ G, ∃a⁻¹: a ∗ a⁻¹ = e

Halka ve Cisim

Tanımlar
Halka: İki işlem (+, ·) ile birlikte grup özelliklerini sağlayan yapı.
Cisim: Sıfır hariç tüm elemanların çarpma tersine sahip olduğu halka. Örnek: ℚ, ℝ, ℂ, 𝔽ₚ.

Eliptik Eğriler Üzerinde Grup Yapısı

Eliptik eğrinin en büyüleyici özelliği, üzerindeki noktaların bir grup oluşturmasıdır. Bu grup işlemi geometrik olarak tanımlanır ve son derece zarif bir yapıya sahiptir.

Nokta Toplama İşlemi

İki nokta P ve Q verilsin. P + Q'yu bulmak için:

  1. P ve Q'dan geçen doğruyu çiz
  2. Bu doğrunun eğri ile üçüncü kesim noktası R'yi bul
  3. R'nin x-ekseni etrafında yansıması P + Q'dur

Cebirsel Formül

# P = (x₁, y₁), Q = (x₂, y₂) için P + Q hesaplama
def elliptic_add(P, Q, a, b):
    if P == "O":  # O sonsuzda nokta (birim eleman)
        return Q
    if Q == "O":
        return P
    
    x1, y1 = P
    x2, y2 = Q
    
    if x1 == x2 and y1 == -y2:
        return "O"  # P + (-P) = O
    
    if P == Q:
        # Nokta ikilemesi (teğet)
        m = (3 * x1**2 + a) / (2 * y1)
    else:
        # Farklı noktalar
        m = (y2 - y1) / (x2 - x1)
    
    x3 = m**2 - x1 - x2
    y3 = m * (x1 - x3) - y1
    
    return (x3, y3)

# Örnek: y² = x³ - 2x + 2 eğrisi
P = (0, 1.414)
Q = (1, 1)
R = elliptic_add(P, Q, -2, 2)
print(f"P + Q = {R}")
Grup Aksiyomları
Birim Eleman: O (sonsuzda nokta)
Ters Eleman: (x, y)⁻¹ = (x, -y)
Birleşme Özelliği: (P + Q) + R = P + (Q + R) - Cebirsel olarak ispatlanır
Değişme Özelliği: P + Q = Q + P (Değişmeli grup!)

Diğer Eliptik Eğri Denklemleri

Weierstrass formu dışında başka eliptik eğri gösterimleri de vardır.

Legendre Denklemi

Legendre Formu:
y² = x(x - 1)(x - λ)

Burada λ ∈ K \ {0, 1} bir parametredir. Bu form, eğrinin üç belirgin noktasını (0, 1, λ) vurgular.

Kübik ve Quartik Formlar

Alternatif Formlar
Genel Kübik: ax³ + bx²y + cxy² + dy³ + ex² + fxy + gy² + hx + iy + j = 0
Jacobi Quartik: y² = (1 - x²)(1 - k²x²)
Edwards Eğrisi: x² + y² = 1 + dx²y² (Kriptografide kullanılır)

j-İnvaryantı ve İzomorfizm

İki eliptik eğrinin ne zaman izomorf olduğunu belirleyen kritik bir değişmezdir.

j-İnvaryantı Formülü

j(E) = 1728 · 4a³ / (4a³ + 27b²)

E: y² = x³ + ax + b için tanımlıdır. j-değeri aynı olan eğriler cebirsel olarak kapalı cisimler üzerinde izomorftur.

Teorem: K cebirsel olarak kapalı bir cisim olsun. İki eliptik eğri E₁ ve E₂, j(E₁) = j(E₂) ⟺ E₁ ≅ E₂ (izomorftur).

Endomorfizm

Bir eliptik eğrinin kendisine homomorfizmine endomorfizm denir. End(E) halkası, eğrinin özel yapısını karakterize eder. Karmaşık çarpma teorisi buradan doğar.

Singüler Eğriler

Diskriminant Δ = 0 olduğunda, eğri singülerdir (düzgün değildir) ve grup yapısı bozulur.

Singüler Noktalar:
• Düğüm (Node): İki dal kesişir. y² = x³ + x² gibi.
• Büküm (Cusp): Tek sivri nokta. y² = x³ gibi.
Singüler eğriler üzerinde standart grup işlemi tanımlı değildir!
# Diskriminant hesaplama
def discriminant(a, b):
    delta = -16 * (4 * a**3 + 27 * b**2)
    return delta

# Örnek
a, b = 0, 0  # y² = x³ (büküm)
print(f"Δ = {discriminant(a, b)}")  # Δ = 0, singüler!

Büküm Noktaları ve Bölüm Polinomları

n-büküm noktaları, nP = O eşitliğini sağlayan noktalardır. E[n] ile gösterilir.

Büküm Alt Grubu
E[n] = {P ∈ E : nP = O}
K cebirsel olarak kapalıysa: E[n] ≅ ℤ/nℤ × ℤ/nℤ
Büküm noktaları, eliptik eğri kriptografisinde kritik rol oynar.

Bölüm Polinomları

ψₙ(x) bölüm polinomu, n-büküm noktalarının x-koordinatlarını verir. Rekürsif olarak tanımlanır ve hızlı nokta çarpımı algoritmalarında kullanılır.

Sonlu Cisimler Üzerinde Eliptik Eğriler

Kriptografi için en önemli uygulama alanı, 𝔽ₚ (mod p) ve 𝔽_{p^n} gibi sonlu cisimler üzerindeki eğrilerdir.

Neden Sonlu Cisimler?
Sonlu cisimler üzerindeki eliptik eğriler, ayrık logaritma problemini zorlaştırır. Bu, RSA'ya alternatif güvenli kriptografi sistemlerinin temelini oluşturur (ECC - Elliptic Curve Cryptography).

Hasse Teoremi

Hasse Sınırı

|#E(𝔽ₚ) - (p + 1)| ≤ 2√p

E(𝔽ₚ) noktalarının sayısı, p + 1'e yakındır. Bu sınır, nokta sayımında kritik bir araçtır.

# 𝔽ₚ üzerinde nokta sayma (kaba kuvvet)
def count_points_fp(a, b, p):
    count = 1  # O noktası
    for x in range(p):
        y_squared = (x**3 + a*x + b) % p
        # Karesel kalıntı kontrolü
        if pow(y_squared, (p-1)//2, p) == 1:
            count += 2  # (x,y) ve (x,-y)
        elif y_squared == 0:
            count += 1  # (x,0)
    return count

# Örnek: y² = x³ + 2x + 3 mod 7
print(f"Nokta sayısı: {count_points_fp(2, 3, 7)}")

Grup Mertebesi ve Yapı

Sonlu cisimler üzerinde E(𝔽ₚ) grubunun yapısı ve mertebesinin belirlenmesi, kriptografik uygulamalar için kritiktir.

Teorem: E(𝔽ₚ) grubu, ℤ/n₁ℤ × ℤ/n₂ℤ şeklinde iki devirli grubun direkt çarpımıdır, burada n₁ | n₂ ve n₁ | (p-1).

Schoof Algoritması

Schoof'un algoritması, #E(𝔽ₚ)'yi polinom zamanda (O(log⁸p)) hesaplar. Çince kalan teoremi ve ℓ-büküm noktalarını kullanır. Modern kriptografi için vazgeçilmezdir.

Sonlu Cisimler Üzerinde Eğri Aileleri

Bazı özel eliptik eğri aileleri, kriptografide yaygın olarak kullanılır.

Popüler Aileler
secp256k1: Bitcoin'de kullanılan eğri (y² = x³ + 7 mod p)
Curve25519: Yüksek güvenlik ve performans (Montgomery formu)
NIST P-curves: P-192, P-256, P-384, P-521 (standart eğriler)
Barreto-Naehrig: Pairing-based kriptografi için

ℚ Üzerinde Eliptik Eğriler

Rasyonel sayılar üzerindeki eliptik eğriler, sayılar teorisinin en derin sorularına yol açar.

Büküm Grupları

Mazur'un Teoremi
E(ℚ) için olası büküm alt grupları sonlu sayıdadır! Tam liste:
ℤ/nℤ (n = 1,...,10, 12) veya ℤ/2ℤ × ℤ/2nℤ (n = 1,2,3,4)

Lutz-Nagell Teoremi

E: y² = x³ + ax + b (a,b ∈ ℤ) üzerinde sonlu mertebeli P = (x,y) ∈ E(ℚ) için:
• x, y ∈ ℤ (tam sayı koordinatlar)
• Ya y = 0 ya da y² | Δ (diskriminant bölünebilir)

Mordell-Weil Teoremi ve Fermat'ın Azalma Metodu

Eliptik eğriler teorisinin en önemli teoremlerinden biri.

Mordell-Weil Teoremi

E(ℚ) sonlu üretilmiş bir değişmeli gruptur:

E(ℚ) ≅ E(ℚ)_tors × ℤʳ

Burada r'ye rank denir ve eğrinin "sonsuz" rasyonel noktalarının sayısını belirler.

Rank hesabı çok zordur! Birch ve Swinnerton-Dyer konjektürü, L-fonksiyonları kullanarak ranku tahmin etmeye çalışır (Millennium Ödülü problemi).

Fermat'ın Azalma Metodu

Fermat, sonsuz azalma tekniğiyle bazı Diophantine denklemlerin çözümsüz olduğunu gösterdi. Bu yöntem, eliptik eğrilerde rasyonel noktaların varlığını incelemek için de kullanılır.

ℂ Üzerinde Eliptik Eğriler

Karmaşık sayılar üzerinde eliptik eğriler, torus yapısıyla izomorftur ve eliptik fonksiyonlar teorisiyle yakından ilişkilidir.

Torus Yapısı
E(ℂ) ≅ ℂ/Λ (Kafes modulo kompleks düzlem)
Burada Λ = {mω₁ + nω₂ : m,n ∈ ℤ} bir kafestir. Her eliptik eğri, bir torusa izomorftur!

Weierstrass ℘-Fonksiyonu

Weierstrass ℘-fonksiyonu, eliptik eğrinin parametrizasyonunu sağlar:
℘'(z)² = 4℘(z)³ - g₂℘(z) - g₃

Bu, y² = 4x³ - g₂x - g₃ eliptik eğrisinin bir parametrizasyonudur. Modüler formlar teorisiyle derinlemesine bağlantılıdır.

Fermat'ın Son Teoremi ve Eliptik Eğriler

Matematiğin en ünlü problemi olan Fermat'ın Son Teoremi, eliptik eğriler teorisi sayesinde Andrew Wiles tarafından 1995'te ispatlandı.

Fermat'ın Son Teoremi

n ≥ 3 için, xⁿ + yⁿ = zⁿ denkleminin sıfırdan farklı tam sayı çözümü yoktur.

Frey Eğrisi

İspatın Anahtarı
Eğer aᵖ + bᵖ = cᵖ (p ≥ 5 asal) çözümü varsa, Frey eğrisi tanımlanır:
y² = x(x - aᵖ)(x + bᵖ)

Bu eğri, Taniyama-Shimura-Weil konjektürü ile çelişir. Dolayısıyla böyle bir çözüm olamaz!

Modüler Eğriler ve Taniyama-Shimura

Taniyama-Shimura Konjektürü (şimdi teorem): ℚ üzerindeki her eliptik eğri modülerdir; yani bir modüler formla ilişkilendirilebilir.

Wiles, yarı-kararlı eliptik eğriler için bu konjektürü ispatladı ve Fermat'ı çözdü. Modern matematiğin en büyük başarılarından biri!
Wiles'ın ispatı 100+ sayfa ve son derece ileri teknikleri (Galois temsilleri, modüler formlar, Hecke cebirleri) içerir. Eliptik eğriler, sayılar teorisinin kalbindedir.

Python ile Eliptik Eğriler

Python, özellikle SymPy ve Sage kütüphaneleri ile eliptik eğri hesaplamaları için güçlü bir araçtır.

Tam Eliptik Eğri Sınıfı

class EllipticCurve:
    def __init__(self, a, b, p=None):
        self.a = a
        self.b = b
        self.p = p  # None ise ℝ, değilse 𝔽ₚ
        
        # Diskriminant kontrolü
        if self.discriminant() == 0:
            raise ValueError("Eğri singüler!")
    
    def discriminant(self):
        delta = -16 * (4 * self.a**3 + 27 * self.b**2)
        return delta % self.p if self.p else delta
    
    def j_invariant(self):
        delta = self.discriminant()
        j = 1728 * 4 * self.a**3 / delta
        return j % self.p if self.p else j
    
    def add(self, P, Q):
        if P == "O": return Q
        if Q == "O": return P
        
        x1, y1 = P
        x2, y2 = Q
        
        if self.p:  # Mod p
            if x1 == x2 and (y1 + y2) % self.p == 0:
                return "O"
            
            if P == Q:
                m = (3 * x1**2 + self.a) * pow(2 * y1, -1, self.p)
            else:
                m = (y2 - y1) * pow(x2 - x1, -1, self.p)
            
            x3 = (m**2 - x1 - x2) % self.p
            y3 = (m * (x1 - x3) - y1) % self.p
        else:  # ℝ üzerinde
            if x1 == x2 and y1 == -y2:
                return "O"
            
            if P == Q:
                m = (3 * x1**2 + self.a) / (2 * y1)
            else:
                m = (y2 - y1) / (x2 - x1)
            
            x3 = m**2 - x1 - x2
            y3 = m * (x1 - x3) - y1
        
        return (x3, y3)
    
    def multiply(self, P, n):
        """Skalar çarpım: nP"""
        if n == 0: return "O"
        if n < 0: 
            return self.multiply(self.negate(P), -n)
        
        result = "O"
        addend = P
        
        while n:
            if n & 1:
                result = self.add(result, addend)
            addend = self.add(addend, addend)
            n >>= 1
        
        return result
    
    def negate(self, P):
        if P == "O": return "O"
        x, y = P
        return (x, -y if not self.p else (-y) % self.p)

# Örnek: secp256k1 (Bitcoin eğrisi)
p = 2**256 - 2**32 - 977
E = EllipticCurve(0, 7, p)
G = (0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,
     0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)

# Nokta çarpımı (kriptografik anahtar)
private_key = 12345
public_key = E.multiply(G, private_key)
print(f"Public Key: {public_key}")

Kriptografi Uygulaması

ECDH Anahtar Değişimi
Alice ve Bob, eliptik eğri üzerinde ortak gizli anahtar üretir:
  1. Alice: aG hesaplar (a = özel anahtar)
  2. Bob: bG hesaplar (b = özel anahtar)
  3. Alice, Bob'un bG'sini alır ve a(bG) hesaplar
  4. Bob, Alice'in aG'sini alır ve b(aG) hesaplar
  5. a(bG) = b(aG) = abG (ortak gizli!)

Eliptik Eğriler Yolculuğunuza Başlayın!

Önerilen Kaynaklar
Kitaplar:
• "Rational Points on Elliptic Curves" - Silverman & Tate
• "The Arithmetic of Elliptic Curves" - Silverman
• "A Course in Computational Algebraic Number Theory" - Cohen

Yazılım:
• SageMath (en güçlü araç)
• SymPy
• Pari/GP

Alıştırma:
• Küçük asal cisimler üzerinde nokta sayımı yapın
• Basit eğriler için rank hesabı deneyin
• ECC kriptografi protokollerini uygulayın

from crypto import EllipticCurve
E = EllipticCurve(a, b, p)
security.activate()

Eğriler üzerindeki noktalar, matematiğin en derin sırlarını saklar!