Python ile Eliptik Eğri Kriptografisi

0 46

Eliptik Eğri Kriptografisi (Elliptic Curve Cryptography – ECC), günümüz kriptografik sistemlerinin temel taşlarından biri haline geldi. Blockchain teknolojilerinde cüzdan adreslerinin oluşturulmasından işlem imzalarına kadar birçok alanda aktif olarak kullanılıyor. Peki ECC neden bu kadar popüler? RSA’dan farkı ne? Ve Python ile bunu nasıl uygulayabiliriz? Bu yazıda ECC’nin teorisine kısa bir giriş yaptıktan sonra, LightECC kütüphanesi ile sadece birkaç satır Python kodu yazarak eliptik eğri işlemlerini nasıl gerçekleştirebileceğimize odaklanacağız.

Altın Bitcoin (Kaynak: Pexels)

Elliptic Eğri Kriptografisi Python Kütüphanesi

Neden ECC Bu Kadar Yaygın?

ECC, özellikle Bitcoin ve Ethereum gibi blockchain sistemlerinde yoğun olarak kullanılıyor. Popüler imzalama algoritmaları olan ECDSA ve EdDSA da eliptik eğriler üzerine kuruludur.

Yakın zamanda GnuPG, varsayılan algoritmalarında RSA’dan vazgeçti. Artık şifreleme için Elliptic Curve Diffie-Hellman (ECDH), imzalama için ise EdDSA varsayılan olarak geliyor. Bu da ECC’nin geldiği noktayı gösteriyor.

Her ne kadar kuantum bilgisayarlara karşı kırılgan olsa da, Apple’ın iMessage protokolü hâlâ ECC kullanıyor—üstelik kuantum dirençli algoritmalarla birlikte, hibrit olarak.

ECC ve RSA Karşılaştırması: Verimlilik Meselesi

RSA, modüler üs alma gibi kavramlara dayandığı için insanlara daha anlaşılır geliyor olabilir. Ancak bilgisayarlar açısından bakıldığında ECC çok daha verimli: sadece toplama ve çarpma işlemleriyle çalışıyor.

Güvenliği artırmak için RSA’da anahtar boyutunu büyütmek gerekir ve bu da üstel şekilde işlem süresini artırır. Ancak ECC’de aynı güvenliği daha küçük anahtarlarla sağlayabiliriz ve işlem süresi lineer olarak artar. Örneğin, 256-bit ECC anahtarı ≈ 3072-bit RSA anahtarı ile aynı güvenlik seviyesini sunar.

RSA ve ECC Anahtar Boyutu Karşılaştırması

ECC Karmaşık mı? Evet Ama Sorun Değil

ECC’nin kafa karıştırıcı olmasının bir sebebi de farklı eğri formlarının olmasıdır. Her formun kendi denklemi ve aritmetiği vardır. En yaygın 3 form şunlardır:

  • Weierstrass: ECDSA’nın temel aldığı klasik form (örneğin secp256k1). y2 = x3 + ax + b denklemini kullanır.
  • Koblitz: Özel donanım tasarımları için daha verimli çalışan ikili (binary) alan için tasarlanmış eğriler. y2 + xy = x3 + ax2 + b denklemini kullanır.
  • Edwards: EdDSA’nın kullandığı form, daha hızlı ve güvenli. x2 + y2 = 1 + dx2y2 denklemini kullanır.

Grafiksel Yaklaşım

Weierstrass ve Koblitz: İki nokta arasında çizilen doğrunun eğriyi kestiği üçüncü noktayı alır, sonra x eksenine göre simetriği alınarak toplama işlemi tamamlanır.

Edwards eğrileri grafiksel olarak gösterilmez, ama işlemleri tümevarım ile ispatlanabilir.

Elliptik Eğri Formlarına Ait Toplama

Hadi Kodlayalım: Python ile ECC

ECC’yi sıfırdan kodlamak zorunda değilsiniz. LightECC kütüphanesi sayesinde eğri tanımlamak ve işlemler yapmak oldukça kolay.

LightECC Kurulumu için python package index (pypi / pip) üzerinden paketi şu şekilde kurmamız gerekiyor.

Daha sonra kütüphaneyi yükledikten sonra eğriyi istediğimiz form adı ve eğri adını belirterek tanımlarız

Her eğrinin önceden tanımlanmış bir başlangıç baz noktası (generator base point) vardır ve bu herkes tarafından bilinir

Sonrasında baz noktadan yola çıkarak toplama, çıkarma, çarpma ve bölme operatörlerini kullanarak eğri üzerindeki farklı noktalara ulaşabiliriz.

Örneğin bitcoin için seçtiğiniz gizli anahtar 25 ise, 25 * G hesaplaması sizin cüzdan adresinizi oluşturacaktır.

Bölme? O Kadar Kolay Değil…

LightECC, bölme işlemini destekliyor ancak bu işlem verimli değil. Aslında bu durum ECC’nin temel güvenlik prensibi olan Eliptik Eğri Ayrık Logaritma Problemi (ECDLP) ile açıklanabilir. Yani P = k * G ise, k’yı belli P ve G çiftinden bulmak bugünkü işlemci gücü ile çok ama çok zordur. Bu, ECC’yi güvenli yapan şeydir. Ama k ve G’yi biliyorsanız P’yi hesaplamak çok kolay ve hızlıdır.

Tüm Bu Detayları Bilmemiz Şart mı?

Aslında değil. Çoğu zaman kriptografik kütüphaneleri bir “siyah kutu” gibi kullanıyoruz.

Örneğin ECDSA ve EdDSA ile imzalama işlemlerini yapmanızı sağlayan LightDSA kütüphanesi eliptik eğri aritmetik işlemleri için doğrudan LightECC’yi kullanır.

Aynı şekilde Eliptic Eğri ElGamal algoritması ile kısmi homomorfik işlemi yapmanızı sağlayan LightPHE de eliptik eğri kriptografisi aritmetik işlemleri için LightECC’yi kullanıyor.

Ancak ECC’nin nasıl çalıştığını anlamak, doğru araçları seçmekte, daha güvenli sistemler tasarlamakta ve hatta katkı sağlamakta büyük rol oynar.

Sonuç

ECC hem güvenli, hem verimli, hem de matematiksel açıdan oldukça zarif bir teknolojidir. İlk başta karmaşık gibi görünse de, biraz emekle arkasındaki mantığı anlamak mümkün. LightECC gibi kütüphaneler sayesinde Python ile eğri aritmetiğini deneyimlemek artık çok kolay.

Son olarak, LightECC‘yi GitHub’ta yızdızlayarak bu çalışamaya destekte bulunabilirsiniz.

Email adresiniz yayınlanmayacaktır.