Farklı eğri formları için eliptik eğri nokta işlemleri yapan C # kütüphanesi geliştirilmesi
Implementation C# library performing elliptic curve point operations for different  curve forms.
Yazar: ERGİN ÖZTÜRK
Danışman: YRD. DOÇ. SERDAR SÜER ERDEM
Gebze Yüksek Teknoloji Enstitüsü / Mühendislik ve Fen Bilimleri Enstitüsü / Elektronik Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2014
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering
Dizin: Eliptik eğriler = Elliptic curves ; Veri şifreleme = Data encryption ; Şifreleme = Encryption

Özet:
Eliptik eğri algoritmalarında verimlilik ve performans, nokta işlemlerinin hızına bağlıdır. Nokta işlemlerinde skaler çarpma operasyonu en önemli özelliktir. Bir nokta ile skaler çarpma operasyonu yapılırken, bu işlem içerisinde nokta toplama ve nokta çiftleme ardışıl işlemleri (double-and-add) bulunmaktadır. Farklı koordinat sistemlerinde bu iki işlemin gerçeklenebilmesi için ise modüler çarpmaya göre ters alma, modüler çarpma ve modüler toplama gibi işlemlere ihtiyaç vardır. 
Çarpmaya göre ters alma işlemi hem işlev olarak hem de donanım olarak gerçeklenmesi yüksek maliyetlere neden olduğundan, değişkenler üzerinde dönüşümler yapılarak projektif koordinat sistemlerine geçilirse bu maliyetler azaltılabilmektedir. Projektif koordinat sistemlerinin Jacobian, Chudnovsky, Extended Jacobian, Inverted Projective ve Lopez Dahap gibi farklı formları da mevcuttur.
İkili sonlu alan veya daha yüksek güvenlik sağlayan karekteristiği büyük sonlu alanlarda eliptik eğriler üzerinde çok hızlı nokta çarpma ve nokta toplama işlemi yapabilen eliptik eğri algoritmaları geliştirilmiştir. Bunlardan teze konu olan bazı  eliptik eğri formları; Jacobian eğri formu, Edwards eğri formu, Huff eğri formu,  Hessian eğri formu ve bunların varyasyonlarıdır.
Bu tezde eliptik eğrilerin matematiksel temelleri incelenmiş, Microsoft .Net geliştirme ortamında Framework 4.0 tabanında BigInteger kütüphanesi kullanılarak modüler aritmetik, sonlu alan aritmetik işlemleri tanımlanmış ve eliptik eğrilerde nokta toplama, nokta çiftleme işlemleri farklı eliptik eğri formları ve farklı koordinatlarda uygulamaları gerçekleştirilerek bir eliptik eğri kütüphanesi hazırlanmıştır. Uygulamada C# programlama dili kullanılmıştır.

Abstract:
Efficiency and performance in elliptic curve algorithm depend on the speed of point operations. Scalar multiplication operation is the most important feature of point operation in ECC. There are series of point doubling and point addition operations in scalar multiplication of a point. These two operations are required operations such as modular inversion, modular multiplication, and modular addition to be implemented on different projective coordinates.
Due to the fact that the implementation of the modular inversion costs very high, the projective coordinates are used to reduce these costs. The Projective coordinate systems have many different forms such as Jacobian, Chudnovsky, Extended Jacobian, Inverted Projective and Lopez Dahap.
Elliptic curve algorithms have been developed to obtain faster point multiplications and point addition over the binary finite field or the large characteristic fields providing high level security. This master thesis concentrates on the various curve models Jacobian curves, Edwards curves, Huff curves, Hessian curves, and their variations.
In this thesis, the mathematical foundations of elliptic curve are examined. Modular arithmetic, field arithmetic operations are defined by using Big Integer library at the Microsoft .Net development environment Framework 4.0. An elliptic curve library was prepared by performing point addition and point doubling operations in different elliptic curve forms and different coordinates applications by elliptic curve. C # programming language has been used in this practice.